大唐会议项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

193 lines
4.8 KiB

<template>
<div id="app">
<router-view />
<theme-picker />
<el-dialog
:close-on-click-modal="false"
:close-on-press-escape="false"
title="修改密码"
:visible.sync="passShow"
width="620px"
append-to-body
class="popup"
:show-close="false"
>
<el-form ref="form" :model="user" :rules="rules" label-width="80px">
<el-form-item label="旧密码" prop="oldPassword">
<el-input
v-model="user.oldPassword"
placeholder="请输入旧密码"
type="password"
show-password
/>
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input
v-model="user.newPassword"
placeholder="请输入新密码"
type="password"
show-password
/>
</el-form-item>
<el-form-item label="确认密码" prop="confirmPassword">
<el-input
v-model="user.confirmPassword"
placeholder="请确认新密码"
type="password"
show-password
/>
</el-form-item>
<el-form-item label=" " style="margin-bottom: 0px">
<template slot-scope="scope">
<el-button type="primary" @click="submit" size="mini"
> </el-button
>
</template>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { updateUserPwd } from "@/api/system/user";
import ThemePicker from "@/components/ThemePicker";
import { mapState, mapMutations } from "vuex";
export default {
name: "App",
components: { ThemePicker },
data() {
const equalToPassword = (rule, value, callback) => {
if (this.user.newPassword !== value) {
callback(new Error("两次输入的密码不一致"));
} else {
callback();
}
};
return {
passShow: false,
user: {
oldPassword: undefined,
newPassword: undefined,
confirmPassword: undefined,
},
rules: {
oldPassword: [
{ required: true, message: "旧密码不能为空", trigger: "blur" },
],
newPassword: [
{ required: true, message: "密码不能为空", trigger: "blur" },
{
pattern: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^\da-zA-Z\s]).{8,20}$/,
message: "必须包含数字、字母、特殊字符, 长度为8到20位",
trigger: "blur",
},
],
confirmPassword: [
{ required: true, message: "确认密码不能为空", trigger: "blur" },
{ required: true, validator: equalToPassword, trigger: "blur" },
],
},
userInfo: {},
};
},
computed: {
...mapState({
forceUpdPwdFlag: (state) => state.user.forceUpdPwdFlag,
}),
},
watch: {
// 监听store中forceUpdPwdFlag的变化
forceUpdPwdFlag(new1, old) {
if (new1) {
this.passShow = true;
}
},
},
created() {},
methods: {
submit() {
this.$refs["form"].validate(async (valid) => {
if (valid) {
const res = await updateUserPwd(
this.user.oldPassword,
this.user.newPassword
);
const { code, msg } = res;
if (code === 200) {
this.passShow = false;
this.$message.success("修改成功");
// const res = await getInfo();
} else {
this.$message.warning(msg);
}
}
});
},
},
metaInfo() {
return {
title:
this.$store.state.settings.dynamicTitle &&
this.$store.state.settings.title,
titleTemplate: (title) => {
return title
? `${title} - ${process.env.VUE_APP_TITLE}`
: process.env.VUE_APP_TITLE;
},
};
},
};
</script>
<style scoped>
#app .theme-picker {
display: none;
}
</style>
<style>
.header-title {
display: -webkit-box !important;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
.wj-uploader .el-icon-upload:before {
font-size: 100px;
}
.wj-uploader .el-upload {
display: flex;
align-content: center;
justify-content: center;
flex-wrap: wrap;
}
.wj-uploader .el-upload__text {
line-height: 20px;
width: 100% !important;
}
.avatar-uploader {
height: 180px;
}
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9 !important;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
width: 100% !important;
height: 180px !important;
line-height: 150px;
}
.el-upload-dragger,
.el-upload {
width: 100% !important;
}
.el-upload-list__item {
transition: none !important;
}
.el-upload-list__item:first-child {
margin-top: 0;
}
</style>