From b125d3ea74d61fb8e4d7238c83906aeea52c6b4c Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期二, 12 三月 2024 14:39:55 +0800
Subject: [PATCH] 更新代码

---
 pages/bookServices/detail/index.js |  397 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 287 insertions(+), 110 deletions(-)

diff --git a/pages/bookServices/detail/index.js b/pages/bookServices/detail/index.js
index e99bb9c..396240d 100644
--- a/pages/bookServices/detail/index.js
+++ b/pages/bookServices/detail/index.js
@@ -6,6 +6,7 @@
    * 椤甸潰鐨勫垵濮嬫暟鎹�
    */
   data: {
+    bookId: '',
     barHeight: '',
     navBarHeight: '',
     options: {
@@ -26,15 +27,20 @@
     teachResources: [],
     teach: [],
     learn: [],
+    test: [],
     openTeachids: [],
     openLearnids: [],
+    openTestids: [],
     resourceClassList: [], // 璧勬簮鎵�灞炲垎绫�
     applyState: "",  // 鏁欏璧勬簮鐢宠鐘舵��
     deadline: "",  // 鏁欏璧勬簮鐢宠鏈夋晥鏃ユ湡
     rejectCause: "",  // 涓嬭浇鎷掔粷鍘熷洜
     buyIdList: [],
     shoppingCartGetId: [], // 宸茶喘涔癷d鍒楄〃
-    shoppingList: []
+    shoppingList: [],
+    loading: false,
+    isShowTeachDownload: false,  // 鎻愮ずPC涓嬭浇寮圭獥鐘舵��
+    confirmBtn: { content: '鎴戠煡閬撲簡', variant: 'base' },
   },
 
   resetTree: function (e) {
@@ -51,6 +57,7 @@
     const menu = wx.getMenuButtonBoundingClientRect(); // 鑳跺泭淇℃伅
     const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 瀵艰埅鏍忛珮搴�
     this.setData({
+      bookId: options.id,
       barHeight: systInfo.statusBarHeight,
       navBarHeight: navBarHeight,
     });
@@ -63,7 +70,8 @@
     this.getBookInfo(options.id);
     this.getResourceClass() // 鑾峰彇璧勬簮鎵�灞炲垎绫�
     this.getApplyInfo(options.id)
-    if (wx.getAccountInfoSync('jsek-token')) {
+    const token = wx.getStorageSync('jsek-token')
+    if (token) {
       this.getShoppingCartProductGet()
     }
   },
@@ -93,12 +101,20 @@
   /**
    * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
    */
-  onPullDownRefresh() { },
+  onPullDownRefresh() {
+
+
+  },
 
   /**
    * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
    */
-  onReachBottom() { },
+  onReachBottom() {
+    if (this.data.tabValue == 'jesk_note') {
+      const child = this.selectComponent('#note')
+      child.onReachBottom()
+    }
+  },
 
   /**
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
@@ -195,7 +211,8 @@
         freeEpubPage: [], //epub璇曡鐧惧垎姣�
       },
     };
-    app.MG.store.getProductDetail(query).then((res) => {
+    app.MG.store.getProductDetail(query).then(async (res) => {
+
       this.setData({
         bookDetail: res.datas,
         cmsDatas: res.datas.cmsDatas[0].datas,
@@ -204,9 +221,10 @@
       // 鑾峰彇鍥句功鍒嗙被
       const iconType = JSON.parse(res.datas.bookClassification)[0][0];
       const classType = JSON.parse(res.datas.bookClassification)[0][1];
+      const className = await this.getBookClass(iconType, classType)
       this.setData({
         'bookDetail.publicationDate': this.formatDate(this.data.bookDetail.publicationDate),
-        'bookDetail.class': this.getBookClass(iconType, classType),
+        'bookDetail.class': className,
         'bookDetail.price': this.numFormat(this.data.bookDetail.price),
         'bookDetail.oldPrice': this.numFormat(this.data.bookDetail.oldPrice),
         'bookDetail.paperPrice': this.numFormat(this.data.bookDetail.paperPrice),
@@ -214,17 +232,17 @@
     });
   },
   // 鑾峰彇鍥句功鍒嗙被
-  getBookClass(iconType, classType) {
+  async getBookClass(iconType, classType) {
     let name = '';
     const query = {
       refCodes: ['bookClassification'],
     };
-    app.MG.store.getProductTypeField(query).then((res) => {
+    await app.MG.store.getProductTypeField(query).then((res) => {
       JSON.parse(res[0].config).option.forEach((item) => {
         if (item.value == iconType) {
-          item.child.forEach((item) => {
-            if (item.value == classType) {
-              name = item.name;
+          item.child.forEach((citem) => {
+            if (citem.value == classType) {
+              name = citem.name;
             }
           });
         }
@@ -293,9 +311,18 @@
           || (e.detail.value == 'questionBank' && !this.data.test.length)) {
           this.getResourceData(checkData)
         }
+
       }
+    } else if (e.detail.label == '浜戠瑪璁�') {
+      const token = wx.getStorageSync('jsek-token')
+      const child = this.selectComponent('#note')
+      child.handleSubmitTitle()
+      if (token) {
+        child.changeLoading()
+        child.getNoteList()
+      }
+
     }
-    console.log('鍒囨崲', this.data.tabValue);
   },
   // 鑾峰彇璧勬簮鎵�灞炲垎绫�
   getResourceClass() {
@@ -310,6 +337,9 @@
   },
   //  鑾峰彇鏁欏璧勬簮  浜戝涔�  浜戞祴璇�
   getResourceData(type) {
+    this.setData({
+      loading: true
+    })
     let query = {
       path: '*',
       queryType: '*',
@@ -340,7 +370,7 @@
           const data = res.datas.cmsDatas[0].datas.filter(
             (item) => item.refCode == 'jsek_questionBank'
           )
-          if (data.length) return getResourceData(data[0])
+          if (data.length) return this.getResourceData(data[0])
         }
         //鏁欏璧勬簮 浜戝涔�
         if (type.refCode == 'jsek_teachingResources' || type.refCode == 'jsek_cloudLearning') {
@@ -351,23 +381,27 @@
               })
               const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
               this.setData({
-                teachResources: list,
-                teach: list
+                teach: list,
+                loading: false
               })
-              this.findChildIds(this.data.teachResources, this.data.openTeachids = [])
+              this.findChildIds(this.data.teach, this.data.openTeachids = [])
             } else if (type.refCode == 'jsek_cloudLearning') {
               const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
               this.setData({
-                learn: list
+                learn: list,
+                loading: false
               })
-              console.log('浜戝涔�', this.data.learn);
-              this.findChildIds(this.data.teachResources, this.data.openLearnids = [])
+              this.findChildIds(this.data.learn, this.data.openLearnids = [])
             }
           } else {
             // 鏃犳暟鎹�
           }
         } else if (type.refCode == 'jsek_questionBank') {
-          console.log('浜戞祴璇�');
+          // const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
+          this.setData({
+            test: res.datas.cmsDatas[0].datas,
+            loading: false
+          })
         } else {
           console.log('鍏朵粬');
         }
@@ -375,7 +409,6 @@
       .catch((e) => {
         console.log(e)
       })
-    console.log('淇℃伅', this.data);
   },
   // 鑾峰彇tag涓嬫墍鏈夎祫婧�
   async getAllResource(data) {
@@ -522,14 +555,14 @@
           const endDate = JSON.parse(applyResource.feedBack).endDate
           // const endDate = new Date(JSON.parse(applyResource.feedBack).endDate + ' 23:59:59').getTime()
           if (endDate == '姘镐箙') {
-            // deadline.value = '姘镐箙'
             this.setData({
               applyState: 'Normal',
               deadline: '姘镐箙',
             })
+            console.log('鏈夋晥鏃ユ湡', this.data.deadline);
           } else {
+
             let endTime = new Date(endDate + ' 23:59:59').getTime()
-            // deadline.value = endDate + ' 23:59:59'
             this.setData({
               deadline: endDate + ' 23:59:59'
             })
@@ -554,9 +587,8 @@
           applyState: 'none'
         })
       }
-      console.log('鐢宠閫氳繃', this.data.applyState);
     })
-
+    console.log('鏈夋晥鏃ユ湡', this.data.deadline);
   },
   // 鐢宠鏁欏璧勬簮
   applyResource() {
@@ -601,92 +633,102 @@
     //   // logIn()
     // }
   },
+  // 鏁欏璧勬簮涓嬭浇鍓嶅線PC鎻愮ずDiialog
+  closeTeachDownload() {
+    this.setData({
+      isShowTeachDownload: false
+    })
+  },
+  // 涓嬭浇鍔熻兘
   downloadTeach(e) {
-
-    const data = e.detail.value
-    // const data
-    // let role = userStore.userInfo ? userStore.userInfo.role : null
-    // if (role) {
-    //   if (role == 'Teacher') {
-    if (this.properties.applyState == 'Normal' || this.properties.applyState == 'none') {
-      // 鏄惁鍏佽涓嬭浇
-      if (data.isDownload == 1) {
-        // 鐢宠閫氳繃
-        let url = app.config.requestCtx + '/file/api/ApiDownloadForAuthorize?md5='
-        if (data.file) {
-          // 鍒ゆ柇鏄惁绉佹湁
-          if (data.fileMap[data.file].protectType == 'Private')
-            return Message.error({
-              context: this,
-              offset: ['20rpx', '32rpx'],
-              duration: 5000,
-              content: '璇ユ枃浠舵棤娉曚笅杞�'
-            })
-          url = url + data.file + '&token=' + wx.getStorageSync('jsek-token')
-        } else if (data.freeFile) {
-          url = url + data.freeFile + '&token=' + wx.getStorageSync('jsek-token')
-        } else {
-          Message.error({
-            context: this,
-            offset: ['20rpx', '32rpx'],
-            duration: 5000,
-            content: '鏆傛棤璧勬簮',
-          })
-        }
-        this.downloadFile(url)
-      } else {
-        Message.error({
-          context: this,
-          offset: ['20rpx', '32rpx'],
-          duration: 5000,
-          content: '璇ヨ祫婧愭棤娉曚笅杞�',
-        })
-      }
-    } else if (this.properties.applyState == 'WaitAudit') {
-      // ElMessageBox.confirm('璇峰厛鐢宠涓嬭浇锛�', '灏婃暚鐨勭敤鎴凤紝鎮ㄥソ锛�', {
-      //   confirmButtonText: '鐢宠',
-      //   cancelButtonText: '鍙栨秷',
-      //   type: 'warning'
-      // })
-      //   .then(() => applyBookInfo())
-      //   .catch()
-      Message.error({
-        context: this,
-        offset: ['20rpx', '32rpx'],
-        duration: 5000,
-        content: '璇ヨ祫婧愪笅杞界敵璇峰鏍镐腑',
-      })
-    } else if (this.properties.applyState == 'Reject') {
-      Message.error({
-        context: this,
-        offset: ['20rpx', '32rpx'],
-        duration: 5000,
-        content: '璧勬簮涓嬭浇鐢宠鏈�氳繃'
-      })
-
-    } else {
-      // Message.error({
-      //   context: this,
-      //   offset: ['20rpx', '32rpx'],
-      //   duration: 5000,
-      //   content: '璇峰厛鐢宠涓嬭浇'
-      // })
-      console.log('璇峰厛鐢宠涓嬭浇');
-    }
-    //   } else {
-    //     ElMessageBox.confirm('璇峰厛杩涜鏁欏笀璁よ瘉锛�', '灏婃暚鐨勭敤鎴凤紝鎮ㄥソ锛�', {
-    //       confirmButtonText: '鍘昏璇�',
-    //       cancelButtonText: '鍙栨秷',
-    //       type: 'warning'
-    //     })
-    //       .then(() => {
-    //         isShow.value = true
+    this.setData({
+      isShowTeachDownload: true
+    })
+    console.log('zhuan', this.data.isShowTeachDownload);
+    //   const data = e.detail.value
+    //   // const data
+    //   // let role = userStore.userInfo ? userStore.userInfo.role : null
+    //   // if (role) {
+    //   //   if (role == 'Teacher') {
+    //   if (this.properties.applyState == 'Normal' || this.properties.applyState == 'none') {
+    //     // 鏄惁鍏佽涓嬭浇
+    //     if (data.isDownload == 1) {
+    //       // 鐢宠閫氳繃
+    //       let url = app.config.requestCtx + '/file/api/ApiDownloadForAuthorize?md5='
+    //       if (data.file) {
+    //         // 鍒ゆ柇鏄惁绉佹湁
+    //         if (data.fileMap[data.file].protectType == 'Private')
+    //           return Message.error({
+    //             context: this,
+    //             offset: ['20rpx', '32rpx'],
+    //             duration: 5000,
+    //             content: '璇ユ枃浠舵棤娉曚笅杞�'
+    //           })
+    //         url = url + data.file + '&token=' + wx.getStorageSync('jsek-token')
+    //       } else if (data.freeFile) {
+    //         url = url + data.freeFile + '&token=' + wx.getStorageSync('jsek-token')
+    //       } else {
+    //         Message.error({
+    //           context: this,
+    //           offset: ['20rpx', '32rpx'],
+    //           duration: 5000,
+    //           content: '鏆傛棤璧勬簮',
+    //         })
+    //       }
+    //       this.downloadFile(url)
+    //     } else {
+    //       Message.error({
+    //         context: this,
+    //         offset: ['20rpx', '32rpx'],
+    //         duration: 5000,
+    //         content: '璇ヨ祫婧愭棤娉曚笅杞�',
     //       })
-    //       .catch(() => { })
+    //     }
+    //   } else if (this.properties.applyState == 'WaitAudit') {
+    //     // ElMessageBox.confirm('璇峰厛鐢宠涓嬭浇锛�', '灏婃暚鐨勭敤鎴凤紝鎮ㄥソ锛�', {
+    //     //   confirmButtonText: '鐢宠',
+    //     //   cancelButtonText: '鍙栨秷',
+    //     //   type: 'warning'
+    //     // })
+    //     //   .then(() => applyBookInfo())
+    //     //   .catch()
+    //     Message.error({
+    //       context: this,
+    //       offset: ['20rpx', '32rpx'],
+    //       duration: 5000,
+    //       content: '璇ヨ祫婧愪笅杞界敵璇峰鏍镐腑',
+    //     })
+    //   } else if (this.properties.applyState == 'Reject') {
+    //     Message.error({
+    //       context: this,
+    //       offset: ['20rpx', '32rpx'],
+    //       duration: 5000,
+    //       content: '璧勬簮涓嬭浇鐢宠鏈�氳繃'
+    //     })
+
+    //   } else {
+    //     // Message.error({
+    //     //   context: this,
+    //     //   offset: ['20rpx', '32rpx'],
+    //     //   duration: 5000,
+    //     //   content: '璇峰厛鐢宠涓嬭浇'
+    //     // })
+    //     console.log('璇峰厛鐢宠涓嬭浇');
     //   }
-    // } else {
-    //   logIn()
-    // }
+    //   //   } else {
+    //   //     ElMessageBox.confirm('璇峰厛杩涜鏁欏笀璁よ瘉锛�', '灏婃暚鐨勭敤鎴凤紝鎮ㄥソ锛�', {
+    //   //       confirmButtonText: '鍘昏璇�',
+    //   //       cancelButtonText: '鍙栨秷',
+    //   //       type: 'warning'
+    //   //     })
+    //   //       .then(() => {
+    //   //         isShow.value = true
+    //   //       })
+    //   //       .catch(() => { })
+    //   //   }
+    //   // } else {
+    //   //   logIn()
+    //   // }
   },
   downloadFile(url) {
     wx.downloadFile({
@@ -726,6 +768,7 @@
       return false
     }
   },
+  // 鑾峰彇宸茶喘涔板晢鍝�
   getShoppingCartProductGet() {
     let query = {
       start: 0,
@@ -742,7 +785,6 @@
         shoppingList: res.datas,
         shoppingCartGetId: list
       })
-      console.log('璐拱', this.data);
     })
   },
   // 鍒ゆ柇璧勬簮鍔犲叆璐墿杞︽寜閽槸鍚︽樉绀�
@@ -762,5 +804,140 @@
     } else {
       return false
     }
-  }
+  },
+  // 閬嶅巻鏍戠粨鏋勮浆鎹负鏁扮粍鏂规硶
+  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.filter((item) => item.sysType == 'CmsItem')
+  },
+  // 浜戝涔犱竴閿鍙�
+  async getFreeResource() {
+    const child = this.selectComponent('#learn-resource')
+    const token = wx.getStorageSync('jsek-token')
+    if (!token) {
+      return wx.getUserProfile({
+        desc: '鐢ㄦ埛鐧诲綍',
+        success: (res) => {
+          console.log(res);
+        }
+      })
+    }
+    let arr = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
+    let freeIds = arr.filter((item) => {
+      return item.saleMethod[0].Price == 0
+    })
+    if (!freeIds.length) return wx.showToast({
+      icon: "error",
+      title: '鏆傛棤鍏嶈垂璧勬簮',
+    })
+    child.changeReceive(true)
+    let requests = []
+    freeIds.forEach((item, index) => {
+      if (this.resourceIsBuy(item)) {
+        requests.push({
+          saleMethodId: item.saleMethod[0].Id,
+          count: 1
+        })
+      }
+    })
+
+    let query = {
+      remarks: '浜戝涔�',
+      requests,
+    }
+    try {
+      const initOrderRes = await app.MG.store.initOrder(query)
+      let parameter = {
+        orderNum: initOrderRes.orderNumber
+      }
+      // 纭璁㈠崟
+      const confirmOrderRes = await app.MG.store.confirmOrder(parameter)
+      if (confirmOrderRes.orderNumber) {
+        child.changeReceive(false)
+        wx.showToast({
+          title: '棰嗗彇鎴愬姛',
+        })
+        this.getBookInfo(this.data.bookId)
+      }
+    } catch (error) {
+      console.log(error)
+    }
+  },
+  // 浜戝涔犱竴閿喘涔�
+  async allAddShoppiingCar() {
+    const child = this.selectComponent('#learn-resource')
+    const token = wx.getStorageSync('jsek-token')
+    if (!token) {
+      return wx.getUserProfile({
+        desc: '鐢ㄦ埛鐧诲綍',
+        success: (res) => {
+          console.log(res);
+        }
+      })
+    }
+    let shopList = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
+    this.getShoppingCartProductGet()
+    if (!shopList.length) return wx.showToast({
+      icon: "error",
+      title: '宸插叏閮ㄨ喘涔�',
+    })
+    child.changeBuy(true)
+    let requests = []
+    shopList.forEach((item) => {
+      requests.push({
+        saleMethodId: item.saleMethod[0].Id,
+        count: 1,
+      })
+    })
+    let query = {
+      remarks: '浜戝涔�',
+      requests,
+    }
+    const initOrderRes = await app.MG.store.initOrder(query)
+    child.changeBuy(false)
+    // 妫�鏌ヨ鍗曞彿鏄惁瀛樺湪
+    if (initOrderRes.orderNumber) {
+      // bookService: orderNumber.value,  灏戜紶杩欎釜 锛屾殏鏃朵笉鐭ラ亾鏈変粈涔堢敤
+      wx.navigateTo({
+        url: `/pages/cart/paymentPage/index?&bookId=${this.data.bookDetail.id}&bookName=${this.data.bookDetail.name}&orderNum=${initOrderRes.orderNumber}`,
+      })
+    } else {
+      // 璁㈠崟鍙蜂笉瀛樺湪锛屾樉绀鸿鍛婃秷鎭�
+      wx.showToast({
+        icon: "error",
+        title: '璇烽噸璇�',
+      })
+    }
+  },
+  // 鍙樹负鎵�鏈塩heck   true
+  findAndUpdateItemsByIds(tree, ids) {
+    function findAndUpdate(node) {
+      if (ids.includes(node.id)) {
+        node.checked = true; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
+      }
+      if (node.children && node.children.length > 0) {
+        for (let child of node.children) {
+          findAndUpdate(child); // 閫掑綊澶勭悊瀛愯妭鐐�
+        }
+      }
+    }
+
+    for (let node of tree) {
+      findAndUpdate(node); // 瀵规瘡涓《灞傝妭鐐规墽琛屾煡鎵惧拰鏇存柊鎿嶄綔
+    }
+    return tree; // 杩斿洖淇敼鍚庣殑瀹屾暣鏁扮粍
+  },
+  handleTrue() {
+    // findAndUpdateItemsByIds(this.date.)
+  },
+
 })

--
Gitblit v1.9.1