import { requestCtx } from "@/assets/js/config"; import moment from "moment"; // 处理列表查询结果 export function handleQueryResourceListData({ datas, fields, path, storeInfo, repositoryInfo, coverSize, handelEBooK, }) { const dataList = []; for (let i = 0; i < datas.length; i++) { const item = datas[i]; // 处理字段 const _fields = {}; if (fields != null) { for (let fieldKey in fields) { if (item.datas[fieldKey]) { const values = JSON.parse(item.datas[fieldKey]); if (values.length > 0) { // 用字段名处理返回的字段值 if (values[0].Value) { _fields[fieldKey] = values[0].Value; } else if (values[0].Data) { _fields[fieldKey] = values[0].Data.Value; } item.datas[fieldKey] = values[0]; } } } } const subDatas = {}; if (item.subDatas) { for (let subData of item.subDatas) { const tag = subData.queryTag.replace("Query", ""); subDatas[tag] = subData.datas; } } let obj = { ...item, id: item.id, name: item.datas.Name, icon: getPublicImage( item.datas.Icon, coverSize?.width, coverSize?.height ), repositoryInfo: repositoryInfo, refCode: item.datas.RefCode === "[]" ? null : item.datas.RefCode, state: item.datas.State, type: item.datas.Type, tag: item.datas.Tag, creator: item.datas.Creator ? JSON.parse(item.datas.Creator) : undefined, storeInfo: storeInfo, linkType: item.datas.LinkType, childrenCount: parseInt(item.datas.ChildrenCount ?? "0"), childrenFolderCount: parseInt(item.datas.ChildrenFolderCount ?? "0"), childrenChannelCount: parseInt(item.datas.ChildrenChannelCount ?? "0"), createDate: moment(item.datas.CreateDate).format("YYYY-MM-DD"), beginDate: moment(item.datas.BeginDate).format("YYYY-MM-DD"), endDate: moment(item.datas.EndDate).format("YYYY-MM-DD"), description: item.datas.Description, sysType: item.datas.SysType, idPath: path + "\\" + item.id, typeId: parseInt(item.datas.TypeId), linkFile: JSON.parse(item.datas.LinkFile ?? "[]"), cmsItemType: item.datas.CmsItemType, allowDonate: item.datas.AllowDonate == "True", // donatePriceList: JSON.parse(item.datas.DonatePriceList ?? "[]"), productLinkInfo: item.datas.ProductLinkInfo ?? "[]", storeEvent: JSON.parse(item.datas.StoreEvent ?? "[]"), linkInfo: JSON.parse(item.datas.LinkInfo ?? "[]"), saleMethod: JSON.parse(item.datas.SaleMethod ?? "[]"), subProductCount: parseInt(item.datas.SubProductCount), ..._fields, datas: item.datas, subDatas, }; // 统一处理价格 if (obj.defaultSaleMethod) { if (handelEBooK) { // 获取随书资源的销售方式 let saleMethod = []; try { saleMethod = obj.cmsDatas[0].datas.find( (item) => item.datas.RefCode == "tourism_accompanyingResources" ).datas.SaleMethod; saleMethod = JSON.parse(saleMethod); } catch (error) { saleMethod = []; } if (saleMethod.length) { Object.keys(saleMethod[0]).map((key) => { let newKey = key.replace(key[0], key[0].toLowerCase()); saleMethod[0][newKey] = saleMethod[0][key]; delete saleMethod[0][key]; }); obj.defaultSaleMethod = saleMethod[0]; obj.defaultSaleMethodId = saleMethod[0].id; obj.alreadyBuy = obj.purchasedSaleMethodIdList.indexOf(obj.defaultSaleMethodId) > -1; } } if (obj.defaultSaleMethod.allowEvent && obj.storeEvent.length) { // 已参加活动,获取有效活动并计算价格 let time = new Date().getTime(); // 过滤过期活动 let event = obj.storeEvent.filter((item) => { let endTime = new Date(item.EndDate).getTime(); return endTime > time; }); // 只处理一条有效活动 if (event.length) { obj.price = (obj.defaultSaleMethod.price * event[0].Value).toFixed(2); obj.oldPrice = obj.defaultSaleMethod.price; obj.storeEventId = event[0].Id; if ( moment().format("YYYY-MM-DD") < moment(obj.defaultSaleMethod.endDate).format("YYYY-MM-DD") ) { obj.defaultSaleMethodState = "Normal"; } else { obj.defaultSaleMethodState = "Beyond"; } } } else { if ( moment().format("YYYY-MM-DD") < moment(obj.defaultSaleMethod.endDate).format("YYYY-MM-DD") ) { obj.defaultSaleMethodState = "Normal"; } else { obj.defaultSaleMethodState = "Beyond"; } obj.price = obj.defaultSaleMethod.price; obj.oldPrice = obj.defaultSaleMethod.virtualPrice; } } dataList.push(obj); } return dataList; } // 处理详情查询结果 export function handleDetailQueryRequestData({ item, fields, path, coverSize, itemFields, handelEBooK, }) { item.fileMap = {}; let itemFieldsData = []; for (const key in itemFields) { itemFieldsData.push(key); } let fieldsData = []; for (const key in fields) { fieldsData.push(key); } for (let i = 0; i < fieldsData.length; i++) { const field = fieldsData[i]; item.datas[field] = JSON.parse(item.datas[field]); const datas = item.datas[field]; if (datas.length > 0) { if (datas[0].Value) { item[field] = datas[0].Value; if (datas[0].Data.FileLinkList && datas[0].Data.FileLinkList.length) { item.fileMap = { ...item.fileMap, ...handleLinkFileInfo( datas[0].Data.FileLinkList.map((item) => { return { ...item.File, ...item, }; }) ), }; } } else if (datas[0].Data) { item[field] = datas[0].Data.Value; if (datas[0].Data.FileLinkList && datas[0].Data.FileLinkList.length) { item.fileMap = { ...item.fileMap, ...handleLinkFileInfo( datas[0].Data.FileLinkList.map((item) => { return { ...item.File, ...item, }; }) ), }; } } } } // 处理cms资源 const subDatas = item.subDatas; const linkItemsMap = {}; if (subDatas) { for (const sdata of subDatas) { const tag = sdata.queryTag; for (const subItem of sdata.datas) { convertCmsItemBase(subItem, coverSize, handelEBooK); subItem.fileMap = {}; for (let i = 0; i < itemFieldsData.length; i++) { const itemField = itemFieldsData[i]; try { subItem.datas[itemField] = JSON.parse(subItem.datas[itemField]); } catch (error) { subItem.datas[itemField] = []; } const itemDatas = subItem.datas[itemField]; if (itemDatas.length > 0) { if (itemDatas[0].Value) { subItem[itemField] = itemDatas[0].Value; if (itemDatas[0].FileList && itemDatas[0].FileList.length) { subItem.fileMap = { ...subItem.fileMap, ...handleLinkFileInfo(itemDatas[0].FileList), }; } } else if (itemDatas[0].Data) { subItem[itemField] = itemDatas[0].Data.Value; if ( itemDatas[0].Data.FileList && itemDatas[0].Data.FileList.length ) { subItem.fileMap = { ...subItem.fileMap, ...handleLinkFileInfo(itemDatas[0].Data.FileList), }; } } else if (itemDatas[0].CmsItemData) { subItem[itemField] = itemDatas[0].CmsItemData.Value; if ( itemDatas[0].CmsItemData.FileList && itemDatas[0].CmsItemData.FileList.length ) { subItem.fileMap = { ...subItem.fileMap, ...handleLinkFileInfo(itemDatas[0].CmsItemData.FileList), }; } } } } if (subItem.productLinkInfo && subItem.productLinkInfo.length) subItem.productLinkPath = subItem.productLinkInfo[0].LinkPath + "\\" + subItem.productLinkInfo[0].CmsItemId; if (subItem.linkInfo && subItem.linkInfo.length) subItem.linkPath = subItem.linkInfo[0].LinkPath + "\\" + subItem.linkInfo[0].CmsItemId; } linkItemsMap[tag] = sdata.datas; } } convertCmsItemBase(item, coverSize, handelEBooK); item.idPath = path + "\\" + item.id; item.subItems = linkItemsMap; return item; } const handleLinkFileInfo = (linkList) => { let linkFileMap = {}; for (let z = 0; z < linkList.length; z++) { const linkItem = linkList[z]; linkFileMap[linkItem.Md5] = { linkType: linkItem.LinkType, extension: linkItem.Extension, fileName: linkItem.FileName, fileType: linkItem.Type, md5: linkItem.Md5, icon: linkItem.Icon, size: linkItem.Size, metaData: JSON.parse(linkItem.MetaData ?? "{}"), order: linkItem.Order, protectType: linkItem.ProtectType, }; } return linkFileMap; }; const convertCmsItemBase = (item, coverSize, handelEBooK) => { item.name = item.datas.Name; item.description = item.datas.Description; item.refCode = item.datas.RefCode; item.state = item.datas.State; item.type = item.datas.Type; item.tag = item.datas.Tag; item.typeId = parseInt(item.datas.TypeId); item.icon = getPublicImage( item.datas.Icon, coverSize?.width, coverSize?.height ); item.sysType = item.datas.SysType; item.linkFile = JSON.parse(item.datas.LinkFile ?? "[]"); item.linkType = item.datas.LinkType; item.linkAppId = parseInt(item.datas.LinkAppId); item.linkStoreId = parseInt(item.datas.LinkStore); item.linkRepoId = item.datas.LinkRepository; item.childrenCount = parseInt(item.datas.ChildrenCount ?? "0"); (item.childrenFolderCount = parseInt(item.datas.ChildrenFolderCount ?? "0")), (item.childrenChannelCount = parseInt( item.datas.ChildrenChannelCount ?? "0" )), (item.linkId = parseInt(item.datas.LinkId)); item.linkOrg = JSON.parse(item.datas.LinkOrg ?? "[]")[0]; item.linkDepartment = JSON.parse(item.datas.LinkDepartment ?? "[]")[0]; item.linkInfo = JSON.parse(item.datas.LinkInfo ?? "[]"); item.productLinkInfo = JSON.parse(item.datas.ProductLinkInfo ?? "[]"); item.saleMethod = JSON.parse(item.datas.SaleMethod ?? "[]"); item.allowDonate = item.datas.AllowDonate == "True"; // item.donatePriceList = JSON.parse(item.datas.DonatePriceList ?? "[]"); item.createDate = moment(item.datas.CreateDate).format("YYYY-MM-DD"); item.beginDate = moment(item.datas.BeginDate).format("YYYY-MM-DD"); item.endDate = moment(item.datas.EndDate).format("YYYY-MM-DD"); item.storeEvent = JSON.parse(item.datas.StoreEvent ?? "[]"); // 统一处理价格 if (item.defaultSaleMethod) { if (handelEBooK) { // 获取随书资源的销售方式 let saleMethod = item.cmsDatas[0].datas.find( (item) => item.refCode == "tourism_accompanyingResources" ).saleMethod; if (saleMethod && saleMethod.length > 0) { Object.keys(saleMethod[0]).map((key) => { let newKey = key.replace(key[0], key[0].toLowerCase()); saleMethod[0][newKey] = saleMethod[0][key]; delete saleMethod[0][key]; }); item.defaultSaleMethod = saleMethod[0]; item.defaultSaleMethodId = saleMethod[0].id; item.alreadyBuy = item.purchasedSaleMethodIdList.indexOf(item.defaultSaleMethodId) > -1; } } if (item.defaultSaleMethod.allowEvent && item.storeEvent.length) { // 已参加活动,获取有效活动并计算价格 let time = new Date().getTime(); // 过滤过期活动 let event = item.storeEvent.filter((item) => { let endTime = new Date(item.EndDate).getTime(); return endTime > time; }); // 只处理一条有效活动 if (event.length) { item.price = (item.defaultSaleMethod.price * event[0].Value).toFixed(2); item.oldPrice = item.defaultSaleMethod.price; if ( moment().format("YYYY-MM-DD") < moment(item.defaultSaleMethod.endDate).format("YYYY-MM-DD") ) { item.defaultSaleMethodState = "Normal"; } else { item.defaultSaleMethodState = "Beyond"; } item.storeEventId = event[0].Id; } } else { item.price = item.defaultSaleMethod.price; item.oldPrice = item.defaultSaleMethod.virtualPrice; if ( moment().format("YYYY-MM-DD") < moment(item.defaultSaleMethod.endDate).format("YYYY-MM-DD") ) { item.defaultSaleMethodState = "Normal"; } else { item.defaultSaleMethodState = "Beyond"; } } } }; export function getTopicMsgCmsItemFile(fileType, fileList) { let obj = {}; fileType.forEach((item) => { item.sequenceNum = item.config ? JSON.parse(item.config).uuid : ""; fileList.forEach((e) => { if (item.sequenceNum == e.sequenceNum) { try { if (e.fileLinkList.length > 0) { for (let i = 0; i < e.fileLinkList.length; i++) { const ele = e.fileLinkList[i]; ele.name = ele.file.fileName; ele.md5 = ele.file.md5; ele.status = "success"; } obj[item.typeField.refCode] = e.fileLinkList; } else { const val = JSON.parse(e.value); if (val) { obj[item.typeField.refCode] = val; } else { obj[item.typeField.refCode] = "-"; } } } catch (error) { obj[item.typeField.refCode] = e.value ? e.value : "-"; } } }); }); return obj; } // 获取不受保护的图片 export function getPublicImage(md5, width, height) { let src = null; if (md5) { src = requestCtx + `/file/GetPreViewImage?md5=${md5}`; } else { return "" // return require("@/assets/images/homeBg.png"); } if (width) src += `&width=${width}`; if (height) src += `&height=${height}`; return src; }