From ef37c59e055a990ce247b265b27d3fcef430a243 Mon Sep 17 00:00:00 2001 From: 杨磊 <505174330@qq.com> Date: 星期五, 15 八月 2025 10:19:18 +0800 Subject: [PATCH] first submit --- src/assets/js/middleGround/tool.js | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 295 insertions(+), 0 deletions(-) diff --git a/src/assets/js/middleGround/tool.js b/src/assets/js/middleGround/tool.js new file mode 100644 index 0000000..e09e8ea --- /dev/null +++ b/src/assets/js/middleGround/tool.js @@ -0,0 +1,295 @@ +import { requestCtx } from "@/assets/js/config"; +import moment from "moment"; +// 澶勭悊鍒楄〃鏌ヨ缁撴灉 +export function handleQueryResourceListData({ + datas, + fields, + path, + storeInfo, + repositoryInfo, + coverSize, +}) { + + 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: JSON.parse(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 (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; + } + } else { + obj.price = obj.defaultSaleMethod.price; + obj.oldPrice = obj.defaultSaleMethod.virtualPrice; + } + } + dataList.push(obj); + } + return dataList; +} + +// 澶勭悊璇︽儏鏌ヨ缁撴灉 +export function handleDetailQueryRequestData({ + item, + fields, + path, + coverSize, + itemFields, +}) { + 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; + } else if (datas[0].Data) { + item[field] = datas[0].Data.Value; + } + } + } + + // 澶勭悊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); + 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); + 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) => { + 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.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.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 (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; + item.storeEventId = event[0].Id; + } + } else { + item.price = item.defaultSaleMethod.price; + item.oldPrice = item.defaultSaleMethod.virtualPrice; + } + } +}; + +// 鑾峰彇涓嶅彈淇濇姢鐨勫浘鐗� +export function getPublicImage(md5, width, height) { + let src = null; + if (md5) { + src = requestCtx + `/file/GetPreViewImage?md5=${md5}`; + } else { + return require("@/assets/images/default-book-img.png"); + } + if (width) src += `&width=${width}`; + if (height) src += `&height=${height}`; + return src; +} -- Gitblit v1.9.1