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 == '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) { 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 == '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) 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 }