杨磊
2025-05-26 96be59a64cc1d8fcaf1034e787717663c68df4a7
src/assets/js/middleGround/tool.js
@@ -1,6 +1,10 @@
import { requestCtx, appId } from "@/assets/js/config.js";
import bookCover from "@/assets/images/book-cover.png";
import moment from "moment";
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,
@@ -9,34 +13,34 @@
  storeInfo,
  repositoryInfo,
  coverSize,
  handelEBooK,
  handelEBooK
}) {
  const dataList = [];
  const dataList = []
  for (let i = 0; i < datas.length; i++) {
    const item = datas[i];
    const item = datas[i]
    // 处理字段
    const _fields = {};
    const _fields = {}
    if (fields != null) {
      for (let fieldKey in fields) {
        if (item.datas[fieldKey]) {
          const values = JSON.parse(item.datas[fieldKey]);
          const values = JSON.parse(item.datas[fieldKey])
          if (values.length > 0) {
            // 用字段名处理返回的字段值
            if (values[0].Value) {
              _fields[fieldKey] = values[0].Value;
              _fields[fieldKey] = values[0].Value
            } else if (values[0].Data) {
              _fields[fieldKey] = values[0].Data.Value;
              _fields[fieldKey] = values[0].Data.Value
            }
            item.datas[fieldKey] = values[0];
            item.datas[fieldKey] = values[0]
          }
        }
      }
    }
    const subDatas = {};
    const subDatas = {}
    if (item.subDatas) {
      for (let subData of item.subDatas) {
        const tag = subData.queryTag.replace("Query", "");
        subDatas[tag] = subData.datas;
        const tag = subData.queryTag.replace('Query', '')
        subDatas[tag] = subData.datas
      }
    }
@@ -44,113 +48,105 @@
      ...item,
      id: item.id,
      name: item.datas.Name,
      icon: getPublicImage(
        item.datas.Icon,
        coverSize?.width,
        coverSize?.height,
        storeInfo
      ),
      icon: getPublicImage(item.datas.Icon, coverSize?.width, coverSize?.height, storeInfo),
      repositoryInfo: repositoryInfo,
      refCode: item.datas.RefCode === "[]" ? null : item.datas.RefCode,
      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"),
      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,
      idPath: path + '\\' + item.id,
      typeId: parseInt(item.datas.TypeId),
      linkFile: JSON.parse(item.datas.LinkFile ?? "[]"),
      linkFile: JSON.parse(item.datas.LinkFile ?? '[]'),
      cmsItemType: item.datas.CmsItemType,
      allowDonate: item.datas.AllowDonate == "True",
      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 ?? "[]"),
      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,
    };
      subDatas
    }
    // 统一处理价格
    if (obj.defaultSaleMethod) {
      if (handelEBooK) {
        // 获取随书资源的销售方式
        let saleMethod = [];
        let saleMethod = []
        try {
          saleMethod = obj.cmsDatas[0].datas.find(
            (item) => item.datas.RefCode == "tourism_accompanyingResources"
          ).datas.SaleMethod;
          saleMethod = JSON.parse(saleMethod);
            (item) => item.datas.RefCode == 'tourism_accompanyingResources'
          ).datas.SaleMethod
          saleMethod = JSON.parse(saleMethod)
        } catch (error) {
          saleMethod = [];
          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;
            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 time = new Date().getTime()
        // 过滤过期活动
        let event = obj.storeEvent.filter((item) => {
          let endTime = new Date(item.EndDate).getTime();
          return endTime > time;
        });
          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;
          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")
            moment().format('YYYY-MM-DD') <
            moment(obj.defaultSaleMethod.endDate).format('YYYY-MM-DD')
          ) {
            obj.defaultSaleMethodState = "Normal";
            obj.defaultSaleMethodState = 'Normal'
          } else {
            obj.defaultSaleMethodState = "Beyond";
            obj.defaultSaleMethodState = 'Beyond'
          }
        }
      } else {
        if (
          moment().format("YYYY-MM-DD") <
          moment(obj.defaultSaleMethod.endDate).format("YYYY-MM-DD")
          moment().format('YYYY-MM-DD') < moment(obj.defaultSaleMethod.endDate).format('YYYY-MM-DD')
        ) {
          obj.defaultSaleMethodState = "Normal";
          obj.defaultSaleMethodState = 'Normal'
        } else {
          obj.defaultSaleMethodState = "Beyond";
          obj.defaultSaleMethodState = 'Beyond'
        }
        obj.price = obj.defaultSaleMethod.price;
        obj.oldPrice = obj.defaultSaleMethod.virtualPrice;
        obj.price = obj.defaultSaleMethod.price
        obj.oldPrice = obj.defaultSaleMethod.virtualPrice
      }
    }
    dataList.push(obj);
    dataList.push(obj)
  }
  return dataList;
  return dataList
}
// 处理详情查询结果
export function handleDetailQueryRequestData({
  productId,
  item,
  fields,
  path,
@@ -258,11 +254,11 @@
          }
        }
        if (subItem.productLinkInfo && subItem.productLinkInfo.length) {
          let itemProductLinkInfo = subItem.productLinkInfo.find(citem => citem.ProductId == productId)
          let itemProductLinkInfo = subItem.productLinkInfo.find(citem => citem.Name == item.datas.Name)
          subItem.productLinkPath =
            itemProductLinkInfo?.LinkPath +
            itemProductLinkInfo.LinkPath +
            "\\" +
            itemProductLinkInfo?.CmsItemId;
            itemProductLinkInfo.CmsItemId;
        }
        if (subItem.linkInfo && subItem.linkInfo.length)
          subItem.linkPath =
