| | |
| | | const app = getApp(); |
| | | import tool from "../../assets/js/toolClass.js"; |
| | | import { getTopicMsgCmsItemFile } from '../../assets/js/middleGround/tool.js' |
| | | import SparkMD5 from 'spark-md5' |
| | | import tool from "../../../assets/js/toolClass.js"; |
| | | import { getTopicMsgCmsItemFile } from '../../../assets/js/middleGround/tool.js'; |
| | | import FormData from '../../../utils/formdata/index.js'; |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | topicId: "", |
| | | worksInfo: [], |
| | | userId: '', |
| | | fileList: [], |
| | | imgPics: [], |
| | | file: "", |
| | | imgs: [], |
| | | protocolTxt: '', //教师协议 |
| | | protocolShow: false, |
| | | editState: true, |
| | | reasonTxt: "" |
| | | reasonTxt: "", |
| | | reasonTxtShow: false, |
| | | }, |
| | | |
| | | /** |
| | |
| | | this.setData({ |
| | | userId: res.userId |
| | | }) |
| | | let nickNameData = res.infoList.find((item) => item.type == 'nickName') |
| | | let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher') |
| | | let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo') |
| | | let wechatInfo = res.infoList.find((item) => item.type == 'WeChat') |
| | | let studentInfo = res.infoList.find((item) => item.type == 'Default') |
| | | let phoneInfo = res.secretList.find((item) => item.type == 'MobilePhone') |
| | | let emailInfo = res.secretList.find((item) => item.type == 'EMail') |
| | | let secretData = res.secretList.find(i => i.type == 'LoginNameAndPassword') |
| | | let WeChatInfo = res.infoList.find((item) => item.type === "WeChat"); |
| | | let defaultUser = {}; |
| | | if (teacherRole && teacherInfos) { |
| | | defaultUser = { |
| | | ...teacherInfos, |
| | | nickName: teacherInfos.fullName, |
| | | avatarUrl: teacherInfos.icon, |
| | | nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : teacherInfos.name, |
| | | icon: nickNameData ? JSON.parse(nickNameData.data).icon : WeChatInfo ? WeChatInfo.icon : '', |
| | | userId: res.userId, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email, |
| | | role: 'Teacher', |
| | | roleId: teacherRole.role.id |
| | | roleId: teacherRole.role.id, |
| | | } |
| | | this.setData({ |
| | | currAuthStep: 2, |
| | | }); |
| | | |
| | | } else if (wechatInfo) { |
| | | } else if (WeChatInfo) { |
| | | defaultUser = { |
| | | ...wechatInfo, |
| | | nickName: wechatInfo.name, |
| | | avatarUrl: wechatInfo.icon, |
| | | ...WeChatInfo, |
| | | nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : WeChatInfo.name, |
| | | icon: nickNameData ? JSON.parse(nickNameData.data).icon : WeChatInfo.icon, |
| | | userId: res.userId, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential, |
| | | role: 'Student' |
| | | } |
| | | } else if (studentInfo) { |
| | | this.setData({ |
| | | currAuthStep: 3, |
| | | }); |
| | | } else if (secretData) { |
| | | defaultUser = { |
| | | ...studentInfo, |
| | | nickName: wechatInfo.name, |
| | | avatarUrl: wechatInfo.icon, |
| | | nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : secretData.credential, |
| | | icon: nickNameData ? JSON.parse(nickNameData.data).icon : "", |
| | | userId: res.userId, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential, |
| | | role: 'Student' |
| | | } |
| | | } |
| | | wx.setStorageSync(app.config.userInfoKey, JSON.stringify(this.data.userInfo)); |
| | | wx.setStorageSync(app.config.userInfoKey, JSON.stringify(defaultUser)); |
| | | } |
| | | }) |
| | | }, |
| | |
| | | app.MG.ugc.getTopicMessageList(data).then((res) => { |
| | | try { |
| | | this.setData({ |
| | | fileList: [], |
| | | imgPics: [], |
| | | }) |
| | | const resData = res.datas.find((i) => i.appUserCreator.userId === this.data.userId) |
| | | if (resData) { |
| | |
| | | let info = getTopicMsgCmsItemFile(this.data.worksInfo, resData.cmsItemDataList) |
| | | this.setData({ |
| | | 'teacherInfo.fullName': info.fullName, |
| | | 'teacherInfo.schoolName ': info.schoolName, |
| | | 'teacherInfo.schoolName': info.schoolName, |
| | | 'teacherInfo.positionalTitle': info.positionalTitle, |
| | | 'teacherInfo.courseName': info.courseName, |
| | | 'teacherInfo.phone': info.phone, |
| | |
| | | 'teacherInfo.agree': true, |
| | | 'teacherInfo.state': resData.state, |
| | | topicId: resData.id, |
| | | topicMessageList: resData.cmsItemDataList |
| | | topicMessageList: resData.cmsItemDataList, |
| | | teachText: info.positionalTitle, |
| | | }) |
| | | if (resData.feedBack != null) { |
| | | this.setData({ |
| | |
| | | }) |
| | | } |
| | | if (this.data.teacherInfo.relevantCertificates.length > 0) { |
| | | let arr = []; |
| | | if (typeof this.data.teacherInfo.relevantCertificates == 'object') { |
| | | this.data.teacherInfo.relevantCertificates.forEach((ele) => { |
| | | let imgObj = { |
| | | md5: ele.file.md5, |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: app.config.requestCtx + `/file/GetPreViewImage?md5=` + ele.file.md5 |
| | | url: app.config.requestCtx + `/file/GetPreViewImage?md5=` + ele.md5, |
| | | imgUrl: ele.file.imgUrl |
| | | } |
| | | this.data.fileList.push(imgObj) |
| | | arr.push(imgObj); |
| | | this.setData({ |
| | | imgPics: arr, |
| | | }); |
| | | }) |
| | | } else { |
| | | let imgObj = { |
| | |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: |
| | | app.config.requestCtx + `/file/GetPreViewImage?md5=` + this.data.teacherInfo.relevantCertificates |
| | | app.config.requestCtx + `/file/GetPreViewImage?md5=` + this.data.teacherInfo.relevantCertificates, |
| | | imgUrl: app.config.requestCtx + `/file/GetPreViewImage?md5=` + this.data.teacherInfo.relevantCertificates, |
| | | } |
| | | this.data.fileList.push(imgObj) |
| | | arr.push(imgObj); |
| | | this.setData({ |
| | | imgPics: arr, |
| | | }); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } catch (error) { |
| | | } |
| | |
| | | } |
| | | }) |
| | | }, |
| | | //学校名称 |
| | | onSchoolNameInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.schoolName": e.detail.value, |
| | | }); |
| | | }, |
| | | //姓名 |
| | | onFullNameInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.fullName": e.detail.value, |
| | | }); |
| | | }, |
| | | // 任教课程 |
| | | onCourseNameInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.courseName": e.detail.value, |
| | | }); |
| | | }, |
| | | //详细地址 |
| | | onAddressInput(e) { |
| | | this.setData({ |
| | | "teacherInfo.detailedAddress": e.detail.value, |
| | | }); |
| | | }, |
| | | |
| | | |
| | | //选择职称 |
| | | onTeachPicker() { |
| | | this.setData({ teachVisible: true }); |
| | | }, |
| | | onPickerChange(e) { |
| | | const { value, label } = e.detail; |
| | | const { label } = e.detail; |
| | | this.setData({ |
| | | teachVisible: false, |
| | | teachText: label[0], |
| | | 'teacherInfo.positionalTitle': value.join[0], |
| | | 'teacherInfo.positionalTitle': label[0], |
| | | }); |
| | | }, |
| | | onPickerCancel(e) { |
| | |
| | | if (phoneError === isPhoneNumber) { |
| | | this.setData({ |
| | | phoneError: !isPhoneNumber, |
| | | "teacherInfo.phone": e.detail.value, |
| | | }); |
| | | } |
| | | }, |
| | |
| | | if (telphoneError === isPhoneNumber) { |
| | | this.setData({ |
| | | telphoneError: !isPhoneNumber, |
| | | "teacherInfo.telphone": e.detail.value, |
| | | }); |
| | | } |
| | | }, |
| | |
| | | if (emailError === isPhoneNumber) { |
| | | this.setData({ |
| | | emailError: !isPhoneNumber, |
| | | "teacherInfo.email": e.detail.value, |
| | | }); |
| | | } |
| | | }, |
| | | handleAdd(e) { |
| | | const { fileList } = this.data; |
| | | console.log(e) |
| | | const { files } = e.detail; |
| | | // 方法2:每次选择图片都上传,展示每次上传图片的进度 |
| | | files.forEach(file => { |
| | | this.onUpload(file) |
| | | }) |
| | | }, |
| | | onUpload(file) { |
| | | console.log(file, '123') |
| | | const isLt2M = (0.5 * file.size) / 1024 / 1024 < 0.5 |
| | | if (!isLt2M) { |
| | | wx.showToast({ |
| | | title: "上传文件大小不能超过 500KB!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return reject() |
| | | } |
| | | const FileName = file.name.split('.')[0] |
| | | const Extension = file.name.split('.')[1] |
| | | const FileType = file.type |
| | | let size = 1024 |
| | | tool.getFileMd5(file, size * 1024).then((e) => { |
| | | if (!this.data.fileList.find((item) => item.md5 == e)) { |
| | | const imgData = new FormData() |
| | | imgData.append('Md5', e) |
| | | imgData.append('FileName', FileName) |
| | | imgData.append('Extension', Extension) |
| | | imgData.append('FileType', FileType) |
| | | imgData.append('MetaData', null) |
| | | imgData.append('file', file) |
| | | app.MG.file.upload(imgData).then(() => { |
| | | this.data.fileList.push({ |
| | | md5: e, |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | name: FileName, |
| | | type: FileType, |
| | | url: app.config.requestCtx + `/file/GetPreViewImage?md5=` + e |
| | | }) |
| | | // 上传图片事件 |
| | | chooseImg(e) { |
| | | var that = this; |
| | | wx.chooseMedia({ |
| | | // count: 1, // 默认9 |
| | | sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 |
| | | sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 |
| | | success: function (res) { |
| | | // 返回选定照片的本地文件路径列表,tempFilePath也可以作为img标签的src属性显示图片 |
| | | wx.getFileSystemManager().readFile({ |
| | | filePath: res.tempFiles[0].tempFilePath, //选择图片返回的相对路径 |
| | | // encoding: 'binary', //编码格式 |
| | | success: ress => { |
| | | //成功的回调 |
| | | let spark = new SparkMD5.ArrayBuffer(); |
| | | spark.append(ress.data); |
| | | let md5 = spark.end(false); |
| | | if (!that.data.imgPics.find((item) => item.md5 == md5)) { |
| | | let formData = new FormData(); |
| | | formData.append('Md5', md5); |
| | | formData.append('FileName', md5); |
| | | formData.append('FileType', res.tempFiles[0].fileType); |
| | | formData.appendFile("file", res.tempFiles[0].tempFilePath); |
| | | const data = formData.getData(); |
| | | let _token = wx.getStorageSync(app.config.tokenKey); |
| | | let header = {}; |
| | | if (_token == null) { |
| | | header["Authorization"] = `Basic ${Base64.encode(website.clientId + ":" + website.clientSecret)}`; |
| | | } else { |
| | | header["Authorization"] = `Bearer ` + _token; |
| | | } |
| | | new Promise((resolve, reject) => { |
| | | wx.request({ |
| | | url: app.config.requestCtx + '/file/api/ApiUpload', |
| | | method: 'POST', |
| | | header: { |
| | | 'content-type': data.contentType, |
| | | ...header |
| | | }, |
| | | data: data.buffer, |
| | | success(res1) { |
| | | if (res1.statusCode == 200) { |
| | | resolve(res1.data); if (res1.data) { |
| | | let arr = []; |
| | | let imgObj = { |
| | | md5: md5, |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: |
| | | app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5, |
| | | imgUrl: res.tempFiles[0].tempFilePath |
| | | } |
| | | arr = [...that.data.imgPics, ...[imgObj]]; |
| | | |
| | | that.setData({ |
| | | imgPics: arr, |
| | | }); |
| | | } |
| | | } else { |
| | | reject('运行时错误,请稍后再试'); |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } else { |
| | | wx.showToast({ |
| | | title: "当前文件已上传,请勿重复操作!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | ElMessage.error('当前文件已上传,请勿重复操作!') |
| | | |
| | | } |
| | | }) |
| | | .catch((e) => { |
| | | console.error(e) |
| | | }) |
| | | }, |
| | | handleRemove(e) { |
| | | const { index } = e.detail; |
| | | const { fileList } = this.data; |
| | | fileList.splice(index, 1); |
| | | this.setData({ |
| | | fileList, |
| | | }); |
| | | }, |
| | | // 删除图片 |
| | | deleteImg(e) { |
| | | var imgs = this.data.imgPics; |
| | | var index = e.currentTarget.dataset.index; |
| | | imgs.splice(index, 1); |
| | | this.setData({ |
| | | imgPics: imgs |
| | | }); |
| | | }, |
| | | // 预览现场图片 |
| | | previewImg(e) { |
| | | //获取当前图片的下标 |
| | | var index = e.currentTarget.dataset.index; |
| | | //所有图片 |
| | | let imgs = []; |
| | | this.data.imgPics.forEach(item => { |
| | | imgs.push(item.url) |
| | | }) |
| | | wx.previewImage({ |
| | | //当前显示图片 |
| | | current: imgs[index], |
| | | //所有图片 |
| | | urls: imgs |
| | | }) |
| | | }, |
| | | onChange() { |
| | | if (this.data.teacherInfo.agree) { |
| | | this.setData({ |
| | | 'teacherInfo.agree': false, |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | 'teacherInfo.agree': true, |
| | | }); |
| | | } |
| | | |
| | | }, |
| | | //查看教师认证服务 |
| | |
| | | onVisibleChange(e) { |
| | | this.setData({ |
| | | protocolShow: e.detail.visible, |
| | | reasonTxtShow: e.detail.visible |
| | | }); |
| | | }, |
| | | onCloseProtocol() { |
| | | this.setData({ |
| | | protocolShow: false, |
| | | }); |
| | | }, |
| | | |
| | | //查看为通过原因 |
| | | previewReason() { |
| | | this.setData({ |
| | | reasonTxtShow: true, |
| | | }); |
| | | }, |
| | | |
| | | onCloseReasonTxt() { |
| | | this.setData({ |
| | | reasonTxtShow: false, |
| | | }); |
| | | }, |
| | | |
| | | submit() { |
| | | let that = this; |
| | | if (!that.data.teacherInfo.schoolName) { |
| | | wx.showToast({ |
| | | title: "请填写学校名称!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.fullName) { |
| | | wx.showToast({ |
| | | title: "请填写真实姓名!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.courseName) { |
| | | wx.showToast({ |
| | | title: "请填写任教课程!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.phone) { |
| | | wx.showToast({ |
| | | title: "请填写联系电话!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (!that.data.teacherInfo.email) { |
| | | wx.showToast({ |
| | | title: "请填写邮箱!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (that.data.imgPics.length == 0) { |
| | | wx.showToast({ |
| | | title: "请上传工作证!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | return |
| | | } |
| | | if (that.data.teacherInfo.agree) { |
| | | if (that.data.topicMessageList.length > 0) { |
| | | let dataRequests = tool.UpdateworksDataBytool( |
| | | that.data.worksInfo, |
| | | that.data.topicMessageList, |
| | | that.data.teacherInfo, |
| | | that.data.imgPics |
| | | ); |
| | | const data = { |
| | | description: '', |
| | | icon: '', |
| | | id: that.data.topicId, |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | name: that.data.teacherInfo.fullName + '', |
| | | content: '', |
| | | state: 'WaitAudit', |
| | | type: 'teacherRegister', |
| | | newDataRequests: dataRequests.newData, |
| | | updateDataRequests: dataRequests.updateData, |
| | | delDataRequest: { |
| | | ids: [] |
| | | } |
| | | } |
| | | let basicInfo = JSON.parse(JSON.stringify(that.data.teacherInfo)) |
| | | delete basicInfo.worksInfo |
| | | delete basicInfo.state |
| | | const userInfo = { |
| | | requests: [ |
| | | { |
| | | data: JSON.stringify(basicInfo), |
| | | name: that.data.teacherInfo.fullName + '', |
| | | type: 'newTeacherInfo' |
| | | } |
| | | ] |
| | | } |
| | | app.MG.identity.setAppUserInfo(userInfo).then((res) => { |
| | | if (res) { |
| | | app.MG.ugc.updateTopicMessage(data).then(() => { |
| | | if (res !== false) { |
| | | wx.showToast({ |
| | | title: "提交成功!请等待审核...", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | that.getUserRole() |
| | | // that.newGetTeacherInfo() |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | const data = { |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | name: that.data.teacherInfo.fullName + '', |
| | | content: '', |
| | | state: 'WaitAudit', |
| | | type: 'teacherRegister', |
| | | cmsTypeRefCode: 'jsek_teacherCertification', |
| | | newDataListRequest: tool.worksDataBytool(that.data.worksInfo, that.data.teacherInfo, that.data.imgPics) |
| | | } |
| | | |
| | | let basicInfo = JSON.parse(JSON.stringify(that.data.teacherInfo)) |
| | | delete basicInfo.worksInfo |
| | | delete basicInfo.state |
| | | const userInfo = { |
| | | requests: [ |
| | | { |
| | | data: JSON.stringify(basicInfo), |
| | | name: that.data.teacherInfo.fullName + '', |
| | | type: 'teacherInfo' |
| | | } |
| | | ] |
| | | } |
| | | app.MG.identity.setAppUserInfo(userInfo).then((res) => { |
| | | app.MG.ugc.newTopicMessage(data).then(() => { |
| | | if (res !== false) { |
| | | wx.showToast({ |
| | | title: "提交成功!请等待审核...", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | // that.newGetTeacherInfo() |
| | | that.getUserRole() |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } else { |
| | | wx.showToast({ |
| | | title: "请同意《教师认证服务条款》!", |
| | | icon: 'none', |
| | | duration: 1000, |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | |
| | |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |
| | | onPullDownRefresh() { |
| | | if (wx.getStorageSync(app.config.tokenKey)) { |
| | | this.getUserRole() |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 页面上拉触底事件的处理函数 |
| | | */ |
| | | onReachBottom() { |
| | | |
| | | }, |
| | | |
| | | /** |