index.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import { message, Modal } from 'antd';
  2. import { createForm } from '@formily/core';
  3. import { createSchemaField } from '@formily/react';
  4. import { NumberPicker, Form, Input, FormItem } from '@formily/antd';
  5. import { useIntl } from '@@/plugin-locale/localeExports';
  6. import OrgModel from '@/pages/system/Org/model';
  7. import { service } from '@/pages/system/Org';
  8. interface Props {
  9. refresh?: () => void;
  10. visible: boolean;
  11. }
  12. const Save = (props: Props) => {
  13. const intl = useIntl();
  14. const form = createForm({
  15. initialValues: OrgModel.current,
  16. });
  17. const SchemaField = createSchemaField({
  18. components: {
  19. FormItem,
  20. Input,
  21. NumberPicker,
  22. },
  23. });
  24. const schema = {
  25. type: 'object',
  26. properties: {
  27. code: {
  28. title: intl.formatMessage({
  29. id: 'pages.system.org.encoding',
  30. defaultMessage: '编码',
  31. }),
  32. type: 'string',
  33. 'x-decorator': 'FormItem',
  34. 'x-component': 'Input',
  35. name: 'id',
  36. required: true,
  37. },
  38. name: {
  39. title: intl.formatMessage({
  40. id: 'pages.table.name',
  41. defaultMessage: '名称',
  42. }),
  43. type: 'string',
  44. 'x-decorator': 'FormItem',
  45. 'x-component': 'Input',
  46. name: 'name',
  47. required: true,
  48. },
  49. sortIndex: {
  50. title: intl.formatMessage({
  51. id: 'pages.system.org.add.orderNumber',
  52. defaultMessage: '序号',
  53. }),
  54. type: 'string',
  55. 'x-decorator': 'FormItem',
  56. 'x-component': 'NumberPicker',
  57. name: 'name',
  58. required: true,
  59. },
  60. describe: {
  61. title: intl.formatMessage({
  62. id: 'pages.table.describe',
  63. defaultMessage: '描述',
  64. }),
  65. type: 'string',
  66. 'x-decorator': 'FormItem',
  67. 'x-component': 'Input.TextArea',
  68. name: 'describe',
  69. },
  70. },
  71. };
  72. const save = async () => {
  73. const data: Record<string, unknown> = await form.submit!();
  74. await service.update({ ...data, parentId: OrgModel.parentId });
  75. message.success('保存成功');
  76. OrgModel.closeEdit();
  77. props.refresh?.();
  78. };
  79. return (
  80. <Modal
  81. onOk={() => save()}
  82. title={`${OrgModel.parentId ? '添加下级' : '编辑'}`}
  83. visible={props.visible}
  84. onCancel={() => {
  85. OrgModel.closeEdit();
  86. props.refresh?.();
  87. }}
  88. >
  89. <Form form={form} labelCol={5} wrapperCol={16}>
  90. <SchemaField schema={schema} />
  91. </Form>
  92. </Modal>
  93. );
  94. };
  95. export default Save;