| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <template>
- <div class="agent_page">
- <div class="top">个人信息</div>
- <div class="content adffc">
- <div class="title">我的账户</div>
- <div class="box adfac">
- <div class="left">{{ firstWord }}</div>
- <div class="right">
- <p>{{ $store.state.user.realName }}</p>
- <p>{{ $store.state.user.mobile }}</p>
- </div>
- </div>
- <div class="item">
- <div class="i_title">用户名</div>
- <div class="i_text">{{ $store.state.user.realName }}</div>
- </div>
- <div class="item">
- <div class="i_title">手机号码</div>
- <div class="i_text">{{ $store.state.user.mobile }}</div>
- </div>
- <div class="pwd adfacjb">
- <div class="p_l">
- <p>密码</p>
- <p>当前为初始密码,安全性较低,您可以重置密码</p>
- </div>
- <div class="p_r adfac">
- <el-button type="primary" @click="resetPwd">重置密码</el-button>
- <el-button type="primary" @click="logout" style="margin-left: 10px;">退出登录</el-button>
- </div>
- </div>
- </div>
- <el-dialog width="484px" :visible.sync="show" title="重置密码" @close="cancel">
- <el-form :model="form" :rules="rules" ref="pwdRef" label-width="100px" style="margin: 0 25px;">
- <el-form-item label="原密码" prop="password">
- <el-input v-model="form.password" clearable placeholder="请输入原密码" show-password></el-input>
- </el-form-item>
- <el-form-item label="新密码" prop="newPassword">
- <el-input v-model="form.newPassword" clearable placeholder="请输入新密码" show-password></el-input>
- </el-form-item>
- <el-form-item label="确认密码" prop="surePassword">
- <el-input v-model="form.surePassword" clearable placeholder="请输入确认密码" show-password></el-input>
- </el-form-item>
- </el-form>
- <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
- <el-button :loading="buttonLoading" type="primary" @click="submitForm">保 存</el-button>
- <el-button @click="cancel" style="margin-right: 5%;">取 消</el-button>
- </div>
- </el-dialog>
- </div>
- </template>
- <script setup name="">
- import { ref, getCurrentInstance, onMounted } from 'vue'
- import { updateUserPwd } from '@/api/agent/index.js'
- import { clearLoginInfo } from "@/utils";
- const { proxy } = getCurrentInstance();
-
- const firstWord = ref('')
- const show = ref(false)
- const form = ref({
- password: '',
- newPassword: '',
- surePassword: ''
- })
- const buttonLoading = ref(false)
- const pwdRef = ref(null)
- const rules = {
- password: [
- { required: true, message: '请输入原密码', trigger: 'blur' }
- ],
- newPassword: [
- { required: true, message: '请输入新密码', trigger: 'blur' }
- ],
- surePassword: [
- { required: true, message: '请再次确认密码', trigger: 'blur' }
- ]
- }
- const resetPwd = () => {
- show.value = true;
- }
- const submitForm = () => {
- proxy.$refs.pwdRef.validate(async (valid) => {
- if (valid) {
- if(form.value.newPassword !== form.value.surePassword) return proxy.$message.error('两次密码不一致')
- await updateUserPwd(form.value).then(res => {
- if(res.code!==0) return proxy.$message.error(res.msg);
- proxy.$message.success('修改成功,即将退出登录...');
- cancel();
- setTimeout(() => {
- logout();
- },1500)
- })
- } else {
- return false;
- }
- });
- }
- const cancel = () => {
- show.value = false;
- form.value = {
- password: '',
- newPassword: '',
- surePassword: ''
- }
- proxy.$refs.pwdRef.resetFields();
- }
- const logout = () => {
- proxy.$http.post("/logout").then(({ data: res }) => {
- if (res.code !== 0) {
- localStorage.removeItem();
- return proxy.$message.error(res.msg);
- }
- clearLoginInfo();
- proxy.$router.push({ name: "login" });
- })
- }
- onMounted(() => {
- firstWord.value = proxy.$store.state.user.realName.substr(0, 1);
- })
- </script>
- <style scoped lang="scss">
- .agent_page{
- .top{
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 14px;
- color: #393939;
- line-height: 14px;
- padding: 25px 27px;
- border-bottom: 1px solid #E5E7EB;
- }
- .content{
- width: 800px;
- margin: 0 auto;
- .title{
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 24px;
- color: #393939;
- line-height: 33px;
- margin-top: 80px;
- }
- .box{
- margin-top: 14px;
- padding: 31px 20px;
- background: #F4F4F4;
- border-radius: 12px;
- .left{
- width: 86px;
- height: 86px;
- background: #33A7A7;
- border-radius: 50%;
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 24px;
- color: #FFFFFF;
- line-height: 86px;
- text-align: center;
- }
- .right{
- margin-left: 20px;
- p{
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 20px;
- color: #252525;
- line-height: 28px;
- &:last-child{
- font-size: 16px;
- color: #7A7A7A;
- line-height: 22px;
- margin-top: 10px;
- }
- }
- }
- }
- .item{
- margin-top: 42px;
- .i_title{
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 16px;
- color: #252525;
- line-height: 22px;
- }
- .i_text{
- width: 100%;
- height: 42px;
- background: #FFFFFF;
- border-radius: 6px;
- border: 1px solid #E5E7EB;
- padding: 0 16px;
- font-family: PingFangSC, PingFang SC;
- font-weight: 400;
- font-size: 14px;
- color: #393939;
- line-height: 42px;
- margin-top: 13px;
- }
- }
- .pwd{
- margin-top: 41px;
- .p_l{
- p{
- font-family: PingFang-SC, PingFang-SC;
- font-weight: bold;
- font-size: 16px;
- color: #252525;
- line-height: 22px;
- &:last-child{
- font-size: 14px;
- color: #9D9D9D;
- line-height: 20px;
- margin-top: 25px;
- }
- }
- }
- }
- }
- }
- ::v-deep .el-dialog__title{
- font-weight: bold !important;
- }
- ::v-deep .el-dialog{
- margin-top: 25vh !important;
- }
- </style>
|