This commit is contained in:
Apcallover
2024-04-25 17:43:19 +08:00
5 changed files with 6 additions and 594 deletions

View File

@@ -1,12 +1,12 @@
<template>
<basic-container>
<el-tabs v-model="activeName" class="tabs">
<el-tab-pane label="账户安全" name="accountSafe">
<el-tab-pane label="账户信息" name="accountSafe">
<el-row class="content">
<el-col :span="24">
<el-row>
<el-col :span="24" class="title">
<b>户信息</b>
<b>户信息</b>
</el-col>
</el-row>
<el-row>
@@ -17,245 +17,15 @@
</el-row>
<el-row>
<el-col :span="21">手机号码{{userInfo.account}}</el-col>
<el-col :sm="24" :lg="3">
<el-button type="text" @click="leaderBox = true" v-show="isAdmin">变更负责人</el-button>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row class="content">
<el-col :span="24">
<el-row>
<el-col :span="24" class="title">
<b>账户安全</b>
</el-col>
</el-row>
<el-row>
<el-col :sm="24" :lg="6">登录密码已设置</el-col>
<el-col :sm="24" :lg="15">安全性高的密码可以使账号更安全</el-col>
<el-col :sm="24" :lg="3">
<el-button type="text" @click="passwordBox = true">修改密码</el-button>
</el-col>
</el-row>
<el-row>
<el-col :sm="24" :lg="6">绑定手机号码已绑定</el-col>
<el-col :sm="24" :lg="15">绑定手机后您即可享受丰富的手机服务如手机找回密码等</el-col>
<el-col :sm="24" :lg="3">
<el-button type="text" @click="phoneBox = true">换绑手机号码</el-button>
</el-col>
</el-row>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
<!--修改负责人-->
<el-dialog
title="变更负责人"
append-to-body
:visible.sync="leaderBox"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="30%"
@closed="closed"
:loading="leaderLoading"
>
<el-form
ref="leaderForm"
label-position="left"
label-width="110px"
size="small"
:rules="rules"
:model="leaderForm"
>
<el-form-item label="用户姓名" prop="realName">
<el-input v-model="leaderForm.realName" placeholder="请输入用户名"></el-input>
</el-form-item>
<el-form-item label="身份证号码" prop="idNumber">
<el-input v-model="leaderForm.idNumber" placeholder="请输入身份证号码"></el-input>
</el-form-item>
<el-form-item label="手机号码" prop="phone">
<el-input v-model="leaderForm.phone" placeholder="请输入手机号码"></el-input>
</el-form-item>
<el-form-item label="短信验证码" prop="code">
<el-input v-model="leaderForm.code" placeholder="请输入短信验证码">
<template slot="append">
<el-button
type="text"
@click="handleSend('leaderForm','phone')"
class="msg-text"
:loading="sending"
:disabled="msgKey"
>{{msgText}}</el-button>
</template>
</el-input>
</el-form-item>
<el-alert title="注:变更后初始密码为手机号后六位" type="warning" :closable="false"></el-alert>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button
icon="el-icon-check"
type="primary"
@click="submitLeader"
size="mini"
:loading="leaderLoading"
> </el-button>
<el-button
icon="el-icon-circle-close"
@click="leaderBox = false"
size="mini"
:loading="leaderLoading"
> </el-button>
</span>
</el-dialog>
<!--/修改负责人-->
<!--修改密码-->
<el-dialog
title="修改密码"
append-to-body
:visible.sync="passwordBox"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="30%"
@closed="passwordClosed"
>
<el-form
ref="passwordForm"
label-position="left"
label-width="110px"
size="small"
:rules="rules"
:model="passwordForm"
>
<el-form-item label="原密码" prop="oldPassword">
<el-input
v-model="passwordForm.oldPassword"
auto-complete="off"
placeholder="请输入原登录密码"
:type="passwordType"
>
<i
class="el-icon-view el-input__icon"
slot="suffix"
@mouseenter="passwordType='input'"
@mouseleave="passwordType='password'"
></i>
</el-input>
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input
v-model="passwordForm.newPassword"
placeholder="6-20位包含数字和字母"
:type="passwordType1"
>
<i
class="el-icon-view el-input__icon"
slot="suffix"
@mouseenter="passwordType1='input'"
@mouseleave="passwordType1='password'"
></i>
</el-input>
</el-form-item>
<el-form-item label="确认密码" prop="newPassword1">
<el-input
v-model="passwordForm.newPassword1"
placeholder="6-20位包含数字和字母"
:type="passwordType2"
>
<i
class="el-icon-view el-input__icon"
slot="suffix"
@mouseenter="passwordType2='input'"
@mouseleave="passwordType2='password'"
></i>
</el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button
icon="el-icon-check"
type="primary"
@click="submitPwd"
size="mini"
:loading="passwordLoading"
> </el-button>
<el-button
icon="el-icon-circle-close"
@click="passwordBox = false"
size="mini"
:loading="passwordLoading"
> </el-button>
</span>
</el-dialog>
<!--/修改密码-->
<!--修改手机号-->
<el-dialog
title="换绑手机号码"
append-to-body
:visible.sync="phoneBox"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="30%"
@closed="phoneClosed"
>
<el-form
ref="phoneForm"
label-position="left"
label-width="110px"
size="small"
:rules="rules"
:model="phoneForm"
>
<el-form-item label="原手机号码" prop="oldPhone">
<el-input v-model="phoneForm.oldPhone" placeholder="请输入原手机号码" readonly></el-input>
</el-form-item>
<el-form-item label="新手机号码" prop="newPhone">
<el-input v-model="phoneForm.newPhone" placeholder="请输入要更换的手机号"></el-input>
</el-form-item>
<el-form-item label="短信验证码" prop="code">
<el-input v-model="phoneForm.code" placeholder="请输入短信验证码">
<template slot="append">
<el-button
type="text"
@click.prevent="handleSend('phoneForm','newPhone')"
class="msg-text"
:loading="sending"
:disabled="msgKey"
>{{msgText}}</el-button>
</template>
</el-input>
</el-form-item>
<el-alert title="注:变更后初始密码为手机号后六位" type="warning" :closable="false"></el-alert>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button
icon="el-icon-check"
type="primary"
@click="submitPhone"
size="mini"
:loading="phoneLoading"
> </el-button>
<el-button
icon="el-icon-circle-close"
@click="phoneBox = false"
size="mini"
:loading="phoneLoading"
> </el-button>
</span>
</el-dialog>
<!--/修改手机号-->
</basic-container>
</template>
<script>
import { isvalidatemobile, check18IdCardNo, password } from "@/util/validate";
import {
changeLeader,
changePwd,
sendCode,
changePhone,
} from "@/api/tenant/account";
import { resetRouter } from "@/router/router";
import { mapGetters } from "vuex";
import md5 from "js-md5";
@@ -264,58 +34,6 @@ const wait = 120;
export default {
data() {
const IdCardNo = (rule, value, callback) => {
if (check18IdCardNo(value)) {
callback();
} else {
callback(new Error("身份证格式不正确"));
}
};
const validatePhone = (rule, value, callback) => {
if (isvalidatemobile(value)[0]) {
callback(new Error(isvalidatemobile(value)[1]));
} else {
callback();
}
};
const validateCode = (rule, value, callback) => {
if (value && value.length !== 4) {
callback(new Error("验证码错误"));
} else {
callback();
}
};
const validatePassDef = (rule, value, callback) => {
if (
this.passwordForm.oldPassword &&
value === this.passwordForm.oldPassword
) {
callback(new Error("新密码不能与原密码相同"));
} else if (password(value)) {
callback(new Error("密码需要包含数字和字母并且长度为6-20位"));
} else {
callback();
}
};
const validatePassDef2 = (rule, value, callback) => {
if (value !== this.passwordForm.newPassword) {
callback(new Error("两次密码不一致"));
} else if (password(value)) {
callback(new Error("密码需要包含数字和字母并且长度为6-20位"));
} else {
callback();
}
};
const validatePhoneDef = (rule, value, callback) => {
if (value === this.phoneForm.oldPhone) {
callback(new Error("新手机号码与原手机号码不能相同"));
} else {
callback();
}
};
return {
passwordLoading: false,
leaderLoading: false,
@@ -345,205 +63,12 @@ export default {
trigger: "blur",
},
],
idNumber: [
{ required: true, message: "请输入身份证号", trigger: "blur" },
{ validator: IdCardNo, trigger: "blur" },
],
phone: [{ required: true, trigger: "blur", validator: validatePhone }],
code: [
{ required: true, message: "请输入短信验证码", trigger: "blur" },
{ validator: validateCode, trigger: "blur" },
],
oldPassword: [
{
required: true,
whitespace: true,
message: "请输入原来登录密码",
trigger: "blur",
},
],
newPassword: [
{
required: true,
whitespace: true,
message: "请输入新密码",
trigger: "blur",
},
{
validator: validatePassDef,
trigger: "blur",
},
],
newPassword1: [
{
required: true,
whitespace: true,
message: "请再次输入密码",
trigger: "blur",
},
{
validator: validatePassDef2,
trigger: "blur",
},
],
oldPhone: [
{ required: true, validator: validatePhone, trigger: "blur" },
],
newPhone: [
{
required: true,
message: "请输入要更换的手机号码",
trigger: "blur",
},
{
validator: validatePhoneDef,
trigger: "blur",
},
],
},
};
},
created() {
this.phoneForm = { oldPhone: this.userInfo.account };
},
components: {},
methods: {
/*发送验证码 */
handleSend(form, field) {
if (this.msgKey) return;
this.$refs[form].validateField(field, (error) => {
if (!error) {
this.sending = true;
sendCode(this[form][field]).then(
() => {
let time = wait;
this.msgText = `剩余${time--}s`;
this.msgKey = true;
this.time = setInterval(() => {
this.msgText = `剩余${time--}s`;
if (time <= 0) {
this.clearTime(); //清除定时器
}
}, 1000);
this.sending = false;
},
() => {
this.sending = false;
this.$message.error("发送失败!");
}
);
}
});
},
/*提交变更负责人*/
submitLeader() {
this.$refs.leaderForm.validate((valid) => {
if (valid) {
this.leaderLoading = true;
changeLeader(this.leaderForm).then(
() => {
this.leaderBox = false;
this.leaderLoading = false;
this.$store.dispatch("LogOut").then(() => {
resetRouter();
this.$router.push({ path: "/login" });
this.$message({
type: "success",
message: "操作成功,请重新登录!",
});
});
},
(error) => {
window.console.log(error);
this.leaderLoading = false;
}
);
}
});
},
/*提交修改密码 */
submitPwd() {
this.$refs.passwordForm.validate((valid) => {
if (valid) {
this.passwordLoading = true;
changePwd(
md5(this.passwordForm.oldPassword),
md5(this.passwordForm.newPassword),
md5(this.passwordForm.newPassword1)
).then(
() => {
this.passwordBox = false;
this.passwordLoading = false;
this.$store.dispatch("LogOut").then(() => {
resetRouter();
this.$router.push({ path: "/login" });
this.$message({
type: "success",
message: "操作成功,请重新登录!",
});
});
},
(error) => {
window.console.log(error);
this.passwordLoading = false;
}
);
}
});
},
/*提交修改手机号 */
submitPhone() {
this.$refs.phoneForm.validate((valid) => {
if (valid) {
this.phoneLoading = true;
changePhone(this.phoneForm).then(
() => {
this.phoneBox = false;
this.phoneLoading = false;
this.$store.dispatch("LogOut").then(() => {
resetRouter();
this.$router.push({ path: "/login" });
this.$message({
type: "success",
message: "操作成功,请重新登录!",
});
});
},
(error) => {
window.console.log(error);
this.phoneLoading = false;
}
);
}
});
},
closed() {
this.clearTime();
this.leaderForm = {};
if (this.$refs.leaderForm) {
this.$refs.leaderForm.resetFields();
}
},
passwordClosed() {
this.passwordForm = {};
if (this.$refs.passwordForm) {
this.$refs.passwordForm.resetFields();
}
},
phoneClosed() {
this.clearTime();
if (this.$refs.phoneForm) {
this.$refs.phoneForm.resetFields();
}
this.phoneForm = { oldPhone: this.userInfo.account };
},
/*清除code定时器 */
clearTime() {
this.msgText = "获取验证码";
this.msgKey = false;
clearInterval(this.time);
},
},
computed: {
...mapGetters(["userInfo"]),
isAdmin() {