From 04c7b0163caeae4ab1c5da62e301fa993101cfad Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期一, 31 三月 2025 10:40:45 +0800
Subject: [PATCH] bug修改

---
 packageBookService/pages/bookServices/detail/components/tree/index.js |  669 ++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 415 insertions(+), 254 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/components/tree/index.js b/packageBookService/pages/bookServices/detail/components/tree/index.js
index 715f67e..d7151ef 100644
--- a/packageBookService/pages/bookServices/detail/components/tree/index.js
+++ b/packageBookService/pages/bookServices/detail/components/tree/index.js
@@ -1,31 +1,33 @@
-const util = require('./components/util') // 寮曞叆灏佽杩囩殑鍔犺浇鎻愮ず
+const util = require("./components/util"); // 寮曞叆灏佽杩囩殑鍔犺浇鎻愮ず
 import {
   loginInfo
-} from '../../../../../../assets/js/login'
-const app = getApp()
+} from "../../../../../../assets/js/login";
+const app = getApp();
 Component({
-  // checked: false,
-
   properties: {
     treeList: {
       type: Array,
-      value: []
+      value: [],
+    },
+    learnList: {
+      type: Array,
+      value: [],
     },
     bookInfo: {
       type: Object,
-      value: {}
+      value: {},
     },
     buyIds: {
       type: Array,
-      value: []
+      value: [],
     },
     tab: {
       type: String,
-      value: ''
+      value: "",
     },
     applyState: {
       type: String,
-      value: ''
+      value: "",
     },
     openIds: {
       type: Array,
@@ -42,53 +44,71 @@
     superior: {
       type: Boolean,
       value: false,
+    },
+    checkAllState: {
+      type: Boolean,
+    },
+    deadline: {
+      type: String,
+    },
+    cloundMenuIsBuy: {
+      type: Boolean
+    },
+    learnMenu: {
+      type: Object
+    },
+    isCloundHaveSaleMethod: {
+      type: Boolean
     }
   },
   data: {
-    sonPurchaseSaleMethodId: '',
-    superiorPurchaseSaleMethodId: [],
     activeValues: [1, 2],
-    webpageSrc: '',
+    webpageSrc: "",
     cloudShoppingCart: [],
-    selectAll: []
+    shoppingCart: true,
+    stop: false,
+    cart: true,
+    canExecute: true,
+    purchaseList: []
   },
-  ready() {
-    this.setData({
-
-    })
-    console.log('鍑嗗');
-  },
-
-  onLoad() {
-    this.setData({
-      sonPurchaseSaleMethodId: []
-    })
-    console.log(this.data.sonPurchaseSaleMethodId, 'sonPurchaseSaleMethodId789');
-  },
+  ready() {},
+  onLoad() {},
   observers: {
-    'openIds': function (newValue) {
-      // var myEventDetail = {
-      // }
-      // var myEventOption = {
-      //   bubbles: true,
-      //   composed: true
-      // }
-      // this.triggerEvent('handleTree', myEventDetail, myEventOption)
-    }
+    treeList: function (newValue) {
+      const list = [];
+      let checked = "";
+      this.properties.treeList.forEach((item) => {
+        if (item.children && item.children.length > 0) {
+          list.push(...this.flattenTree([item]));
+        }
+      });
+      const flag = list.findIndex((item) => item.checked == true);
+    },
   },
 
   methods: {
-
     handleList(tree) {
       for (let index = 0; index < tree.length; index++) {
         const item = tree[index];
-        if (item.sysType == 'CmsItem' && !item.checked) {
-
-        }
+        if (item.sysType == "CmsItem" && !item.checked) {}
         if (item.children && item.children.length > 0) {
-          this.handleList(item.children)
+          this.handleList(item.children);
         }
       }
+    },
+    // 閬嶅巻鏍戠粨鏋勮浆鎹负鏁扮粍鏂规硶
+    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) {
@@ -99,106 +119,155 @@
     handleCheck(data) {
       for (let index = 0; index < data.length; index++) {
         const element = data[index];
-        element.checked = true
+        element.checked = true;
         if (element.childrenCount && element.type == "productFolder") {
-          handleCheck(element.children)
+          handleCheck(element.children);
         }
       }
     },
     downloadTeach(e) {
-      const value = e.currentTarget.dataset.value
+      const value = e.currentTarget.dataset.value;
       var myEventDetail = {
         value,
-      } // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
+      }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
       var myEventOption = {
         bubbles: true,
-        composed: true
-      } // 瑙﹀彂浜嬩欢鐨勯�夐」
-      this.triggerEvent('downloadTeach', myEventDetail, myEventOption)
-
+        composed: true,
+      }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+      this.triggerEvent("downloadTeach", myEventDetail, myEventOption);
     },
     // 鍒ゆ柇璧勬簮鏄惁璐拱
     resourceIsBuy(data) {
       if (data.saleMethod && data.saleMethod.length) {
-        if (data.saleMethod[0].State == 'Disable') return false
-        const isSHow = this.properties.buyIds.some((item) => item == data.saleMethod[0].Id)
-        return !isSHow
+        const saleData = data.saleMethod.find((item) => item.SaleType == 'Normal')
+        if (saleData.State == 'Disable') return false
+        const isSHow = this.properties.buyIds.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
+        return false;
       }
     },
     // 璺宠浆闊宠棰戞挱鏀惧櫒
     goPlayer(e) {
       // 妫�鏌ョ櫥褰曠姸鎬�
-      const token = wx.getStorageSync(app.config.tokenKey)
-      if (!token) {
-        loginInfo(app, (data) => {
-          // 濡傛灉涓嶆槸绗竴娆$櫥褰曪紝浼氭墽琛屽洖璋�
-          if (data) {
-            // 鐧诲綍鎴愬姛锛岃嚜鍔ㄨ褰晅oken鍜岀敤鎴蜂俊鎭紝骞惰繑鍥瀟rue
-          } else {
-            // 鍑虹幇閿欒锛岃繑鍥瀎alse
+      const goPlayerFun = () => {
+        const item = e.currentTarget.dataset.item;
+        const parent = e.currentTarget.dataset.parent;
+        const parentProductLinkPath = parent ?
+          parent.productLinkPath :
+          wx.getStorageSync("teachResourcesPath");
+        const parentName = parent ? parent.name : "鏁欏璧勬簮";
+        // 璧勬簮璐拱椤甸潰(鍙睍绀烘湭璐拱璧勬簮) 鐐瑰嚮涓嶈烦杞�
+        if (this.properties.isShowCheck) return false;
+        if (item.selectType == "webpage" || item.learnSelectType == "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)
           }
-        })
-      } else {
-        if (this.properties.isShowCheck) return true
-        const item = e.currentTarget.dataset.item
-        const parent = e.currentTarget.dataset.parent
-        let url
-        if (item.selectType == 'video' || item.learnSelectType == 'video') {
-          url = '/packageDomain/pages/resourceDetails/myVideo/index'
-        } else if (item.selectType == 'audio' || item.learnSelectType == 'audio') {
-          url = '/packageDomain/pages/resourceDetails/myAudio/index'
-        } else if (item.selectType == 'picture' || item.selectType == 'zip') {
-          url = '/packageDomain/pages/resourceDetails/document/index'
+          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' && this.resourceIsBuy(item)) {
+        if (!item.file && !item.freeFile && !item.protectedFile) {
           return wx.showToast({
+            icon: 'error',
+            title: '鏆傛棤璧勬簮',
+          })
+        }
+        if (item.selectType == 'zip' || item.learnSelectType == 'zip') {
+          return wx.showToast({
+            icon: 'error',
+            title: '璇峰墠寰�PC绔笅杞�',
+          })
+        }
+        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: "none",
+              title: "璧勬簮涓嶅彲鐢紝璇疯仈绯荤鐞嗗憳",
+            });
+          }
+        }
+        if (this.properties.tab == "jsek_cloudLearning") {
+          // 1.鎵惧嚭鎵�鏈夌埗绾х洰褰曞拰鏈韩(鏈夐攢鍞柟寮�) 鍜� 浜戝涔犳湰韬�(鏈夐攢鍞柟寮�) 鏀惧埌涓�涓暟缁�  涓虹┖鍒欐殏鏈紑鏀鹃攢鍞�
+          let learn = []
+          if (this.properties.isCloundHaveSaleMethod) {
+            // 1.1 浜戝涔犳湁閿�鍞柟寮忥紝鍔犲叆鐖剁骇鏁扮粍
+            learn.push(this.properties.learnMenu)
+          } else {
+            // 1.2 浜戝涔犳棤閿�鍞柟寮忥紝灏嗙埗绾х洰褰曞拰鏈韩鍔犲叆鏁扮粍
+            learn = this.handleTreeData(this.properties.learnList).filter(
+              (citem) => citem.saleMethod &&
+              citem.saleMethod.find((ditem) => ditem.SaleType == 'Normal' && ditem.Price > 0) &&
+              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)
+            )
+          }
+          // 2.鎵惧嚭杩欎釜鏁扮粍閲屽凡璐拱鐨� 褰㈡垚鏂版暟缁�     涓虹┖鍒欐湭璐拱
+          let buyList = []
+          if (learn.length) buyList = learn.filter((item) => this.properties.buyIds.includes(item.saleMethod.find((citem) => citem.SaleType == 'Normal').Id))
+          // 鏈夌埗绾�(鍖呭惈閿�鍞柟寮�)锛屼笖鏈喘涔�
+          if (learn.length && !buyList.length && !item.freeFile) return wx.showToast({
             icon: 'error',
             title: '璇峰厛璐拱璇ヨ祫婧�',
           })
+          if (item.protectedFile || item.freeFile) {
+            let file = item.fileMap[item.protectedFile] ? item.fileMap[item.protectedFile] : item.fileMap[item.freeFile]
+            if (file && file.protectType !== "Public") {
+              return wx.showToast({
+                icon: 'none',
+                title: "璧勬簮涓嶅彲鐢紝璇疯仈绯荤鐞嗗憳",
+              });
+            }
+          }
+        }
+        let url;
+        if (item.selectType == "video" || item.learnSelectType == "video") {
+          url = "/packageDomain/pages/resourceDetails/myVideo/index";
+        }
+        if (
+          item.selectType == "audio" ||
+          item.learnSelectType == "audio"
+        ) {
+          url = "/packageDomain/pages/resourceDetails/myAudio/index";
+        }
+        if (item.selectType == "picture" || item.selectType == 'document' || item.selectType == 'pdf' || item.learnSelectType == "picture" || item.learnSelectType == 'document' || item.learnSelectType == 'pdf') {
+          url = "/packageDomain/pages/resourceDetails/document/index";
         }
         wx.navigateTo({
-          url: `${url}?productLinkPath=${item.productLinkPath}&parentProductLinkPath=${parent.productLinkPath}&parentName=${parent.name}&activeId=${item.id}&bookId=${this.properties.bookInfo.id}&bookName=${this.properties.bookInfo.name}&cmsId=${this.properties.bookInfo.rootCmsItemId}`,
+          url: `${url}?productLinkPath=${item.productLinkPath}&parentProductLinkPath=${parentProductLinkPath}&parentName=${parentName}&activeId=${item.id}&bookId=${this.properties.bookInfo.id}&bookName=${this.properties.bookInfo.name}&cmsId=${this.properties.bookInfo.rootCmsItemId}&formPath=${this.properties.tab}&applyState=${this.properties.applyState}&deadline=${this.properties.deadline}`,
+        });
+      }
+      const token = wx.getStorageSync(app.config.tokenKey);
+      if (!token && this.data.tab != 'jsek_teachingResources') {
+        loginInfo(app, (data) => {
+          if (data) {}
         })
-        if (item.selectType == 'document' || item.selectType == 'pdf') {
-          const fileLink = app.config.requestCtx + '/file/api/ApiDownload?md5=' + item.file
-          console.log(fileLink, 'fileLink');
-          //鎻愮ず鍔犺浇涓�
-          util.showLoading()
-          // 鍗曟涓嬭浇鍏佽鐨勬渶澶ф枃浠朵负 200MB
-          wx.downloadFile({
-            url: fileLink, // 鍦板潃宸叉墦鐮侊紝鑷繁鎹釜鍏朵粬鐨勫湴鍧�锛�"https://www.xxxxx.com/file/娴嬭瘯閫氱煡.pdf"锛�
-            success: function (res) {
-              console.log(res, "wx.downloadFile success res")
-              if (res.statusCode != 200) {
-                util.hideLoadingWithErrorTips()
-                return false
-              }
-              var Path = res.tempFilePath //杩斿洖鐨勬枃浠朵复鏃跺湴鍧�锛岀敤浜庡悗闈㈡墦寮�鏈湴棰勮鎵�鐢�
-              wx.openDocument({
-                filePath: Path,
-                showMenu: true,
-                success: function (res) {
-                  console.log('鎵撳紑鎴愬姛');
-                  util.hideLoading()
-                }
-              })
-            },
-            fail: function (err) {
-              console.log(err, "wx.downloadFile fail err");
-              util.hideLoadingWithErrorTips()
-            }
-          })
-        }
-        if (item.selectType == 'webpage') {
-          this.setData({
-            webpageSrc: item.jsek_link
-          })
-          console.log(this.data.webpageSrc, 'webpageSrc');
-        }
+      } else {
+        goPlayerFun()
       }
     },
