| @@ -149,6 +149,11 @@ ol { | |||
| z-index: 999; | |||
| } | |||
| .kf-table-row-link:hover { | |||
| text-decoration: underline @underline-color; | |||
| text-underline-offset: 3px; | |||
| } | |||
| input:-webkit-autofill { | |||
| transition: background-color 5000s ease-in-out 0s; | |||
| } | |||
| @@ -128,7 +128,7 @@ function ResourceVersion({ | |||
| dataIndex: 'index', | |||
| key: 'index', | |||
| width: 80, | |||
| render(text: string, record: ResourceFileData, index: number) { | |||
| render(_text: string, _record: ResourceFileData, index: number) { | |||
| return <span>{index + 1}</span>; | |||
| }, | |||
| }, | |||
| @@ -137,7 +137,9 @@ function ResourceVersion({ | |||
| dataIndex: 'file_name', | |||
| key: 'file_name', | |||
| render: (text: string, record: ResourceFileData) => ( | |||
| <a onClick={() => downloadAlone(record)}>{text}</a> | |||
| <a className="kf-table-row-link" onClick={() => downloadAlone(record)}> | |||
| {text} | |||
| </a> | |||
| ), | |||
| }, | |||
| { | |||
| @@ -154,7 +154,9 @@ function EditorList() { | |||
| width: '30%', | |||
| render: (text, record) => | |||
| record.url ? ( | |||
| <a onClick={(e) => gotoEditorPage(e, record)}>{text}</a> | |||
| <a className="kf-table-row-link" onClick={(e) => gotoEditorPage(e, record)}> | |||
| {text} | |||
| </a> | |||
| ) : ( | |||
| <span>{text ?? '--'}</span> | |||
| ), | |||
| @@ -33,7 +33,7 @@ | |||
| } | |||
| .operation { | |||
| width: 334px; | |||
| width: 344px; | |||
| } | |||
| } | |||
| @@ -355,7 +355,11 @@ function Experiment() { | |||
| title: '关联流水线名称', | |||
| dataIndex: 'workflow_name', | |||
| key: 'workflow_name', | |||
| render: (text, record) => <a onClick={(e) => gotoPipeline(e, record)}>{text}</a>, | |||
| render: (text, record) => ( | |||
| <a className="kf-table-row-link" onClick={(e) => gotoPipeline(e, record)}> | |||
| {text} | |||
| </a> | |||
| ), | |||
| width: '16%', | |||
| }, | |||
| { | |||
| @@ -393,7 +397,7 @@ function Experiment() { | |||
| { | |||
| title: '操作', | |||
| key: 'action', | |||
| width: 350, | |||
| width: 360, | |||
| render: (_, record) => ( | |||
| <Space size="small"> | |||
| <Button | |||
| @@ -50,6 +50,10 @@ | |||
| flex: 1; | |||
| min-width: 0; | |||
| font-weight: 500; | |||
| &:hover { | |||
| text-decoration: underline @underline-color; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -278,8 +278,8 @@ function ModelDeploymentCreate() { | |||
| message: '请输入副本数量', | |||
| }, | |||
| { | |||
| pattern: /^-?\d+(\.\d+)?$/, | |||
| message: '副本数量必须是数字', | |||
| pattern: /^[1-9]\d*$/, | |||
| message: '副本数量必须是正整数', | |||
| }, | |||
| ]} | |||
| > | |||
| @@ -189,7 +189,11 @@ function ModelDeployment() { | |||
| key: 'service_name', | |||
| width: '20%', | |||
| render: (text, record) => { | |||
| return <a onClick={() => toDetail(record)}>{text}</a>; | |||
| return ( | |||
| <a className="kf-table-row-link" onClick={() => toDetail(record)}> | |||
| {text} | |||
| </a> | |||
| ); | |||
| }, | |||
| }, | |||
| { | |||
| @@ -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" | |||
| @@ -55,17 +55,21 @@ export function createMenuItems( | |||
| }; | |||
| }); | |||
| return [ | |||
| { | |||
| key: 'global', | |||
| label: '全局参数', | |||
| children: params.map((item) => ({ | |||
| key: item.param_name, | |||
| label: item.param_name, | |||
| })), | |||
| }, | |||
| ...nodes, | |||
| ]; | |||
| if (params.length > 0) { | |||
| return [ | |||
| { | |||
| key: 'global', | |||
| label: '全局参数', | |||
| children: params.map((item) => ({ | |||
| key: item.param_name, | |||
| label: item.param_name, | |||
| })), | |||
| }, | |||
| ...nodes, | |||
| ]; | |||
| } else { | |||
| return [...nodes]; | |||
| } | |||
| } | |||
| export function getInParameterComponent( | |||
| @@ -23,18 +23,20 @@ function PropsLabel({ title, menuItems, onClick }: PropsLabelProps) { | |||
| return ( | |||
| <div className={styles['props-label']}> | |||
| <div>{title}</div> | |||
| <Dropdown | |||
| menu={{ | |||
| items: menuItems, | |||
| onClick: handleItemClick, | |||
| triggerSubMenuAction: 'hover', | |||
| }} | |||
| trigger={['click']} | |||
| placement="topRight" | |||
| arrow | |||
| > | |||
| <a onClick={(e) => e.preventDefault()}>参数</a> | |||
| </Dropdown> | |||
| {menuItems && menuItems.length > 0 && ( | |||
| <Dropdown | |||
| menu={{ | |||
| items: menuItems, | |||
| onClick: handleItemClick, | |||
| triggerSubMenuAction: 'hover', | |||
| }} | |||
| trigger={['click']} | |||
| placement="topRight" | |||
| arrow | |||
| > | |||
| <a onClick={(e) => e.preventDefault()}>参数</a> | |||
| </Dropdown> | |||
| )} | |||
| </div> | |||
| ); | |||
| } | |||
| @@ -122,7 +122,11 @@ const Pipeline = () => { | |||
| title: '流水线名称', | |||
| dataIndex: 'name', | |||
| key: 'name', | |||
| render: (text, record) => <a onClick={(e) => routeToEdit(e, record)}>{text}</a>, | |||
| render: (text, record) => ( | |||
| <a className="kf-table-row-link" onClick={(e) => routeToEdit(e, record)}> | |||
| {text} | |||
| </a> | |||
| ), | |||
| }, | |||
| { | |||
| title: '流水线描述', | |||
| @@ -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" | |||
| @@ -171,6 +171,7 @@ const DictTableList: React.FC = () => { | |||
| render: (dom, record) => { | |||
| return ( | |||
| <a | |||
| className="kf-table-row-link" | |||
| onClick={() => { | |||
| history.push(`/system/dict-data/index/${record.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); | |||
| }} | |||
| > | |||
| @@ -81,7 +81,6 @@ const GenCodeView: React.FC = () => { | |||
| { | |||
| title: '编号', | |||
| dataIndex: 'tableId', | |||
| tip: '编号', | |||
| render: (dom, entity) => { | |||
| return ( | |||
| <a | |||
| @@ -16,6 +16,7 @@ | |||
| @warning-color: #f98e1b; | |||
| @abort-color: #8a8a8a; | |||
| @pending-color: #ecb934; | |||
| @underline-color: #5d93ff; | |||
| @border-color: rgba(22, 100, 255, 0.3); | |||
| @border-color-secondary: rgba(22, 100, 255, 0.1); | |||