From ef37c59e055a990ce247b265b27d3fcef430a243 Mon Sep 17 00:00:00 2001
From: 杨磊 <505174330@qq.com>
Date: 星期五, 15 八月 2025 10:19:18 +0800
Subject: [PATCH] first submit

---
 src/assets/js/middleGround/tool.js |  295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 295 insertions(+), 0 deletions(-)

diff --git a/src/assets/js/middleGround/tool.js b/src/assets/js/middleGround/tool.js
new file mode 100644
index 0000000..e09e8ea
--- /dev/null
+++ b/src/assets/js/middleGround/tool.js
@@ -0,0 +1,295 @@
+import { requestCtx } from "@/assets/js/config";
+import moment from "moment";
+// 澶勭悊鍒楄〃鏌ヨ缁撴灉
+export function handleQueryResourceListData({
+  datas,
+  fields,
+  path,
+  storeInfo,
+  repositoryInfo,
+  coverSize,
+}) {
+  
+  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: JSON.parse(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 (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;
+        }
+      } else {
+        obj.price = obj.defaultSaleMethod.price;
+        obj.oldPrice = obj.defaultSaleMethod.virtualPrice;
+      }
+    }
+    dataList.push(obj);
+  }
+  return dataList;
+}
+
+// 澶勭悊璇︽儏鏌ヨ缁撴灉
+export function handleDetailQueryRequestData({
+  item,
+  fields,
+  path,
+  coverSize,
+  itemFields,
+}) {
+  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;
+      } else if (datas[0].Data) {
+        item[field] = datas[0].Data.Value;
+      }
+    }
+  }
+
+  // 澶勭悊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);
+        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);
+  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) => {
+  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.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.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 (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;
+        item.storeEventId = event[0].Id;
+      }
+    } else {
+      item.price = item.defaultSaleMethod.price;
+      item.oldPrice = item.defaultSaleMethod.virtualPrice;
+    }
+  }
+};
+
+// 鑾峰彇涓嶅彈淇濇姢鐨勫浘鐗�
+export function getPublicImage(md5, width, height) {
+  let src = null;
+  if (md5) {
+    src = requestCtx + `/file/GetPreViewImage?md5=${md5}`;
+  } else {
+    return require("@/assets/images/default-book-img.png");
+  }
+  if (width) src += `&width=${width}`;
+  if (height) src += `&height=${height}`;
+  return src;
+}

--
Gitblit v1.9.1