// packageCourse/components/studentManage/index.js const app = getApp(); import moment from "moment" import { getPublicImage } from '../../../assets/js/middleGround/tool' Component({ /** * 组件的属性列表 */ properties: { classId: { type: Number, default: 0 }, }, /** * 组件的初始数据 */ data: { userList: [], page: 1, limit: 10, total: 0, searchKey: '', currentIdentity: null, showConfirm: false, radioVal: 'RefCode', roleList: [{ name: '学生', value: 'RefCode' }, { name: '助教', value: 'Teacher' }], // 加载参数 bottomLoading: false, isMoreData: false, // 返回顶部 isBackTop: false, setScrollValue: 0, skeletonLoding: true }, ready() { this.getStudentList() }, /** * 组件的方法列表 */ methods: { // 获取学生列表 getStudentList(isReachBottom) { const data = { start: (this.data.page - 1) * this.data.limit, size: this.data.limit, searchList: this.data.searchKey ? [{ keywords: this.data.searchKey, field: 'Name', compareType: 'Contains' }] : [], groupId: this.properties.classId } app.MG.identity.getGroupUserList(data).then((res) => { const { datas, totalSize } = res 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) ?? '' } } if (item.linkType == 'RefCode' || item.linkType == 'Teacher') { let userInfo = null const wechatData = item.appUser?.infoList?.find((citem) => citem.type == 'WeChat') const defaultData = item.appUser?.infoList?.find((citem) => citem.type == 'Default') userInfo = defaultData if (wechatData?.name) { userInfo = wechatData } item.appUser.name = userInfo.name item.appUser.icon = userInfo.icon } return { ...item, index: index + 1, createDate: moment(item.createDate).format('YYYY-MM-DD') } }) //触底加载新数据并保留老数据 if (isReachBottom) { list = [...this.data.courseList, ...list] //将新数据加入老数据中 } this.setData({ userList: list, total: res.totalSize, skeletonLoding: false, bottomLoading: false }) } }) }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { if (this._freshing) return this.setData({ page: 1, bottomLoading: false, isMoreData: false }) setTimeout(() => { this._freshing = true; this.setData({ triggered: false, }) this.getStudentList(); this._freshing = false }, 500); }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { if (this.data.pageCourse.total > this.data.courseList.length) { this.setData({ page: this.data.pageCourse.page + 1, bottomLoading: true, isMoreData: false }) } else { this.setData({ bottomLoading: false, isMoreData: true }) return false; } this.getStudentList(true); }, // 监听滚动距离 onPageScroll(e) { if (e && e.scrollTop >= 1000) { this.setData({ isBackTop: true }) } else { this.setData({ isBackTop: false }) } }, selectIdentity(e) { const { item } = e.currentTarget.dataset this.setData({ showConfirm: true, currentIdentity: item }) }, onChangeVal(e) { this.setData({ radioVal: e.detail.value }); }, // 移除学生 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') } }) }, cancle() { this.setData({ showConfirm: false, radioVal: 'RefCode' }) }, // 更新状态 updateStateNormal() { const data = { groupId: this.properties.classId, requests: [{ linkId: this.data.currentIdentity.linkId, linkType: this.data.radioVal, state: 'Normal', groupState: 'Normal' }] } app.MG.identity.updateAppUserGroupLink(data).then((res) => { if (res) { wx.showToast({ title: '已通过', duration: 1000, icon: 'success', }) this.cancle() this.getStudentList() this.newNotice(this.data.currentIdentity, 'success') } }) }, }, // 新建通知 newNotice(item, type) { const messageId = wx.getStorageSync('messageId') const str = type == 'success' ? item.appUser.name + '--加入班级' : item.appUser.name + '--已被移除班级' if (!messageId) { return false } const data = { description: '', icon: '', state: 'Normal', topicIdOrRefCode: String(messageId), name: str, content: "", type: 'Normal', cmsTypeRefCode: '', newDataListRequest: [] } app.MG.ugc .newTopicMessage(data) .then() .catch((err) => { console.log(err) }) } })