From 1530f605190069e45b5e31a7ec2bf7a6dc691f39 Mon Sep 17 00:00:00 2001
From: QYF-GitLab1 <1940665526@qq.com>
Date: 星期四, 02 一月 2025 14:09:22 +0800
Subject: [PATCH] 1

---
 packageCourse/components/baseClass/index.wxss     |    6 -
 packageCourse/pages/studentClass/index.js         |   28 ++++++
 packageCourse/components/studentManage/index.json |    4 
 packageCourse/components/studentManage/index.js   |  107 ++++++++++++++++++++++++--
 packageCourse/pages/studentClass/index.wxml       |    2 
 packageCourse/components/studentManage/index.wxml |   20 +++-
 packageCourse/components/studentManage/index.wxss |   20 ++++
 7 files changed, 164 insertions(+), 23 deletions(-)

diff --git a/packageCourse/components/baseClass/index.wxss b/packageCourse/components/baseClass/index.wxss
index 6a149be..300d6cd 100644
--- a/packageCourse/components/baseClass/index.wxss
+++ b/packageCourse/components/baseClass/index.wxss
@@ -12,7 +12,6 @@
   padding: 20rpx;
   box-sizing: border-box;
   background-color: #f8f8f8;
-  margin-bottom: 10rpx;
 }
 
 .statics {
@@ -37,8 +36,7 @@
 
 .pubCss {
   width: 100%;
-  padding: 20rpx 0;
-  box-sizing: border-box;
+  max-height: 300px;
 }
 
 .roleInfo {
@@ -68,7 +66,7 @@
 
 .bookData {
   width: 100%;
-  height: 200rpx;
+  height: 250rpx;
   display: flex;
   justify-content: space-between;
   align-items: center;
diff --git a/packageCourse/components/studentManage/index.js b/packageCourse/components/studentManage/index.js
index 51fc396..1aa437b 100644
--- a/packageCourse/components/studentManage/index.js
+++ b/packageCourse/components/studentManage/index.js
@@ -36,6 +36,7 @@
     }],
     isAll: false,
     isEnbled: false,
+    currentState: 'Normal',
     // 鍔犺浇鍙傛暟
     bottomLoading: false,
     isMoreData: false,
@@ -52,6 +53,38 @@
    * 缁勪欢鐨勬柟娉曞垪琛�
    */
   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
+      })
+      this.getStudentList()
+    },
+
     // 閫夋嫨瀛︾敓
     selectUser(e) {
       const {
@@ -59,13 +92,13 @@
       } = e.currentTarget.dataset
       let bool = false;
       let allBool = false;
-      const data = this.data.userList;
+      const data = [...this.data.userList];
       data[index].isCheck = !data[index].isCheck;
-      const list = data.filter(item => item.isCheck);
-      if (list.length === this.data.userList.length - 1) {
+      const list = data.filter(item => item.isCheck == true);
+      if (list.length === data.length) {
         allBool = true
       }
-      if (list.length > 1) {
+      if (list.length > 0) {
         bool = true
       }
       this.setData({
@@ -79,7 +112,9 @@
     selectAll(e) {
       const data = this.data.userList;
       data.forEach(item => {
-        item.isCheck = e.detail.checked
+        if (item.linkType != 'Creator') {
+          item.isCheck = e.detail.checked
+        }
       })
       this.setData({
         userList: data,
@@ -90,7 +125,7 @@
 
     // 鎵归噺閫氳繃
     updateStateNormalDatas() {
-      const dataUser = this.data.userList.filter((item) => item.isCheck = true)
+      const dataUser = this.data.userList.filter((item) => item.isCheck == true)
       const data = {
         groupId: this.properties.classId,
         requests: dataUser.map((item) => {
@@ -104,7 +139,10 @@
       }
       app.MG.identity.updateAppUserGroupLink(data).then((res) => {
         if (res) {
-          getStudentList()
+          this.setData({
+            userList: []
+          })
+          this.getStudentList()
         }
       })
     },
@@ -119,17 +157,65 @@
             return
           }
           if (res.confirm) {
-            const dataUser = this.data.userList.filter((item) => item.isCheck = true)
+            const dataUser = this.data.userList.filter((item) => item.isCheck == true)
             const data = {
               groupId: this.properties.classId,
               appUserIds: dataUser.map((item) => item.appUser.id)
             }
             app.MG.identity.removeAppUserFromGroup(data).then((res) => {
               if (res) {
+                this.setData({
+                  userList: []
+                })
                 this.getStudentList()
               }
             })
           }
+        }
+      })
+    },
+
+    // 鎵归噺鎷掔粷
+    updateStateRejectDatas() {
+      const dataUser = this.data.userList.filter((item) => item.isCheck == true)
+      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) {
+          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) {
+          this.getStudentList()
         }
       })
     },
@@ -139,6 +225,11 @@
       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',
diff --git a/packageCourse/components/studentManage/index.json b/packageCourse/components/studentManage/index.json
index f219418..ceb9958 100644
--- a/packageCourse/components/studentManage/index.json
+++ b/packageCourse/components/studentManage/index.json
@@ -14,6 +14,8 @@
     "t-icon": "tdesign-miniprogram/icon/icon",
     "t-radio": "tdesign-miniprogram/radio/radio",
     "t-radio-group": "tdesign-miniprogram/radio-group/radio-group",
-    "t-checkbox": "tdesign-miniprogram/checkbox/checkbox"
+    "t-checkbox": "tdesign-miniprogram/checkbox/checkbox",
+    "t-tabs": "tdesign-miniprogram/tabs/tabs",
+    "t-tab-panel": "tdesign-miniprogram/tab-panel/tab-panel"
   }
 }
