Browse Source

🎟 框架升级

master
wangxiang 3 years ago
parent
commit
5ce00eb4bf
  1. 41
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  2. 2
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java
  3. 16
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java
  4. 6
      kicc-ui/src/api/system/user.ts
  5. 63
      kicc-ui/src/views/system/user/PasswordModal.vue
  6. 89
      kicc-ui/src/views/system/user/ResetPwdModal.vue
  7. 41
      kicc-ui/src/views/system/user/index.vue
  8. 25
      kicc-ui/src/views/system/user/user.data.ts

41
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cloud.kicc.system.api.entity.Menu;
import com.cloud.kicc.system.api.entity.Role; import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.User; import com.cloud.kicc.system.api.entity.User;
import com.cloud.kicc.system.api.entity.UserRole; import com.cloud.kicc.system.api.entity.UserRole;
@ -59,7 +60,8 @@ public class UserController {
private LambdaQueryWrapper<User> getQueryWrapper(User user) { private LambdaQueryWrapper<User> getQueryWrapper(User user) {
return new LambdaQueryWrapper<User>() return new LambdaQueryWrapper<User>()
.like(StrUtil.isNotBlank(user.getUserName()), User::getUserName, user.getUserName()) .like(StrUtil.isNotBlank(user.getUserName()), User::getUserName, user.getUserName())
.eq(StrUtil.isNotBlank(user.getStatus()), User::getStatus, user.getStatus()); .eq(StrUtil.isNotBlank(user.getDeptId()), User::getDeptId, user.getDeptId())
.between(StrUtil.isNotBlank(user.getBeginTime()) && StrUtil.isNotBlank(user.getEndTime()), User::getCreateTime, user.getBeginTime(), user.getEndTime());
} }
@GetMapping("/list") @GetMapping("/list")
@ -82,9 +84,11 @@ public class UserController {
public R getById(@PathVariable("id") String id) { public R getById(@PathVariable("id") String id) {
User user = userService.getById(id); User user = userService.getById(id);
List<String> roles; List<String> roles;
// 设置所有角色集合信息
List<Role> roleList = roleService.list(); List<Role> roleList = roleService.list();
// 设置用户角色信息
if (user != null) { if (user != null) {
roles = userRoleService.list(new QueryWrapper<UserRole>().eq("user_id", user.getId())) roles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()))
.stream().map(userRole -> userRole.getRoleId()).collect(Collectors.toList()); .stream().map(userRole -> userRole.getRoleId()).collect(Collectors.toList());
user.setRoleIds(ArrayUtil.toArray(roles, String.class)); user.setRoleIds(ArrayUtil.toArray(roles, String.class));
} }
@ -100,10 +104,6 @@ public class UserController {
return R.ok(); return R.ok();
} }
/**
* 获取指定用户全部信息
* @return 用户信息
*/
@Inner @Inner
@GetMapping("/selectByUserName/{userName}") @GetMapping("/selectByUserName/{userName}")
public R selectByUserName(@PathVariable String userName) { public R selectByUserName(@PathVariable String userName) {
@ -126,7 +126,7 @@ public class UserController {
@DeleteMapping("/remove/{id:[\\w,]+}") @DeleteMapping("/remove/{id:[\\w,]+}")
@PreAuthorize("@pms.hasPermission('user_del')") @PreAuthorize("@pms.hasPermission('user_del')")
public R remove(@PathVariable String[] id) { public R remove(@PathVariable String[] id) {
if (ArrayUtil.contains(id, 1)) { if (ArrayUtil.contains(id, "1510539584287346688")) {
return R.error("不允许删除超级管理员"); return R.error("不允许删除超级管理员");
} }
userService.removeByIds(Arrays.asList(id)); userService.removeByIds(Arrays.asList(id));
@ -138,9 +138,10 @@ public class UserController {
KiccUser kiccUser = SecurityUtils.getUser(); KiccUser kiccUser = SecurityUtils.getUser();
if (kiccUser != null) { if (kiccUser != null) {
ResultVo resultVo = new ResultVo(); ResultVo resultVo = new ResultVo();
User user = userService.getById(kiccUser.getId() + ""); User user = userService.getById(kiccUser.getId());
if (user != null) { if (user != null) {
String roleNames = SecurityUtils.getRoles().stream().map(roleId -> roleService.getById(roleId).getName()) String roleNames = SecurityUtils.getRoles()
.stream().map(roleId -> roleService.getById(roleId).getName())
.collect(Collectors.joining(",")); .collect(Collectors.joining(","));
user.setPassword(null); user.setPassword(null);
resultVo.setResult(user); resultVo.setResult(user);
@ -156,18 +157,18 @@ public class UserController {
@PutMapping("/updateProfile") @PutMapping("/updateProfile")
@PreAuthorize("@pms.hasPermission('user_edit')") @PreAuthorize("@pms.hasPermission('user_edit')")
public R updateProfile(@RequestBody User user) { public R updateProfile(@RequestBody User user) {
userService.update(new UpdateWrapper<User>().eq("id", user.getId()) userService.update(Wrappers.<User>update().lambda().eq(User::getId, user.getId())
.set("nick_name", user.getNickName()) .set(User::getNickName, user.getNickName())
.set(StrUtil.isNotBlank(user.getPhone()), "phone", user.getPhone()) .set(StrUtil.isNotBlank(user.getPhone()), User::getPhone, user.getPhone())
.set("email", user.getEmail()) .set(User::getEmail, user.getEmail())
.set("sex", user.getSex())); .set(User::getSex, user.getSex()));
return R.ok(); return R.ok();
} }
@SysLog("用户头像修改") @SysLog("用户头像修改")
@PutMapping("/updateAvatar") @PutMapping("/updateAvatar")
@PreAuthorize("@pms.hasPermission('user_edit')") @PreAuthorize("@pms.hasPermission('user_edit')")
public R updateAvatar(@RequestParam("avatarfile") MultipartFile file) { public R updateAvatar(@RequestParam("avatarFile") MultipartFile file) {
return fileService.uploadFile(file); return fileService.uploadFile(file);
} }
@ -175,9 +176,9 @@ public class UserController {
@PutMapping("/updatePwd") @PutMapping("/updatePwd")
@PreAuthorize("@pms.hasPermission('user_edit')") @PreAuthorize("@pms.hasPermission('user_edit')")
public R updatePwd(User user) { public R updatePwd(User user) {
User user1 = userService.getById(SecurityUtils.getUser().getId()); User originUser = userService.getById(SecurityUtils.getUser().getId());
if (user1 != null && StrUtil.equals(ENCODER.encode(user.getPassword()), user1.getPassword())) { if (originUser != null && StrUtil.equals(ENCODER.encode(user.getPassword()), originUser.getPassword())) {
userService.update(new UpdateWrapper<User>().eq("id", user1.getId()).set("password", ENCODER.encode(user.getNewPassword()))); userService.update(Wrappers.<User>update().lambda().eq(User::getId, originUser.getId()).set(User::getPassword, user.getPassword()));
return R.ok(); return R.ok();
} else { } else {
return R.error("原密码有误,请重试"); return R.error("原密码有误,请重试");
@ -188,7 +189,7 @@ public class UserController {
@PutMapping("/resetPwd") @PutMapping("/resetPwd")
@PreAuthorize("@pms.hasPermission('user_reset')") @PreAuthorize("@pms.hasPermission('user_reset')")
public R resetPwd(@RequestBody User user) { public R resetPwd(@RequestBody User user) {
userService.update(new UpdateWrapper<User>().eq("id", user.getId()).set("password", ENCODER.encode(user.getNewPassword()))); userService.update(Wrappers.<User>update().lambda().eq(User::getId, user.getId()).set(User::getPassword, ENCODER.encode(user.getNewPassword())));
return R.ok(); return R.ok();
} }
@ -196,7 +197,7 @@ public class UserController {
@PutMapping("/changeStatus") @PutMapping("/changeStatus")
@PreAuthorize("@pms.hasPermission('user_edit')") @PreAuthorize("@pms.hasPermission('user_edit')")
public R changeStatus(@RequestBody User user) { public R changeStatus(@RequestBody User user) {
userService.update(new UpdateWrapper<User>().eq("id", user.getId()).set("status", user.getStatus())); userService.update(Wrappers.<User>update().lambda().eq(User::getId, user.getId()).set(User::getStatus, user.getStatus()));
return R.ok(); return R.ok();
} }

2
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/UserService.java

@ -17,7 +17,6 @@ public interface UserService extends IService<User> {
/** /**
* 保存用户信息 * 保存用户信息
*
* @param user 用户信息 * @param user 用户信息
* @return 结果 * @return 结果
*/ */
@ -25,7 +24,6 @@ public interface UserService extends IService<User> {
/** /**
* 导入用户数据 * 导入用户数据
*
* @param userList 用户数据列表 * @param userList 用户数据列表
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据 * @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @return 结果 * @return 结果

16
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java

@ -2,6 +2,7 @@ package com.cloud.kicc.system.service.impl;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.system.api.entity.Dept; import com.cloud.kicc.system.api.entity.Dept;
@ -43,7 +44,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder();
@Override @Override
@Transactional @Transactional(rollbackFor = Exception.class)
public int saveUser(User user) { public int saveUser(User user) {
if (StrUtil.isEmptyIfStr(user.getId())) { if (StrUtil.isEmptyIfStr(user.getId())) {
// 新增用户信息 // 新增用户信息
@ -52,8 +53,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
addUserRole(user); addUserRole(user);
return rows; return rows;
} else { } else {
// 删除用户与角色关联 // 修改遵守先删后新增规则
userRoleService.remove(new QueryWrapper<UserRole>().eq("user_id", user.getId())); userRoleService.remove(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, user.getId()));
// 新增用户与角色管理 // 新增用户与角色管理
addUserRole(user); addUserRole(user);
user.setPassword(null); user.setPassword(null);
@ -87,7 +88,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
/** /**
* 新增用户角色信息 * 新增用户角色信息
*
* @param user 用户对象 * @param user 用户对象
*/ */
public void addUserRole(User user) { public void addUserRole(User user) {
@ -103,13 +103,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
} }
} }
/**
* 导入用户数据
*
* @param userList 用户数据列表
* @param isUpdateSupport 是否更新支持如果已存在则进行更新数据
* @return 结果
*/
@Override @Override
public String importUser(List<User> userList, Boolean isUpdateSupport) { public String importUser(List<User> userList, Boolean isUpdateSupport) {
if (userList == null || userList.size() == 0) { if (userList == null || userList.size() == 0) {

6
kicc-ui/src/api/system/user.ts

@ -7,7 +7,8 @@ enum Api {
get = '/system_proxy/system/user', get = '/system_proxy/system/user',
edit = '/system_proxy/system/user/update', edit = '/system_proxy/system/user/update',
del = '/system_proxy/system/user/remove', del = '/system_proxy/system/user/remove',
updatePwd = '/system_proxy/system/user/updatePwd' updatePwd = '/system_proxy/system/user/updatePwd',
resetPwd='/system_proxy/system/user/resetPwd'
} }
// 查询用户列表 // 查询用户列表
@ -27,3 +28,6 @@ export const delUser = (id: string) => defHttp.delete({ url: `${Api.del}/${id}`
// 更新密码 // 更新密码
export const updatePwd = (params: Partial<User>) => defHttp.put({ url: Api.updatePwd, params }); export const updatePwd = (params: Partial<User>) => defHttp.put({ url: Api.updatePwd, params });
// 重置密码
export const resetPwd = (params: Partial<User>) => defHttp.put({ url: Api.resetPwd, data: params });

63
kicc-ui/src/views/system/user/PasswordModal.vue

@ -1,63 +0,0 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts">
import { defineComponent, ref, computed, unref } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { BasicForm, useForm } from '/@/components/Form/index';
import { passwordFormSchema } from './user.data';
//import { userSetPassword } from '/@/api/system/user';
export default defineComponent({
name: 'AccountModal',
components: { BasicModal, BasicForm },
emits: ['success', 'register'],
setup(_, { emit }) {
const isUpdate = ref(true);
const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
labelWidth: 100,
schemas: passwordFormSchema,
showActionButtonGroup: false,
actionColOptions: {
span: 23,
},
});
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
resetFields();
setModalProps({
confirmLoading: false,
title: `给账号【${data.record.name}(${data.record.account})】设置密码`,
});
isUpdate.value = !!data?.isUpdate;
if (unref(isUpdate)) {
setFieldsValue({
...data.record,
});
}
});
const getTitle = computed(() => (!unref(isUpdate) ? '新增账号' : '设置密码'));
async function handleSubmit() {
try {
setModalProps({ confirmLoading: true });
const values = await validate();
values.password = values.passwordNew;
delete values.passwordNew;
delete values.confirmPassword;
userSetPassword(values);
closeModal();
} finally {
setModalProps({ confirmLoading: false });
}
}
return { registerModal, registerForm, getTitle, handleSubmit };
},
});
</script>

89
kicc-ui/src/views/system/user/ResetPwdModal.vue

@ -0,0 +1,89 @@
<template>
<BasicModal v-bind="$attrs"
title="重置密码"
minHeight="100px"
@ok="handleSubmit"
@register="registerModal"
>
<Form :model="modelRef" :rules="rulesRef">
<FormItem name="newPassword" v-bind="validateInfos.newPassword">
<StrengthMeter v-model:value="modelRef.newPassword" placeholder="密码"/>
</FormItem>
</Form>
</BasicModal>
</template>
<script lang="ts" setup>
/**
* 采用ant-design-vue原生组件编写form
* Copyright © 2020-2022 <a href="http://www.entfrm.com/">entfrm</a> All rights reserved.
* author entfrm开发团队-王翔
*/
import { reactive } from 'vue';
import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal';
import { StrengthMeter } from '/@/components/StrengthMeter';
import { Form } from 'ant-design-vue';
import { resetPwd } from '/@/api/system/user';
import { useMessage } from '/@/hooks/web/useMessage';
/** 表单信息类型规范 */
interface FormState {
id: string;
newPassword: string;
}
const { createMessage } = useMessage();
/** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']);
const FormItem = Form.Item;
const useForm = Form.useForm;
const modelRef = reactive<FormState>({
id: '',
newPassword: ''
});
const rulesRef = reactive({
newPassword: [
{
required: true,
whitespace: true,
message: '请输入密码!',
},
{
pattern: new RegExp('[^\\u4e00-\\u9fa5]+'),
type: 'string',
message: '密码不能输入汉字!',
},
{
min: 6,
max: 32,
message: '长度必需在6-32之间!',
}
]
});
const { resetFields, clearValidate, validate, validateInfos } = useForm(modelRef, rulesRef);
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data: WindowInnerData) => {
await resetFields();
await clearValidate();
modelRef.id = data.record?.id;
const props: Partial<ModalProps> = { confirmLoading: false };
setModalProps(props);
});
async function handleSubmit() {
try {
setModalProps({ confirmLoading: true });
if (!modelRef.id) return createMessage.error('用户编号ID不存在,请检查!');
//
const formData = await validate();
await resetPwd(formData);
closeModal();
emit('success');
} finally {
setModalProps({ confirmLoading: false });
}
}
</script>

41
kicc-ui/src/views/system/user/index.vue

@ -25,20 +25,21 @@
<template #action="{ record }"> <template #action="{ record }">
<TableAction :actions="[ <TableAction :actions="[
{ {
label: '重置密码',
icon: 'clarity:lock-line', icon: 'clarity:lock-line',
tooltip: '修改密码', auth: ['user_reset'],
onClick: handleUpdatePwd.bind(null, record), onClick: handleResetPassword.bind(null, record),
}, },
{ {
label: '编辑', label: '编辑',
icon: 'fa6-regular:pen-to-square', icon: 'fa6-regular:pen-to-square',
auth: ['role_edit'], auth: ['user_edit'],
onClick: handleEdit.bind(null, record) onClick: handleEdit.bind(null, record)
}, },
{ {
label: '删除', label: '删除',
icon: 'ant-design:delete-outlined', icon: 'ant-design:delete-outlined',
auth: ['role_del'], auth: ['user_del'],
color: 'error', color: 'error',
onClick: handleDel.bind(null, record) onClick: handleDel.bind(null, record)
}]" }]"
@ -46,19 +47,19 @@
</template> </template>
</BasicTable> </BasicTable>
<UserModal @register="registerModal" @success="handleSuccess"/> <UserModal @register="registerModal" @success="handleSuccess"/>
<PasswordModal @register="registerPasswordModal" @success="handleUpdatePwd"/> <ResetPwdModal @register="registerResetPwdModal" @success="handleSuccess"/>
</PageWrapper> </PageWrapper>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, reactive, toRaw } from 'vue'; import { defineComponent, reactive, toRaw } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { listUser, delUser, updatePwd } from '/@/api/system/user'; import { listUser, delUser } from '/@/api/system/user';
import ResetPwdModal from './ResetPwdModal.vue';
import { PageWrapper } from '/@/components/Page'; import { PageWrapper } from '/@/components/Page';
import DeptTree from './DeptTree.vue'; import DeptTree from './DeptTree.vue';
import { useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import UserModal from './UserModal.vue'; import UserModal from './UserModal.vue';
import PasswordModal from './PasswordModal.vue';
import { columns, searchFormSchema } from './user.data'; import { columns, searchFormSchema } from './user.data';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
@ -73,7 +74,7 @@
DeptTree, DeptTree,
TableAction, TableAction,
UserModal, UserModal,
PasswordModal ResetPwdModal
}, },
setup() { setup() {
const state = reactive({ const state = reactive({
@ -88,7 +89,7 @@
}); });
const [registerModal, { openModal }] = useModal(); const [registerModal, { openModal }] = useModal();
const [registerPasswordModal, { openModal: openPasswordModal }] = useModal(); const [registerResetPwdModal, { openModal: openResetPwdModal }] = useModal();
const [registerTable, { reload }] = useTable({ const [registerTable, { reload }] = useTable({
title: '用户列表', title: '用户列表',
api: listUser, api: listUser,
@ -104,12 +105,14 @@
showTableSetting: true, showTableSetting: true,
bordered: true, bordered: true,
clickToRowSelect: false, clickToRowSelect: false,
showIndexColumn: false,
searchInfo: state.searchInfo, searchInfo: state.searchInfo,
actionColumn: { actionColumn: {
width: 120, width: 220,
title: '操作', title: '操作',
dataIndex: 'action', dataIndex: 'action',
slots: { customRender: 'action' } slots: { customRender: 'action' },
fixed: false
} }
}); });
@ -132,10 +135,10 @@
openModal(true, { _tag: 'edit', record }); openModal(true, { _tag: 'edit', record });
} }
/** 处理修改用户密码 */ /** 处理重置用户密码 */
function handleUpdatePwd(record: Recordable) { function handleResetPassword(record: Recordable) {
record = record || { id: toRaw(state.ids) }; record = record || { id: toRaw(state.ids) };
openPasswordModal(true, { _tag: 'edit', record }); openResetPwdModal(true, { record });
} }
/** 删除按钮操作,行内删除 */ /** 删除按钮操作,行内删除 */
@ -159,23 +162,23 @@
} }
/** 处理部门管理点击 */ /** 处理部门管理点击 */
function handleSelect(departId = '') { function handleSelect(departId) {
state.searchInfo.departId = departId; state.searchInfo.deptId = departId;
reload(); handleSuccess();
} }
return { return {
state, state,
registerTable, registerTable,
registerModal, registerModal,
registerPasswordModal, registerResetPwdModal,
handleAdd, handleAdd,
handleEdit, handleEdit,
handleDel, handleDel,
handleSelectionChange, handleSelectionChange,
handleSuccess, handleSuccess,
handleSelect, handleSelect,
handleUpdatePwd handleResetPassword
}; };
} }
}); });

25
kicc-ui/src/views/system/user/user.data.ts

@ -6,23 +6,23 @@ import { listRole } from '/@/api/system/role';
export const columns: BasicColumn[] = [ export const columns: BasicColumn[] = [
{ {
title: '用户名', title: '用户名',
dataIndex: 'account', dataIndex: 'userName',
width: 120, width: 120,
}, },
{ {
title: '昵称', title: '用户昵称',
dataIndex: 'name', dataIndex: 'nickName',
width: 120, width: 120,
}, },
{ {
title: '邮箱', title: '机构名称',
dataIndex: 'email', dataIndex: 'deptName',
width: 120, width: 200,
}, },
{ {
title: '角色', title: '手机号码',
dataIndex: 'roleName', dataIndex: 'phone',
width: 200, width: 200,
}, },
{ {
@ -33,7 +33,7 @@ export const columns: BasicColumn[] = [
const status = record.status; const status = record.status;
const enable = status === '0'; const enable = status === '0';
const color = enable ? 'green' : 'red'; const color = enable ? 'green' : 'red';
const text = enable ? '在职' : '离职'; const text = enable ? '启动' : '停用';
return h(Tag, { color: color }, () => text); return h(Tag, { color: color }, () => text);
}, },
}, },
@ -46,8 +46,8 @@ export const columns: BasicColumn[] = [
export const searchFormSchema: FormSchema[] = [ export const searchFormSchema: FormSchema[] = [
{ {
field: 'keyword', field: 'userName',
label: '关键字', label: '用户名称',
component: 'Input', component: 'Input',
componentProps: { componentProps: {
placeholder: '请输入名称/编码', placeholder: '请输入名称/编码',
@ -242,7 +242,6 @@ export const passwordFormSchema: FormSchema[] = [
field: 'confirmPassword', field: 'confirmPassword',
label: '确认密码', label: '确认密码',
component: 'InputPassword', component: 'InputPassword',
dynamicRules: ({ values }) => { dynamicRules: ({ values }) => {
return [ return [
{ {

Loading…
Cancel
Save