111
QYF-GitLab1
2025-01-02 c5b6f319a21021892a299036c22862b1a3b2ad53
packageCourse/components/studentManage/index.js
@@ -34,6 +34,9 @@
      name: '助教',
      value: 'Teacher'
    }],
    isAll: false,
    isEnbled: false,
    currentState: 'Normal',
    // 加载参数
    bottomLoading: false,
    isMoreData: false,
@@ -50,11 +53,207 @@
   * 组件的方法列表
   */
  methods: {
    changeHandle(e) {
      const {
        value
      } = e.detail;
      let cmsList = this.data.userList
      this.setData({
        userList: []
      })
      if (value) {
        const data = cmsList.filter(item => item.appUser.name.indexOf(value) > -1);
        this.setData({
          userList: data
        })
      }
      if (value == '') {
        this.setData({
          userList: [],
        })
        this.getStudentList()
      }
    },
    // 当前状态
    onTabsChange(e) {
      this.setData({
        currentState: e.detail.value,
        userList: [],
        isAll: false,
        isEnbled: false,
        searchKey: ''
      })
      this.getStudentList()
    },
    // 选择学生
    selectUser(e) {
      const {
        index
      } = e.currentTarget.dataset
      let bool = false;
      let allBool = false;
      const data = [...this.data.userList];
      data[index].isCheck = !data[index].isCheck;
      const list = data.filter(item => item.isCheck == true);
      if (list.length === data.length) {
        allBool = true
      }
      if (list.length > 0) {
        bool = true
      }
      this.setData({
        userList: data,
        isEnbled: bool,
        isAll: allBool
      })
    },
    // 全选
    selectAll(e) {
      const data = this.data.userList;
      data.forEach(item => {
        if (item.linkType != 'Creator') {
          item.isCheck = e.detail.checked
        }
      })
      this.setData({
        userList: data,
        isAll: e.detail.checked,
        isEnbled: e.detail.checked,
      })
    },
    // 批量通过
    updateStateNormalDatas() {
      const dataUser = this.data.userList.filter((item) => item.isCheck == true && item.linkType != 'Creator')
      const data = {
        groupId: this.properties.classId,
        requests: dataUser.map((item) => {
          return {
            linkId: item.linkId,
            linkType: item.linkType,
            state: 'Normal',
            groupState: 'Normal'
          }
        })
      }
      app.MG.identity.updateAppUserGroupLink(data).then((res) => {
        if (res) {
          wx.showToast({
            title: '已通过',
            duration: 1000,
            icon: 'none',
          })
          this.setData({
            userList: []
          })
          this.getStudentList()
        }
      })
    },
    // 批量移除学生
    removeStudentDatas() {
      wx.showModal({
        title: '提示',
        content: '是否批量移除选中成员?',
        complete: (res) => {
          if (res.cancel) {
            return
          }
          if (res.confirm) {
            const dataUser = this.data.userList.filter((item) => item.isCheck == true && item.linkType != 'Creator')
            const data = {
              groupId: this.properties.classId,
              appUserIds: dataUser.map((item) => item.appUser.id)
            }
            app.MG.identity.removeAppUserFromGroup(data).then((res) => {
              if (res) {
                wx.showToast({
                  title: '已移除',
                  duration: 1000,
                  icon: 'none',
                })
                this.setData({
                  userList: []
                })
                this.getStudentList()
              }
            })
          }
        }
      })
    },
    // 批量拒绝
    updateStateRejectDatas() {
      const dataUser = this.data.userList.filter((item) => item.isCheck == true && item.linkType != 'Creator')
      const data = {
        groupId: this.properties.classId,
        requests: dataUser.map((item) => {
          return {
            linkId: item.linkId,
            linkType: item.linkType,
            state: 'Reject',
            groupState: 'Normal'
          }
        })
      }
      app.MG.identity.updateAppUserGroupLink(data).then((res) => {
        if (res) {
          wx.showToast({
            title: '已拒绝',
            duration: 1000,
            icon: 'none',
          })
          this.setData({
            userList: []
          })
          this.getStudentList()
        }
      })
    },
    // 更新状态 拒绝
    updateStateReject(e) {
      const {
        item
      } = e.currentTarget.dataset
      const data = {
        groupId: this.properties.classId,
        requests: [{
          linkId: item.linkId,
          linkType: item.linkType,
          state: 'Reject',
          groupState: 'Normal'
        }]
      }
      app.MG.identity.updateAppUserGroupLink(data).then((res) => {
        if (res) {
          wx.showToast({
            title: '已拒绝',
            duration: 1000,
            icon: 'none',
          })
          this.setData({
            userList: []
          })
          this.getStudentList()
        }
      })
    },
    // 获取学生列表
    getStudentList(isReachBottom) {
      const data = {
        start: (this.data.page - 1) * this.data.limit,
        size: this.data.limit,
        filterList: [{
          value: this.data.currentState,
          field: "State",
          subFilters: []
        }],
        searchList: this.data.searchKey ? [{
          keywords: this.data.searchKey,
          field: 'Name',
@@ -70,12 +269,18 @@
        if (datas.length > 0) {
          let list = datas.map((item, index) => {
            if (item.linkType == 'Creator') {
              const userInfo = item.appUser?.infoList?.find((citem) => citem.type == 'teacherInfo')
              item.appUser.name = userInfo.name
              item.appUser.icon = userInfo.icon
              if (userInfo?.data) {
                const iconData = JSON.parse(userInfo.data)
                item.appUser.icon = getPublicImage(iconData?.relevantCertificates[0]?.md5, 100) ?? ''
              const wechatData = item.appUser?.infoList?.find((citem) => citem.type == 'WeChat')
              const defaultData = item.appUser?.infoList?.find((citem) => citem.type == 'teacherInfo')
              let userInfo = defaultData;
              if (wechatData?.name) {
                userInfo = wechatData;
                item.appUser.name = userInfo.name
                item.appUser.icon = userInfo.icon
              } else {
                if (userInfo?.data) {
                  const iconData = JSON.parse(userInfo.data)
                  item.appUser.icon = getPublicImage(iconData?.relevantCertificates[0]?.md5, 100) ?? ''
                }
              }
            }
            if (item.linkType == 'RefCode' || item.linkType == 'Teacher') {
@@ -92,7 +297,8 @@
            return {
              ...item,
              index: index + 1,
              createDate: moment(item.createDate).format('YYYY-MM-DD')
              createDate: moment(item.createDate).format('YYYY-MM-DD'),
              isCheck: false
            }
          })
          //触底加载新数据并保留老数据
@@ -101,7 +307,9 @@
          }
          this.setData({
            userList: list,
            total: res.totalSize,
            total: totalSize,
            isAll: false,
            isEnbled: false,
            skeletonLoding: false,
            bottomLoading: false
          })
@@ -177,22 +385,37 @@
    // 移除学生
    removeStudent(e) {
      const {
        item
      } = e.currentTarget.dataset
      const data = {
        groupId: this.properties.classId,
        appUserIds: [item.appUser.id]
      }
      app.MG.identity.removeAppUserFromGroup(data).then((res) => {
        if (res) {
          wx.showToast({
            title: '已移除',
            duration: 1000,
            icon: 'none',
          })
          this.getStudentList()
          this.newNotice(item, 'remove')
      wx.showModal({
        title: '提示',
        content: '是否移除当前成员?',
        complete: (res) => {
          if (res.cancel) {
            return
          }
          if (res.confirm) {
            const {
              item
            } = e.currentTarget.dataset
            const data = {
              groupId: this.properties.classId,
              appUserIds: [item.appUser.id]
            }
            app.MG.identity.removeAppUserFromGroup(data).then((res) => {
              if (res) {
                wx.showToast({
                  title: '已移除',
                  duration: 1000,
                  icon: 'none',
                })
                this.setData({
                  userList: [],
                  isAll: false,
                  isEnbled: false
                })
                this.getStudentList()
              }
            })
          }
        }
      })
    },
@@ -222,9 +445,13 @@
            duration: 1000,
            icon: 'success',
          })
          this.setData({
            userList: [],
            isAll: false,
            isEnbled: false
          })
          this.cancle()
          this.getStudentList()
          this.newNotice(this.data.currentIdentity, 'success')
        }
      })
    },