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/index.js |  127 +++++++++++++++++++++++++++++-------------
 1 files changed, 87 insertions(+), 40 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/index.js b/packageBookService/pages/bookServices/detail/index.js
index 2d67d09..8fc6ca3 100644
--- a/packageBookService/pages/bookServices/detail/index.js
+++ b/packageBookService/pages/bookServices/detail/index.js
@@ -216,7 +216,8 @@
     scrollTop: 0, // 鎵爜杩涜祫婧愭粴鍔�
     source: '',
     activeId: '',
-    qrTabValue: ''
+    qrTabValue: '',
+    cacheData: [], // 浜戝涔犲垵濮嬫暟鎹�
   },
   // 鎵爜鍒拌祫婧愬垪琛紝婊氬姩鍒拌璧勬簮浣嶇疆
   handleScrollTop(e) {
@@ -459,9 +460,11 @@
         freeEpubPage: [], //epub璇曡鐧惧垎姣�
         bookEditor: [], //鍥句功缂栬緫
         contactInformation: [], //鑱旂郴鏂瑰紡
+        IsTextbook: [] // 鏄惁涓烘暀鏉� 濡傛灉鏄暀鏉愮姝㈡樉绀烘墍鏈夎喘涔版寜閽�
       },
     };
     app.MG.store.getProductDetail(query).then(async (res) => {
+      res.datas.IsTextbook = res.datas.IsTextbook == '1' ? true : false
       this.getResourceCode(id, res.datas.rootCmsItemId)
       res.datas.bookEditor = res.datas.bookEditor ? res.datas.bookEditor : '-'
       res.datas.contactInformation = res.datas.contactInformation ? res.datas.contactInformation : '-'
@@ -990,23 +993,27 @@
     // 杩斿洖鏇存柊鍚庣殑鏁扮粍  
     return array;
   },
-  // 閫掑綊鏍戠粨鏋勶紝濡傛灉鐖剁骇鏈夐攢鍞柟寮�(鏈夋晥鏈�)锛屽幓鎺夋墍鏈夊瓙闆嗙殑閿�鍞柟寮�
-  clearTreeSealmethod(clearSaleMethod, tree) {
+  // 閫掑綊鏍戠粨鏋�
+  handleSalmethodBtn(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) {
+            // 鐖剁骇鏄湁閿�鍞柟寮忕洿鎺ユ樉绀烘寜閽�
+            parent.isShowIcon = true
+          }
+        } else {
+          item.isShowIcon = true
+        }
+      } else {
+        if (item.children?.length > 0) {
+          this.handleSalmethodBtn(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
   },
@@ -1047,6 +1054,9 @@
           loading: false,
         });
       }
+      this.setData({
+        cacheData: res.datas.cmsDatas[0].datas
+      })
       let list = []
       // 鍒ゆ柇浜戝涔犳湁鏃犻攢鍞柟寮忓拰鏈夋晥鏈�
       const cloundSaleMethod =
@@ -1111,8 +1121,8 @@
           teach: list,
         });
       } else if (type.refCode == "jsek_cloudLearning") {
-        // 浜戝涔犱笂鏃犻攢鍞柟寮忥紝璧扮洰褰� 璧勬簮 閿�鍞柟寮忓幓闄ゆ柟娉�
-        if (!flags) list = this.clearTreeSealmethod(false, list)
+        // 鎺у埗鎸夐挳鏄剧ず
+        list = this.handleSalmethodBtn(list, list, null)
         // 鍒ゆ柇棰嗗彇鏌ョ湅鏄惁鏄剧ず(浜戝涔狅紝鎴栬祫婧愮洰褰曪紝鏈夊敭浠蜂负0)
         let isshowDrawBtn = res.datas.cmsDatas[0].datas.some(
           (item) =>
@@ -1122,12 +1132,12 @@
           new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime()
         ) || (flags && cloundSaleMethod.Price == 0)
         // 鍒ゆ柇浜戝涔犲叏閮ㄨ喘涔版寜閽槸鍚︽樉绀�
-        let isShowBuyCloundMenu = flags && cloundSaleMethod.Price > 0 && !this.data.buyIdList.includes(cloundSaleMethod.Id)
+        let isShowBuyCloundMenu = flags && cloundSaleMethod.Price > 0 && !this.data.buyIdList.includes(cloundSaleMethod.Id) && !this.data.bookDetail.IsTextbook
         // 鍒ゆ柇璧勬簮璐拱鎸夐挳鏄惁鏄剧ず 锛堜簯瀛︿範鏃犻攢鍞柟寮忥紝璧勬簮鍜岀洰褰曚腑鏈夐攢鍞柟寮忥紝涓斿敭浠峰ぇ浜�0锛�
         let isShowBuyCloundBtn = !flags && res.datas.cmsDatas[0].datas.some(item => item.saleMethod.length &&
           item.saleMethod.find((citem) => citem.SaleType == 'Normal').Price > 0 &&
           new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').EndDate).getTime() >= new Date().getTime() &&
-          new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime())
+          new Date(item.saleMethod.find((citem) => citem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime()) && !this.data.bookDetail.IsTextbook
         // 鍒ゆ柇璐墿杞︽寜閽拰閿佹寜閽槸鍚︽樉绀�
         this.handleTreeData(list).forEach(item => {
           item.isbuy = this.resourceIsBuy(item);
@@ -1149,7 +1159,6 @@
           learnPath: type.productLinkPath
         });
       }
-      console.log('1', result);
     })
   },
   //  鑾峰彇 浜戞祴璇�
@@ -1715,28 +1724,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 || saleData.Price == 0) 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 || saleData.Price == 0) 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
     }
   },
   // 浜戝涔犺祫婧愭槸鍚︽樉绀洪攣鍥炬爣锛堟湭璐拱锛屼笖璧勬簮鍞环澶т簬闆讹級
@@ -3070,6 +3106,17 @@
       cloundMenuIsBuy: flag
     })
   },
+
+  // 鏄剧ずISBN
+  showISBN() {
+    wx.showModal({
+      title: '',
+      content: this.data.bookDetail.isbn,
+      showCancel: false,
+      confirmText: '鍏抽棴',
+      success: (res) => {}
+    })
+  },
   /**
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
    */

--
Gitblit v1.9.1