New file |
| | |
| | | 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 |
| | | } |