qiyunfeng-create
2 天以前 b15a997e95d715c41df3a76aecbf58ec1141ab53
src/views/personalCenter/userInfo.vue
@@ -8,7 +8,9 @@
          <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>
            <span class="change-info hover" @click="changeUserInfo('password')"
              >修改密码</span
            >
          </div>
          <div class="info-box flex">
            <span class="label">微信认证:</span>
@@ -25,16 +27,16 @@
            }}</span>
            <span class="text no" v-else>未绑定</span>
            <span class="change-info hover" @click="changeUserInfo('phone')">{{
              userStore?.userInfo?.phoneNumber ? '更换手机号' : '绑定'
              userStore?.userInfo?.phoneNumber ? "更换手机号" : "绑定"
            }}</span>
          </div>
          <div class="info-box flex">
            <span class="label">邮箱:</span>
            <span class="text">{{
              userStore?.userInfo?.Email ? userStore.userInfo?.Email : '--'
              userStore?.userInfo?.Email ? userStore.userInfo?.Email : "--"
            }}</span>
            <span class="change-info hover" @click="changeUserInfo('email')">{{
              userStore?.userInfo?.Email ? '更换邮箱' : '绑定邮箱'
              userStore?.userInfo?.Email ? "更换邮箱" : "绑定邮箱"
            }}</span>
          </div>
        </div>
@@ -56,7 +58,10 @@
        <div class="item-title flex jc-sb">
          <span>教师认证</span>
          <div>
            <span class="change-info hover" v-if="teacherState == ''" @click="showTeacherDialog()"
            <span
              class="change-info hover"
              v-if="teacherState == ''"
              @click="showTeacherDialog()"
              >认证</span
            >
            <span
@@ -104,7 +109,11 @@
      destroy-on-close
      v-model="userInfoDialog"
      :title="
        changeType == 'email' ? '更换邮箱' : changeType == 'password' ? '修改密码' : '更换手机号'
        changeType == 'email'
          ? '更换邮箱'
          : changeType == 'password'
          ? '修改密码'
          : '更换手机号'
      "
      width="500"
      class="myDialogs"
@@ -154,10 +163,10 @@
              >
                {{
                  countDown > 0
                    ? '验证码(' + countDown + 's)'
                    : changeType == 'email'
                      ? '获取邮箱验证码'
                      : '获取短信验证码'
                    ? "验证码(" + countDown + "s)"
                    : changeType == "email"
                    ? "获取邮箱验证码"
                    : "获取短信验证码"
                }}
              </el-button>
            </div>
@@ -170,7 +179,11 @@
              placeholder="请输入8-16位新密码,且不能为纯数字"
            />
          </el-form-item>
          <el-form-item label="确认密码:" prop="confirmPassword" v-if="changeType == 'password'">
          <el-form-item
            label="确认密码:"
            prop="confirmPassword"
            v-if="changeType == 'password'"
          >
            <el-input
              type="password"
              v-model="userInfoForm.confirmPassword"
@@ -183,7 +196,11 @@
      <template #footer>
        <span class="myDialogs-footer">
          <el-button @click="closeUserInfoDialog(userFormRef)">取消</el-button>
          <el-button type="primary" @click="confirmInfo(userFormRef)" :loading="subLoading">
          <el-button
            type="primary"
            @click="confirmInfo(userFormRef)"
            :loading="subLoading"
          >
            确定
          </el-button>
        </span>
@@ -244,9 +261,9 @@
          <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
              item.value > 0 ? "+" + item.value : item.value
            }}</span>
            <span>{{ item.createDate ? item.createDate : '-' }}</span>
            <span>{{ item.createDate ? item.createDate : "-" }}</span>
          </li>
          <li class="total" v-if="integralRecord.recordList.length > 0">
            <span class="label">总计</span>
