From cb6d3c36fca269121bf2acd513dc05377ba87630 Mon Sep 17 00:00:00 2001
From: litian <C21AF165>
Date: 星期日, 29 九月 2024 17:22:17 +0800
Subject: [PATCH] home

---
 packageBookService/pages/bookServices/detail/components/learnTask/index.js |  536 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 465 insertions(+), 71 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/components/learnTask/index.js b/packageBookService/pages/bookServices/detail/components/learnTask/index.js
index e3a9020..fc23647 100644
--- a/packageBookService/pages/bookServices/detail/components/learnTask/index.js
+++ b/packageBookService/pages/bookServices/detail/components/learnTask/index.js
@@ -5,7 +5,9 @@
    * 椤甸潰鐨勫垵濮嬫暟鎹�
    */
   data: {
+    height: '', //灞忓箷楂樺害
     bookId: '',
+    cmsPath: '',
     consumer: '',
     bookInfo: {},
     menuList: [],
@@ -13,21 +15,52 @@
     name: '',
     school: '',
     class: '',
-    learnTime: '2',
+    learnTime: '0灏忔椂',
     taskShow: false,
     dataList: [], //浠诲姟鍗�
     tasksListData: [], //宸插~鍐欎换鍔″崟messsge
     taskInfo: {}, //閫変腑浠诲姟鍗曠洰褰�
     tasksData: {}, //宸插~鍐欎换鍔″崟
-    userId: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).id,
+    userId: 0,
+    userName: '',
     isUpdate: false,
-    taskId: 0, //榛樿閫変腑鐩綍id
+    taskId: '', //榛樿閫変腑鐩綍id
     autosize: {
       maxHeight: 120,
       minHeight: 80,
     },
+    disabled: false,
+    dialogVisible: false,
+    invitee: "",
+    teacherEvaluated: false,
+    evaluated: false,
+    rowCol: [{
+        width: '50%',
+      },
+      {
+        width: '100%'
+      },
+      {
+        width: '80%'
+      },
+      {
+        width: '100%'
+      }, {
+        width: '100%'
+      },
+    ],
   },
-
+  onShow() {
+    var that = this;
+    // 鍔ㄦ�佽幏鍙栧睆骞曢珮搴�
+    wx.getSystemInfo({
+      success: (result) => {
+        that.setData({
+          height: result.windowHeight
+        });
+      },
+    })
+  },
   /**
    * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
    */
@@ -35,22 +68,71 @@
     if (options) {
       this.setData({
         bookId: options.bookId,
-        consumer: options.consumer
+        cmsPath: options.cmsPath,
+        taskId: options.taskId,
+        consumer: options.consumer,
+        userId: options.userId,
+        userName: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).nickName
       });
+      if (options.consumer) {
+        this.setData({
+          cmsPath: options.cmsPath,
+          bookId: options.bookId,
+          taskId: options.taskId,
+          consumer: options.consumer,
+          userId: options.userId,
+          disabled: true
+        });
+      } else {
+        this.setData({
+          userId: JSON.parse(wx.getStorageSync(app.config.userInfoKey)).userId,
+          disabled: false
+        });
+      }
       this.getResourceData()
+      this.getLearnTime()
     }
 
   },
 
