| | |
| | | <span class="wait" v-else>待认证</span> |
| | | </el-form-item> |
| | | <el-form-item label="学校:" prop="schoolName"> |
| | | <span v-if="!editState">{{ teacherInfo.schoolName || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.schoolName || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.schoolName" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="真实姓名:" prop="fullName"> |
| | | <span v-if="!editState">{{ teacherInfo.fullName || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.fullName || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.fullName" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="职称:"> |
| | | <span v-if="!editState">{{ teacherInfo.positionalTitle || "-" }}</span> |
| | | <el-select |
| | | v-else |
| | | v-model="teacherInfo.positionalTitle" |
| | | placeholder="请选择职称" |
| | | > |
| | | <span v-if="!editState">{{ teacherInfo.positionalTitle || '-' }}</span> |
| | | <el-select v-else v-model="teacherInfo.positionalTitle" placeholder="请选择职称"> |
| | | <el-option |
| | | v-for="item in teachPosts" |
| | | :key="item.value" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="任教课程:" prop="courseName"> |
| | | <span v-if="!editState">{{ teacherInfo.courseName || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.courseName || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.courseName" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="手机号:" prop="phone"> |
| | | <span v-if="!editState">{{ teacherInfo.phone || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.phone || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.phone" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="座机:" prop="telphone"> |
| | | <span v-if="!editState">{{ teacherInfo.telphone || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.telphone || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.telphone" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="邮箱:" prop="email"> |
| | | <span v-if="!editState">{{ teacherInfo.email || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.email || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.email" |
| | |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="详细地址:" prop="detailedAddress"> |
| | | <span v-if="!editState">{{ teacherInfo.detailedAddress || "-" }}</span> |
| | | <span v-if="!editState">{{ teacherInfo.detailedAddress || '-' }}</span> |
| | | <el-input |
| | | v-else |
| | | v-model="teacherInfo.detailedAddress" |
| | |
| | | <div class="footer-box"> |
| | | <span class="myDialog-footer" v-if="!loading && editState"> |
| | | <el-button @click="closeDialog(teacherFormRef)"> 取消</el-button> |
| | | <el-button |
| | | type="primary" |
| | | @click="submitBtn(teacherFormRef)" |
| | | :loading="subLoading" |
| | | > |
| | | <el-button type="primary" @click="submitBtn(teacherFormRef)" :loading="subLoading"> |
| | | 提交</el-button |
| | | > |
| | | </span> |
| | |
| | | </template> |
| | | </el-dialog> |
| | | <!-- 查看原因 --> |
| | | <el-dialog |
| | | align-center |
| | | :close-on-click-modal="false" |
| | | v-model="dialogReason" |
| | | title="驳回原因" |
| | | > |
| | | <el-dialog align-center :close-on-click-modal="false" v-model="dialogReason" title="驳回原因"> |
| | | <div class="reason" v-if="reasonTxt"> |
| | | {{ reasonTxt }} |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { reactive, ref, watch, defineEmits, inject, onMounted } from "vue"; |
| | | import type { FormInstance, FormRules } from "element-plus"; |
| | | import { ElMessage } from "element-plus"; |
| | | import tool from "@/assets/js/toolClass.js"; |
| | | import { getTopicMsgCmsItemFile } from "@/assets/js/middleGround/tool.js"; |
| | | import { useUserStore } from "@/store"; |
| | | const userStore = useUserStore(); |
| | | const MG: any = inject("MG"); |
| | | const config: any = inject("config"); |
| | | import { reactive, ref, watch, defineEmits, inject, onMounted } from 'vue' |
| | | import type { FormInstance, FormRules } from 'element-plus' |
| | | import { ElMessage } from 'element-plus' |
| | | import tool from '@/assets/js/toolClass.js' |
| | | import { getTopicMsgCmsItemFile } from '@/assets/js/middleGround/tool.js' |
| | | import { useUserStore } from '@/store' |
| | | const userStore = useUserStore() |
| | | const MG: any = inject('MG') |
| | | const config: any = inject('config') |
| | | // 证件验证 |
| | | const valiCertificate = (rule: any, value: any, callback: any) => { |
| | | if (fileList.value.length == 0) { |
| | | callback(new Error("请上传相关证件")); |
| | | callback(new Error('请上传相关证件')) |
| | | } else { |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | } |
| | | |
| | | // const validateTelphone = (rule: any, value: any, callback: any) => { |
| | | // if (value !== "" && !config.reg_telphone.test(value)) { |
| | |
| | | // }; |
| | | |
| | | const validatePhone = (rule: any, value: any, callback: any) => { |
| | | if (value === "") { |
| | | callback(new Error("请输入联系电话")); |
| | | if (value === '') { |
| | | callback(new Error('请输入联系电话')) |
| | | } else { |
| | | if (!config.reg_tel.test(value)) { |
| | | callback(new Error("请输入正确格式的电话")); |
| | | callback(new Error('请输入正确格式的电话')) |
| | | } |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | } |
| | | const validateEmail = (rule: any, value: any, callback: any) => { |
| | | let myreg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/; |
| | | if (value === "") { |
| | | callback(new Error("请输入电子邮箱")); |
| | | let myreg = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/ |
| | | if (value === '') { |
| | | callback(new Error('请输入电子邮箱')) |
| | | } else { |
| | | if (!myreg.test(value)) { |
| | | callback(new Error("请输入正确格式的电子邮箱")); |
| | | callback(new Error('请输入正确格式的电子邮箱')) |
| | | } |
| | | callback(); |
| | | callback() |
| | | } |
| | | }; |
| | | } |
| | | |
| | | const props = defineProps({ |
| | | isShow: Boolean, |
| | | }); |
| | | }) |
| | | |
| | | let teacherDialog = ref(false); //弹窗 |
| | | let loading = ref(false); |
| | | let subLoading = ref(false); |
| | | const teachPosts = ref([]); |
| | | let teacherDialog = ref(false) //弹窗 |
| | | let loading = ref(false) |
| | | let subLoading = ref(false) |
| | | const teachPosts = ref([]) |
| | | const teacherInfo = reactive({ |
| | | schoolName: "", //学校名称 |
| | | fullName: "", //姓名 |
| | | positionalTitle: "", //职称 |
| | | courseName: "", //任课教程 |
| | | phone: "", //联系电话 |
| | | telphone: "", //座机 |
| | | email: "", //联系邮箱 |
| | | detailedAddress: "", //通讯地址 |
| | | schoolName: '', //学校名称 |
| | | fullName: '', //姓名 |
| | | positionalTitle: '', //职称 |
| | | courseName: '', //任课教程 |
| | | phone: '', //联系电话 |
| | | telphone: '', //座机 |
| | | email: '', //联系邮箱 |
| | | detailedAddress: '', //通讯地址 |
| | | relevantCertificates: [], //相关证件 |
| | | state: "", //审核状态默认待审核 |
| | | state: '', //审核状态默认待审核 |
| | | agree: false, |
| | | }); |
| | | const topicMessageList = ref([]); |
| | | const topicId = ref(); |
| | | const worksInfo = ref([]); |
| | | const userId = ref(); |
| | | const teacherFormRef = ref<FormInstance>(); |
| | | }) |
| | | const topicMessageList = ref([]) |
| | | const topicId = ref() |
| | | const worksInfo = ref([]) |
| | | const userId = ref() |
| | | const teacherFormRef = ref<FormInstance>() |
| | | |
| | | interface TeacherInfo { |
| | | schoolName: string; |
| | | fullName: string; |
| | | courseName: string; |
| | | telphone: string; |
| | | phone: string; |
| | | email: string; |
| | | detailedAddress: string; |
| | | relevantCertificates: string[]; |
| | | schoolName: string |
| | | fullName: string |
| | | courseName: string |
| | | telphone: string |
| | | phone: string |
| | | email: string |
| | | detailedAddress: string |
| | | relevantCertificates: string[] |
| | | } |
| | | const teacherRules = reactive<FormRules<TeacherInfo>>({ |
| | | schoolName: [{ required: true, message: "学校名称不能为空", trigger: "blur" }], |
| | | fullName: [{ required: true, message: "真实姓名不能为空", trigger: "blur" }], |
| | | courseName: [{ required: true, message: "任教课程不能为空", trigger: "blur" }], |
| | | schoolName: [{ required: true, message: '学校名称不能为空', trigger: 'blur' }], |
| | | fullName: [{ required: true, message: '真实姓名不能为空', trigger: 'blur' }], |
| | | courseName: [{ required: true, message: '任教课程不能为空', trigger: 'blur' }], |
| | | // telphone: [{ validator: validateTelphone, trigger: "blur" }], |
| | | phone: [{ required: true, validator: validatePhone, trigger: "blur" }], |
| | | email: [{ required: true, validator: validateEmail, trigger: "blur" }], |
| | | detailedAddress: [{ required: true, message: "详细地址不能为空", trigger: "blur" }], |
| | | relevantCertificates: [ |
| | | { required: true, validator: valiCertificate, trigger: "change" }, |
| | | ], |
| | | }); |
| | | const fileList = ref([]); |
| | | const editState = ref<boolean>(true); |
| | | phone: [{ required: true, validator: validatePhone, trigger: 'blur' }], |
| | | email: [{ required: true, validator: validateEmail, trigger: 'blur' }], |
| | | detailedAddress: [{ required: true, message: '详细地址不能为空', trigger: 'blur' }], |
| | | relevantCertificates: [{ required: true, validator: valiCertificate, trigger: 'change' }], |
| | | }) |
| | | const fileList = ref([]) |
| | | const editState = ref<boolean>(true) |
| | | watch(props, (newValue) => { |
| | | // 统监听props的值变化,动态修改isShow的值 |
| | | teacherDialog.value = newValue.isShow; |
| | | teacherDialog.value = newValue.isShow |
| | | if (teacherDialog.value) { |
| | | getpositionalTitle(); |
| | | getAgreement(); |
| | | getpositionalTitle() |
| | | getAgreement() |
| | | if (localStorage.getItem(config.tokenKey)) { |
| | | getUserRole(); |
| | | getUserRole() |
| | | } |
| | | } |
| | | }); |
| | | }) |
| | | |
| | | // 获取职称 |
| | | function getpositionalTitle() { |
| | | const data = { |
| | | refCodes: ["positionalTitle"], |
| | | }; |
| | | refCodes: ['positionalTitle'], |
| | | } |
| | | MG.store.getProductTypeField(data).then((res) => { |
| | | try { |
| | | const list = res[0]; |
| | | const options = JSON.parse(list.config).option; |
| | | teachPosts.value = options; |
| | | const list = res[0] |
| | | const options = JSON.parse(list.config).option |
| | | teachPosts.value = options |
| | | } catch (error) { |
| | | teachPosts.value = []; |
| | | teachPosts.value = [] |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | |
| | | // 获取登录用户身份 |
| | | function getUserRole() { |
| | | loading.value = true; |
| | | loading.value = true |
| | | MG.identity.getCurrentAppUser().then((res) => { |
| | | if (res) { |
| | | getType(); |
| | | userId.value = res.userId; |
| | | let userInfo = res.infoList.find((item: any) => item.type == "userInfo"); |
| | | let userTypeObj = res.infoList.find((item: any) => item.type == "userType"); |
| | | getType() |
| | | userId.value = res.userId |
| | | let userInfo = res.infoList.find((item: any) => item.type == 'userInfo') |
| | | let userTypeObj = res.infoList.find((item: any) => item.type == 'userType') |
| | | const userData = { |
| | | userName: userInfo && userInfo.data ? JSON.parse(userInfo.data).name : "", |
| | | school: userInfo && userInfo.data ? JSON.parse(userInfo.data).school : "", |
| | | address: userInfo && userInfo.data ? JSON.parse(userInfo.data).address : "", |
| | | userType: |
| | | userTypeObj && userTypeObj.data ? JSON.parse(userTypeObj.data).userType : "", |
| | | }; |
| | | 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"); |
| | | userName: userInfo && userInfo.data ? JSON.parse(userInfo.data).name : '', |
| | | school: userInfo && userInfo.data ? JSON.parse(userInfo.data).school : '', |
| | | address: userInfo && userInfo.data ? JSON.parse(userInfo.data).address : '', |
| | | userType: userTypeObj && userTypeObj.data ? JSON.parse(userTypeObj.data).userType : '', |
| | | } |
| | | 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') |
| | | if (teacherRole && teacherInfos) { |
| | | userStore.setUserInfo({ |
| | | ...userData, |
| | |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email, |
| | | icon: wechatInfo?.icon, |
| | | role: "Teacher", |
| | | role: 'Teacher', |
| | | roleId: teacherRole.role.id, |
| | | userId: res.userId, |
| | | }); |
| | | }) |
| | | } else if (wechatInfo) { |
| | | userStore.setUserInfo({ |
| | | ...userData, |
| | | ...wechatInfo, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential, |
| | | role: "Student", |
| | | role: 'Student', |
| | | userId: res.userId, |
| | | }); |
| | | }) |
| | | } else if (studentInfo) { |
| | | if (!studentInfo?.fullName) { |
| | | teacherInfo.fullName = userStore.userInfo!.userName; |
| | | teacherInfo.fullName = userStore.userInfo!.userName |
| | | } |
| | | userStore.setUserInfo({ |
| | | ...userData, |
| | |
| | | icon: wechatInfo?.icon, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential, |
| | | role: "Student", |
| | | role: 'Student', |
| | | userId: res.userId, |
| | | }); |
| | | }) |
| | | } else if (phoneInfo) { |
| | | userStore.setUserInfo({ |
| | | ...userData, |
| | |
| | | name: phoneInfo?.credential, |
| | | icon: phoneInfo?.icon, |
| | | phoneNumber: phoneInfo?.credential, |
| | | role: "Student", |
| | | role: 'Student', |
| | | userId: res.userId, |
| | | }); |
| | | }) |
| | | } |
| | | |
| | | teacherInfo.phone = userStore.userInfo!.phoneNumber; |
| | | teacherInfo.schoolName = userStore.userInfo!.school; |
| | | teacherInfo.detailedAddress = userStore.userInfo!.address; |
| | | teacherInfo.phone = userStore.userInfo!.phoneNumber |
| | | teacherInfo.schoolName = userStore.userInfo!.school |
| | | teacherInfo.detailedAddress = userStore.userInfo!.address |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | |
| | | function getType() { |
| | | const data = { |
| | | refCodes: ["teacherCertification"], |
| | | }; |
| | | refCodes: ['teacherCertification'], |
| | | } |
| | | MG.resource.getCmsTypeByRefCode(data).then((res) => { |
| | | worksInfo.value = res[0].cmsTypeLinks[0].children; |
| | | newGetTeacherInfo(); |
| | | }); |
| | | worksInfo.value = res[0].cmsTypeLinks[0].children |
| | | newGetTeacherInfo() |
| | | }) |
| | | } |
| | | |
| | | // 文件上传 |
| | | function fileUpload(file) { |
| | | console.log(file, 2); |
| | | console.log(file, 2) |
| | | return new Promise((resolve, reject) => { |
| | | const isJPG = file.file.type === "image/jpeg" || file.file.type === "image/png"; |
| | | const isLt2M = (0.5 * file.file.size) / 1024 / 1024 < 0.5; |
| | | const isJPG = file.file.type === 'image/jpeg' || file.file.type === 'image/png' |
| | | const isLt2M = (0.5 * file.file.size) / 1024 / 1024 < 0.5 |
| | | if (!isJPG) { |
| | | ElMessage.error("上传文件只能是 jpg/png 格式!"); |
| | | return reject(); |
| | | ElMessage.error('上传文件只能是 jpg/png 格式!') |
| | | return reject() |
| | | } |
| | | if (!isLt2M) { |
| | | ElMessage.error("上传文件大小不能超过 500KB!"); |
| | | return reject(); |
| | | ElMessage.error('上传文件大小不能超过 500KB!') |
| | | return reject() |
| | | } |
| | | const FileName = file.file.name.split(".")[0]; |
| | | const Extension = file.file.name.split(".")[1]; |
| | | const FileType = file.file.type; |
| | | let size = 1024; |
| | | const FileName = file.file.name.split('.')[0] |
| | | const Extension = file.file.name.split('.')[1] |
| | | const FileType = file.file.type |
| | | let size = 1024 |
| | | tool |
| | | .getFileMd5(file.file, size * 1024) |
| | | .then((e) => { |
| | | console.log(e, 2); |
| | | console.log(e, 2) |
| | | if (!fileList.value.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.file); |
| | | 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.file) |
| | | MG.file.upload(imgData).then(() => { |
| | | fileList.value.push({ |
| | | md5: e, |
| | | linkType: "LinkFile", |
| | | linkProtectType: "Public", |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: config.requestCtx + `/file/GetPreViewImage?md5=` + e, |
| | | }); |
| | | }); |
| | | }) |
| | | }) |
| | | } else { |
| | | ElMessage.error("当前文件已上传,请勿重复操作!"); |
| | | ElMessage.error('当前文件已上传,请勿重复操作!') |
| | | } |
| | | }) |
| | | .catch((e) => { |
| | | console.error(e); |
| | | }); |
| | | }); |
| | | console.error(e) |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | // 证件删除 |
| | | function handleRemove(file) { |
| | | for (let i = 0; i < fileList.value.length; i++) { |
| | | if (fileList.value[i].md5 == file.md5) { |
| | | fileList.value.splice(i, 1); |
| | | fileList.value.splice(i, 1) |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 监听文件列表变化,同步修改展示列表 |
| | | const showFileList = ref([]); |
| | | const showFileList = ref([]) |
| | | watch( |
| | | fileList, |
| | | (newValue) => { |
| | | showFileList.value = newValue.map( |
| | | (item) => config.requestCtx + `/file/GetPreViewImage?md5=` + item.md5 |
| | | ); |
| | | (item) => config.requestCtx + `/file/GetPreViewImage?md5=` + item.md5, |
| | | ) |
| | | }, |
| | | { immediate: true, deep: true } |
| | | ); |
| | | { immediate: true, deep: true }, |
| | | ) |
| | | |
| | | // 关闭弹框,回调父层方法 |
| | | const emit = defineEmits(["dialogChange"]); |
| | | const emit = defineEmits(['dialogChange']) |
| | | const closeDialog = (formEl: FormInstance | undefined) => { |
| | | if (!formEl) return; |
| | | formEl.resetFields(); |
| | | teacherDialog.value = false; |
| | | emit("dialogChange", teacherDialog.value); |
| | | }; |
| | | if (!formEl) return |
| | | formEl.resetFields() |
| | | teacherDialog.value = false |
| | | emit('dialogChange', teacherDialog.value) |
| | | } |
| | | |
| | | // 教师协议 |
| | | const dialogVisibleTecher = ref(false); |
| | | const protocolTxt = ref(""); |
| | | const dialogVisibleTecher = ref(false) |
| | | const protocolTxt = ref('') |
| | | const getAgreement = () => { |
| | | let query = { |
| | | path: "protocol", |
| | | path: 'protocol', |
| | | fields: { |
| | | content: [], |
| | | }, |
| | | }; |
| | | } |
| | | MG.resource.getItem(query).then((res) => { |
| | | try { |
| | | const data = res.datas.find( |
| | | (e) => e.refCode == "teacherCertificationAgreement" |
| | | ); |
| | | protocolTxt.value = data ? data.content : "暂无协议"; |
| | | const data = res.datas.find((e) => e.refCode == 'teacherCertificationAgreement') |
| | | protocolTxt.value = data ? data.content : '暂无协议' |
| | | } catch (error) { |
| | | protocolTxt.value = "暂无协议"; |
| | | protocolTxt.value = '暂无协议' |
| | | } |
| | | }); |
| | | }; |
| | | }) |
| | | } |
| | | |
| | | //教师信息 |
| | | function newGetTeacherInfo() { |
| | | const data = { |
| | | start: 0, |
| | | size: 10, |
| | | topicIdOrRefCode: "teacherRoleApproval", |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | appRefCode: config.appRefCode, |
| | | sort: { |
| | | type: "Desc", |
| | | field: "CreateDate", |
| | | type: 'Desc', |
| | | field: 'CreateDate', |
| | | }, |
| | | }; |
| | | } |
| | | MG.ugc.getTopicMessageList(data).then((res) => { |
| | | try { |
| | | fileList.value = []; |
| | | const resData = res.datas.find((i) => i.appUserCreator.userId === userId.value); |
| | | fileList.value = [] |
| | | const resData = res.datas.find((i) => i.appUserCreator.userId === userId.value) |
| | | if (resData) { |
| | | if (resData.state == "WaitAudit") { |
| | | editState.value = false; |
| | | if (resData.state == 'WaitAudit') { |
| | | editState.value = false |
| | | } else { |
| | | editState.value = true; |
| | | editState.value = true |
| | | } |
| | | let info = getTopicMsgCmsItemFile(worksInfo.value, resData.cmsItemDataList); |
| | | teacherInfo.fullName = info.fullName; |
| | | teacherInfo.schoolName = info.schoolName; |
| | | teacherInfo.positionalTitle = info.positionalTitle; |
| | | teacherInfo.courseName = info.courseName; |
| | | teacherInfo.phone = info.phone; |
| | | teacherInfo.telphone = info.telphone ? info.telphone : ""; |
| | | teacherInfo.email = info.email; |
| | | teacherInfo.detailedAddress = info.detailedAddress ? info.detailedAddress : ""; |
| | | teacherInfo.relevantCertificates = info.relevantCertificates; |
| | | teacherInfo.agree = true; |
| | | teacherInfo.state = resData.state; |
| | | topicId.value = resData.id; |
| | | topicMessageList.value = resData.cmsItemDataList; |
| | | let info = getTopicMsgCmsItemFile(worksInfo.value, resData.cmsItemDataList) |
| | | teacherInfo.fullName = info.fullName |
| | | teacherInfo.schoolName = info.schoolName |
| | | teacherInfo.positionalTitle = info.positionalTitle |
| | | teacherInfo.courseName = info.courseName |
| | | teacherInfo.phone = info.phone |
| | | teacherInfo.telphone = info.telphone ? info.telphone : '' |
| | | teacherInfo.email = info.email |
| | | teacherInfo.detailedAddress = info.detailedAddress ? info.detailedAddress : '' |
| | | teacherInfo.relevantCertificates = info.relevantCertificates |
| | | teacherInfo.agree = true |
| | | teacherInfo.state = resData.state |
| | | topicId.value = resData.id |
| | | topicMessageList.value = resData.cmsItemDataList |
| | | if (resData.feedBack != null) { |
| | | reasonTxt.value = JSON.parse(resData.feedBack).reason; |
| | | reasonTxt.value = JSON.parse(resData.feedBack).reason |
| | | } |
| | | if (teacherInfo.relevantCertificates.length > 0) { |
| | | if (typeof teacherInfo.relevantCertificates == "object") { |
| | | if (typeof teacherInfo.relevantCertificates == 'object') { |
| | | teacherInfo.relevantCertificates.forEach((ele) => { |
| | | let imgObj = { |
| | | md5: ele.file.md5, |
| | | linkType: "LinkFile", |
| | | linkProtectType: "Public", |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: config.requestCtx + `/file/GetPreViewImage?md5=` + ele.file.md5, |
| | | }; |
| | | fileList.value.push(imgObj); |
| | | }); |
| | | } |
| | | fileList.value.push(imgObj) |
| | | }) |
| | | } else { |
| | | let imgObj = { |
| | | md5: teacherInfo.relevantCertificates, |
| | | linkType: "LinkFile", |
| | | linkProtectType: "Public", |
| | | linkType: 'LinkFile', |
| | | linkProtectType: 'Public', |
| | | url: |
| | | config.requestCtx + |
| | | `/file/GetPreViewImage?md5=` + |
| | | teacherInfo.relevantCertificates, |
| | | }; |
| | | fileList.value.push(imgObj); |
| | | config.requestCtx + `/file/GetPreViewImage?md5=` + teacherInfo.relevantCertificates, |
| | | } |
| | | fileList.value.push(imgObj) |
| | | } |
| | | } |
| | | loading.value = false; |
| | | loading.value = false |
| | | } else { |
| | | loading.value = false; |
| | | loading.value = false |
| | | } |
| | | } catch (error) { |
| | | loading.value = false; |
| | | loading.value = false |
| | | } |
| | | }); |
| | | }) |
| | | } |
| | | |
| | | //教师认证提交 |
| | | const submitBtn = async (formEl: FormInstance | undefined) => { |
| | | if (!formEl) return; |
| | | if (!formEl) return |
| | | await formEl.validate((valid, fields) => { |
| | | if (valid) { |
| | | if (teacherInfo.agree) { |
| | | subLoading.value = true; |
| | | subLoading.value = true |
| | | if (topicMessageList.value.length > 0) { |
| | | let dataRequests = tool.UpdateworksDataBytool( |
| | | worksInfo.value, |
| | | topicMessageList.value, |
| | | teacherInfo, |
| | | fileList.value |
| | | ); |
| | | fileList.value, |
| | | ) |
| | | const data = { |
| | | description: "", |
| | | icon: "", |
| | | description: '', |
| | | icon: '', |
| | | id: topicId.value, |
| | | topicIdOrRefCode: "teacherRoleApproval", |
| | | name: teacherInfo.fullName + "", |
| | | content: "", |
| | | state: "WaitAudit", |
| | | type: "teacherRegister", |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | name: teacherInfo.fullName + '', |
| | | content: '', |
| | | state: 'WaitAudit', |
| | | type: 'teacherRegister', |
| | | newDataRequests: dataRequests.newData, |
| | | updateDataRequests: dataRequests.updateData, |
| | | delDataRequest: { |
| | | ids: [], |
| | | }, |
| | | }; |
| | | let basicInfo = JSON.parse(JSON.stringify(teacherInfo)); |
| | | delete basicInfo.worksInfo; |
| | | delete basicInfo.state; |
| | | } |
| | | let basicInfo = JSON.parse(JSON.stringify(teacherInfo)) |
| | | delete basicInfo.worksInfo |
| | | delete basicInfo.state |
| | | const userInfo = { |
| | | requests: [ |
| | | { |
| | | data: JSON.stringify(basicInfo), |
| | | name: teacherInfo.fullName + "", |
| | | type: "newTeacherInfo", |
| | | name: teacherInfo.fullName + '', |
| | | type: 'newTeacherInfo', |
| | | }, |
| | | ], |
| | | }; |
| | | } |
| | | MG.identity.setAppUserInfo(userInfo).then((res) => { |
| | | if (res) { |
| | | MG.ugc.updateTopicMessage(data).then(() => { |
| | | if (res !== false) { |
| | | ElMessage({ |
| | | message: "提交成功!请等待审核...", |
| | | type: "success", |
| | | }); |
| | | teacherDialog.value = false; |
| | | subLoading.value = false; |
| | | newGetTeacherInfo(); |
| | | message: '提交成功!请等待审核...', |
| | | type: 'success', |
| | | }) |
| | | teacherDialog.value = false |
| | | subLoading.value = false |
| | | newGetTeacherInfo() |
| | | } else { |
| | | subLoading.value = false; |
| | | subLoading.value = false |
| | | } |
| | | }); |
| | | }) |
| | | } else { |
| | | subLoading.value = true; |
| | | subLoading.value = true |
| | | } |
| | | }); |
| | | }) |
| | | } else { |
| | | const data = { |
| | | topicIdOrRefCode: "teacherRoleApproval", |
| | | name: teacherInfo.fullName + "", |
| | | content: "", |
| | | state: "WaitAudit", |
| | | type: "teacherRegister", |
| | | cmsTypeRefCode: "teacherCertification", |
| | | newDataListRequest: tool.worksDataBytool( |
| | | worksInfo.value, |
| | | teacherInfo, |
| | | fileList.value |
| | | ), |
| | | }; |
| | | topicIdOrRefCode: 'teacherRoleApproval', |
| | | name: teacherInfo.fullName + '', |
| | | content: '', |
| | | state: 'WaitAudit', |
| | | type: 'teacherRegister', |
| | | cmsTypeRefCode: 'teacherCertification', |
| | | newDataListRequest: tool.worksDataBytool(worksInfo.value, teacherInfo, fileList.value), |
| | | } |
| | | |
| | | let basicInfo = JSON.parse(JSON.stringify(teacherInfo)); |
| | | delete basicInfo.worksInfo; |
| | | delete basicInfo.state; |
| | | let basicInfo = JSON.parse(JSON.stringify(teacherInfo)) |
| | | delete basicInfo.worksInfo |
| | | delete basicInfo.state |
| | | const userInfo = { |
| | | requests: [ |
| | | { |
| | | data: JSON.stringify(basicInfo), |
| | | name: teacherInfo.fullName + "", |
| | | type: "teacherInfo", |
| | | name: teacherInfo.fullName + '', |
| | | type: 'teacherInfo', |
| | | }, |
| | | ], |
| | | }; |
| | | } |
| | | MG.identity.setAppUserInfo(userInfo).then((res) => { |
| | | MG.ugc.newTopicMessage(data).then(() => { |
| | | if (res !== false) { |
| | | ElMessage({ |
| | | message: "提交成功!请等待审核...", |
| | | type: "success", |
| | | }); |
| | | teacherDialog.value = false; |
| | | newGetTeacherInfo(); |
| | | subLoading.value = false; |
| | | message: '提交成功!请等待审核...', |
| | | type: 'success', |
| | | }) |
| | | teacherDialog.value = false |
| | | newGetTeacherInfo() |
| | | subLoading.value = false |
| | | } else { |
| | | subLoading.value = false; |
| | | subLoading.value = false |
| | | } |
| | | }); |
| | | }); |
| | | }) |
| | | }) |
| | | } |
| | | } else { |
| | | ElMessage({ |
| | | message: "请同意《教师认证服务条款》!", |
| | | type: "warning", |
| | | }); |
| | | message: '请同意《教师认证服务条款》!', |
| | | type: 'warning', |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | }; |
| | | }) |
| | | } |
| | | |
| | | //原因查看 |
| | | const dialogReason = ref(false); |
| | | const reasonTxt = ref(""); |
| | | const dialogReason = ref(false) |
| | | const reasonTxt = ref('') |
| | | const lookReason = () => { |
| | | dialogReason.value = true; |
| | | }; |
| | | defineExpose({ getUserRole }); |
| | | dialogReason.value = true |
| | | } |
| | | defineExpose({ getUserRole }) |
| | | </script> |
| | | <style lang="less"> |
| | | .myDialog { |
| | |
| | | } |
| | | .body-box { |
| | | padding: 10px 20px 40px; |
| | | height: 80vh; |
| | | height: 70vh; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | |
| | | padding: 15px; |
| | | border-top: 1px solid #f4f4f4; |
| | | text-align: right; |
| | | height: 63px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .myDialog-footer { |
| | |
| | | .main { |
| | | font-weight: bold; |
| | | text-align: center; |
| | | color: #019e58; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .fileList .fileImgBox:hover { |
| | | border-color: #019E58; |
| | | border-color: #019e58; |
| | | } |
| | | |
| | | .agree-msg { |
| | |
| | | |
| | | .agree { |
| | | margin-left: 5px; |
| | | .main { |
| | | text-align: center; |
| | | color: #019e58; |
| | | } |
| | | } |
| | | |
| | | .term { |
| | | color: #019E58; |
| | | color: #019e58; |
| | | } |
| | | } |
| | | .reason { |