\ No newline at end of file
diff --git a/packageCourse/components/studentManage/index.wxml b/packageCourse/components/studentManage/index.wxml
index a655a41..a4b1fe6 100644
--- a/packageCourse/components/studentManage/index.wxml
+++ b/packageCourse/components/studentManage/index.wxml
@@ -3,6 +3,13 @@
   <view class="header">
     <t-search style="flex:1" value="{{searchKey}}" bind:clear="changeHandle" bind:submit="changeHandle" placeholder="鎼滅储鍚嶇О" clearable />
   </view>
+  <view class="tabComtyent">
+    <t-tabs class="custom-tabs" defaultValue="{{currentState}}" bind:change="onTabsChange" t-class="custom-tabs">
+      <t-tab-panel label="宸查�氳繃" value="Normal" />
+      <t-tab-panel label="寰呭鏍�" value="WaitValid" />
+      <t-tab-panel label="鏈�氳繃" value="Reject" />
+    </t-tabs>
+  </view>
   <view class="contentList" wx:if="{{userList.length > 0}}">
     <scroll-view class="scroll" class="content" bind:scroll="onPageScroll" model:scroll-top="{{setScrollValue}}" scroll-y refresher-enabled="{{true}}" lower-threshold="{{80}}" refresher-threshold="{{80}}" refresher-default-style="none" refresher-triggered="{{triggered}}" bindrefresherpulling="{{refresh.onPulling}}" bindrefresherrefresh="onPullDownRefresh" bindscrolltolower="onReachBottom">
       <view slot="refresher" class="refresh-container">
@@ -17,9 +24,11 @@
           <text class="user">{{item.appUser.name}}</text>
         </view>
         <view>
-          <t-button bindtap="selectIdentity" data-item="{{item}}" style="margin: 0;color: green;" size="extra-small" wx:if="{{item.state != 'Normal' && item.linkType != 'Creator'}}" variant="text">閫氳繃</t-button>
-          <t-button bindtap="removeStudent" data-item="{{item}}" style="margin: 0;color: red;" size="extra-small" wx:if="{{item.linkType != 'Creator' }}" variant="text">绉婚櫎</t-button>
           <text style="color: #ff6d00;" wx:if="{{item.linkType == 'Creator'}}">鍒涘缓浜�</text>
+          <text style="color: #ff6d00;" wx:if="{{item.state == 'Reject'}}">宸叉嫆缁�</text>
+          <t-button bindtap="selectIdentity" data-item="{{item}}" style="margin: 0;color: #67c23a;" size="extra-small" wx:if="{{item.state != 'Normal' && item.linkType != 'Creator' && item.state != 'Reject'}}" variant="text">閫氳繃</t-button>
+          <t-button bindtap="removeStudent" data-item="{{item}}" style="margin: 0;color: red;" size="extra-small" wx:if="{{item.linkType != 'Creator' && item.state == 'Normal'  }}" variant="text">绉婚櫎</t-button>
+          <t-button bindtap="updateStateReject" data-item="{{item}}" style="margin: 0;color: #ff6d00;" size="extra-small" wx:if="{{item.linkType != 'Creator' && item.state != 'Normal' && item.state != 'Reject' }}" variant="text">鎷掔粷</t-button>
         </view>
       </view>
       <view class="bottom-loading" wx:if="{{bottomLoading}}">
@@ -33,13 +42,14 @@
   <view class="content" wx:if="{{userList.length == 0}}">
     <empty />
   </view>
-  <view class="navBottom" wx:if="{{userList.length > 1}}">
+  <view class="navBottom">
     <view class="navBottom-check">
       <t-checkbox block="{{false}}" label="鍏ㄩ��" checked="{{isAll}}" bind:change="selectAll" />
     </view>
     <view class="navBtn">