@@ -278,9 +274,9 @@
}
const handleLinkFileInfo = (linkList) => {
  let linkFileMap = {};
  let linkFileMap = {}
  for (let z = 0; z < linkList.length; z++) {
    const linkItem = linkList[z];
    const linkItem = linkList[z]
    linkFileMap[linkItem.Md5] = {
      linkType: linkItem.LinkType,
      extension: linkItem.Extension,
@@ -291,147 +287,137 @@
      size: linkItem.Size,
      // metaData: JSON.parse(linkItem.MetaData ?? "{}"),
      order: linkItem.Order,
      protectType: linkItem.ProtectType,
    };
      protectType: linkItem.ProtectType
    }
  }
  return linkFileMap;
};
  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 = item.datas.Icon,
  // 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.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 ?? "[]");
  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;
        (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;
          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 time = new Date().getTime()
      // 过滤过期活动
      let event = item.storeEvent.filter((item) => {
        let endTime = new Date(item.EndDate).getTime();
        return endTime > time;
      });
        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;
        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")
          moment().format('YYYY-MM-DD') <
          moment(item.defaultSaleMethod.endDate).format('YYYY-MM-DD')
        ) {
          item.defaultSaleMethodState = "Normal";
          item.defaultSaleMethodState = 'Normal'
        } else {
          item.defaultSaleMethodState = "Beyond";
          item.defaultSaleMethodState = 'Beyond'
        }
        item.storeEventId = event[0].Id;
        item.storeEventId = event[0].Id
      }
    } else {
      item.price = item.defaultSaleMethod.price;
      item.oldPrice = item.defaultSaleMethod.virtualPrice;
      item.price = item.defaultSaleMethod.price
      item.oldPrice = item.defaultSaleMethod.virtualPrice
      if (
        moment().format("YYYY-MM-DD") <
        moment(item.defaultSaleMethod.endDate).format("YYYY-MM-DD")
        moment().format('YYYY-MM-DD') < moment(item.defaultSaleMethod.endDate).format('YYYY-MM-DD')
      ) {
        item.defaultSaleMethodState = "Normal";
        item.defaultSaleMethodState = 'Normal'
      } else {
        item.defaultSaleMethodState = "Beyond";
        item.defaultSaleMethodState = 'Beyond'
      }
    }
  }
};
}
export function getTopicMsgCmsItemFile(fileType, fileList) {
  let obj = {};
  let obj = {}
  fileType.forEach((item) => {
    item.sequenceNum = item.config ? JSON.parse(item.config).uuid : "";
    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";
              const ele = e.fileLinkList[i]
              ele.name = ele.file.fileName
              ele.md5 = ele.file.md5
              ele.status = 'success'
            }
            obj[item.typeField.refCode] = e.fileLinkList;
            obj[item.typeField.refCode] = e.fileLinkList
          } else {
            const val = JSON.parse(e.value);
            obj[item.typeField.refCode] = val;
            const val = JSON.parse(e.value)
            obj[item.typeField.refCode] = val
          }
        } catch (error) {
          obj[item.typeField.refCode] = e.value;
          obj[item.typeField.refCode] = e.value
        }
      }
    });
  });
  return obj;
    })
  })
  return obj
}
// 获取不受保护的图片
export function getPublicImage(md5, width, height,storeInfo) {
  let src = null;
export function getPublicImage(md5, width, height, storeInfo) {
  let src = null
  if (md5) {
    src = requestCtx + `/file/GetPreViewImage?md5=${md5}`;
    src = requestCtx + `/file/GetPreViewImage?md5=${md5}`
  } else {
    if(storeInfo == `defaultGoodsStore${appId}`){
      return bookCover;
    }else{
      return ""
    }
  }
  if (width) src += `&width=${width}`;
  if (height) src += `&height=${height}`;
  return src;
  if (width && src) src += `&width=${width}`
  if (height && src) src += `&height=${height}`
  return src
}