用户管理修改
This commit is contained in:
parent
0e95fa08bc
commit
0dcce5161b
|
|
@ -53,7 +53,7 @@ export function resetUserPwd(userId, password) {
|
||||||
}
|
}
|
||||||
return request({
|
return request({
|
||||||
url: '/smartArchives/system/user/resetPwd',
|
url: '/smartArchives/system/user/resetPwd',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -96,7 +96,7 @@ export function updateUserPwd(oldPassword, newPassword) {
|
||||||
}
|
}
|
||||||
return request({
|
return request({
|
||||||
url: '/smartArchives/system/user/profile/updatePwd',
|
url: '/smartArchives/system/user/profile/updatePwd',
|
||||||
method: 'put',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,8 @@ export default {
|
||||||
title: process.env.VUE_APP_TITLE,
|
title: process.env.VUE_APP_TITLE,
|
||||||
codeUrl: "",
|
codeUrl: "",
|
||||||
loginForm: {
|
loginForm: {
|
||||||
username: "admin",
|
username: "",
|
||||||
password: "admin123",
|
password: "",
|
||||||
rememberMe: false,
|
rememberMe: false,
|
||||||
code: "",
|
code: "",
|
||||||
uuid: ""
|
uuid: ""
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ export const formLabel = [
|
||||||
{
|
{
|
||||||
isShow: false, // 是否展示label
|
isShow: false, // 是否展示label
|
||||||
f_type: 'ipt',
|
f_type: 'ipt',
|
||||||
f_label: '用户名',
|
f_label: '用户账号',
|
||||||
f_model: 'userName',
|
f_model: 'userName',
|
||||||
f_max: 32,
|
f_max: 32,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,8 @@ import Treeselect from "@riophae/vue-treeselect";
|
||||||
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
||||||
import {
|
import {
|
||||||
listUser,
|
listUser,
|
||||||
delUser
|
delUser,
|
||||||
|
resetUserPwd
|
||||||
} from '@/api/system/user'
|
} from '@/api/system/user'
|
||||||
import { getDeptSelectApi,getRoleSelectApi } from '@/api/select'
|
import { getDeptSelectApi,getRoleSelectApi } from '@/api/select'
|
||||||
import UserForm from './profile/userForm'
|
import UserForm from './profile/userForm'
|
||||||
|
|
@ -89,7 +90,6 @@ export default {
|
||||||
});
|
});
|
||||||
const item = this.formLabel.find(item => item.f_model === 'roleId');
|
const item = this.formLabel.find(item => item.f_model === 'roleId');
|
||||||
await getRoleSelectApi().then(res => {
|
await getRoleSelectApi().then(res => {
|
||||||
console.log(res.data)
|
|
||||||
res.data.forEach(item => {
|
res.data.forEach(item => {
|
||||||
item.label = item.name;
|
item.label = item.name;
|
||||||
item.value = item.id;
|
item.value = item.id;
|
||||||
|
|
@ -174,11 +174,11 @@ export default {
|
||||||
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\d\s]).{8,20}$/,
|
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\d\s]).{8,20}$/,
|
||||||
inputErrorMessage:
|
inputErrorMessage:
|
||||||
'用户密码长度必须介于 8 和 20 之间,且包含大小写字母、数字和特殊字符',
|
'用户密码长度必须介于 8 和 20 之间,且包含大小写字母、数字和特殊字符',
|
||||||
inputValidator: (value) => {
|
/* inputValidator: (value) => {
|
||||||
if (/<|>|"|'|\||\\/.test(value)) {
|
if (/<|>|"|'|\||\\/.test(value)) {
|
||||||
return '不能包含非法字符:< > " \' \\\ |'
|
return '不能包含非法字符:< > " \' \\\ |'
|
||||||
}
|
}
|
||||||
},
|
}, */
|
||||||
})
|
})
|
||||||
.then(({ value }) => {
|
.then(({ value }) => {
|
||||||
resetUserPwd(row.userId, value).then((response) => {
|
resetUserPwd(row.userId, value).then((response) => {
|
||||||
|
|
|
||||||
|
|
@ -7,25 +7,29 @@
|
||||||
<span>个人信息</span>
|
<span>个人信息</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="text-center">
|
<!-- <div class="text-center">
|
||||||
<userAvatar />
|
<userAvatar />
|
||||||
</div>
|
</div> -->
|
||||||
<ul class="list-group list-group-striped">
|
<ul class="list-group list-group-striped">
|
||||||
|
<li class="list-group-item">
|
||||||
|
<svg-icon icon-class="user" />用户账号
|
||||||
|
<div class="pull-right">{{ user.nickName }}</div>
|
||||||
|
</li>
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<svg-icon icon-class="user" />用户名称
|
<svg-icon icon-class="user" />用户名称
|
||||||
<div class="pull-right">{{ user.userName }}</div>
|
<div class="pull-right">{{ user.userName }}</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<svg-icon icon-class="phone" />手机号码
|
<svg-icon icon-class="phone" />手机号码
|
||||||
<div class="pull-right">{{ user.phonenumber }}</div>
|
<div class="pull-right">{{ maskPhone(user.phonenumber) }}</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item">
|
<!-- <li class="list-group-item">
|
||||||
<svg-icon icon-class="email" />用户邮箱
|
<svg-icon icon-class="email" />用户邮箱
|
||||||
<div class="pull-right">{{ user.email }}</div>
|
<div class="pull-right">{{ user.email }}</div>
|
||||||
</li>
|
</li> -->
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<svg-icon icon-class="tree" />所属部门
|
<svg-icon icon-class="tree" />所属部门
|
||||||
<div class="pull-right" v-if="user.dept">{{ user.dept.deptName }} / {{ postGroup }}</div>
|
<div class="pull-right" v-if="user.dept">{{ user.dept.deptName }}</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<svg-icon icon-class="peoples" />所属角色
|
<svg-icon icon-class="peoples" />所属角色
|
||||||
|
|
@ -45,9 +49,9 @@
|
||||||
<span>基本资料</span>
|
<span>基本资料</span>
|
||||||
</div>
|
</div>
|
||||||
<el-tabs v-model="selectedTab">
|
<el-tabs v-model="selectedTab">
|
||||||
<el-tab-pane label="基本资料" name="userinfo">
|
<!-- <el-tab-pane label="基本资料" name="userinfo">
|
||||||
<userInfo :user="user" />
|
<userInfo :user="user" />
|
||||||
</el-tab-pane>
|
</el-tab-pane> -->
|
||||||
<el-tab-pane label="修改密码" name="resetPwd">
|
<el-tab-pane label="修改密码" name="resetPwd">
|
||||||
<resetPwd />
|
<resetPwd />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
@ -72,7 +76,7 @@ export default {
|
||||||
user: {},
|
user: {},
|
||||||
roleGroup: {},
|
roleGroup: {},
|
||||||
postGroup: {},
|
postGroup: {},
|
||||||
selectedTab: "userinfo"
|
selectedTab: "resetPwd"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
|
@ -89,6 +93,21 @@ export default {
|
||||||
this.roleGroup = response.roleGroup
|
this.roleGroup = response.roleGroup
|
||||||
this.postGroup = response.postGroup
|
this.postGroup = response.postGroup
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
// 手机号脱敏显示:保留前三后四,中间替换为 ****,支持可选国家码
|
||||||
|
maskPhone(val) {
|
||||||
|
const s = String(val || '')
|
||||||
|
if (!s) return ''
|
||||||
|
const re = /((?:\+|00)?86)?(1[3-9]\d{2})\d{4}(\d{4})/
|
||||||
|
if (re.test(s)) {
|
||||||
|
return s.replace(re, (m, pfx = '', head, tail) => `${pfx || ''}${head}****${tail}`)
|
||||||
|
}
|
||||||
|
// 兼容纯11位手机号
|
||||||
|
const re11 = /^(\d{3})\d{4}(\d{4})$/
|
||||||
|
if (re11.test(s)) {
|
||||||
|
return s.replace(re11, '$1****$2')
|
||||||
|
}
|
||||||
|
return s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ export default {
|
||||||
],
|
],
|
||||||
newPassword: [
|
newPassword: [
|
||||||
{ required: true, message: "新密码不能为空", trigger: "blur" },
|
{ required: true, message: "新密码不能为空", trigger: "blur" },
|
||||||
{ min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" },
|
// { min: 8, max: 20, message: "长度在 8 到 20 个字符", trigger: "blur" },
|
||||||
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
|
{ pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\d\s]).{8,20}$/, message: "用户密码长度必须介于 8 和 20 之间,且包含大小写字母、数字和特殊字符", trigger: "blur" }
|
||||||
],
|
],
|
||||||
confirmPassword: [
|
confirmPassword: [
|
||||||
{ required: true, message: "确认密码不能为空", trigger: "blur" },
|
{ required: true, message: "确认密码不能为空", trigger: "blur" },
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue