From f2433a2fb08c167b45a9fc26f2fa178a76ab807b Mon Sep 17 00:00:00 2001 From: qiyunfeng-create <1940665526@qq.com> Date: 星期三, 20 八月 2025 10:40:02 +0800 Subject: [PATCH] 个人中心-img --- src/views/personalCenter/userInfo.vue | 1099 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,099 insertions(+), 0 deletions(-) diff --git a/src/views/personalCenter/userInfo.vue b/src/views/personalCenter/userInfo.vue new file mode 100644 index 0000000..c4d4e9b --- /dev/null +++ b/src/views/personalCenter/userInfo.vue @@ -0,0 +1,1099 @@ +<template> + <div class="personalPage-box"> + <div class="personalPage-title">璐︽埛淇℃伅</div> + <div class="personalPage-content"> + <div class="content-item"> + <div class="item-title">鍩虹淇℃伅</div> + <div class="item-box"> + <div class="info-box flex"> + <span class="label">鐢ㄦ埛鍚嶏細</span> + <span class="text">{{ userStore?.userInfo.name }}</span> + <span class="change-info hover" @click="changeUserInfo('password')">淇敼瀵嗙爜</span> + </div> + <div class="info-box flex"> + <span class="label">寰俊璁よ瘉:</span> + <span class="text no" v-if="!weChatState">鏈璇�</span> + <span class="text yes" v-else>宸茶璇�</span> + <span class="change-info hover" v-if="!weChatState" @click="goBindWeChat()" + >绔嬪嵆璁よ瘉</span + > + </div> + <div class="info-box flex"> + <span class="label">缁戝畾鎵嬫満鍙凤細</span> + <span class="text" v-if="userStore?.userInfo?.phoneNumber">{{ + userStore?.userInfo?.phoneNumber + }}</span> + <span class="text no" v-else>鏈粦瀹�</span> + <span class="change-info hover" @click="changeUserInfo('phone')">{{ + userStore?.userInfo?.phoneNumber ? '鏇存崲鎵嬫満鍙�' : '缁戝畾' + }}</span> + </div> + <div class="info-box flex"> + <span class="label">閭锛�</span> + <span class="text">{{ + userStore?.userInfo?.Email ? userStore.userInfo?.Email : '--' + }}</span> + <span class="change-info hover" @click="changeUserInfo('email')">{{ + userStore?.userInfo?.Email ? '鏇存崲閭' : '缁戝畾閭' + }}</span> + </div> + </div> + </div> + <div class="content-item"> + <div class="item-title flex jc-sb"> + <span>鐢ㄦ埛绫诲瀷</span> + <!-- <span class="change-info hover" @click="userTypeDialog = true">淇敼</span> --> + <span class="change-info hover" @click="updateUserInfo()">淇敼</span> + </div> + <div class="item-box"> + <div class="info-box flex"> + <span class="label">鐢ㄦ埛绫诲瀷锛�</span> + <span class="text">{{ userInfo.userType }}</span> + </div> + </div> + </div> + <div class="content-item"> + <div class="item-title flex jc-sb"> + <span>鏁欏笀璁よ瘉</span> + <div> + <span class="change-info hover" v-if="teacherState == ''" @click="showTeacherDialog()" + >璁よ瘉</span + > + <span + class="change-info hover" + @click="showTeacherDialog()" + v-if="teacherState == 'Normal' || teacherState == 'Reject'" + >淇敼</span + > + </div> + </div> + <div class="item-box"> + <div class="info-box flex"> + <span class="label">璁よ瘉鐘舵�侊細</span> + <div class="text"> + <span class="text wait" v-if="teacherState == 'WaitAudit'">绛夊緟瀹℃牳</span> + <span class="text yes" v-else-if="teacherState == 'Normal'">宸茶璇�</span> + <span class="text no" v-else-if="teacherState == 'Reject'">宸查┏鍥�</span> + <span class="text wait" v-if="teacherState === ''">寰呰璇�</span> + </div> + <div v-if="teacherState == 'Reject'"> + <span class="title">椹冲洖鍘熷洜</span> : + <span @click="lookReason()" class="wait hover">鏌ョ湅鍘熷洜</span> + </div> + </div> + </div> + </div> + <div class="content-item"> + <div class="item-title flex jc-sb"> + <span>鎴戠殑绉垎</span> + <span class="record hover" @click="recordDialog()">绉垎璁板綍</span> + </div> + <div class="item-box"> + <div class="info-box flex"> + <span class="label">绉垎锛�</span> + <span class="text">{{ userInfo.integral }}</span> + </div> + </div> + </div> + </div> + <!-- 淇敼瀵嗙爜/鎵嬫満鍙�/閭 --> + <el-dialog + @open="openChangePassword" + align-center + :close-on-click-modal="false" + destroy-on-close + v-model="userInfoDialog" + :title=" + changeType == 'email' ? '鏇存崲閭' : changeType == 'password' ? '淇敼瀵嗙爜' : '鏇存崲鎵嬫満鍙�' + " + width="500" + class="myDialogs" + @close="closeUserInfoDialog(userFormRef)" + > + <div> + <el-form + ref="userFormRef" + :model="userInfoForm" + :rules="userFormRules" + label-width="140px" + class="userInfo" + status-icon + > + <el-form-item label="鎵嬫満鍙凤細" prop="phone" v-if="changeType != 'email'"> + <el-input + v-model="userInfoForm.phone" + autocomplete="off" + placeholder="璇疯緭鍏ユ墜鏈哄彿" + :disabled="changeType == 'password'" + /> + </el-form-item> + <el-form-item label="閭锛�" prop="email" v-if="changeType == 'email'"> + <el-input + v-model="userInfoForm.email" + autocomplete="off" + placeholder="璇疯緭鍏ラ偖绠�" + :disabled="formDisabled" + /> + </el-form-item> + <el-form-item + :label="changeType == 'email' ? '閭楠岃瘉鐮侊細' : '鐭俊楠岃瘉鐮侊細'" + prop="code" + > + <el-input + v-model="userInfoForm.code" + autocomplete="off" + class="code-input" + placeholder="璇疯緭鍏ラ獙璇佺爜" + /> + <div class="code"> + <el-button + type="primary" + class="btn" + @click="getVerifyCode()" + :disabled="countDown > 0" + > + {{ + countDown > 0 + ? '楠岃瘉鐮�(' + countDown + 's)' + : changeType == 'email' + ? '鑾峰彇閭楠岃瘉鐮�' + : '鑾峰彇鐭俊楠岃瘉鐮�' + }} + </el-button> + </div> + </el-form-item> + <el-form-item label="鏂板瘑鐮侊細" prop="password" v-if="changeType == 'password'"> + <el-input + type="password" + v-model="userInfoForm.password" + autocomplete="off" + placeholder="璇疯緭鍏�8-16浣嶆柊瀵嗙爜,涓斾笉鑳戒负绾暟瀛�" + /> + </el-form-item> + <el-form-item label="纭瀵嗙爜锛�" prop="confirmPassword" v-if="changeType == 'password'"> + <el-input + type="password" + v-model="userInfoForm.confirmPassword" + autocomplete="off" + placeholder="璇疯緭鍏ョ‘璁ゅ瘑鐮�" + /> + </el-form-item> + </el-form> + </div> + <template #footer> + <span class="myDialogs-footer"> + <el-button @click="closeUserInfoDialog(userFormRef)">鍙栨秷</el-button> + <el-button type="primary" @click="confirmInfo(userFormRef)" :loading="subLoading"> + 纭畾 + </el-button> + </span> + </template> + </el-dialog> + <!-- 寰俊璁よ瘉 --> + <el-dialog + align-center + :close-on-click-modal="false" + v-model="weChartDialog" + title="寰俊璁よ瘉" + class="myDialogs" + > + <div> + <div class="qrcodeBox"> + <!-- <wxlogin + :redirect_uri="wxLogin.redirectURL" + style="width: 300px; height: 400px; margin: -40px auto 0; overflow: hidden" + :appid="wxLogin.appid" + :scope="wxLogin.scope" + state="WeChatScanningCodeBind" + > + </wxlogin> --> + </div> + <p class="tips">浣跨敤寰俊鎵竴鎵壂鎻忎簩缁寸爜杩涜缁戝畾</p> + </div> + </el-dialog> + <!-- 鐢ㄦ埛绫诲瀷淇敼 --> + <login ref="loginRef"></login> + <!-- 鏌ョ湅鍘熷洜 --> + <el-dialog + align-center + :close-on-click-modal="false" + v-model="dialogReason" + title="椹冲洖鍘熷洜" + class="myDialogs" + > + <div class="reason" v-if="reasonTxt"> + {{ reasonTxt }} + </div> + <div v-else>鏃�</div> + </el-dialog> + <!-- 绉垎璁板綍 --> + <el-dialog + align-center + :close-on-click-modal="false" + v-model="integralRecord.recordDialog" + title="绉垎璁板綍" + class="myDialogs" + > + <div class="recordTableBox"> + <ul class="recordTable"> + <li class="head"> + <span class="label">绫诲瀷</span> + <span class="value">鏁伴噺</span> + <span>鏃堕棿</span> + </li> + <li v-for="item in integralRecord.recordList" :key="item.key" class="body"> + <span class="label">{{ item.type }}</span> + <span class="value" :class="item.value > 0 ? 'yes' : 'no'">{{ + item.value > 0 ? '+' + item.value : item.value + }}</span> + <span>{{ item.createDate ? item.createDate : '-' }}</span> + </li> + <li class="total" v-if="integralRecord.recordList.length > 0"> + <span class="label">鎬昏</span> + <span class="value">{{ userInfo.integral }}</span> + </li> + <li v-if="integralRecord.recordList.length == 0" class="noData">鏃犵Н鍒嗚褰�</li> + </ul> + </div> + </el-dialog> + <teacherCertification :isShow="teacherDialog" @dialog-Change="dialogChange" /> + <!-- 婊戝姩楠岃瘉 --> + <el-dialog + v-model="sliderImgDialogVisable" + align-center + destroy-on-close="true" + width="420" + class="sliderImgDialog" + > + <verify :MG="MG" @loginImgVerify="loginImgVerify" /> + </el-dialog> + </div> +</template> + +<script setup lang="ts"> +import { reactive, ref, inject, onMounted, watch } from 'vue' +import type { FormInstance, FormRules } from 'element-plus' +// import verify from '@/components/sliderImg/component/verify.vue' +// import '@/components/sliderImg/sliderImg.js' +// import '@/components/sliderImg/sliderImg.css' +import { ElMessage } from 'element-plus' +import tool from '@/assets/js/toolClass.js' +// import { useUserStore } from '@/store' +// import wxlogin from 'vue-wxlogin' +// import teacherCertification from '@/views/components/teacherCertification.vue' +// import login from '@/layout/components/login.vue' +// const userStore = useUserStore() +import { useRoute } from 'vue-router' +import moment from 'moment' +const route = useRoute() +const MG: any = inject('MG') +const config: any = inject('config') + +const validatePhone = (rule: any, value: any, callback: any) => { + if (value === '') { + callback(new Error('璇疯緭鍏ヨ仈绯荤數璇�')) + } else { + if (!config.reg_tel.test(value)) { + callback(new Error('璇疯緭鍏ユ纭牸寮忕殑鐢佃瘽')) + } + 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('璇疯緭鍏ョ數瀛愰偖绠�')) + } else { + if (!myreg.test(value)) { + callback(new Error('璇疯緭鍏ユ纭牸寮忕殑鐢靛瓙閭')) + } + callback() + } +} + +const validatePassword = (rule: any, value: any, callback: any) => { + let myreg = /^(?!^\d+$)(?!^[a-zA-Z]+$)(?!^\W+$)[a-zA-Z\d\W]{8,16}$/ + if (value === '') { + callback(new Error('璇疯緭鍏ュ瘑鐮�')) + } else { + if (!myreg.test(value)) { + callback(new Error('璇疯緭鍏ユ纭牸寮忕殑瀵嗙爜锛�8-16浣�,涓斾笉鑳戒负绾暟瀛�')) + } + callback() + } +} + +// onMounted(() => { +// getWechatAuthenticationState() +// getIntegral() +// if (localStorage.getItem(config.tokenKey)) { +// getUserRole() +// } +// }) + +// watch(route, () => { +// bindWeChat() +// }) +let subLoading = ref(false) +//鐢ㄦ埛淇℃伅 +let weChatState = ref(false) +const userInfo = reactive({ + userType: '', + integral: 0, +}) +//鍩虹淇℃伅 +const userInfoDialog = ref(false) +let changeType = ref('password') +const imgCode = ref<string>() // 鍥惧舰楠岃瘉鐮乽rl +let countDown = ref(0) +// function changeUserInfo(type) { +// changeType.value = type +// if (type == 'password') { +// if (userStore.userInfo?.phoneNumber) { +// getImgCapcha() +// userInfoDialog.value = true +// } else { +// ElMessage({ +// message: '淇敼瀵嗙爜闇�鐭俊楠岃瘉,璇风粦瀹氭墜鏈哄彿鍚庡啀淇敼瀵嗙爜锛�', +// type: 'warning' +// }) +// } +// } else { +// getImgCapcha() +// userInfoDialog.value = true +// } +// } +// const getImgCapcha = () => { +// MG.identity.getImgCode().then((res) => { +// imgCode.value = 'data:image/png;base64,' + res +// }) +// } + +const userFormRef = ref<FormInstance>() +const userInfoForm = reactive({ + phone: '', + email: '', + captcha: '', + code: '', + password: '', + confirmPassword: '', +}) +const formDisabled = ref(false) +const userFormRules = reactive<FormRules<userInfoForm>>({ + phone: [{ required: true, validator: validatePhone, trigger: 'blur' }], + email: [{ required: true, validator: validateEmail, trigger: 'blur' }], + captcha: [ + { required: true, message: '鍥惧舰楠岃瘉鐮佷笉鑳戒负绌�', trigger: 'blur' }, + { min: 4, max: 4, message: '璇疯緭鍏� 4 浣嶉獙璇佺爜', trigger: 'blur' }, + ], + code: [{ required: true, message: '楠岃瘉鐮佷笉鑳戒负绌�', trigger: 'blur' }], + password: [{ required: true, validator: validatePassword, trigger: 'blur' }], + confirmPassword: [{ required: true, message: '纭瀵嗙爜涓嶈兘涓虹┖', trigger: 'blur' }], +}) + +const getVerifyCode = async () => { + sliderImgDialogVisable.value = true +} + +// 楠岃瘉鐮佸�掕鏃� +function getSecond(time: number) { + let timer: ReturnType<typeof setInterval> | null = null + if (!timer) { + countDown.value = time + timer = setInterval(() => { + countDown.value-- + if (countDown.value == 0) { + if (timer) clearInterval(timer) + timer = null + } + }, 1000) + } +} + +const closeUserInfoDialog = (formEl: FormInstance | undefined) => { + if (!formEl) return + formEl.resetFields() + countDown.value = 0 + userInfoDialog.value = false +} +const confirmInfo = async (formEl: FormInstance | undefined) => { + if (!formEl) return + await formEl.validate((valid, fields) => { + if (valid) { + subLoading.value = true + if (changeType.value == 'password') { + if (userInfoForm.password != userInfoForm.confirmPassword) { + ElMessage({ + message: '涓ゆ瀵嗙爜杈撳叆涓嶄竴鑷�', + type: 'warning', + }) + return false + } + let query = { + phoneNumber: userInfoForm.phone, + phoneCaptcha: userInfoForm.code, + password: userInfoForm.password, + } + MG.identity.changePasswordByMobilePhone(query).then((res) => { + if (res) { + ElMessage({ + message: '瀵嗙爜閲嶇疆鎴愬姛锛�', + type: 'success', + }) + userInfoDialog.value = false + } else { + ElMessage({ + message: '瀵嗙爜閲嶇疆澶辫触锛岃濉啓姝g‘鐨勯獙璇佺爜銆�', + type: 'error', + }) + } + subLoading.value = false + }) + } else if (changeType.value == 'phone') { + let query = { + phoneNumber: userInfoForm.phone, + phoneCaptcha: userInfoForm.code, + } + MG.identity.userSetPhoneNumber(query).then((res) => { + if (res == '楠岃瘉鐮佽繃鏈熸垨閿欒') { + ElMessage({ + message: res + ',璇风◢鍚庨噸璇�', + type: 'error', + }) + } else if (res == '姝ゆ墜鏈哄彿鐮佸凡琚叾瀹冭处鍙风粦瀹�') { + ElMessage({ + message: res + ',璇锋洿鎹㈠叾浠栨墜鏈哄彿銆�', + type: 'error', + }) + } else { + ElMessage({ + message: res, + type: 'success', + }) + userStore.setUserInfo({ + ...userStore.userInfo, + phoneNumber: userInfoForm.phone, + }) + userInfoDialog.value = false + } + subLoading.value = false + }) + } else if (changeType.value == 'email') { + let query = { + eMail: userInfoForm.email, + captcha: userInfoForm.code, + } + + MG.identity.bindingEmail(query).then((res) => { + if (res == '楠岃瘉鐮佽繃鏈�') { + ElMessage({ + message: res + ',璇风◢鍚庨噸璇�', + type: 'error', + }) + } else if (res == '姝ら偖绠卞凡琚叾瀹冭处鍙风粦瀹�') { + ElMessage({ + message: res + ',璇锋洿鎹㈠叾浠栭偖绠便��', + type: 'error', + }) + } else if (res == '楠岃瘉鐮佹棤鏁�') { + ElMessage({ + message: res, + type: 'error', + }) + } else { + ElMessage({ + message: res, + type: 'success', + }) + userStore.setUserInfo({ + ...userStore.userInfo, + Email: userInfoForm.email, + }) + userInfoDialog.value = false + } + subLoading.value = false + }) + } + } else { + subLoading.value = false + } + }) +} +// 婊戝姩楠岃瘉 +const sliderImgDialogVisable = ref<boolean>(false) +const loginImgVerify = (code: string) => { + userInfoForm.captcha = code + sliderImgDialogVisable.value = false + if (changeType.value == 'phone' || changeType.value == 'password') { + MG.identity + .getPhoneCode({ + phoneNumber: userInfoForm.phone, + imageCaptcha: userInfoForm.captcha, + appRefCode: config.appRefCode, + }) + .then((res: any) => { + if (res == '楠岃瘉鐮佸彂閫佹垚鍔�') { + ElMessage({ + message: res, + type: 'success', + }) + // 寮�鍚煭淇¢獙璇佸�掕鏃� + getSecond(60) + } else { + ElMessage({ + message: res, + type: 'error', + }) + } + }) + } else if (changeType.value == 'email') { + MG.identity + .getEmailCode({ + sendEmail: userInfoForm.email, + captcha: userInfoForm.captcha, + appRefCode: config.appRefCode, + }) + .then((res) => { + if (res == true) { + ElMessage({ + message: '閭欢宸插彂閫�', + type: 'success', + }) + } else { + ElMessage({ + message: '閭欢鍙戦�佸け璐�', + type: 'error', + }) + } + }) + } +} +//寰俊璁よ瘉 +let wxLogin = reactive({ + appid: 'wx5cfe8b007a3c6f8c', + scope: 'snsapi_login', + redirectURL: encodeURIComponent(config.requestCtx + '/home/#/personalCenter'), +}) +const getWechatAuthenticationState = () => { + MG.identity.checkBuildingWeChat({}).then((res: any) => { + if (res) { + weChatState.value = true + } else { + weChatState.value = false + } + }) +} +const weChartDialog = ref(false) +function goBindWeChat() { + window.location.href = `https://open.weixin.qq.com/connect/qrconnect?appid=${wxLogin.appid}&scope=${wxLogin.scope}&redirect_uri=${wxLogin.redirectURL}&state=WeChatScanningCodeBind` +} + +//缁戝畾寰俊 +const bindWeChat = () => { + var url = window.location.href + if (url.indexOf('WeChatScanningCodeBind') > -1) { + var querys = url.substring(url.indexOf('?') + 1).split('&') + var result = {} + for (var i = 0; i < querys.length; i++) { + var temp = querys[i].split('=') + if (temp.length < 2) { + result[temp[0]] = '' + } else { + result[temp[0]] = temp[1] + } + } + if (result && result.code) { + MG.identity + .bindingWeChat({ + code: result.code, + }) + .then((res) => { + if (res) { + ElMessage({ + message: '缁戝畾鎴愬姛!', + type: 'success', + }) + getWechatAuthenticationState() + weChartDialog.value = false + } else { + ElMessage({ + message: '缁戝畾澶辫触锛岃寰俊宸茶缁戝畾锛�', + type: 'error', + }) + } + }) + } + } +} + +//鐢ㄦ埛绫诲瀷 +const loginRef = ref() +// const userTypeDialog = ref(false) +const userTypeActive = ref('') +const teacherType = ref('') +const teacherList = ref([ + { + value: 'vocSchoolTeachers', + label: '涓亴鏁欏笀', + }, + { + value: 'vocCollegeTeachers', + label: '楂樿亴鏁欏笀', + }, + { + value: 'ordUniversityTeachers', + label: '鏈鏁欏笀', + }, + { + value: 'primarySchoolTeachers', + label: '涓皬瀛︽暀甯�', + }, + { + value: 'kindergarteTeachers', + label: '骞煎効鍥暀甯�', + }, +]) +const userTypeList = ref([ + { + value: 'Teacher', + label: '鏁欏笀', + checked: false, + }, + { + value: 'Student', + label: '瀛︾敓', + checked: false, + }, + { + value: 'otherReaders', + label: '鍏朵粬璇昏��', + checked: false, + }, +]) + +// 淇敼鐢ㄦ埛绫诲瀷璋冪敤娉ㄥ唽鏃剁敤鎴蜂俊鎭~鍐欏脊绐� +const updateUserInfo = () => { + loginRef.value.updateUserInfo() + loginRef.value.signUp() +} + +//鏁欏笀璁よ瘉 +let teacherDialog = ref(false) //寮圭獥 +let loading = ref(false) +const teacherState = ref(null) +const reasonTxt = ref('') +const userId = ref() + +const dialogReason = ref(false) +//鏁欏笀璁よ瘉寮圭獥 +function showTeacherDialog() { + teacherDialog.value = true +} + +const dialogChange = (val: any) => { + getTeacherInfo() + if (val == false) { + teacherDialog.value = false + } else { + teacherDialog.value = true + } +} + +// 淇敼瀵嗙爜寮圭獥鎵撳紑 +const openChangePassword = () => { + if (changeType.value == 'password' && userStore.userInfo?.phoneNumber) { + userInfoForm.phone = userStore.userInfo?.phoneNumber + } +} + +// 鑾峰彇鐧诲綍鐢ㄦ埛韬唤 +function getUserRole() { + loading.value = true + MG.identity.getCurrentAppUser().then((res: any) => { + if (res) { + if (res.lastLoginTime) { + localStorage.setItem('lastLoginTime', res.lastLoginTime) + } + //鑾峰彇鐢ㄦ埛绫诲瀷 + let userTypeData = res.infoList.find((item: any) => item.type == 'userType') + if (userTypeData) { + userTypeActive.value = JSON.parse(userTypeData.data).userType + if (userTypeActive.value !== 'Student' && userTypeActive.value !== 'otherReaders') { + const index = userTypeList.value.findIndex((item) => item.value === 'Teacher') + if (index !== -1) { + userTypeList.value[index].checked = true + teacherType.value = JSON.parse(userTypeData.data).userType + } + userInfo.userType = + teacherList.value.find((item) => item.value === userTypeActive.value)?.label ?? '' + } else { + const index = userTypeList.value.findIndex((item) => item.value === userTypeActive.value) + if (index !== -1) { + userTypeList.value[index].checked = true + } + userInfo.userType = + userTypeList.value.find((item) => item.value === userTypeActive.value)?.label ?? '' + } + } else { + userInfo.userType = '-' + } + getTeacherInfo() + userId.value = res.userId + let customUser = res.infoList.find((item: any) => item.type == 'userInfo') + let teacherRole = res.roleLinks.find((item: any) => item.role.refCode == 'teacher') + let teacherInfos = res.infoList.find((item: any) => item.type == 'teacherInfo') + let wechatInfo = res.infoList.find((item: any) => item.type == 'WeChat') + let studentInfo = res.infoList.find((item: any) => item.type == 'Default') + let phoneInfo = res.secretList.find((item: any) => item.type == 'MobilePhone') + let emailInfo = res.secretList.find((item: any) => item.type == 'EMail') + const userData = { + userName: customUser && customUser.data ? JSON.parse(customUser.data).name : '', + school: customUser && customUser.data ? JSON.parse(customUser.data).school : '', + cityCode: customUser && customUser.data ? JSON.parse(customUser.data).cityCode : '', + address: customUser && customUser.data ? JSON.parse(customUser.data).address : '', + userType: userTypeData && userTypeData.data ? JSON.parse(userTypeData.data).userType : '', + } + if (teacherRole && teacherInfos) { + if (JSON.parse(teacherInfos.data).email && !emailInfo) { + userInfoForm.email = JSON.parse(teacherInfos.data).email + formDisabled.value = true + } + userStore.setUserInfo({ + ...userData, + ...teacherInfos, + phoneNumber: phoneInfo?.credential, + Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email, + icon: wechatInfo?.icon, + role: 'Teacher', + roleId: teacherRole.role.id, + userId: res.userId, + }) + } else if (wechatInfo) { + userStore.setUserInfo({ + ...userData, + ...wechatInfo, + phoneNumber: phoneInfo?.credential, + Email: emailInfo?.credential, + role: 'Student', + userId: res.userId, + }) + } else if (studentInfo) { + userStore.setUserInfo({ + ...userData, + ...studentInfo, + icon: wechatInfo?.icon, + phoneNumber: phoneInfo?.credential, + Email: emailInfo?.credential, + role: 'Student', + userId: res.userId, + }) + } + } + }) +} + +//鏁欏笀淇℃伅 +function getTeacherInfo() { + const data = { + start: 0, + size: 10, + topicIdOrRefCode: 'teacherRoleApproval', + appRefCode: config.appRefCode, + sort: { + type: 'Desc', + field: 'CreateDate', + }, + } + MG.ugc.getTopicMessageList(data).then((res) => { + try { + const resData = res.datas.find((i) => i.appUserCreator.userId == userId.value) + if (resData) { + teacherState.value = resData.state + if (resData.feedBack != null) { + reasonTxt.value = JSON.parse(resData.feedBack).reason + } + } else { + teacherState.value = '' + } + loading.value = false + } catch (error) { + loading.value = false + } + }) +} + +//鍘熷洜鏌ョ湅 +const lookReason = () => { + dialogReason.value = true +} + +//绉垎 +function getIntegral() { + MG.store + .getUserWallet({ + type: 'integral', + }) + .then((res) => { + userInfo.integral = res.balance + }) +} + +const integralRecord = reactive({ + recordDialog: false, + recordList: [], +}) + +// 绉垎璁板綍寮圭獥 +function recordDialog() { + integralRecord.recordDialog = true + getRecordList() +} + +//鑾峰彇绉垎璁板綍 +function getRecordList() { + MG.store + .getWalletHistory({ + Size: 999, + Start: 0, + sort: { + type: 'Desc', + field: 'CreateDate', + }, + type: 'integral', + }) + .then((res) => { + console.log(res, '绉垎璁板綍') + if (res.datas.length > 0) { + res.datas.forEach((element) => { + element.createDate = moment(element.createDate).format('YYYY-MM-DD HH:mm:ss') + if (element.refType == 'sign') { + element.type = '姣忔棩鐧诲綍' + } + if (element.refType == 'Reward') { + element.type = '涓婁紶璧勬簮濂栧姳' + } + if (element.refType == 'OrderCoinBonus') { + element.type = '璁㈠崟鏀粯濂栧姳' + } + if (element.refType == 'Order' && element.value < 0) { + element.type = '璁㈠崟鏀粯鎶垫墸' + } + if (element.refType == 'Order' && element.value > 0) { + element.type = '璁㈠崟鍙栨秷閫�鍥�' + } + if (element.refType == 'AdminRecharge') { + element.type = '绠$悊鍛樺厖鍊�' + } + }) + integralRecord.recordList = res.datas + } + }) +} +</script> +<style lang="less" scoped> +.content-item { + .item-title { + line-height: 20px; + padding: 0 10px; + border-left: 3px solid #019e58; + font-family: + Microsoft YaHei UI, + Microsoft YaHei UI; + font-weight: 400; + font-size: 16px; + } + + .item-box { + padding: 25px 13px; + + .info-box { + padding: 10px 0; + font-family: + Microsoft YaHei UI, + Microsoft YaHei UI; + font-weight: 400; + font-size: 14px; + color: #333333; + line-height: 34px; + + .label, + .text { + width: 300px; + } + } + } + + .change-info { + color: #019e58; + } + + .record { + color: #949494; + } +} + +.userInfo { + .el-input { + width: 86%; + height: 38px; + } + + .code-input { + width: 50%; + } + + .code { + width: 130px; + height: 38px; + margin-left: 20px; + + .imgCode { + width: 100%; + height: 100%; + } + + .btn { + width: 100%; + height: 100%; + } + } +} + +.qrcodeBox { + width: 300px; + height: 300px; + margin: 0 auto; + // border: 1px solid #c0ccda; + overflow: hidden; + + img { + width: 100%; + height: 100%; + } +} + +.tips { + text-align: center; + font-size: 14px; + color: #666; + margin-top: 30px; +} + +.userTypeList { + width: 200px; + margin: 0 auto; + + .item { + padding: 15px; + text-align: center; + margin: 20px 0; + border: 1px solid #d9d9d9; + border-radius: 3px; + } + + .activeItem { + background-color: #019e58; + color: #fff; + } +} + +.currentState { + margin-bottom: 22px; + + .label { + width: 140px; + text-align: right; + } +} + +.reasonBox { + margin-left: 100px; + font-size: 14px; + + .title { + font-weight: bold; + } +} +.recordTableBox { + height: 600px; + overflow-y: auto; +} + +.recordTable { + border: 1px solid #f4f4f4; + + li { + display: flex; + line-height: 24px; + padding: 10px; + border-bottom: 1px solid #f4f4f4; + + .label { + width: 220px; + } + + .value { + width: 150px; + } + } + + .head { + background-color: #f3f3f3; + } + .noData { + justify-content: center; + } +} + +.total { + font-weight: bold; +} + +.reason { + word-wrap: break-word; +} +</style> +<style lang="less"> +.myDialogs { + width: 628px; + + .el-dialog__header { + padding: 15px; + margin-right: 0; + border-bottom: 1px solid #f4f4f4; + } + + .el-dialog__title { + font-weight: bold; + font-size: 16px; + } + + .el-dialog__headerbtn { + top: 6px; + right: 6px; + } + + .el-dialog__footer { + padding: 15px; + border-top: 1px solid #f4f4f4; + } + + .myDialogs-footer { + .el-button { + padding: 0 20px; + } + } +} + +.userTypeWall { + width: 100%; + height: 20px; + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 40px; + color: #333; + padding-left: 15px; + border-left: 3px solid #019e58; +} +</style> -- Gitblit v1.9.1