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 | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 416 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..6ffb8f5 --- /dev/null +++ b/src/assets/js/middleGround/tool.js @@ -0,0 +1,416 @@ +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, + 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, storeInfo), + 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 == '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) { + let itemProductLinkInfo = subItem.productLinkInfo.find( + (citem) => citem.Name == item.datas.Name, + ) + subItem.productLinkPath = + itemProductLinkInfo.LinkPath + '\\' + itemProductLinkInfo.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 == '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, storeInfo) { + let src = null + if (md5) { + src = requestCtx + `/file/GetPreViewImage?md5=${md5}` + } else { + if (storeInfo == `defaultGoodsStore${appId}`) { + return bookCover + } else { + return '' + } + } + if (width && src) src += `&width=${width}` + if (height && src) src += `&height=${height}` + return src +} -- Gitblit v1.9.1