修改用户管理界面

dev_xd
haha 2025-01-13 23:59:24 +08:00
parent e40e1092e5
commit f91232d0e0
8 changed files with 173 additions and 54 deletions

View File

@ -85,7 +85,11 @@ public class SysLoginService
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
{
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
String msg=userResult.getMsg();
if(StringUtils.isBlank(msg)){
msg="登录用户不存在";
}
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, msg);
throw new ServiceException("登录用户:" + username + " 不存在");
}

View File

@ -118,7 +118,8 @@
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role r on r.role_id = ur.role_id
left join sys_role_dept rd on rd.role_id = r.role_id
where m.status = '0' and r.status = '0' and ur.user_id = #{userId} and rd.dept_id = #{deptId}
where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
and rd.dept_id = #{deptId}
</select>
<select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">

View File

@ -163,7 +163,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectUserByIdAndDept" resultMap="SysUserResult">
<include refid="selectUserVo"/>
left join sys_role_dept rd on rd.role_id = r.role_id
where u.user_id = #{userId} and rd.dept_id = ${deptId}
where u.user_id = #{userId}
<if test="deptId != null and deptId != ''">
and rd.dept_id = ${deptId}
</if>
</select>
<select id="selectUserByUserId" parameterType="Long" resultMap="SysUserResult">

View File

@ -311,7 +311,7 @@ public class SysUserController extends BaseController {
sysUser = userService.selectUserById(userId);
} else {
user = userService.selectUserByUserId(userId);
sysUser = userService.selectUserByIdAndDept(userId, user.getDeptId());
sysUser = user.getDeptId()!=null?userService.selectUserByIdAndDept(userId, user.getDeptId()):null;
}
if(sysUser!=null) {
ajax.put(AjaxResult.DATA_TAG, sysUser);
@ -345,6 +345,11 @@ public class SysUserController extends BaseController {
return toAjax(userService.insertUser(user));
}
@GetMapping("/getUserByName/{userName}")
@RequiresPermissions("system:user:query")
public AjaxResult getUserByName(@PathVariable(value = "userName", required = true)String userName) {
return AjaxResult.success(userService.getUserByName(userName));
}
/**
*
*/
@ -361,6 +366,17 @@ public class SysUserController extends BaseController {
} else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
SysUser where=new SysUser();
where.setUserName(user.getUserName());
List<SysUser> list=userService.selectUserList(where);
if(list.size()>1){
return error("此用户名己存在,修改失败!");
}
if(list.size()==1){
if(user.getUserId().intValue()!=list.get(0).getUserId().intValue()){
return error("此用户名己存在,修改失败!");
}
}
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.updateUser(user));
}

View File

