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