@@ -271,260 +288,261 @@
</template>
<script setup lang="ts">
import { reactive, ref, inject, onMounted, watch } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'
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 { 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 teacherCertification from "./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 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('请输入联系电话'))
  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 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('请输入密码'))
  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(new Error("请输入正确格式的密码,8-16位,且不能为纯数字"));
    }
    callback()
    callback();
  }
}
};
// onMounted(() => {
//   getWechatAuthenticationState()
//   getIntegral()
//   if (localStorage.getItem(config.tokenKey)) {
//     getUserRole()
//   }
// })
onMounted(() => {
  getWechatAuthenticationState();
  getIntegral();
  if (localStorage.getItem(config.tokenKey)) {
    getUserRole();
  }
});
// watch(route, () => {
//   bindWeChat()
// })
let subLoading = ref(false)
let subLoading = ref(false);
//用户信息
let weChatState = ref(false)
let weChatState = ref(false);
const userInfo = reactive({
  userType: '',
  userType: "",
  integral: 0,
})
});
//基础信息
const userInfoDialog = ref(false)
let changeType = ref('password')
const imgCode = ref<string>() // 图形验证码url
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 userInfoDialog = ref(false);
let changeType = ref("password");
const imgCode = ref<string>(); // 图形验证码url
let countDown = ref(0);
const userFormRef = ref<FormInstance>()
const 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)
  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' }],
  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' },
    { 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' }],
})
  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
}
  sliderImgDialogVisable.value = true;
};
// 验证码倒计时
function getSecond(time: number) {
  let timer: ReturnType<typeof setInterval> | null = null
  let timer: ReturnType<typeof setInterval> | null = null;
  if (!timer) {
    countDown.value = time
    countDown.value = time;
    timer = setInterval(() => {
      countDown.value--
      countDown.value--;
      if (countDown.value == 0) {
        if (timer) clearInterval(timer)
        timer = null
        if (timer) clearInterval(timer);
        timer = null;
      }
    }, 1000)
    }, 1000);
  }
}
const closeUserInfoDialog = (formEl: FormInstance | undefined) => {
  if (!formEl) return
  formEl.resetFields()
  countDown.value = 0
  userInfoDialog.value = false
}
  if (!formEl) return;
  formEl.resetFields();
  countDown.value = 0;
  userInfoDialog.value = false;
};
const confirmInfo = async (formEl: FormInstance | undefined) => {
  if (!formEl) return
  if (!formEl) return;
  await formEl.validate((valid, fields) => {
    if (valid) {
      subLoading.value = true
      if (changeType.value == 'password') {
      subLoading.value = true;
      if (changeType.value == "password") {
        if (userInfoForm.password != userInfoForm.confirmPassword) {
          ElMessage({
            message: '两次密码输入不一致',
            type: 'warning',
          })
          return false
            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
              message: "密码重置成功!",
              type: "success",
            });
            userInfoDialog.value = false;
          } else {
            ElMessage({
              message: '密码重置失败,请填写正确的验证码。',
              type: 'error',
            })
              message: "密码重置失败,请填写正确的验证码。",
              type: "error",
            });
          }
          subLoading.value = false
        })
      } else if (changeType.value == 'phone') {
          subLoading.value = false;
        });
      } else if (changeType.value == "phone") {
        let query = {
          phoneNumber: userInfoForm.phone,
          phoneCaptcha: userInfoForm.code,
        }
        };
        MG.identity.userSetPhoneNumber(query).then((res) => {
          if (res == '验证码过期或错误') {
          if (res == "验证码过期或错误") {
            ElMessage({
              message: res + ',请稍后重试',
              type: 'error',
            })
          } else if (res == '此手机号码已被其它账号绑定') {
              message: res + ",请稍后重试",
              type: "error",
            });
          } else if (res == "此手机号码已被其它账号绑定") {
            ElMessage({
              message: res + ',请更换其他手机号。',
              type: 'error',
            })
              message: res + ",请更换其他手机号。",
              type: "error",
            });
          } else {
            ElMessage({
              message: res,
              type: 'success',
            })
              type: "success",
            });
            userStore.setUserInfo({
              ...userStore.userInfo,
              phoneNumber: userInfoForm.phone,
            })
            userInfoDialog.value = false
            });
            userInfoDialog.value = false;
          }
          subLoading.value = false
        })
      } else if (changeType.value == 'email') {
          subLoading.value = false;
        });
      } else if (changeType.value == "email") {
        let query = {
          eMail: userInfoForm.email,
          captcha: userInfoForm.code,
        }
        };
        MG.identity.bindingEmail(query).then((res) => {
          if (res == '验证码过期') {
          if (res == "验证码过期") {
            ElMessage({
              message: res + ',请稍后重试',
              type: 'error',
            })
          } else if (res == '此邮箱已被其它账号绑定') {
              message: res + ",请稍后重试",
              type: "error",
            });
          } else if (res == "此邮箱已被其它账号绑定") {
            ElMessage({
              message: res + ',请更换其他邮箱。',
              type: 'error',
            })
          } else if (res == '验证码无效') {
              message: res + ",请更换其他邮箱。",
              type: "error",
            });
          } else if (res == "验证码无效") {
            ElMessage({
              message: res,
              type: 'error',
            })
              type: "error",
            });
          } else {
            ElMessage({
              message: res,
              type: 'success',
            })
              type: "success",
            });
            userStore.setUserInfo({
              ...userStore.userInfo,
              Email: userInfoForm.email,
            })
            userInfoDialog.value = false
            });
            userInfoDialog.value = false;
          }
          subLoading.value = false
        })
          subLoading.value = false;
        });
      }
    } else {
      subLoading.value = false
      subLoading.value = false;
    }
  })
}
  });
};
// 滑动验证
const sliderImgDialogVisable = ref<boolean>(false)
const sliderImgDialogVisable = ref<boolean>(false);
const loginImgVerify = (code: string) => {
  userInfoForm.captcha = code
  sliderImgDialogVisable.value = false
  if (changeType.value == 'phone' || changeType.value == 'password') {
  userInfoForm.captcha = code;
  sliderImgDialogVisable.value = false;
  if (changeType.value == "phone" || changeType.value == "password") {
    MG.identity
      .getPhoneCode({
        phoneNumber: userInfoForm.phone,
@@ -532,21 +550,21 @@
        appRefCode: config.appRefCode,
      })
      .then((res: any) => {
        if (res == '验证码发送成功') {
        if (res == "验证码发送成功") {
          ElMessage({
            message: res,
            type: 'success',
          })
            type: "success",
          });
          // 开启短信验证倒计时
          getSecond(60)
          getSecond(60);
        } else {
          ElMessage({
            message: res,
            type: 'error',
          })
            type: "error",
          });
        }
      })
  } else if (changeType.value == 'email') {
      });
  } else if (changeType.value == "email") {
    MG.identity
      .getEmailCode({
        sendEmail: userInfoForm.email,
@@ -556,50 +574,50 @@
      .then((res) => {
        if (res == true) {
          ElMessage({
            message: '邮件已发送',
            type: 'success',
          })
            message: "邮件已发送",
            type: "success",
          });
        } else {
          ElMessage({
            message: '邮件发送失败',
            type: 'error',
          })
            message: "邮件发送失败",
            type: "error",
          });
        }
      })
      });
  }
}
};
//微信认证
let wxLogin = reactive({
  appid: 'wx5cfe8b007a3c6f8c',
  scope: 'snsapi_login',
  redirectURL: encodeURIComponent(config.requestCtx + '/home/#/personalCenter'),
})
  appid: "wx5cfe8b007a3c6f8c",
  scope: "snsapi_login",
  redirectURL: encodeURIComponent(config.requestCtx + "/home/#/personalCenter"),
});
const getWechatAuthenticationState = () => {
  MG.identity.checkBuildingWeChat({}).then((res: any) => {
    if (res) {
      weChatState.value = true
      weChatState.value = true;
    } else {
      weChatState.value = false
      weChatState.value = false;
    }
  })
}
const weChartDialog = ref(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`
  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 = {}
  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('=')
      var temp = querys[i].split("=");
      if (temp.length < 2) {
        result[temp[0]] = ''
        result[temp[0]] = "";
      } else {
        result[temp[0]] = temp[1]
        result[temp[0]] = temp[1];
      }
    }
    if (result && result.code) {
@@ -610,153 +628,162 @@
        .then((res) => {
          if (res) {
            ElMessage({
              message: '绑定成功!',
              type: 'success',
            })
            getWechatAuthenticationState()
            weChartDialog.value = false
              message: "绑定成功!",
              type: "success",
            });
            getWechatAuthenticationState();
            weChartDialog.value = false;
          } else {
            ElMessage({
              message: '绑定失败,该微信已被绑定!',
              type: 'error',
            })
              message: "绑定失败,该微信已被绑定!",
              type: "error",
            });
          }
        })
        });
    }
  }
}
};
//用户类型
const loginRef = ref()
const loginRef = ref();
// const userTypeDialog = ref(false)
const userTypeActive = ref('')
const teacherType = ref('')
const userTypeActive = ref("");
const teacherType = ref("");
const teacherList = ref([
  {
    value: 'vocSchoolTeachers',
    label: '中职教师',
    value: "vocSchoolTeachers",
    label: "中职教师",
  },
  {
    value: 'vocCollegeTeachers',
    label: '高职教师',
    value: "vocCollegeTeachers",
    label: "高职教师",
  },
  {
    value: 'ordUniversityTeachers',
    label: '本科教师',
    value: "ordUniversityTeachers",
    label: "本科教师",
  },
  {
    value: 'primarySchoolTeachers',
    label: '中小学教师',
    value: "primarySchoolTeachers",
    label: "中小学教师",
  },
  {
    value: 'kindergarteTeachers',
    label: '幼儿园教师',
    value: "kindergarteTeachers",
    label: "幼儿园教师",
  },
])
]);
const userTypeList = ref([
  {
    value: 'Teacher',
    label: '教师',
    value: "Teacher",
    label: "教师",
    checked: false,
  },
  {
    value: 'Student',
    label: '学生',
    value: "Student",
    label: "学生",
    checked: false,
  },
  {
    value: 'otherReaders',
    label: '其他读者',
    value: "otherReaders",
    label: "其他读者",
    checked: false,
  },
])
]);
// 修改用户类型调用注册时用户信息填写弹窗
const updateUserInfo = () => {
  loginRef.value.updateUserInfo()
  loginRef.value.signUp()
}
  loginRef.value.updateUserInfo();
  loginRef.value.signUp();
};
//教师认证
let teacherDialog = ref(false) //弹窗
let loading = ref(false)
const teacherState = ref(null)
const reasonTxt = ref('')
const userId = ref()
let teacherDialog = ref(false); //弹窗
let loading = ref(false);
const teacherState = ref(null);
const reasonTxt = ref("");
const userId = ref();
const dialogReason = ref(false)
const dialogReason = ref(false);
//教师认证弹窗
function showTeacherDialog() {
  teacherDialog.value = true
  teacherDialog.value = true;
}
const dialogChange = (val: any) => {
  getTeacherInfo()
  getTeacherInfo();
  if (val == false) {
    teacherDialog.value = false
    teacherDialog.value = false;
  } else {
    teacherDialog.value = true
    teacherDialog.value = true;
  }
}
};
// 修改密码弹窗打开
const openChangePassword = () => {
  if (changeType.value == 'password' && userStore.userInfo?.phoneNumber) {
    userInfoForm.phone = userStore.userInfo?.phoneNumber
  if (changeType.value == "password" && userStore.userInfo?.phoneNumber) {
    userInfoForm.phone = userStore.userInfo?.phoneNumber;
  }
}
};
// 获取登录用户身份
function getUserRole() {
  loading.value = true
  loading.value = true;
  MG.identity.getCurrentAppUser().then((res: any) => {
    if (res) {
      if (res.lastLoginTime) {
        localStorage.setItem('lastLoginTime', res.lastLoginTime)
        localStorage.setItem("lastLoginTime", res.lastLoginTime);
      }
      //获取用户类型
      let userTypeData = res.infoList.find((item: any) => item.type == 'userType')
      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')
        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
            userTypeList.value[index].checked = true;
            teacherType.value = JSON.parse(userTypeData.data).userType;
          }
          userInfo.userType =
            teacherList.value.find((item) => item.value === userTypeActive.value)?.label ?? ''
            teacherList.value.find((item) => item.value === userTypeActive.value)
              ?.label ?? "";
        } else {
          const index = userTypeList.value.findIndex((item) => item.value === userTypeActive.value)
          const index = userTypeList.value.findIndex(
            (item) => item.value === userTypeActive.value
          );
          if (index !== -1) {
            userTypeList.value[index].checked = true
            userTypeList.value[index].checked = true;
          }
          userInfo.userType =
            userTypeList.value.find((item) => item.value === userTypeActive.value)?.label ?? ''
            userTypeList.value.find((item) => item.value === userTypeActive.value)
              ?.label ?? "";
        }
      } else {
        userInfo.userType = '-'
        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')
      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 : '',
      }
        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
          userInfoForm.email = JSON.parse(teacherInfos.data).email;
          formDisabled.value = true;
        }
        userStore.setUserInfo({
          ...userData,
@@ -764,19 +791,19 @@
          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) {
        userStore.setUserInfo({
          ...userData,
@@ -784,12 +811,12 @@
          icon: wechatInfo?.icon,
          phoneNumber: phoneInfo?.credential,
          Email: emailInfo?.credential,
          role: 'Student',
          role: "Student",
          userId: res.userId,
        })
        });
      }
    }
  })
  });
}
//教师信息
@@ -797,56 +824,56 @@
  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 {
      const resData = res.datas.find((i) => i.appUserCreator.userId == userId.value)
      const resData = res.datas.find((i) => i.appUserCreator.userId == userId.value);
      if (resData) {
        teacherState.value = resData.state
        teacherState.value = resData.state;
        if (resData.feedBack != null) {
          reasonTxt.value = JSON.parse(resData.feedBack).reason
          reasonTxt.value = JSON.parse(resData.feedBack).reason;
        }
      } else {
        teacherState.value = ''
        teacherState.value = "";
      }
      loading.value = false
      loading.value = false;
    } catch (error) {
      loading.value = false
      loading.value = false;
    }
  })
  });
}
//原因查看
const lookReason = () => {
  dialogReason.value = true
}
  dialogReason.value = true;
};
//积分
function getIntegral() {
  MG.store
    .getUserWallet({
      type: 'integral',
      type: "integral",
    })
    .then((res) => {
      userInfo.integral = res.balance
    })
      userInfo.integral = res.balance;
    });
}
const integralRecord = reactive({
  recordDialog: false,
  recordList: [],
})
});
// 积分记录弹窗
function recordDialog() {
  integralRecord.recordDialog = true
  getRecordList()
  integralRecord.recordDialog = true;
  getRecordList();
}
//获取积分记录
@@ -856,38 +883,38 @@
      Size: 999,
      Start: 0,
      sort: {
        type: 'Desc',
        field: 'CreateDate',
        type: "Desc",
        field: "CreateDate",
      },
      type: 'integral',
      type: "integral",
    })
    .then((res) => {
      console.log(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 = '每日登录'
          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 == "Reward") {
            element.type = "上传资源奖励";
          }
          if (element.refType == 'OrderCoinBonus') {
            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 == 'Order' && element.value > 0) {
            element.type = '订单取消退回'
          if (element.refType == "Order" && element.value > 0) {
            element.type = "订单取消退回";
          }
          if (element.refType == 'AdminRecharge') {
            element.type = '管理员充值'
          if (element.refType == "AdminRecharge") {
            element.type = "管理员充值";
          }
        })
        integralRecord.recordList = res.datas
        });
        integralRecord.recordList = res.datas;
      }
    })
    });
}
</script>
<style lang="less" scoped>
@@ -896,9 +923,7 @@
    line-height: 20px;
    padding: 0 10px;
    border-left: 3px solid #019e58;
    font-family:
      Microsoft YaHei UI,
      Microsoft YaHei UI;
    font-family: Microsoft YaHei UI, Microsoft YaHei UI;
    font-weight: 400;
    font-size: 16px;
  }
@@ -908,9 +933,7 @@
    .info-box {
      padding: 10px 0;
      font-family:
        Microsoft YaHei UI,
        Microsoft YaHei UI;
      font-family: Microsoft YaHei UI, Microsoft YaHei UI;
      font-weight: 400;
      font-size: 14px;
      color: #333333;