From 49a435043b0b1a289a24606e35253365d7ab3956 Mon Sep 17 00:00:00 2001 From: QYF-GitLab1 <1940665526@qq.com> Date: 星期一, 25 八月 2025 17:51:57 +0800 Subject: [PATCH] 首页、及教学出版样式修改 --- src/assets/js/middleGround/tool.js | 439 +++++++++++++++++++++++++++++++++++------------------- 1 files changed, 280 insertions(+), 159 deletions(-) diff --git a/src/assets/js/middleGround/tool.js b/src/assets/js/middleGround/tool.js index e09e8ea..6ffb8f5 100644 --- a/src/assets/js/middleGround/tool.js +++ b/src/assets/js/middleGround/tool.js @@ -1,5 +1,10 @@ -import { requestCtx } from "@/assets/js/config"; -import moment from "moment"; +import { requestCtx, appId } from '@/assets/js/config.js' +// import defaultImg from '@/assets/images/default-book-img.png' +// import defaultBookFair from '@/assets/images/default-bookFair.png' +import bookCover from '@/assets/images/book-cover.png' +// import defaultPub from '@/assets/images/math/default-pub.png' +// import defaultAudio from '@/assets/images/math/default-audio.png' +import moment from 'moment' // 澶勭悊鍒楄〃鏌ヨ缁撴灉 export function handleQueryResourceListData({ datas, @@ -8,35 +13,34 @@ storeInfo, repositoryInfo, coverSize, + handelEBooK, }) { - - const dataList = []; + const dataList = [] for (let i = 0; i < datas.length; i++) { - const item = datas[i]; + const item = datas[i] // 澶勭悊瀛楁 - const _fields = {}; + const _fields = {} if (fields != null) { for (let fieldKey in fields) { if (item.datas[fieldKey]) { - const values = JSON.parse(item.datas[fieldKey]); + const values = JSON.parse(item.datas[fieldKey]) if (values.length > 0) { // 鐢ㄥ瓧娈靛悕澶勭悊杩斿洖鐨勫瓧娈靛�� if (values[0].Value) { - _fields[fieldKey] = values[0].Value; + _fields[fieldKey] = values[0].Value } else if (values[0].Data) { - _fields[fieldKey] = values[0].Data.Value; + _fields[fieldKey] = values[0].Data.Value } - item.datas[fieldKey] = values[0]; + item.datas[fieldKey] = values[0] } } } } - - const subDatas = {}; + const subDatas = {} if (item.subDatas) { for (let subData of item.subDatas) { - const tag = subData.queryTag.replace("Query", ""); - subDatas[tag] = subData.datas; + const tag = subData.queryTag.replace('Query', '') + subDatas[tag] = subData.datas } } @@ -44,66 +48,101 @@ ...item, id: item.id, name: item.datas.Name, - icon: getPublicImage( - item.datas.Icon, - coverSize?.width, - coverSize?.height - ), + icon: getPublicImage(item.datas.Icon, coverSize?.width, coverSize?.height, storeInfo), repositoryInfo: repositoryInfo, - refCode: item.datas.RefCode === "[]" ? null : item.datas.RefCode, + 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"), + 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, + idPath: path + '\\' + item.id, typeId: parseInt(item.datas.TypeId), - linkFile: JSON.parse(item.datas.LinkFile ?? "[]"), + linkFile: JSON.parse(item.datas.LinkFile ?? '[]'), cmsItemType: item.datas.CmsItemType, - allowDonate: item.datas.AllowDonate == "True", + 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 ?? "[]"), + 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 == '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 time = new Date().getTime() // 杩囨护杩囨湡娲诲姩 let event = obj.storeEvent.filter((item) => { - let endTime = new Date(item.EndDate).getTime(); - return endTime > time; - }); + 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; + 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 { - obj.price = obj.defaultSaleMethod.price; - obj.oldPrice = obj.defaultSaleMethod.virtualPrice; + 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); + dataList.push(obj) } - return dataList; + return dataList } // 澶勭悊璇︽儏鏌ヨ缁撴灉 @@ -113,104 +152,124 @@ path, coverSize, itemFields, + handelEBooK, }) { - let itemFieldsData = []; + item.fileMap = {} + let itemFieldsData = [] for (const key in itemFields) { - itemFieldsData.push(key); + itemFieldsData.push(key) } - let fieldsData = []; + let fieldsData = [] for (const key in fields) { - fieldsData.push(key); + 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]; + 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; + 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; + 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 = {}; + const subDatas = item.subDatas + const linkItemsMap = {} if (subDatas) { for (const sdata of subDatas) { - const tag = sdata.queryTag; + const tag = sdata.queryTag for (const subItem of sdata.datas) { - convertCmsItemBase(subItem, coverSize); - subItem.fileMap = {}; + convertCmsItemBase(subItem, coverSize, handelEBooK) + subItem.fileMap = {} for (let i = 0; i < itemFieldsData.length; i++) { - const itemField = itemFieldsData[i]; + const itemField = itemFieldsData[i] try { - subItem.datas[itemField] = JSON.parse(subItem.datas[itemField]); + subItem.datas[itemField] = JSON.parse(subItem.datas[itemField]) } catch (error) { - subItem.datas[itemField] = []; + subItem.datas[itemField] = [] } - const itemDatas = 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[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[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[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) + if (subItem.productLinkInfo && subItem.productLinkInfo.length) { + let itemProductLinkInfo = subItem.productLinkInfo.find( + (citem) => citem.Name == item.datas.Name, + ) subItem.productLinkPath = - subItem.productLinkInfo[0].LinkPath + - "\\" + - subItem.productLinkInfo[0].CmsItemId; + itemProductLinkInfo.LinkPath + '\\' + itemProductLinkInfo.CmsItemId + } if (subItem.linkInfo && subItem.linkInfo.length) - subItem.linkPath = - subItem.linkInfo[0].LinkPath + "\\" + subItem.linkInfo[0].CmsItemId; + subItem.linkPath = subItem.linkInfo[0].LinkPath + '\\' + subItem.linkInfo[0].CmsItemId } - linkItemsMap[tag] = sdata.datas; + linkItemsMap[tag] = sdata.datas } } - convertCmsItemBase(item, coverSize); - item.idPath = path + "\\" + item.id; - item.subItems = linkItemsMap; - return item; + convertCmsItemBase(item, coverSize, handelEBooK) + item.idPath = path + '\\' + item.id + item.subItems = linkItemsMap + return item } const handleLinkFileInfo = (linkList) => { - let linkFileMap = {}; + let linkFileMap = {} for (let z = 0; z < linkList.length; z++) { - const linkItem = linkList[z]; + const linkItem = linkList[z] linkFileMap[linkItem.Md5] = { linkType: linkItem.LinkType, extension: linkItem.Extension, @@ -219,77 +278,139 @@ md5: linkItem.Md5, icon: linkItem.Icon, size: linkItem.Size, - metaData: JSON.parse(linkItem.MetaData ?? "{}"), + // 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; + 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 == '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) + obj[item.typeField.refCode] = val + } + } catch (error) { + obj[item.typeField.refCode] = e.value + } + } + }) + }) + return obj +} // 鑾峰彇涓嶅彈淇濇姢鐨勫浘鐗� -export function getPublicImage(md5, width, height) { - let src = null; +export function getPublicImage(md5, width, height, storeInfo) { + let src = null if (md5) { - src = requestCtx + `/file/GetPreViewImage?md5=${md5}`; + src = requestCtx + `/file/GetPreViewImage?md5=${md5}` } else { - return require("@/assets/images/default-book-img.png"); + if (storeInfo == `defaultGoodsStore${appId}`) { + return bookCover + } else { + return '' + } } - if (width) src += `&width=${width}`; - if (height) src += `&height=${height}`; - return src; + if (width && src) src += `&width=${width}` + if (height && src) src += `&height=${height}` + return src } -- Gitblit v1.9.1