import { requestCtx } from "@/assets/js/config";
|
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
|
),
|
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)
|
subItem.productLinkPath =
|
subItem.productLinkInfo[0].LinkPath +
|
"\\" +
|
subItem.productLinkInfo[0].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);
|
if (val) {
|
obj[item.typeField.refCode] = val;
|
} else {
|
obj[item.typeField.refCode] = "-";
|
}
|
}
|
} catch (error) {
|
obj[item.typeField.refCode] = e.value ? e.value : "-";
|
}
|
}
|
});
|
});
|
return obj;
|
}
|
|
// 获取不受保护的图片
|
export function getPublicImage(md5, width, height) {
|
let src = null;
|
if (md5) {
|
src = requestCtx + `/file/GetPreViewImage?md5=${md5}`;
|
} else {
|
return ""
|
// return require("@/assets/images/homeBg.png");
|
}
|
if (width) src += `&width=${width}`;
|
if (height) src += `&height=${height}`;
|
return src;
|
}
|