+
     // 鎷垮埌鎵�鏈夐」
     getAllChildren(id) {
       let result = [];
@@ -206,13 +275,13 @@
       function findChildren(item) {
         if (item.id === id) {
           if (item.children && item.children.length > 0) {
-            item.children.forEach(child => {
+            item.children.forEach((child) => {
               findChildren(child);
             });
           }
         } else {
           if (item.children && item.children.length > 0) {
-            item.children.forEach(child => {
+            item.children.forEach((child) => {
               findChildren(child);
             });
           }
@@ -221,8 +290,7 @@
           result.push(...item.children);
         }
       }
-      console.log(this.properties.treeList, 'this.properties.treeList');
-      this.properties.treeList.forEach(item => {
+      this.properties.treeList.forEach((item) => {
         findChildren(item);
       });
       return result;
@@ -234,25 +302,22 @@
       function flatten(node) {
         result.push(node);
         if (node.children && node.children.length > 0) {
-          node.children.forEach(child => {
+          node.children.forEach((child) => {
             flatten(child);
           });
         }
       }
-      tree.forEach(node => {
-
+      tree.forEach((node) => {
         flatten(node);
       });
-      // console.log(result, 'result');
-      return result
+      return result;
     },
 
     // 鍙樹负true
-    findAndUpdateItemsByIds(tree, ids) {
+    findAndUpdateItemsByIds(tree, ids, state) {
       function findAndUpdate(node) {
         if (ids.includes(node.id)) {
-          // console.log(node, 'node');
-          node.checked = !node.checked // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
+          node.checked = state; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
         }
         if (node.children && node.children.length > 0) {
           for (let child of node.children) {
@@ -260,165 +325,261 @@
           }
         }
       }
-
-      for (let node of tree) {
-
-        findAndUpdate(node); // 瀵规瘡涓《灞傝妭鐐规墽琛屾煡鎵惧拰鏇存柊鎿嶄綔
-      }
-      // console.log(tree, 'tree345');
-      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 checked = ''
-      this.properties.treeList.forEach(item => {
+      wx.showLoading()
+      const ids = [];
+      let list = [];
+      let checked = "";
+      this.properties.treeList.forEach((item) => {
         if (item.children && item.children.length > 0) {
-          list.push(...this.flattenTree([item]))
+          list.push(...this.flattenTree([item]));
         }
-      })
-      list.forEach(item => {
-        ids.push(item.id)
-
-        checked = item.checked
-      })
-
-
-      const updataList = this.findAndUpdateItemsByIds(this.properties.treeList, ids);
-
-      console.log(checked, 'list');
-      if (!checked) {
-        this.setData({
-          selectAll: list
-        })
-
-      }
-
-      this.setData({
-        treeList: updataList
-      })
+      });
+      list = list.filter(item => !item.disabled)
+      list.forEach((item) => {
+        ids.push(item.id);
+        checked = item.checked;
+      });
+      const flag = this.properties.checkAllState;
+      var myEventDetail = {
+        ids,
+        flag,
+      };
+      var myEventOption = {
+        bubbles: true,
+        composed: true,
+      };
+      this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
+      var myEventDetail = {
+        value: !flag,
+      }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
+      var myEventOption = {
+        bubbles: true,
+        composed: true,
+      }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+      this.triggerEvent("changeCheckAll", myEventDetail, myEventOption);
+      wx.hideLoading()
     },
 
     // 绔犺妭鍕鹃��
     checkResourceTitle(e) {
+      wx.showLoading()
+      const flag = e.detail.checked;
       // 杩欎釜鏃跺�檆hecked鐨勫�兼槸fals
-      let checkResourceTitleList = []
-      const item = e.currentTarget.dataset.item
-      //
-      let list = this.flattenTree([item])
-      let ids = []
-      list.forEach(item => {
+      const item = e.currentTarget.dataset.item;
+      const parent = this.findParentById(this.properties.learnList, item.id);
+      let childrenList = [];
+      let flagNum;
+      if (parent)
+        childrenList = parent.children.filter((citem) => citem.id !== item.id);
+      flagNum = childrenList.findIndex((item) => item.checked == false);
+      let list = this.flattenTree([item]);
+      list = list.filter(item => !item.disabled)
+      let ids = [];
+      list.forEach((item) => {
         ids.push(item.id)
-      })
-      // console.log(list, 'list789');
-      const updatedTreeList = this.findAndUpdateItemsByIds(this.properties.treeList, ids);
-      this.setData({
-        treeList: updatedTreeList // 鏇存柊 treeList 鏁版嵁
       });
-      console.log(list, 'list.checked');
-      if (!list.checked) {
-
-
-        this.setData({
-          superiorPurchaseSaleMethodId: list
-        })
-
+      var myEventDetail = {
+        ids,
+        flag,
+      }; // detail瀵硅薄锛屾彁渚涚粰浜嬩欢鐩戝惉鍑芥暟
+      var myEventOption = {
+        bubbles: true,
+        composed: true,
+      }; // 瑙﹀彂浜嬩欢鐨勯�夐」
+      // 鍘诲嬀閫夌偣鍑荤洰褰曠殑瀛愰」
+      this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
+      // 鍘诲嬀閫夌偣鍑荤洰褰曠殑鐖堕」
+      if (flagNum == -1 && parent && !parent.disabled) {
+        let checkedState;
+        var myEventDetail = {
+          ids: [parent.id],
+          flag,
+        };
+        var myEventOption = {
+          bubbles: true,
+          composed: true,
+        };
+        this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
       }
-
-      // console.log(this.data.superiorPurchaseSaleMethodId, 'superiorPurchaseSaleMethodId');
-      list.forEach(items => {
-        console.log(items.checked, 'itesasd');
+      list.forEach((items) => {
         if (!items.checked) {
           this.setData({
-            cloudShoppingCart: items
-          })
+            cloudShoppingCart: items,
+          });
         }
-      })
-      // this.onCloudShoppingCart()
+      });
+      this.setData({
+        openIds: this.data.openIds,
+      });
     },
     // 瀛愰」鍕鹃��
     checkResource(e) {
-      const citem = e.currentTarget.dataset.item
-      console.log(citem, '5648');
-      const updataList = this.checkResoucrceInfo(this.properties.treeList, citem.id)
-      console.log(citem.checked, 'citem.checked');
-      if (!citem.checked) {
-        //閫変腑鐨勬椂鍊欐坊鍔爄d
-        let sonPurchaseSaleMethodId = this.data.sonPurchaseSaleMethodId || []
-        console.log(this.properties.paymentPage, 'this.properties.paymentPage');
-        if (this.properties.paymentPage) {
-          console.log(789987);
-          sonPurchaseSaleMethodId = []
-          this.properties.paymentPage = false
-        }
-        if (!this.properties.paymentPage) {
-          sonPurchaseSaleMethodId.push(citem.saleMethod[0].Id)
-        }
-        this.setData({
-          sonPurchaseSaleMethodId: sonPurchaseSaleMethodId
-        })
-        console.log(this.data.sonPurchaseSaleMethodId);
-      } else {
-        // 鍙栨秷閫変腑鐨勬椂鍊欏垹闄d
+      wx.showLoading()
+      const citem = e.currentTarget.dataset.item;
+      const parent = e.currentTarget.dataset.parent;
+      let outermost;
+      if (parent)
+        outermost = this.findParentById(this.properties.learnList, parent.id);
+      const childrenList = parent.children.filter(
+        (item) => item.id !== citem.id && item.saleMethod.length
+      );
+      const flag = childrenList.findIndex((item) => item.checked == false);
+      // 鏀瑰彉璇ラ」checked
+      var myEventDetail = {
+        id: citem.id,
+      };
+      var myEventOption = {
+        bubbles: true,
+        composed: true,
+      };
+      this.triggerEvent("changeResourceChecked", myEventDetail, myEventOption);
+      // 閫氳繃鍒ゆ柇,鑱旈�氱埗绾hecked
+      if (flag == -1 && !parent.disabled) {
+        let checkedState;
+        citem.checked == false ? (checkedState = true) : (checkedState = false);
+        var myEventDetail = {
+          ids: [parent.id],
+          flag: checkedState,
+        };
+        var myEventOption = {
+          bubbles: true,
+          composed: true,
+        };
+        this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
       }
-      this.setData({
-        treeList: updataList,
-      })
+      // 鑱旈�氭渶澶栧眰绾hecked ,濡傛灉鏈変竴涓彇娑堝嬀閫�,涓斿綋鍓嶆渶澶栧眰鍕鹃��,鍒欏彇娑堟渶澶栧眰鐨勫嬀閫�
+      if (citem.checked && outermost && outermost.checked) {
+        var myEventDetail = {
+          ids: [outermost.id],
+          flag: false,
+        };
+        var myEventOption = {
+          bubbles: true,
+          composed: true,
+        };
+        this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
+      }
+      // 鑱旈�氭渶澶栧眰绾hecked, 濡傛灉鎵�鏈夊瓙椤瑰嬀閫�, 涓斿綋鍓嶆渶澶栧眰鏈嬀閫�, 鍒欏姞涓婃渶澶栧眰鐨勫嬀閫�
+      if (!citem.checked && outermost && !outermost.disabled) {
+        let allchildren = this.flattenTree([outermost]);
+        allchildren = allchildren.filter(
+          (item) =>
+          item.sysType == "CmsItem" &&
+          item.id !== citem.id &&
+          item.saleMethod.length
+        );
+        const satate = allchildren.findIndex((item) => item.checked == false);
+        if (satate == -1) {
+          var myEventDetail = {
+            ids: [outermost.id],
+            flag: true,
+          };
+          var myEventOption = {
+            bubbles: true,
+            composed: true,
+          };
+          this.triggerEvent("changeListChecked", myEventDetail, myEventOption);
+        }
+      }
     },
     // 鍔犲叆璐墿杞�
-    async onCloudShoppingCart() {
-      let requests = []
-      const item = this.data.cloudShoppingCart
-      console.log(item, 'item');
-      item.forEach((items) => {
-        if (items.saleMethod.length) {
-          requests.push({
-            saleMethodId: items.saleMethod[0].Id,
-            count: 1
-          })
-        }
-      })
+    async onCloudShoppingCart(e) {
+      let shoppingCartGetId = [];
+      const item = e.currentTarget.dataset.item;
+      const saleMethodId = e.currentTarget.dataset.item.saleMethod[0].Id;
       let query = {
-        remarks: '浜戝涔�',
-        requests
+        start: 0,
+        size: 999,
+        filterList: [],
+        searchList: [],
+      };
+      const res = await app.MG.store.getShoppingCartProductList(query);
+      res.datas.forEach((item) => {
+        shoppingCartGetId.push(item.saleMethod.id);
+      });
+      if (shoppingCartGetId.includes(saleMethodId)) {
+        wx.showToast({
+          icon: "success",
+          title: "宸叉坊鍔�",
+        });
+        this.setData({
+          shoppingCart: false,
+        });
+      } else {
+        let query = {
+          requests: [{
+            saleMethodId: saleMethodId,
+            storeEventId: null,
+            // agentCode: '鐢靛瓙涔�'
+          }, ],
+        };
+        const addRes = await app.MG.store.addShoppingCart(query);
+        if (addRes) {
+          wx.showToast({
+            icon: "success",
+            title: "娣诲姞鎴愬姛",
+          });
+          item.isShopCar = false;
+          var myEventDetail = {
+            id: item.id,
+          };
+          var myEventOption = {
+            bubbles: true,
+            composed: true,
+          };
+          this.triggerEvent("updateCloudLearning", myEventDetail, myEventOption);
+        }
       }
-      // 鏌ヨ璁㈠崟
-      let initOrderRes = await app.MG.store.initOrder(query)
-      let parameter = {
-        orderNum: initOrderRes.orderNumber
+    },
+    sadd() {
+      this.triggerEvent("updateShoppingCartHidden");
+      this.triggerEvent("updateCloudLearning");
+    },
+    findParentById(arr, id) {
+      for (let i = 0; i < arr.length; i++) {
+        const item = arr[i];
+        // 妫�鏌ュ綋鍓嶉」鏄惁鍖归厤锛堝嵆瀹冩槸涓嶆槸鎴戜滑瑕佹壘鐨勯」锛�
+        if (item.id === id) {
+          // 濡傛灉褰撳墠椤瑰氨鏄垜浠鎵剧殑椤癸紝鍒欏畠娌℃湁鐖剁骇锛岃繑鍥� null
+          return null;
+        }
+        // 閫掑綊鏌ユ壘褰撳墠椤圭殑瀛愰」
+        const child = this.findChildById(item.children, id);
+        if (child) {
+          // 濡傛灉鍦ㄥ瓙椤逛腑鎵惧埌鍖归厤鐨勯」锛岃繑鍥炲綋鍓嶉」浣滀负鐖剁骇
+          return item;
+        }
       }
-      const confirmOrderRes = await app.MG.store.confirmOrder(parameter)
-      // if (confirmOrderRes.orderNumber) {
-      //   wx.navigateTo({
-      //     url: `/pages/cart/paymentPage/index?orderNumber=${confirmOrderRes.orderNumber}`,
-      //   })
-      //   requests = []
-      // }
+      // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勭埗椤癸紝杩斿洖 null
+      return null;
+    },
+    // 杈呭姪鍑芥暟锛岀敤浜庨�掑綊鏌ユ壘瀛愰」
+    findChildById(children, id) {
+      if (!children) {
+        return null;
+      }
+      for (let i = 0; i < children.length; i++) {
+        const child = children[i];
+        if (child.id === id) {
+          // 濡傛灉鎵惧埌鍖归厤鐨勯」锛岃繑鍥炲畠
+          return child;
+        }
+        // 閫掑綊妫�鏌ュ瓙椤圭殑瀛愰」
+        const subChild = this.findChildById(child.children, id);
+        if (subChild) {
+          return subChild;
+        }
+      }
+      // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勯」锛岃繑鍥� null
+      return null;
     },
   },
-  onCheckAllChange(e) {
-    // debugger
-    // console.log('checkbox', e.detail.value);
-    // this.setData({
-    //   checkAllValues: event.detail,
-    // });
-  }
-})
\ No newline at end of file
+});
\ No newline at end of file

--
Gitblit v1.9.1