-      <t-button disabled="{{!isEnbled}}" style="margin-right:10px" size="extra-small" bindtap="updateStateNormalDatas">鎵归噺閫氳繃</t-button>
-      <t-button disabled="{{!isEnbled}}" size="extra-small" theme="danger" bindtap="removeStudentDatas">鎵归噺绉婚櫎</t-button>
+      <t-button class="custom-css" wx:if="{{currentState == 'WaitValid'}}" disabled="{{!isEnbled}}" style="margin-right:10px;" size="extra-small" bindtap="updateStateNormalDatas">鎵归噺閫氳繃</t-button>
+      <t-button wx:if="{{currentState != 'WaitValid'}}" disabled="{{!isEnbled}}" size="extra-small" theme="danger" bindtap="removeStudentDatas">鎵归噺绉婚櫎</t-button>
+      <t-button wx:if="{{currentState == 'WaitValid'}}" disabled="{{!isEnbled}}" size="extra-small" theme="danger" bindtap="updateStateRejectDatas">鎵归噺鎷掔粷</t-button>
     </view>
   </view>
 </view>
diff --git a/packageCourse/components/studentManage/index.wxss b/packageCourse/components/studentManage/index.wxss
index 2afdb87..07e031c 100644
--- a/packageCourse/components/studentManage/index.wxss
+++ b/packageCourse/components/studentManage/index.wxss
@@ -1,4 +1,14 @@
 /* packageCourse/pages/course/index.wxss */
+.custom-css {
+  --td-button-default-disabled-bg: #ccc;
+  --td-button-default-bg-color: #67c23a;
+  --td-button-default-border-color: #67c23a;
+}
+
+.custom-tabs {
+  --td-tab-item-active-color: #ff6d00;
+  --td-tab-track-color: #ff6d00;
+}
 
 .demo-section__content {
   margin-top: 32rpx;
@@ -48,6 +58,14 @@
   background-color: #fff;
 }
 
+.tabComtyent {
+  width: 100%;
+}
+
+.tabComtyent .t-tabs__item--active {
+  color: #ff6d00 !important;
+}
+
 .header .t-search__input-box {
   height: 70rpx !important;
   font-size: 28rpx;
@@ -55,7 +73,7 @@
 
 .contentList {
   width: 100%;
-  height: calc(100% - 55px - 45px);
+  height: calc(100% - 55px - 45px - 48px);
   background-color: #fff;
 }
 
diff --git a/packageCourse/pages/studentClass/index.js b/packageCourse/pages/studentClass/index.js
index e18f442..4ba4389 100644
--- a/packageCourse/pages/studentClass/index.js
+++ b/packageCourse/pages/studentClass/index.js
@@ -42,11 +42,14 @@
 
   // 閫氳繃code鏌ヨ鐝骇
   getClassDetail() {
-    if (this.data.refCode == '') {
+    if (!this.data.refCode) {
       wx.showToast({
         title: '璇疯緭鍏ラ個璇风爜',
         duration: 1000,
         icon: "none",
+      })
+      this.setData({
+        classDetail: null
       })
       return false
     }
@@ -56,14 +59,29 @@
     app.MG.edu
       .getCourseClass(data)
       .then(res => {
-        if (res) {
+        if (res.linkProductDto) {
           res.classTime = moment(res.beginDate).format('YYYY-MM-DD') + '--' + moment(res.endDate).format('YYYY-MM-DD')
           this.setData({
             classDetail: res
           })
+        } else {
+          this.setData({
+            classDetail: null
+          })
+          wx.showToast({
+            title: '閭�璇风爜鏃犳晥',
+            icon: "none"
+          })
         }
       })
       .catch(err => {
+        wx.showToast({
+          title: '閭�璇风爜鏃犳晥',
+          icon: "none"
+        })
+        this.setData({
+          classDetail: null
+        })
         console.log(err)
       })
   },
@@ -78,7 +96,9 @@
   // 鍏抽棴鐢宠
   cancle() {
     this.setData({
-      visible: false
+      visible: false,
+      classDetail: null,
+      refCode: ''
     })
   },
 
@@ -161,6 +181,8 @@
           classList: list,
           totalSize: totalSize,
           visible: false,
+          classDetail: null,
+          refCode: '',
           skeletonLoding: false,
           bottomLoading: false
         })
diff --git a/packageCourse/pages/studentClass/index.wxml b/packageCourse/pages/studentClass/index.wxml
index b431df0..bcbcd15 100644
--- a/packageCourse/pages/studentClass/index.wxml
+++ b/packageCourse/pages/studentClass/index.wxml
@@ -53,7 +53,7 @@
         <view class="c-name">
           <text>閭�璇风爜锛� </text>
           <view class="c-name-option">
-            <t-input value="{{refCode}}" bindchange="onCourseNameInput" borderless clearable placeholder="璇疯緭鍏ラ個璇风爜" />
+            <t-input value="{{refCode}}" bind:change="onCourseNameInput" bind:clear="onCourseNameInput" borderless clearable placeholder="璇疯緭鍏ラ個璇风爜" />
             <t-button bindtap="getClassDetail" size="small" style="margin-left: 15rpx;">鏌ョ湅鐝骇</t-button>
           </view>
         </view>

--
Gitblit v1.9.1