@ -110,6 +110,7 @@ public interface ISysUserService
*/
public boolean checkUserNameUnique(SysUser user);
public SysUser getUserByName(String userName);
/**
*
*

View File

@ -249,6 +249,9 @@ public class SysUserServiceImpl implements ISysUserService
return UserConstants.UNIQUE;
}
public SysUser getUserByName(String userName){
return userMapper.checkUserNameUnique(userName);
}
/**
*
*

View File

@ -49,6 +49,8 @@ export function updateUser(data) {
status:data.status,
postIds:data.postIds,
roles:data.roles,
comId:data.comId,
deptId:data.deptId,
roleIds:data.roleIds
}
})
@ -184,3 +186,10 @@ export function reload(){
method: 'get'
})
}
export function getUserByName(userName){
return request({
url: '/system/user/getUserByName/'+userName,
method: 'get'
})
}

View File

@ -130,12 +130,18 @@
</el-col>
<el-col :span="12">
<el-form-item label="用户名称" prop="nickName">
<el-input v-model="form.nickName" placeholder="请输入用户名称" maxlength="30" />
<el-input v-model="form.nickName" :disabled="data.editUser" placeholder="请输入用户名称" maxlength="30"
style="width: 150px;" />
<el-button v-if="data.mode == 'add' && !data.editUser" type="primary" style="margin-left: 10px;"
@click="doQueryUserByName">查询</el-button>
<el-button v-if="data.editUser" type="success" style="margin-left: 10px;"
@click="doCleanEditData">清除</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="用户类型" prop="userType">
<el-select v-model="form.userType" placeholder="请选择用户类型" style="width: 100%" @change="doRoleChange">
<el-select v-model="form.userType" placeholder="请选择用户类型" style="width: 100%"
@change="doRoleChange">
<el-option v-for="dict in sys_user_type" :key="dict.value" :label="dict.label"
:value="dict.value" />
</el-select>
@ -143,15 +149,18 @@
</el-col>
<el-col :span="12">
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" :disabled="form.userId" placeholder="请输入手机号码"
maxlength="11" style="width: 150px;"/>
<el-button type="primary" style="margin-left: 10px;" @click="doQueryUser"></el-button>
<el-input v-model="form.phonenumber" :disabled="form.userId || data.editUser" placeholder="请输入手机号码"
maxlength="11" style="width: 150px;" autocomplete="off" disableautocomplete />
<el-button v-if="data.mode == 'add' && !data.editUser" type="primary" style="margin-left: 10px;"
@click="doQueryUser">查询</el-button>
<el-button v-if="data.editUser" type="success" style="margin-left: 10px;"
@click="doCleanEditData">清除</el-button>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="登录密码" prop="password">
<el-input v-model="form.password" placeholder="请输入登录密码" type="password" maxlength="20"
:disabled="form.userId" :show-password="!form.userId" />
:disabled="form.userId" :show-password="!form.userId" autocomplete="off" disableautocomplete />
</el-form-item>
</el-col>
<el-col :span="12">
@ -237,7 +246,9 @@
<script setup name="User">
import { getToken } from "@/utils/auth";
import { getDeptRole } from "@/api/system/role";
import { changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser,selectByPhone, deptTreeSelect } from "@/api/system/user";
import {
changeUserStatus, listUser, resetUserPwd, delUser, getUser, updateUser, addUser, selectByPhone, deptTreeSelect, getUserByName
} from "@/api/system/user";
const router = useRouter();
const { proxy } = getCurrentInstance();
@ -311,7 +322,9 @@ const data = reactive({
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
}
},
editUser: null,
mode: ''
});
const { queryParams, form, rules } = toRefs(data);
@ -334,11 +347,48 @@ function getDeptTree() {
};
//
function doQueryUser() {
selectByPhone(form.value.phonenumber).then(d=>{{
debugger
}});
selectByPhone(form.value.phonenumber).then(d => {
{
if (!d.data) {
proxy.$modal.msgError("未找到数据!")
}
data.editUser = d.data || null;
showEditUserData();
}
});
}
function doQueryUserByName() {
getUserByName(form.value.nickName).then(d => {
if (!d.data) {
proxy.$modal.msgError("未找到数据!")
}
data.editUser = d.data || null
showEditUserData();
});
}
function showEditUserData() {
let old = data.editUser
if (old) {
form.value.nickName = old.nickName;
form.value.phonenumber = old.phonenumber;
form.value.sex = old.sex;
form.value.cardCode = old.cardCode;
form.value.avatar = old.avatar;
} else {
form.value.nickName = "";
form.value.phonenumber = "";
form.value.sex = "";
form.value.cardCode = "";
form.value.avatar = "";
}
}
function doCleanEditData() {
data.editUser = null;
showEditUserData();
}
function doRoleChange() {
if (data.mode == 'add') {
if (form.value.userType == 99) {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
@ -357,11 +407,36 @@ function doRoleChange(){
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
}
}
}
else {
if (form.value.userType == 99) {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
cardCode: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
avatar: [{ required: true, message: "入场近照不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
}
} else {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
}
}
}
}
/** 查询用户列表 */
function getList() {
@ -498,6 +573,7 @@ function reset() {
roleIds: []
};
proxy.resetForm("userRef");
data.mode = ''
};
/** 取消按钮 */
function cancel() {
@ -513,6 +589,7 @@ function handleAdd() {
userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
nickName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
}
@ -521,6 +598,7 @@ function handleAdd() {
open.value = true;
title.value = "添加用户";
form.value.password = initPassword.value;
data.mode = 'add'
});
};
/** 修改按钮操作 */
@ -532,6 +610,7 @@ function handleUpdate(row) {
data.rules = {
deptId: [{ required: true, message: "所属单位不能为空", trigger: "change" }],
userType: [{ required: true, message: "用户类型不能为空", trigger: "change" }],
roleIds: [{ required: true, message: "用户角色不能为空", trigger: "change" }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
}
form.value = response.data;
@ -541,6 +620,7 @@ function handleUpdate(row) {
open.value = true;
title.value = "修改用户";
form.password = "";
data.mode = 'edit'
});
handleChangeDept(row.deptId);
};
@ -582,12 +662,14 @@ function submitForm() {
proxy.$modal.msgSuccess("修改成功");
open.value = false;
getList();
data.mode = ""
});
} else {
addUser(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功");
open.value = false;
getList();
data.mode = ""
});
}
}