From c96612e8a63ecef9590be0f8b5199277ec94e5b9 Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期三, 18 九月 2024 18:43:12 +0800
Subject: [PATCH] 云学习购买目录,修改bug

---
 packageBookService/pages/bookServices/detail/components/tree/index.js |  235 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 111 insertions(+), 124 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/components/tree/index.js b/packageBookService/pages/bookServices/detail/components/tree/index.js
index 4194ed3..d957cf7 100644
--- a/packageBookService/pages/bookServices/detail/components/tree/index.js
+++ b/packageBookService/pages/bookServices/detail/components/tree/index.js
@@ -51,26 +51,23 @@
     deadline: {
       type: String,
     },
+    cloundMenuIsBuy: {
+      type: Boolean
+    }
   },
   data: {
-    sonPurchaseSaleMethodId: "",
-    superiorPurchaseSaleMethodId: [],
     activeValues: [1, 2],
     webpageSrc: "",
     cloudShoppingCart: [],
-    selectAll: [],
     shoppingCart: true,
     stop: false,
     cart: true,
-    canExecute: true
+    canExecute: true,
+    purchaseList: []
   },
   ready() {},
 
-  onLoad() {
-    this.setData({
-      sonPurchaseSaleMethodId: [],
-    });
-  },
+  onLoad() {},
   observers: {
     treeList: function (newValue) {
       const list = [];
@@ -94,9 +91,22 @@
         }
       }
     },
+    // 閬嶅巻鏍戠粨鏋勮浆鎹负鏁扮粍鏂规硶
+    handleTreeData(array) {
+      const flattenedArray = [];
+      array.forEach((node) => {
+        // 灏嗗綋鍓嶈妭鐐规坊鍔犲埌灞曞紑鐨勬暟缁勪腑
+        flattenedArray.push(node);
+        // 閫掑綊澶勭悊瀛愯妭鐐�
+        if (node.children && node.children.length > 0) {
+          const childrenArray = this.handleTreeData(node.children);
+          flattenedArray.push(...childrenArray);
+        }
+      });
+      return flattenedArray;
+    },
     // 鑺傜偣灞曞紑
     handleChange(e) {
-      console.log(e.detail.value);
       this.setData({
         openIds: e.detail.value,
       });
@@ -124,11 +134,25 @@
     // 鍒ゆ柇璧勬簮鏄惁璐拱
     resourceIsBuy(data) {
       if (data.saleMethod && data.saleMethod.length) {
-        if (data.saleMethod[0].State == "Disable") return false;
+        const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
+        if (saleData.State == 'Disable') return false
         const isSHow = this.properties.buyIds.some(
-          (item) => item == data.saleMethod[0].Id
+          (item) => item == saleData.Id
         );
-        return !isSHow;
+        // 宸茬粡璐拱
+        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;
       }
@@ -146,24 +170,17 @@
       const parentName = parent ? parent.name : "鏁欏璧勬簮";
       // 璧勬簮璐拱椤甸潰(鍙睍绀烘湭璐拱璧勬簮) 鐐瑰嚮涓嶈烦杞�
       if (this.properties.isShowCheck) return false;
-      if (
-        this.properties.tab == "jsek_cloudLearning" &&
-        this.resourceIsBuy(item)
-      ) {
-        return wx.showToast({
-          icon: "error",
-          title: item.saleMethod[0].Price > 0 ?
-            "璇峰厛璐拱璇ヨ祫婧�" : "璇峰厛鐐瑰嚮棰嗗彇鏌ョ湅鎸夐挳",
-        });
-      }
-      if (this.properties.tab == "jsek_teachingResources" && (item.file || item.freeFile)) {
-        let file = item.fileMap[item.file] ? item.fileMap[item.file] : item.fileMap[item.freeFile]
-        if (file && file.protectType !== "Public") {
-          return wx.showToast({
-            icon: "error",
-            title: "璧勬簮涓嶅彲鐢紝璇疯仈绯荤鐞嗗憳",
-          });
+      if (item.selectType == "webpage") {
+        // 缃戦〉绫诲瀷璺宠浆鍒扮綉鍧�澶嶅埗椤碉紝鍥犱负url浼犲弬涓嶈兘浼� 甯﹀弬鏁扮殑缃戠粶鍦板潃锛屾墍浠ユ澶勮鎶婄綉缁滃湴鍧�閲岀殑浼犲弬鎽樺嚭鏉ワ紝鏀惧埌url閲�
+        let urlData = ''
+        const flags = item.jsek_link.indexOf("?")
+        if (flags > -1) {
+          urlData = item.jsek_link.slice(flags + 1, item.jsek_link.length)
         }
+        url = '/packageBookService/pages/bookServices/linkPage/index'
+        return wx.navigateTo({
+          url: urlData ? url + `?path=${item.jsek_link.slice(0,flags)}` + '&' + urlData : url + `?path=${item.jsek_link}`
+        })
       }
       if (!item.file && !item.freeFile && !item.protectedFile) {
         return wx.showToast({
@@ -184,20 +201,49 @@
           })
         }
       }
-      let url;
-      if (item.selectType == "webpage") {
-        // 缃戦〉绫诲瀷璺宠浆鍒扮綉鍧�澶嶅埗椤碉紝鍥犱负url浼犲弬涓嶈兘浼� 甯﹀弬鏁扮殑缃戠粶鍦板潃锛屾墍浠ユ澶勮鎶婄綉缁滃湴鍧�閲岀殑浼犲弬鎽樺嚭鏉ワ紝鏀惧埌url閲�
-        let urlData = ''
-        const flags = item.jsek_link.indexOf("?")
-        if (flags > -1) {
-          urlData = item.jsek_link.slice(flags + 1, item.jsek_link.length)
+      if (this.properties.tab == "jsek_teachingResources" && (item.file || item.freeFile)) {
+        let file = item.fileMap[item.file] ? item.fileMap[item.file] : item.fileMap[item.freeFile]
+        if (file && file.protectType !== "Public") {
+          return wx.showToast({
+            icon: "error",
+            title: "璧勬簮涓嶅彲鐢紝璇疯仈绯荤鐞嗗憳",
+          });
         }
-        url = '/packageBookService/pages/bookServices/linkPage/index'
-        return wx.navigateTo({
-          url: urlData ? url + `?path=${item.jsek_link.slice(0,flags)}` + '&' + urlData : url + `?path=${item.jsek_link}`
-        })
       }
-
+      if (this.properties.tab == "jsek_cloudLearning") {
+        // 鍒ゆ柇鐖剁骇鎴栬嚜韬槸鍚﹁喘涔�
+        var myEventOption = {
+          bubbles: true,
+          composed: true,
+        };
+        // 鍑哄彂鍒ゆ柇浜戝涔犳槸鍚﹁喘涔板垽鏂�
+        this.triggerEvent("getCloundIsBuy", {}, myEventOption)
+        if (!this.properties.cloundMenuIsBuy) {
+          // 浜戝涔犳湭璐拱锛屾煡鎵句互璐拱鐨勭洰褰曞拰璧勬簮鏈韩
+          const learn = this.handleTreeData(this.properties.treeList).filter(
+            (citem) => citem.saleMethod &&
+            citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal') &&
+            new Date(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').EndDate).getTime() >= new Date().getTime() &&
+            new Date(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').BeginDate).getTime() <= new Date().getTime() &&
+            item.productLinkPath.includes(citem.productLinkPath)
+          )
+          // 璧勬簮鍜岀埗绾х洰褰曢兘鏃犻攢鍞柟寮�
+          // if (!learn.length) return wx.showToast({
+          //   icon: 'error',
+          //   title: '鏆傛湭寮�鍞�',
+          // })
+          const buyList = learn.filter((citem) => this.properties.buyIds.includes(citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal').Id))
+          // 璧勬簮鍜屾湰韬兘鏈喘涔�
+          if (!buyList.length) {
+            const itemSaleMethod = item.saleMethod && item.saleMethod.length ? item.saleMethod.find(citem => citem.SaleType == 'Normal') : undefined
+            return wx.showToast({
+              icon: 'error',
+              title: itemSaleMethod && itemSaleMethod.Price == 0 ? '璇峰厛棰嗗彇璧勬簮' : '璇峰厛璐拱璧勬簮',
+            })
+          }
+        }
+      }
+      let url;
       if (item.selectType == "video" || item.learnSelectType == "video") {
         url = "/packageDomain/pages/resourceDetails/myVideo/index";
       }
@@ -237,7 +283,6 @@
           result.push(...item.children);
         }
       }
-      console.log(this.properties.treeList, "this.properties.treeList");
       this.properties.treeList.forEach((item) => {
         findChildren(item);
       });
@@ -258,7 +303,6 @@
       tree.forEach((node) => {
         flatten(node);
       });
-      // console.log(result, 'result');
       return result;
     },
 
@@ -266,7 +310,6 @@
     findAndUpdateItemsByIds(tree, ids, state) {
       function findAndUpdate(node) {
         if (ids.includes(node.id)) {
-          // console.log(node, 'node');
           node.checked = state; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
         }
         if (node.children && node.children.length > 0) {
@@ -281,63 +324,31 @@
       return tree; // 杩斿洖淇敼鍚庣殑瀹屾暣鏁扮粍
     },
 
-    checkResoucrceInfo(tree, id) {
-      function findAndUpdate(node) {
-        if (node.sysType == "CmsFolder" && node.children.length > 0) {
-          for (let index = 0; index < node.children.length; index++) {
-            const element = node.children[index];
-            findAndUpdate(element);
-          }
-        } else if (id == node.id && node.sysType == "CmsItem") {
-          node.checked = !node.checked; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
-        }
-      }
-      for (let node of tree) {
-        findAndUpdate(node); // 瀵规瘡涓《灞傝妭鐐规墽琛屾煡鎵惧拰鏇存柊鎿嶄綔
-      }
-      return tree; // 杩斿洖淇敼鍚庣殑瀹屾暣鏁扮粍
-    },
     // 鍏ㄩ��
     checkAll() {
       const ids = [];
-      const list = [];
+      let list = [];
       let checked = "";
       this.properties.treeList.forEach((item) => {
         if (item.children && item.children.length > 0) {
           list.push(...this.flattenTree([item]));
         }
       });
+      list = list.filter(item => !item.disabled)
       list.forEach((item) => {
         ids.push(item.id);
         checked = item.checked;
       });
-      // const flag =
-      //   list.findIndex((item) => item.checked == false) > -1 ? true : false;
       const flag = this.properties.checkAllState;
-      // const updataList = this.findAndUpdateItemsByIds(
-      //   this.properties.treeList,
-      //   ids,
-      //   flag
-      // );
-      // this.setData({
-      //   treeList: updataList,
-      // });
-
       var myEventDetail = {
         ids,
         flag,
-      }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
+      };
       var myEventOption = {
         bubbles: true,
         composed: true,
-      }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+      };
       this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
-
-      if (!checked) {
-        this.setData({
-          selectAll: list,
-        });
-      }
       var myEventDetail = {
         value: !flag,
       }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
@@ -352,23 +363,18 @@
     checkResourceTitle(e) {
       const flag = e.detail.checked;
       // 杩欎釜鏃跺�檆hecked鐨勫�兼槸fals
-      let checkResourceTitleList = [];
       const item = e.currentTarget.dataset.item;
       const parent = this.findParentById(this.properties.learnList, item.id);
-      let childrenList;
+      let childrenList = [];
       let flagNum;
       if (parent)
         childrenList = parent.children.filter((citem) => citem.id !== item.id);
-      if (childrenList)
-        flagNum = childrenList.findIndex((item) => item.checked == false);
+      flagNum = childrenList.findIndex((item) => item.checked == false);
       let list = this.flattenTree([item]);
+      list = list.filter(item => !item.disabled)
       let ids = [];
       list.forEach((item) => {
-        if (
-          item.sysType == "CmsFolder" ||
-          (item.sysType == "CmsItem" && item.saleMethod.length)
-        )
-          ids.push(item.id);
+        ids.push(item.id)
       });
       var myEventDetail = {
         ids,
@@ -378,26 +384,22 @@
         bubbles: true,
         composed: true,
       }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+      // 鍘诲嬀閫夌偣鍑荤洰褰曠殑瀛愰」
       this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
-      if (flagNum == -1) {
+      // 鍘诲嬀閫夌偣鍑荤洰褰曠殑鐖堕」
+      if (flagNum == -1 && parent && !parent.disabled) {
         let checkedState;
         var myEventDetail = {
           ids: [parent.id],
           flag,
-        }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
+        };
         var myEventOption = {
           bubbles: true,
           composed: true,
-        }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+        };
         this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
       }
-      if (!list.checked) {
-        this.setData({
-          superiorPurchaseSaleMethodId: list,
-        });
-      }
       list.forEach((items) => {
-        console.log(items.checked, "itesasd");
         if (!items.checked) {
           this.setData({
             cloudShoppingCart: items,
@@ -429,7 +431,7 @@
       };
       this.triggerEvent("changeResourceChecked", myEventDetail, myEventOption);
       // 閫氳繃鍒ゆ柇,鑱旈�氱埗绾hecked
-      if (flag == -1) {
+      if (flag == -1 && !parent.disabled) {
         let checkedState;
         citem.checked == false ? (checkedState = true) : (checkedState = false);
         var myEventDetail = {
@@ -455,7 +457,7 @@
         this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
       }
       // 鑱旈�氭渶澶栧眰绾hecked, 濡傛灉鎵�鏈夊瓙椤瑰嬀閫�, 涓斿綋鍓嶆渶澶栧眰鏈嬀閫�, 鍒欏姞涓婃渶澶栧眰鐨勫嬀閫�
-      if (!citem.checked && outermost) {
+      if (!citem.checked && outermost && !outermost.disabled) {
         let allchildren = this.flattenTree([outermost]);
         allchildren = allchildren.filter(
           (item) =>
@@ -476,31 +478,12 @@
           this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
         }
       }
-      if (!citem.checked) {
-        //閫変腑鐨勬椂鍊欐坊鍔爄d
-        let sonPurchaseSaleMethodId = this.data.sonPurchaseSaleMethodId || [];
-        if (this.properties.paymentPage) {
-          sonPurchaseSaleMethodId = [];
-          this.properties.paymentPage = false;
-        }
-        if (!this.properties.paymentPage) {
-          sonPurchaseSaleMethodId.push(citem.saleMethod[0].Id);
-        }
-        this.setData({
-          sonPurchaseSaleMethodId: sonPurchaseSaleMethodId,
-        });
-      } else {
-        // 鍙栨秷閫変腑鐨勬椂鍊欏垹闄d
-      }
     },
     // 鍔犲叆璐墿杞�
     async onCloudShoppingCart(e) {
       let shoppingCartGetId = [];
-
       const item = e.currentTarget.dataset.item;
-      console.log(item.isShopCar);
       const saleMethodId = e.currentTarget.dataset.item.saleMethod[0].Id;
-      console.log(saleMethodId);
       let query = {
         start: 0,
         size: 999,
@@ -512,8 +495,6 @@
         shoppingCartGetId.push(item.saleMethod.id);
       });
       if (shoppingCartGetId.includes(saleMethodId)) {
-        // this.data.updateShoppingCartHidden();
-        // this.data.updateCloudLearning();
         wx.showToast({
           icon: "error",
           title: "宸叉坊鍔�",
@@ -530,14 +511,20 @@
           }, ],
         };
         const addRes = await app.MG.store.addShoppingCart(query);
-        console.log(addRes, "addRes");
         if (addRes) {
           wx.showToast({
             icon: "success",
             title: "娣诲姞鎴愬姛",
           });
           item.isShopCar = false;
-          this.triggerEvent("updateCloudLearning");
+          var myEventDetail = {
+            id: item.id,
+          };
+          var myEventOption = {
+            bubbles: true,
+            composed: true,
+          };
+          this.triggerEvent("updateCloudLearning", myEventDetail, myEventOption);
         }
       }
     },

--
Gitblit v1.9.1