From 14de3e90ae29af2ccfd51b08c6a11ab02fe8f8e7 Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期二, 05 三月 2024 19:02:35 +0800
Subject: [PATCH] feat(合并代码): 和冰帝阿

---
 pages/bookServices/detail/index.js |  552 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 536 insertions(+), 16 deletions(-)

diff --git a/pages/bookServices/detail/index.js b/pages/bookServices/detail/index.js
index 324478a..e99bb9c 100644
--- a/pages/bookServices/detail/index.js
+++ b/pages/bookServices/detail/index.js
@@ -1,5 +1,5 @@
 // pages/bookServices/detail/index.js
-import Message from 'tdesign-miniprogram/message/index';
+import Message from 'tdesign-miniprogram/message/index.js';
 const app = getApp();
 Page({
   /**
@@ -19,8 +19,30 @@
       dang: '',
       micro: '',
     },
+    tabValue: 'brief',
+    cmsDatas: [], // 璧勬簮refCode鍒楄〃
+    ids: [1],
+    list: [],
+    teachResources: [],
+    teach: [],
+    learn: [],
+    openTeachids: [],
+    openLearnids: [],
+    resourceClassList: [], // 璧勬簮鎵�灞炲垎绫�
+    applyState: "",  // 鏁欏璧勬簮鐢宠鐘舵��
+    deadline: "",  // 鏁欏璧勬簮鐢宠鏈夋晥鏃ユ湡
+    rejectCause: "",  // 涓嬭浇鎷掔粷鍘熷洜
+    buyIdList: [],
+    shoppingCartGetId: [], // 宸茶喘涔癷d鍒楄〃
+    shoppingList: []
   },
 
+  resetTree: function (e) {
+    this.setData({
+      currentCheck: e.detail.checkedItem,
+      list: e.detail.changeList
+    })
+  },
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
@@ -39,42 +61,49 @@
       },
     });
     this.getBookInfo(options.id);
+    this.getResourceClass() // 鑾峰彇璧勬簮鎵�灞炲垎绫�
+    this.getApplyInfo(options.id)
+    if (wx.getAccountInfoSync('jsek-token')) {
+      this.getShoppingCartProductGet()
+    }
   },
 
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍒濇娓叉煋瀹屾垚
    */
-  onReady() {},
+  onReady() {
+
+  },
 
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず
    */
-  onShow() {},
+  onShow() { },
 
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌
    */
-  onHide() {},
+  onHide() { },
 
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
    */
-  onUnload() {},
+  onUnload() { },
 
   /**
    * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
    */
-  onPullDownRefresh() {},
+  onPullDownRefresh() { },
 
   /**
    * 椤甸潰涓婃媺瑙﹀簳浜嬩欢鐨勫鐞嗗嚱鏁�
    */
-  onReachBottom() {},
+  onReachBottom() { },
 
   /**
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
    */
-  onShareAppMessage() {},
+  onShareAppMessage() { },
   // 鏍煎紡鍖栨棩鏈�
   formatDate(dateString) {
     if (!dateString) {
@@ -169,8 +198,9 @@
     app.MG.store.getProductDetail(query).then((res) => {
       this.setData({
         bookDetail: res.datas,
+        cmsDatas: res.datas.cmsDatas[0].datas,
+        buyIdList: res.datas.purchasedSaleMethodIdList
       });
-      console.log('璇︽儏', res.datas);
       // 鑾峰彇鍥句功鍒嗙被
       const iconType = JSON.parse(res.datas.bookClassification)[0][0];
       const classType = JSON.parse(res.datas.bookClassification)[0][1];
@@ -211,12 +241,14 @@
           linkType: 'FavoriteBookCity',
         })
         .then(() => {
-          this.data.bookDetail.isFavourite = false;
+          this.setData({
+            'bookDetail.isFavourite': false
+          })
           Message.success({
             context: this,
-            offset: ['20rpx', '32rpx'],
-            duration: 2000,
-            content: '鍙栨秷鏀惰棌',
+            offset: [20, 32],
+            duration: 5000,
+            content: '杩欐槸涓�鏉℃垚鍔熺殑鎻愮ず娑堟伅',
           });
         });
     } else {
@@ -225,8 +257,9 @@
         linkType: 'FavoriteBookCity',
       };
       app.MG.store.addProductLink(params).then((res) => {
-        console.log(res);
-        this.data.bookDetail.isFavourite = true;
+        this.setData({
+          'bookDetail.isFavourite': true
+        })
         Message.success({
           context: this,
           offset: ['20rpx', '32rpx'],
@@ -236,6 +269,11 @@
       });
     }
   },
+  // 鎴戣寤鸿
+  suggestBtn() {
+    const child = this.selectComponent('#suggest-component')
+    child.showDialog()
+  },
   // 璺宠浆缃戝簵
   goShop(e) {
     const { link } = e.currentTarget.dataset;
@@ -243,4 +281,486 @@
       url: link,
     });
   },
-});
+  onTabsChange(e) {
+    this.setData({
+      tabValue: e.detail.value
+    })
+    if (e.detail.label == '鏁欏璧勬簮' || e.detail.label == '浜戝涔�' || e.detail.label == '浜戞祴璇�') {
+      const checkData = this.data.cmsDatas.find(item => item.refCode == e.detail.value)
+      if (checkData) {
+        if ((e.detail.value == 'jsek_teachingResources' && !this.data.teach.length)
+          || (e.detail.value == 'jsek_cloudLearning' && !this.data.learn.length)
+          || (e.detail.value == 'questionBank' && !this.data.test.length)) {
+          this.getResourceData(checkData)
+        }
+      }
+    }
+    console.log('鍒囨崲', this.data.tabValue);
+  },
+  // 鑾峰彇璧勬簮鎵�灞炲垎绫�
+  getResourceClass() {
+    let query = {
+      refCodes: ['resourcesClassification']
+    }
+    app.MG.store.getProductTypeField(query).then((res) => {
+      this.setData({
+        resourceClassList: JSON.parse(res[0].config).option
+      })
+    })
+  },
+  //  鑾峰彇鏁欏璧勬簮  浜戝涔�  浜戞祴璇�
+  getResourceData(type) {
+    let query = {
+      path: '*',
+      queryType: '*',
+      productId: this.data.bookDetail.id,
+      cmsPath: type.productLinkPath,
+      itemFields: {
+        SysType: 'CmsFolder',
+        // 璧勬簮绫诲瀷锛岃瘯璇绘枃浠讹紝鏄惁鍏佽涓嬭浇绛夊弬鏁�
+        selectType: [],
+        freeFile: [],
+        file: [],
+        resourcesClassification: [],
+        isDownload: [],
+        jsek_resourceBrief: [],
+        jsek_link: [],
+        jsek_questionBank: []
+      },
+      pading: {
+        start: 0,
+        size: 999
+      },
+    }
+    app.MG.store
+      .getProductDetail(query)
+      .then(async (res) => {
+        // 浜戞祴璇曪紝閫掑綊璇锋眰閲屽眰鏁版嵁
+        if (type.refCode == 'questionBank') {
+          const data = res.datas.cmsDatas[0].datas.filter(
+            (item) => item.refCode == 'jsek_questionBank'
+          )
+          if (data.length) return getResourceData(data[0])
+        }
+        //鏁欏璧勬簮 浜戝涔�
+        if (type.refCode == 'jsek_teachingResources' || type.refCode == 'jsek_cloudLearning') {
+          if (res.datas.cmsDatas[0].datas.length > 0) {
+            if (type.refCode == 'jsek_teachingResources') {
+              res.datas.cmsDatas[0].datas.forEach(item => {
+                item.checked = false
+              })
+              const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
+              this.setData({
+                teachResources: list,
+                teach: list
+              })
+              this.findChildIds(this.data.teachResources, this.data.openTeachids = [])
+            } else if (type.refCode == 'jsek_cloudLearning') {
+              const list = await this.getAllResource(res.datas.cmsDatas[0].datas)
+              this.setData({
+                learn: list
+              })
+              console.log('浜戝涔�', this.data.learn);
+              this.findChildIds(this.data.teachResources, this.data.openLearnids = [])
+            }
+          } else {
+            // 鏃犳暟鎹�
+          }
+        } else if (type.refCode == 'jsek_questionBank') {
+          console.log('浜戞祴璇�');
+        } else {
+          console.log('鍏朵粬');
+        }
+      })
+      .catch((e) => {
+        console.log(e)
+      })
+    console.log('淇℃伅', this.data);
+  },
+  // 鑾峰彇tag涓嬫墍鏈夎祫婧�
+  async getAllResource(data) {
+    if (!data.length) return false
+    for (let i = 0; i < data.length; i++) {
+      let item = data[i]
+      if (item.sysType == 'CmsFolder' && item.childrenCount > 0) {
+        item.children = []
+        item.children = await this.getFolderItem(item.productLinkPath)
+        await this.getAllResource(item.children)
+      }
+    }
+    return data
+  },
+  // 鑾峰彇璧勬簮鎺ュ彛
+  async getFolderItem(path) {
+    let query = {
+      path: '*',
+      queryType: '*',
+      productId: this.data.bookDetail.id,
+      cmsPath: path,
+      itemFields: {
+        SysType: 'CmsFolder',
+        // 璧勬簮绫诲瀷锛岃瘯璇绘枃浠讹紝鏄惁鍏佽涓嬭浇绛夊弬鏁�
+        selectType: [],
+        freeFile: [],
+        file: [],
+        protectedFile: [],
+        resourcesClassification: [],
+        isDownload: [],
+        jsek_resourceBrief: [],
+        jsek_link: [],
+        accessType: []
+      },
+      pading: {
+        start: 0,
+        size: 999
+      },
+    }
+    const data = await app.MG.store.getProductDetail(query)
+    data.datas.cmsDatas[0].datas.forEach((item) => {
+      this.data.resourceClassList.forEach((type) => {
+        if (type.value == item.resourcesClassification) item.resourceClass = type.name
+      })
+      // 缃戦〉 涓嶈兘涓嬭浇 绉佹湁鏂囦欢
+      if (item.sysType == 'CmsItem') {
+        if (item.selectType == 'webpage') {
+          item.disabled = true
+        } else {
+          if (item.isDownload != 1) {
+            item.disabled = true
+          }
+        }
+        if (item.file) {
+          if (item.fileMap[item.file].protectType == 'Private') item.disabled = true
+        }
+      }
+    })
+    data.datas.cmsDatas[0].datas.forEach(item => {
+      if (this.data.tabValue == 'jsek_teachingResources') {
+        item.checked = false
+      } else if (this.data.tabValue == 'jsek_cloudLearning') {
+        item.isbuy = this.resourceIsBuy(item)
+        item.isShopCar = this.isShoppingCart(item)
+      }
+    })
+    return data.datas.cmsDatas[0].datas
+  },
+  // 鑾峰彇灞曞紑椤�
+  findChildIds(data, result) {
+    let index = 0
+    for (let i = 0; i < data.length; i++) {
+      if (index < 3) {
+        const item = data[i]
+        if (item.childrenFolderCount > 0) {
+          result.push(item.id)
+          for (let j = 0; j < item.children.length; j++) {
+            if (index < 3) {
+              const childrenItme = item.children[j]
+              if (item.childrenCount > 0) {
+                result.push(childrenItme.id)
+                index += 1
+              }
+            } else {
+              break
+            }
+          }
+        } else if (item.childrenCount > 0) {
+          result.push(item.id)
+          index += 1
+        }
+      } else {
+        break
+      }
+    }
+  },
+
+  // 鍥句功娣诲姞璐墿杞�
+  addBookShopcCar() {
+    let query = {
+      requests: [
+        {
+          saleMethodId: this.data.bookDetail.defaultSaleMethodId,
+          storeEventId: null,
+          agentCode: '鐢靛瓙涔�'
+        }
+      ]
+    }
+    const addRes = app.MG.store.addShoppingCart(query)
+  },
+  // 鑾峰彇鏁欏璧勬簮涓嬭浇鏄惁鐢宠閫氳繃
+  getApplyInfo(id) {
+    // 鑾峰彇褰撳墠鏃堕棿
+    const currentDate = new Date()
+    let query = {
+      sort: {
+        type: 'Desc',
+        field: 'CreateDate'
+      },
+      start: 0,
+      size: 99999,
+      appRefCode: app.config.appRefCode,
+      topicIdOrRefCode: 'productDownLoad'
+    }
+    app.MG.ugc.getTopicMessageList(query).then((res) => {
+      const applyResource = res.datas.find((item) => {
+        let content = []
+        try {
+          content = JSON.parse(item.content)
+        } catch (error) {
+          content = []
+        }
+        if (Array.isArray(content)) return content.find((citem) => citem.id == id)
+        return false
+      })
+      // 鏈夌敵璇疯褰�
+      if (applyResource) {
+        if (applyResource.state == 'Reject') {
+          this.setData({
+            rejectCause: JSON.parse(applyResource.feedBack).reason,
+            applyState: 'Reject'
+          })
+        } else if (applyResource.state == 'Normal') {
+          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: '姘镐箙',
+            })
+          } else {
+            let endTime = new Date(endDate + ' 23:59:59').getTime()
+            // deadline.value = endDate + ' 23:59:59'
+            this.setData({
+              deadline: endDate + ' 23:59:59'
+            })
+            if (currentDate.getTime() < endTime) {
+              // 鏈秴鏃�
+              this.setData({
+                applyState: 'Normal'
+              })
+            } else {
+              this.setData({
+                applyState: 'none'
+              })
+            }
+          }
+        } else {
+          this.setData({
+            applyState: applyResource.state
+          })
+        }
+      } else {
+        this.setData({
+          applyState: 'none'
+        })
+      }
+      console.log('鐢宠閫氳繃', this.data.applyState);
+    })
+
+  },
+  // 鐢宠鏁欏璧勬簮
+  applyResource() {
+    // let role = userStore.userInfo ? userStore.userInfo.role : null
+    // if (role) {
+    //   if (role == 'Teacher') {
+    // 鐢宠鏁欏璧勬簮
+    let query = {
+      topicIdOrRefCode: 'productDownLoad',
+      type: 'applyForDownload',
+      state: 'WaitAudit',
+      cmsTypeRefCode: '',
+      newDataListRequest: [],
+      name: this.data.bookDetail.name, // name涓虹敵璇风殑涔︽湰鍚嶇О
+      content: JSON.stringify([
+        {
+          name: this.data.bookDetail.name,
+          id: this.data.bookDetail.id,
+          // defaultSaleMethodId: bookData.value.defaultSaleMethodId,
+          icon: this.data.bookDetail.icon
+        }
+      ])
+    }
+    app.MG.ugc.newTopicMessage(query).then((res) => {
+      if (res) {
+        Message.success('鐢宠宸叉彁浜わ紝璇峰緟瀹℃牳閫氳繃鍚庝笅杞�')
+      }
+      this.getApplyInfo(this.data.bookDetail.id)
+    })
+    //   } else {
+    //     ElMessageBox.confirm('璇峰厛杩涜鏁欏笀璁よ瘉锛�', '灏婃暚鐨勭敤鎴凤紝鎮ㄥソ锛�', {
+    //       confirmButtonText: '鍘昏璇�',
+    //       cancelButtonText: '鍙栨秷',
+    //       type: 'warning'
+    //     })
+    //       .then(() => {
+    //         isShow.value = true
+    //       })
+    //       .catch(() => { })
+    //   }
+    // } else {
+    //   // logIn()
+    // }
+  },
+  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
+    //       })
+    //       .catch(() => { })
+    //   }
+    // } else {
+    //   logIn()
+    // }
+  },
+  downloadFile(url) {
+    wx.downloadFile({
+      url: url,
+      success: function (res) {
+        // 涓嬭浇鎴愬姛鍚庯紝璋冪敤saveImageToPhotosAlbum鍑芥暟淇濆瓨鍥剧墖鍒版湰鍦�
+        wx.saveFile({
+          tempFilePath: res.tempFilePath,
+          success: function (res) {
+            wx.showToast({
+              title: '涓嬭浇鎴愬姛',
+              icon: 'success'
+            })
+          },
+          fail: function (res) {
+            wx.showToast({
+              title: '涓嬭浇澶辫触',
+              icon: 'none'
+            })
+          }
+        })
+      },
+      fail: function (res) {
+        wx.showToast({
+          title: '涓嬭浇澶辫触',
+          icon: 'none'
+        })
+      }
+    })
+  },
+  // 鍒ゆ柇璧勬簮鏄惁璐拱
+  resourceIsBuy(data) {
+    if (data.saleMethod && data.saleMethod.length) {
+      const isSHow = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
+      return !isSHow
+    } else {
+      return false
+    }
+  },
+  getShoppingCartProductGet() {
+    let query = {
+      start: 0,
+      size: 999,
+      filterList: [],
+      searchList: []
+    }
+    app.MG.store.getShoppingCartProductList(query).then((res) => {
+      const list = []
+      res.datas.forEach((item) => {
+        list.push(item.saleMethod.id)
+      })
+      this.setData({
+        shoppingList: res.datas,
+        shoppingCartGetId: list
+      })
+      console.log('璐拱', this.data);
+    })
+  },
+  // 鍒ゆ柇璧勬簮鍔犲叆璐墿杞︽寜閽槸鍚︽樉绀�
+  isShoppingCart(data) {
+    if (data.saleMethod && data.saleMethod.length) {
+      if (data.saleMethod[0].Price <= 0) return false
+      // 鍐嶅垽鏂槸鍚﹁喘涔�
+      const isBuy = this.data.buyIdList.some((item) => item == data.saleMethod[0].Id)
+      if (isBuy) {
+        // 璐拱浜�
+        return false
+      } else {
+        // 鍒ゆ柇鏄惁鍔犲叆璐墿杞�
+        const isSHow = this.data.shoppingCartGetId.some((item) => item == data.saleMethod[0].Id)
+        return !isSHow
+      }
+    } else {
+      return false
+    }
+  }
+})

--
Gitblit v1.9.1