| @@ -33,6 +33,10 @@ export type JobFormProps = { | |||
| const JobForm: React.FC<JobFormProps> = (props) => { | |||
| const [form] = Form.useForm(); | |||
| const { jobGroupOptions, statusOptions } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 5 }, | |||
| wrapperCol: { span: 19 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| @@ -44,7 +48,7 @@ const JobForm: React.FC<JobFormProps> = (props) => { | |||
| cronExpression: props.values.cronExpression, | |||
| misfirePolicy: props.values.misfirePolicy, | |||
| concurrent: props.values.concurrent, | |||
| status: props.values.status, | |||
| status: props.values.status ?? Object.keys(statusOptions)[0], | |||
| createBy: props.values.createBy, | |||
| createTime: props.values.createTime, | |||
| updateBy: props.values.updateBy, | |||
| @@ -67,7 +71,7 @@ const JobForm: React.FC<JobFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'monitor.job.title', | |||
| defaultMessage: '编辑定时任务调度', | |||
| @@ -84,6 +88,8 @@ const JobForm: React.FC<JobFormProps> = (props) => { | |||
| submitter={false} | |||
| layout="horizontal" | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| > | |||
| <ProFormDigit | |||
| name="jobId" | |||
| @@ -24,8 +24,16 @@ export type DeptFormProps = { | |||
| const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| const [form] = Form.useForm(); | |||
| const { statusOptions, deptTree } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 8 }, | |||
| wrapperCol: { span: 16 }, | |||
| }; | |||
| const formItemLayout = { | |||
| labelCol: { span: 4 }, | |||
| wrapperCol: { span: 20 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| @@ -34,11 +42,11 @@ const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| parentId: props.values.parentId, | |||
| ancestors: props.values.ancestors, | |||
| deptName: props.values.deptName, | |||
| orderNum: props.values.orderNum, | |||
| orderNum: props.values.orderNum ?? 1, | |||
| leader: props.values.leader, | |||
| phone: props.values.phone, | |||
| email: props.values.email, | |||
| status: props.values.status, | |||
| status: props.values.status ?? Object.keys(statusOptions)[0], | |||
| delFlag: props.values.delFlag, | |||
| createBy: props.values.createBy, | |||
| createTime: props.values.createTime, | |||
| @@ -60,7 +68,7 @@ const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'system.dept.title', | |||
| defaultMessage: '编辑部门', | |||
| @@ -77,6 +85,8 @@ const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| submitter={false} | |||
| layout="horizontal" | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| > | |||
| <ProFormDigit | |||
| name="deptId" | |||
| @@ -104,6 +114,7 @@ const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| request={async () => { | |||
| return deptTree; | |||
| }} | |||
| {...formItemLayout} | |||
| placeholder="请选择上级部门" | |||
| rules={[ | |||
| { | |||
| @@ -185,6 +196,15 @@ const DeptForm: React.FC<DeptFormProps> = (props) => { | |||
| required: false, | |||
| message: <FormattedMessage id="请输入邮箱!" defaultMessage="请输入邮箱!" />, | |||
| }, | |||
| { | |||
| type: 'email', | |||
| message: ( | |||
| <FormattedMessage | |||
| id="请输入正确的邮箱格式!" | |||
| defaultMessage="请输入正确的邮箱格式!" | |||
| /> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| <ProFormRadio.Group | |||
| @@ -22,8 +22,11 @@ export type DictTypeFormProps = { | |||
| const DictTypeForm: React.FC<DictTypeFormProps> = (props) => { | |||
| const [form] = Form.useForm(); | |||
| const { statusOptions } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 4 }, | |||
| wrapperCol: { span: 20 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| @@ -31,7 +34,7 @@ const DictTypeForm: React.FC<DictTypeFormProps> = (props) => { | |||
| dictId: props.values.dictId, | |||
| dictName: props.values.dictName, | |||
| dictType: props.values.dictType, | |||
| status: props.values.status, | |||
| status: props.values.status ?? Object.keys(statusOptions)[0], | |||
| createBy: props.values.createBy, | |||
| createTime: props.values.createTime, | |||
| updateBy: props.values.updateBy, | |||
| @@ -53,7 +56,7 @@ const DictTypeForm: React.FC<DictTypeFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'system.dict.title', | |||
| defaultMessage: '编辑字典类型', | |||
| @@ -70,6 +73,8 @@ const DictTypeForm: React.FC<DictTypeFormProps> = (props) => { | |||
| submitter={false} | |||
| layout="horizontal" | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| > | |||
| <ProFormDigit | |||
| name="dictId" | |||
| @@ -22,8 +22,11 @@ export type PostFormProps = { | |||
| const PostForm: React.FC<PostFormProps> = (props) => { | |||
| const [form] = Form.useForm(); | |||
| const { statusOptions } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 4 }, | |||
| wrapperCol: { span: 20 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| @@ -31,8 +34,8 @@ const PostForm: React.FC<PostFormProps> = (props) => { | |||
| postId: props.values.postId, | |||
| postCode: props.values.postCode, | |||
| postName: props.values.postName, | |||
| postSort: props.values.postSort, | |||
| status: props.values.status, | |||
| postSort: props.values.postSort ?? 1, | |||
| status: props.values.status ?? Object.keys(statusOptions)[0], | |||
| createBy: props.values.createBy, | |||
| createTime: props.values.createTime, | |||
| updateBy: props.values.updateBy, | |||
| @@ -54,7 +57,7 @@ const PostForm: React.FC<PostFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'system.post.title', | |||
| defaultMessage: '编辑岗位信息', | |||
| @@ -71,6 +74,8 @@ const PostForm: React.FC<PostFormProps> = (props) => { | |||
| submitter={false} | |||
| layout="horizontal" | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| > | |||
| <ProFormDigit | |||
| name="postId" | |||
| @@ -29,17 +29,22 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| const [menuIds, setMenuIds] = useState<string[]>([]); | |||
| const { statusOptions } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 4 }, | |||
| wrapperCol: { span: 20 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| form.setFieldsValue({ | |||
| roleId: props.values.roleId, | |||
| roleName: props.values.roleName, | |||
| roleKey: props.values.roleKey, | |||
| roleSort: props.values.roleSort, | |||
| roleSort: props.values.roleSort ?? 1, | |||
| dataScope: props.values.dataScope, | |||
| menuCheckStrictly: props.values.menuCheckStrictly, | |||
| deptCheckStrictly: props.values.deptCheckStrictly, | |||
| status: props.values.status, | |||
| status: props.values.status ?? Object.keys(statusOptions)[0], | |||
| delFlag: props.values.delFlag, | |||
| createBy: props.values.createBy, | |||
| createTime: props.values.createTime, | |||
| @@ -62,7 +67,7 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'system.role.title', | |||
| defaultMessage: '编辑角色信息', | |||
| @@ -79,6 +84,8 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| layout="horizontal" | |||
| submitter={false} | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| > | |||
| <ProFormDigit | |||
| name="roleId" | |||
| @@ -142,9 +149,6 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| message: <FormattedMessage id="请输入显示顺序!" defaultMessage="请输入显示顺序!" />, | |||
| }, | |||
| ]} | |||
| fieldProps={{ | |||
| defaultValue: 1, | |||
| }} | |||
| /> | |||
| <ProFormRadio.Group | |||
| valueEnum={statusOptions} | |||
| @@ -160,9 +164,6 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| message: <FormattedMessage id="请输入角色状态!" defaultMessage="请输入角色状态!" />, | |||
| }, | |||
| ]} | |||
| fieldProps={{ | |||
| defaultValue: '0', | |||
| }} | |||
| /> | |||
| <ProForm.Item | |||
| name="menuIds" | |||
| @@ -170,6 +171,7 @@ const RoleForm: React.FC<RoleFormProps> = (props) => { | |||
| id: 'system.role.auth', | |||
| defaultMessage: '菜单权限', | |||
| })} | |||
| style={{ width: '100%' }} | |||
| > | |||
| <Tree | |||
| checkable={true} | |||
| @@ -18,19 +18,17 @@ export type TreeProps = { | |||
| const DeptTree: React.FC<TreeProps> = (props) => { | |||
| const [treeData, setTreeData] = useState<any>([]); | |||
| const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]); | |||
| const [autoExpandParent, setAutoExpandParent] = useState<boolean>(true); | |||
| const [selectedKeys, setSelectedKeys] = useState<React.Key[]>([]); | |||
| const fetchDeptList = async () => { | |||
| const hide = message.loading('正在查询'); | |||
| try { | |||
| await getDeptTree({}).then((res: any) => { | |||
| const exKeys = []; | |||
| exKeys.push('1'); | |||
| setTreeData(res); | |||
| exKeys.push(res[0].children[0].id); | |||
| setExpandedKeys(exKeys); | |||
| props.onSelect(res[0].children[0]); | |||
| }); | |||
| const res = await getDeptTree({}); | |||
| const treeData = res.map((item: any) => ({ ...item, key: item.id })); | |||
| setTreeData(treeData); | |||
| props.onSelect(treeData[0]); | |||
| setExpandedKeys([treeData[0].key]); | |||
| setSelectedKeys([treeData[0].key]); | |||
| hide(); | |||
| return true; | |||
| } catch (error) { | |||
| @@ -44,12 +42,12 @@ const DeptTree: React.FC<TreeProps> = (props) => { | |||
| }, []); | |||
| const onSelect = (keys: React.Key[], info: any) => { | |||
| setSelectedKeys(keys); | |||
| props.onSelect(info.node); | |||
| }; | |||
| const onExpand = (expandedKeysValue: React.Key[]) => { | |||
| setExpandedKeys(expandedKeysValue); | |||
| setAutoExpandParent(false); | |||
| const onExpand = (keys: React.Key[]) => { | |||
| setExpandedKeys(keys); | |||
| }; | |||
| return ( | |||
| @@ -58,7 +56,7 @@ const DeptTree: React.FC<TreeProps> = (props) => { | |||
| defaultExpandAll | |||
| onExpand={onExpand} | |||
| expandedKeys={expandedKeys} | |||
| autoExpandParent={autoExpandParent} | |||
| selectedKeys={selectedKeys} | |||
| onSelect={onSelect} | |||
| treeData={treeData} | |||
| /> | |||
| @@ -34,6 +34,15 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| const userId = Form.useWatch('userId', form); | |||
| const { sexOptions, statusOptions } = props; | |||
| const { roles, posts, depts } = props; | |||
| const formLayout = { | |||
| labelCol: { span: 8 }, | |||
| wrapperCol: { span: 16 }, | |||
| }; | |||
| const formItemLayout = { | |||
| labelCol: { span: 4 }, | |||
| wrapperCol: { span: 20 }, | |||
| }; | |||
| useEffect(() => { | |||
| form.resetFields(); | |||
| @@ -42,13 +51,13 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| deptId: props.values.deptId, | |||
| postIds: props.postIds, | |||
| roleIds: props.roleIds, | |||
| userName: props.values.userName, | |||
| userName: props.values.userName ?? '', | |||
| nickName: props.values.nickName, | |||
| email: props.values.email, | |||
| phonenumber: props.values.phonenumber, | |||
| sex: props.values.sex, | |||
| sex: props.values.sex || '0', | |||
| avatar: props.values.avatar, | |||
| status: props.values.status, | |||
| status: props.values.status || Object.keys(statusOptions)[0], | |||
| delFlag: props.values.delFlag, | |||
| loginIp: props.values.loginIp, | |||
| loginDate: props.values.loginDate, | |||
| @@ -69,7 +78,7 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| return ( | |||
| <KFModal | |||
| width={640} | |||
| width={680} | |||
| title={intl.formatMessage({ | |||
| id: 'system.user.title', | |||
| defaultMessage: '编辑用户信息', | |||
| @@ -85,6 +94,10 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| layout="horizontal" | |||
| submitter={false} | |||
| onFinish={handleFinish} | |||
| {...formLayout} | |||
| size="large" | |||
| labelAlign="right" | |||
| autoComplete="off" | |||
| > | |||
| <ProFormText | |||
| name="nickName" | |||
| @@ -132,6 +145,15 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| required: false, | |||
| message: <FormattedMessage id="请输入手机号码!" defaultMessage="请输入手机号码!" />, | |||
| }, | |||
| { | |||
| pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, | |||
| message: ( | |||
| <FormattedMessage | |||
| id="请输入正确的手机号码!" | |||
| defaultMessage="请输入正确的手机号码!" | |||
| /> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| <ProFormText | |||
| @@ -147,6 +169,15 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| required: false, | |||
| message: <FormattedMessage id="请输入用户邮箱!" defaultMessage="请输入用户邮箱!" />, | |||
| }, | |||
| { | |||
| type: 'email', | |||
| message: ( | |||
| <FormattedMessage | |||
| id="请输入正确的邮箱地址!" | |||
| defaultMessage="请输入正确的邮箱地址!" | |||
| /> | |||
| ), | |||
| }, | |||
| ]} | |||
| /> | |||
| <ProFormText | |||
| @@ -158,6 +189,9 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| hidden={userId} | |||
| placeholder="请输入用户账号" | |||
| colProps={{ md: 12, xl: 12 }} | |||
| fieldProps={{ | |||
| autoComplete: 'off', | |||
| }} | |||
| rules={[ | |||
| { | |||
| required: true, | |||
| @@ -173,6 +207,10 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| hidden={userId} | |||
| placeholder="请输入密码" | |||
| colProps={{ md: 12, xl: 12 }} | |||
| fieldProps={{ | |||
| autoComplete: 'new-password', | |||
| }} | |||
| allowClear | |||
| rules={[ | |||
| { | |||
| required: false, | |||
| @@ -187,7 +225,6 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| id: 'system.user.sex', | |||
| defaultMessage: '用户性别', | |||
| })} | |||
| initialValue={'0'} | |||
| placeholder="请输入用户性别" | |||
| colProps={{ md: 12, xl: 12 }} | |||
| rules={[ | |||
| @@ -204,7 +241,6 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| id: 'system.user.status', | |||
| defaultMessage: '帐号状态', | |||
| })} | |||
| initialValue={'0'} | |||
| placeholder="请输入帐号状态" | |||
| colProps={{ md: 12, xl: 12 }} | |||
| rules={[ | |||
| @@ -246,6 +282,7 @@ const UserForm: React.FC<UserFormProps> = (props) => { | |||
| })} | |||
| placeholder="请输入备注" | |||
| colProps={{ md: 24, xl: 24 }} | |||
| {...formItemLayout} | |||
| rules={[ | |||
| { | |||
| required: false, | |||
| @@ -429,6 +429,8 @@ const UserTableList: React.FC = () => { | |||
| ); | |||
| } | |||
| setCurrentRow(undefined); | |||
| setPostIds([]); | |||
| setRoleIds([]); | |||
| setModalVisible(true); | |||
| }} | |||
| > | |||