From f2036f82c20767036fe8c4d627e5694e28e6ab73 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期二, 29 七月 2025 18:29:33 +0800
Subject: [PATCH] 修复资源移动目录产生的BUG

---
 packageBookService/pages/bookServices/detail/buyResource/index.js |  234 ++++++++++++++++++++++++++++-----------------------------
 1 files changed, 115 insertions(+), 119 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/buyResource/index.js b/packageBookService/pages/bookServices/detail/buyResource/index.js
index aa65579..423f6e6 100644
--- a/packageBookService/pages/bookServices/detail/buyResource/index.js
+++ b/packageBookService/pages/bookServices/detail/buyResource/index.js
@@ -209,32 +209,52 @@
     return flattenedArray;
   },
   // 閫掑綊鏍戠粨鏋勶紝濡傛灉鐖剁骇鏈夐攢鍞柟寮�(鏈夋晥鏈�)锛屽幓鎺夋墍鏈夊瓙闆嗙殑閿�鍞柟寮�
-  clearTreeSealmethod(clearSaleMethod, tree) {
+  clearTreeSealmethod(tree, data, parent) {
     for (let item of tree) {
-      const saleData = item.saleMethod &&
-        item.saleMethod.length ?
-        item.saleMethod.find((citem) => citem.SaleType == 'Normal') : null
-      if (
-        ((saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime()) ||
-          clearSaleMethod) && item.children && item.children.length
-      ) {
-        item.children.forEach((ditem) => (ditem.saleMethod = []))
+      // 鏄惁鏄剧ず鎸夐挳
+      item.isShowIcon = false;
+      if (item.sysType == 'CmsItem') {
+        // 鏌ユ壘鐩綍涓嬭祫婧愰攢鍞柟寮忥紝鐩綍涓嬭祫婧愭病鏈夐攢鍞柟寮�
+        if (item.saleMethod?.length == 0) {
+          // 鏌ョ湅鍏剁埗绾ф槸鍚︽湁閿�鍞柟寮�
+          if (parent.saleMethod?.length > 0) {
+            // 鐖剁骇鏄湁閿�鍞柟寮忕洿鎺ユ樉绀烘寜閽�
+            // const index = data.findIndex(i => i.id == parent.id)
+            parent.isShowIcon = true
+          }
+          //  else {
+          //   // 鐖剁骇娌℃湁閿�鍞柟寮忥紝鏌ユ壘璇ヨ祫婧愮埗绾�
+          //   const arr = parent.productLinkPath.split('\\')
+          //   const linkData = arr[arr.length - 1] // arr[arr.length - 1] 鎺掗櫎鑷繁
+          //   linkData.reverse()
+          //   const dataList = linkData.map(ritem => {
+          //     const parentData = data.find(citem => citem.id == ritem);
+          //     if (parentData) return parentData;
+          //   })
+          //   if (dataList?.length > 0) {
+          //     const index = data.findIndex(i => i.id == dataList[0].id)
+          //     data[index].isShowIcon = true
+          //   }
+          // }
+        } else {
+          item.isShowIcon = true
+        }
+      } else {
+        if (item.children?.length > 0) {
+          this.clearTreeSealmethod(item.children, data, item)
+        }
       }
-      if (item.children && item.children.length)
-        this.clearTreeSealmethod(
-          saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime(),
-          item.children
-        )
     }
     return tree
   },
   // 鍕鹃�夌鐢�
   handleTreeCheck(tree) {
     for (const item of tree) {
+      const isbuy = this.resourceIsBuy(item)
       const saleData = item.saleMethod &&
         item.saleMethod.length ?
         item.saleMethod.find((citem) => citem.SaleType == 'Normal') : undefined
-      if (saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime()) {
+      if (saleData && new Date(saleData.EndDate).getTime() >= new Date().getTime() && new Date(saleData.BeginDate).getTime() <= new Date().getTime() && !isbuy && item.isShowIcon) {
         item.disabled = false
       } else {
         item.disabled = true
@@ -258,8 +278,7 @@
       itemFields: {
         SysType: 'CmsFolder',
         // 璧勬簮绫诲瀷锛岃瘯璇绘枃浠讹紝鏄惁鍏佽涓嬭浇绛夊弬鏁�
-        // learnSelectType: [],
-        // selectType: [],
+        learnSelectType: [],
         // freeFile: [],
         // file: [],
         // protectedFile: [],
@@ -281,6 +300,9 @@
           loading: false,
         });
       }
+      this.setData({
+        cacheData: res.datas.cmsDatas[0].datas
+      })
       let list = []
       res.datas.cmsDatas[0].datas.forEach((item) => {
         item.checked = false;
@@ -293,13 +315,13 @@
       this.getTreeList(res.datas.cmsDatas[0].datas, list, query.cmsPath)
       list = this.ensureTreeConsistency(list)
       list = this.changeResourceChildren(list)
-      list = this.clearTreeSealmethod(false, list)
+      list = this.clearTreeSealmethod(list, list, null)
       list = this.handleTreeCheck(list)
       this.handleTreeData(list).forEach(item => {
         item.isbuy = this.resourceIsBuy(item);
         item.isShopCar = this.isShoppingCart(item);
       })
-      console.log('淇敼鍚庝簯', list);
+      // console.log('淇敼鍚庝簯', list);
       let result = [];
       let arr = res.datas.cmsDatas[0].datas.filter(
         (item) => item.saleMethod[0]
@@ -386,28 +408,55 @@
   },
   // 鍒ゆ柇璧勬簮鏄惁璐拱
   resourceIsBuy(data) {
-    if (data.saleMethod && data.saleMethod.length) {
-      const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
-      if (saleData.State == 'Disable') return false
-      const isShow = this.data.buyIdList.some(
-        (item) => item == saleData.Id
-      );
-      // 宸茬粡璐拱
-      if (isShow) return false
-      // 鏈喘涔帮紝鏌ョ湅閿�鍞柟寮忔槸鍚﹁繃鏈�
-      if (!isShow) {
-        const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() &&
-          new Date(saleData.BeginDate).getTime() <= new Date().getTime()
-        if (flag) {
-          // 涓鸿繃鏈� 锛岄渶瑕佽喘涔�
-          return true
-        } else {
-          // 宸茶繃鏈� 鏃犻渶璐拱
-          return false
+    // if (data.saleMethod && data.saleMethod.length) {
+    //   const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
+    //   if (saleData.State == 'Disable') return false
+    //   const isShow = this.data.buyIdList.some(
+    //     (item) => item == saleData.Id
+    //   );
+    //   // 宸茬粡璐拱
+    //   if (isShow) return false
+    //   // 鏈喘涔帮紝鏌ョ湅閿�鍞柟寮忔槸鍚﹁繃鏈�
+    //   if (!isShow) {
+    //     const flag = new Date(saleData.EndDate).getTime() >= new Date().getTime() &&
+    //       new Date(saleData.BeginDate).getTime() <= new Date().getTime()
+    //     if (flag) {
+    //       // 涓鸿繃鏈� 锛岄渶瑕佽喘涔�
+    //       return true
+    //     } else {
+    //       // 宸茶繃鏈� 鏃犻渶璐拱
+    //       return false
+    //     }
+    //   }
+    // } else {
+    //   return false;
+    // }
+    let linkData = data.productLinkPath.split("\\");
+    linkData.reverse()
+    let dataList = linkData.map(item => {
+      let data = this.data.cacheData.find(citem => citem.id == item);
+      if (data) return data;
+    })
+    let isBuy = 1;
+    for (let i = 0; i < dataList.length; i++) {
+      const dataItem = dataList[i];
+      if (dataItem) {
+        if (dataItem.saleMethod.length > 0) {
+          isBuy = 2;
+          if (this.data.bookDetail.purchasedSaleMethodIdList.indexOf(dataItem.saleMethod[0].Id) > -1 || dataItem.saleMethod[0].Price == 0) {
+            isBuy = 3;
+            break;
+          } else {
+            break;
+          }
         }
       }
+    }
+    if (isBuy == 2) {
+      // 鏈喘涔�
+      return false
     } else {
-      return false;
+      return true
     }
   },
 
@@ -501,87 +550,30 @@
     // 淇敼鍚庢柟娉�
     const checkData = this.handleTreeData(this.data.learn).filter(item => item.checked == true)
     console.log('閫変腑', checkData);
-    // let saleMethodIds = [];
-    // let requests = [];
-    // let item = [];
-    // let selectAllId = [];
-    // const child = this.selectComponent("#tree");
-    // item = child.data.superiorPurchaseSaleMethodId;
-    // const sonItem = child.data.sonPurchaseSaleMethodId;
-    // let selectAll = child.data.selectAll;
-    // if (selectAll.length) {
-    //   selectAll.forEach((item) => {
-    //     if (item.saleMethod != 0) {
-    //       selectAllId.push(item.saleMethod[0].Id);
-    //     }
-    //   });
-    //   app.MG.store
-    //     .initOrder({
-    //       requests: selectAllId.map((id) => ({
-    //         saleMethodId: id,
-    //         count: 1,
-    //       })),
-    //     })
-    //     .then((res) => {
-    //       if (res) {
-    //         wx.navigateTo({
-    //           url: "/pages/cart/paymentPage/index?orderNumber=" + res.orderNumber,
-    //         });
-    //         selectAllId = [];
-    //         child.setData({
-    //           selectAll: [],
-    //         });
-    //       }
-    //     });
-    // }
-    // if (item) {
-    //   // 鎷垮埌id
-    //   item.forEach((items) => {
-    //     if (items.saleMethod != 0) {
-    //       saleMethodIds.push(items.saleMethod[0].Id);
-    //     }
-    //   });
-    //   app.MG.store
-    //     .initOrder({
-    //       requests: saleMethodIds.map((id) => ({
-    //         saleMethodId: id,
-    //         count: 1,
-    //       })),
-    //     })
-    //     .then((res) => {
-    //       if (res) {
-    //         wx.navigateTo({
-    //           url: "/pages/cart/paymentPage/index?orderNumber=" + res.orderNumber,
-    //         });
-
-    //         child.setData({
-    //           superiorPurchaseSaleMethodId: [], // 浣跨敤setData鏂规硶娓呯┖sonPurchaseSaleMethodId鏁版嵁
-    //         });
-    //       }
-    //     });
-    // }
-    // if (item.length == 0 && sonItem) {
-    //   app.MG.store
-    //     .initOrder({
-    //       requests: sonItem.map((id) => ({
-    //         saleMethodId: id,
-    //         count: 1,
-    //       })),
-    //     })
-    //     .then((res) => {
-    //       if (res) {
-    //         wx.navigateTo({
-    //           url: "/pages/cart/paymentPage/index?orderNumber=" + res.orderNumber,
-    //         });
-    //         this.setData({
-    //           paymentPage: true,
-    //         });
-    //         child.setData({
-    //           sonPurchaseSaleMethodId: [], // 浣跨敤setData鏂规硶娓呯┖sonPurchaseSaleMethodId鏁版嵁
-    //         });
-    //       }
-    //     });
-    // }
+    if (!checkData.length) return wx.showToast({
+      icon: 'error',
+      title: '璇峰嬀閫夎祫婧�',
+    })
+    let saleMethodIds = [];
+    checkData.forEach((items) => {
+      if (items.saleMethod.length) {
+        saleMethodIds.push(items.saleMethod.find(citem => citem.SaleType == 'Normal').Id);
+      }
+    });
+    app.MG.store
+      .initOrder({
+        requests: saleMethodIds.map((id) => ({
+          saleMethodId: id,
+          count: 1,
+        })),
+      })
+      .then((res) => {
+        if (res) {
+          wx.navigateTo({
+            url: "/pages/cart/paymentPage/index?orderNumber=" + res.orderNumber,
+          });
+        }
+      });
   },
 
   // 绔犺妭鍕鹃�夋柟娉�
@@ -627,6 +619,8 @@
     const updated = this.findAndUpdateItemsByIds(this.data.learn, ids, state)
     this.setData({
       learn: updated
+    }, () => {
+      wx.hideLoading()
     })
   },
   // 鍗曚釜鍕鹃�変簨浠�
@@ -635,6 +629,8 @@
     const updated = this.checkResoucrceInfo(this.data.learn, id)
     this.setData({
       learn: updated
+    }, () => {
+      wx.hideLoading()
     })
   },
   upDateShopCar(id, tree) {

--
Gitblit v1.9.1