+  getLearnTime() {
+    app.MG.identity
+      .getUserKey({
+        domain: 'cloudLearningTime',
+        keys: [this.data.bookId]
+      })
+      .then((res) => {
+        if (res.length > 0 && JSON.parse(res[0].value) && JSON.parse(res[0].value).length > 0) {
+          let time = JSON.parse(res[0].value)[0].learnTime
+          let minutes = Number(time) / (1000 * 60)
+          let hours = Number(time) / (1000 * 60 * 60)
+          if (minutes > 0 && minutes < 60) {
+            this.setData({
+              learnTime: Math.round(minutes) + '鍒嗛挓',
+            });
+          } else if (minutes > 60) {
+            this.setData({
+              learnTime: Math.round(hours) + '灏忔椂',
+            });
+          } else {
+            this.setData({
+              learnTime: '0灏忔椂',
+            });
+          }
+        }
+      })
+  },
+
   getResourceData() {
     this.setData({
+      menuList: [],
       loading: true,
     });
     let query = {
       path: '*',
       queryType: '*',
       productId: this.data.bookId,
-      cmsPath: 'jsek_learningTasks',
+      cmsPath: this.data.cmsPath,
       // cmsType: '*',
       itemFields: {
         SysType: 'CmsFolder'
@@ -66,8 +148,8 @@
       });
       if (res.datas.cmsDatas[0].datas) {
         let list = res.datas.cmsDatas[0].datas
-        let dataLists = []
-        list.forEach(async (item) => {
+        let dataList = []
+        list.forEach((item) => {
           if (item.childrenFolderCount > 0) {
             let query = {
               path: '*',
@@ -83,32 +165,60 @@
                 size: 99
               }
             }
-            const data = await app.MG.store.getProductDetail(query).then((res1) => {
-              // item.children = res1.datas.cmsDatas[0].datas
-              return res1.datas.cmsDatas[0].datas
+            app.MG.store.getProductDetail(query).then((res) => {
+              item.children = res.datas.cmsDatas[0].datas
             })
-            item.children = data
           }
-          dataLists.push(item)
+          dataList.push(item)
         })
-        this.setData({
-          menuList: dataLists,
-          loading: false
-        });
-        console.log(this.data.menuList)
+        setTimeout(() => {
+          this.setData({
+            menuList: dataList,
+            loading: false,
+          });
+        }, 500)
+        if (this.data.taskId) {
+          setTimeout(() => {
+            this.data.menuList.forEach((item) => {
+              if (item.id == this.data.taskId) {
+                this.setData({
+                  taskInfo: item,
+                });
+              } else if (item.children) {
+                item.children.forEach((item1) => {
+                  if (item1.id == this.data.taskId) {
+                    this.setData({
+                      taskInfo: item1,
+                    });
+                  }
+                })
+              }
+            })
+          }, 500)
+        } else {
+          setTimeout(() => {
+            if (this.data.menuList[0].children) {
+              this.setData({
+                taskInfo: this.data.menuList[0].children[0],
+              });
+            } else {
+              this.setData({
+                taskInfo: this.data.menuList[0],
+              });
+            }
+          }, 500)
+        }
       }
-      this.getTasksList()
+      setTimeout(() => {
+        this.getTasksList()
+      }, 500)
     })
   },
-
   getTask(e) {
-    console.log(e, 123)
-    let data = e.currentTarget.dataset.item
-    this.setData({
-      taskShow: true,
-    });
-    this.taskSelect(data)
+    let item = e.currentTarget.dataset.item
+    this.taskSelect(item)
   },
+
   onVisibleChange(e) {
     this.setData({
       taskShow: e.detail.visible,
@@ -136,55 +246,58 @@
       this.setData({
         tasksListData: res.datas,
       });
+      if (this.data.taskInfo.name) {
+        this.taskSelect(this.data.taskInfo)
+      }
     })
   },
   taskSelect(item) {
     if (!item.children) {
       this.setData({
         taskInfo: item,
-        dataList: []
+        dataList: [],
       });
       if (this.data.tasksListData.length > 0) {
         this.data.tasksListData.forEach((item1) => {
           let content = JSON.parse(item1.content)
-          if (content.id == this.data.taskInfo.id && content.userId == this.data.userId) {
-            isUpdate.value = true
-            tasksData.value = item1
-            form.name = content.userName
-            form.school = content.school
-            form.class = content.class
-            form.learnTime = content.learnTime
-            this.setData({
-              isUpdate: true,
-              tasksData: item1,
-              name: content.userName,
-              school: content.school,
-              class: content.class,
-              learnTime: content.learnTime
-            });
-            this.getChildTasksList()
-            if (content.evaluate.length > 0) {
-              content.evaluate.forEach((element) => {
-                if (this.data.consumer == 'classmate') {
-                  element.mateEvaluation = ''
-                }
-                if (this.data.consumer == 'teacher') {
-                  element.teacherEvaluation = ''
-                }
-              })
+          if (content.id == this.data.taskInfo.id) {
+            if (content.userId == this.data.userId) {
               this.setData({
-                dataList: content.evaluate
+                isUpdate: true,
+                tasksData: item1,
+                name: content.userName,
+                school: content.school,
+                class: content.class,
+                learnTime: this.data.learnTime,
               });
+              if (this.data.name && this.data.school && this.data.class) {
+                this.setData({
+                  taskShow: true,
+                })
+                this.getChildTasksList()
+                if (content.evaluate.length > 0) {
+                  this.setData({
+                    dataList: content.evaluate,
+                  });
+                }
+              } else {
+                wx.showToast({
+                  title: "璇峰厛濉啓涓汉淇℃伅",
+                  icon: 'none',
+                  duration: 1000
+                })
+              }
             }
-            console.log(1111)
           } else {
-            this.goDetail(item)
+            return false
           }
         })
-      } else {
+      }
+      if (this.data.dataList.length == 0) {
         this.goDetail(item)
       }
     }
+
   },
   goDetail(item) {
     this.setData({
@@ -216,10 +329,18 @@
           item.teacherEvaluation = ''
         })
       }
-      this.setData({
-        dataList: res.datas.cmsDatas[0].datas
-      });
-      console.log(this.data.dataList, 444)
+      if (this.data.name && this.data.school && this.data.class) {
+        this.setData({
+          dataList: res.datas.cmsDatas[0].datas,
+          taskShow: true,
+        })
+      } else {
+        wx.showToast({
+          title: "璇峰厛濉啓涓汉淇℃伅",
+          icon: 'none',
+          duration: 1000
+        })
+      }
     })
   },
   getChildTasksList() {
@@ -236,52 +357,321 @@
     }
     app.MG.ugc.getChildTopicMessageList(query).then((res) => {
       if (res.datas.length > 0) {
+        let list = []
         this.data.dataList.forEach((item) => {
-          console.log(item, 1)
+          item.teacherEvaluation = []
+          item.mateEvaluation = []
           res.datas.forEach((item1) => {
             let content = JSON.parse(item1.content)
-            if (content.teacherComment) {
+            if (content.teacherComment.length > 0) {
               content.teacherComment.forEach((item2) => {
                 if (item.id == item2.childTaskId) {
-                  item.teacherEvaluation.push(item2)
+                  item.teacherEvaluation = [item2]
+                  if (this.data.consumer == 'teacher') {
+                    this.setData({
+                      evaluated: true
+                    });
+                  }
                 }
               })
             }
-            if (content.mateComment) {
+            if (item.teacherEvaluation && item.teacherEvaluation.length > 0) {
+              this.setData({
+                teacherEvaluated: true
+              });
+            }
+            if (content.mateComment.length > 0) {
               content.mateComment.forEach((item3) => {
                 if (item.id == item3.childTaskId) {
-                  item.mateEvaluation.push(item3)
+                  item.mateEvaluation = [...item.mateEvaluation, item3]
+                  if (this.data.consumer == 'classmate') {
+                    if (item.mateEvaluation && item.mateEvaluation.length > 0) {
+                      let data = item.mateEvaluation.find(
+                        (item) => item.userId == this.data.userId
+                      )
+                      if (data) {
+                        this.setData({
+                          evaluated: true
+                        });
+                        item.mateEvaluation = [data]
+                      } else {
+                        this.setData({
+                          evaluated: false
+                        });
+                        item.mateEvaluation = ''
+                      }
+                    }
+                  }
                 }
               })
             }
           })
+          list.push(item)
         })
+        this.setData({
+          dataList: list
+        });
       }
+    })
+  },
+
+  // 涓汉淇℃伅濉啓
+  bindTnputBlur(e) {
+    this.setData({
+      name: e.detail.value
+    })
+  },
+  onSchoolInput(e) {
+    this.setData({
+      school: e.detail.value
+    })
+  },
+  bindClassBlur(e) {
+    this.setData({
+      class: e.detail.value
     })
   },
 
   //浠诲姟濉啓
   //鍙嶆��
   onIntrospectionInput(e) {
-    console.log(e)
-
+    let index = e.target.dataset.index
+    let data = 'dataList[' + index + '].introspection'
+    this.setData({
+      [data]: e.detail.value
+    });
   },
   //瀹屾垚鎯呭喌
   onCompletionInput(e) {
-
+    let index = e.target.dataset.index
+    let data = 'dataList[' + index + '].completion'
+    this.setData({
+      [data]: e.detail.value
+    });
   },
   //鑷繁璇勪环
   onSelfInput(e) {
-
+    let index = e.target.dataset.index
+    let data = 'dataList[' + index + '].selfEvaluation'
+    this.setData({
+      [data]: e.detail.value
+    });
   },
   //鍚屼即璇勪环
   onMateInput(e) {
-
+    let index = e.target.dataset.index
+    let data = 'dataList[' + index + '].mateEvaluation'
+    this.setData({
+      [data]: e.detail.value
+    });
   },
   //鑰佸笀璇勪环
   onTeacherInput(e) {
+    let index = e.target.dataset.index
+    let data = 'dataList[' + index + '].teacherEvaluation'
+    this.setData({
+      [data]: e.detail.value
+    });
+  },
+  //鎻愪氦鑷繁濉啓
+  inviteBtn() {
+    let empty = false
+    this.data.dataList.forEach((item) => {
+      if (item.introspection == '' || item.completion == '' || item.selfEvaluation == '') {
+        empty = true
+        return false
+      }
+    })
+    if (empty) {
+      wx.showToast({
+        title: "璇峰厛濉啓瀹岃嚜宸卞涔犳儏鍐�",
+        icon: 'none',
+        duration: 1000
+      })
+    } else {
+      let evaluate = []
+      this.data.dataList.forEach((item) => {
+        evaluate.push({
+          id: item.id,
+          name: item.name,
+          subtaskDescription: item.subtaskDescription,
+          learningSuggestions: item.subtaskDescription,
+          introspection: item.introspection,
+          completion: item.completion,
+          selfEvaluation: item.selfEvaluation,
+          mateEvaluation: [],
+          teacherEvaluation: []
+        })
+      })
+      let content = {
+        bookName: this.data.bookInfo.name,
+        userName: this.data.name,
+        userId: this.data.userId,
+        school: this.data.school,
+        class: this.data.class,
+        learnTime: this.data.learnTime,
+        id: this.data.taskInfo.id,
+        taskName: this.data.taskInfo.name,
+        productLinkPath: this.data.taskInfo.productLinkPath,
+        evaluate: evaluate
+      }
+      let query = {
+        topicIdOrRefCode: 'learningTasks',
+        name: this.data.bookInfo.name,
+        content: JSON.stringify(content),
+        type: 'learningTasks',
+        cmsTypeRefCode: '',
+        newDataListRequest: []
+      }
+      app.MG.ugc.newTopicMessage(query).then((res) => {
+        this.getTasksList()
+        this.setData({
+          dialogVisible: true
+        });
+      })
+    }
+
 
   },
+  updateSubmit() {
+    let evaluate = []
+    this.data.dataList.forEach((item) => {
+      evaluate.push({
+        id: item.id,
+        name: item.name,
+        subtaskDescription: item.subtaskDescription,
+        learningSuggestions: item.subtaskDescription,
+        introspection: item.introspection,
+        completion: item.completion,
+        selfEvaluation: item.selfEvaluation,
+        mateEvaluation: [],
+        teacherEvaluation: []
+      })
+    })
+    let content = {
+      bookName: this.data.bookInfo.name,
+      userName: this.data.name,
+      userId: this.data.userId,
+      school: this.data.school,
+      class: this.data.class,
+      learnTime: this.data.learnTime,
+      id: this.data.taskInfo.id,
+      taskName: this.data.taskInfo.name,
+      productLinkPath: this.data.taskInfo.productLinkPath,
+      evaluate: evaluate
+    }
+
+    let query = {
+      topicIdOrRefCode: 'learningTasks',
+      id: this.data.tasksData.id,
+      name: this.data.bookInfo.name,
+      type: 'learningTasks',
+      content: JSON.stringify(content),
+      newDataRequests: [],
+      updateDataRequests: []
+    }
+    app.MG.ugc.updateTopicMessage(query).then((res) => {
+      this.getTasksList()
+      this.setData({
+        dialogVisible: true
+      });
+    })
+  },
+  onInviteeChange(e) {
+    this.setData({
+      invitee: e.detail.value
+    });
+  },
+
+  handleClose() {
+    this.setData({
+      dialogVisible: false,
+      invitee: ''
+    });
+  },
+
+  confirmBtn() {
+    wx.showShareMenu({
+      withShareTicket: true
+    });
+  },
+  confirmBtn1() {
+    wx.showToast({
+      title: "鏁欏笀宸茬粡璇勪环锛屼笉鑳藉啀閭�璇锋暀甯堣瘎浠凤紒",
+      icon: 'none',
+      duration: 1000
+    })
+  },
+  submitComment() {
+    let mateEvaluationList = []
+    let teacherEvaluationList = []
+    this.data.dataList.forEach((item) => {
+      if (this.data.consumer == 'classmate') {
+        if (item.mateEvaluation && item.mateEvaluation != '') {
+          mateEvaluationList.push({
+            childTaskId: item.id,
+            userId: this.data.userId,
+            userName: this.data.userName,
+            evaluation: item.mateEvaluation
+          })
+        }
+      }
+      if (this.data.consumer == 'teacher') {
+        if (item.teacherEvaluation && item.teacherEvaluation != '') {
+          teacherEvaluationList.push({
+            childTaskId: item.id,
+            userId: this.data.userId,
+            userName: this.data.userName,
+            evaluation: item.teacherEvaluation
+          })
+        }
+      }
+    })
+    if (this.data.consumer == 'classmate') {
+      if (mateEvaluationList.length < this.data.dataList.length) {
+        wx.showToast({
+          title: "璇峰厛濉啓璇勪环",
+          icon: 'none',
+          duration: 1000
+        })
+      }
+    }
+    if (this.data.consumer == 'teacher') {
+      if (teacherEvaluationList.length < this.data.dataList.length) {
+        wx.showToast({
+          title: "璇峰厛濉啓璇勪环",
+          icon: 'none',
+          duration: 1000
+        })
+      }
+    }
+    let content = {
+      id: this.data.taskInfo.id,
+      taskName: this.data.taskInfo.name,
+      productLinkPath: this.data.taskInfo.productLinkPath,
+      mateComment: mateEvaluationList,
+      teacherComment: teacherEvaluationList
+    }
+
+    let query = {
+      topicIdOrRefCode: 'learningTasks',
+      parentId: this.data.tasksData.id,
+      name: this.data.bookInfo.name,
+      type: 'learningTasks',
+      content: JSON.stringify(content),
+      cmsTypeRefCode: '',
+      newDataListRequest: []
+    }
+    app.MG.ugc.newTopicMessage(query).then((res) => {
+      this.getTasksList()
+      wx.showToast({
+        title: "璇勪环宸叉彁浜�",
+        icon: 'success',
+        duration: 1000
+      })
+    })
+  },
+
   /**
    * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔
    */
@@ -300,6 +690,10 @@
    * 鐢ㄦ埛鐐瑰嚮鍙充笂瑙掑垎浜�
    */
   onShareAppMessage() {
-
+    return {
+      title: '璇勪环瀛︿範浠诲姟鍗�',
+      path: `packageBookService/pages/bookServices/detail/components/learnTask/index?bookId=${this.data.bookId}&consumer=${this.data.invitee}&taskId=${this.data.taskInfo.id}&userId=${this.data.userId}&cmsPath=${this.data.cmsPath}`,
+      imgUrl: 'https://jsek.bnuic.com/home/image/click-icon.png',
+    }
   }
 })
\ No newline at end of file

--
Gitblit v1.9.1