|
@@ -1,6 +1,6 @@
|
|
|
import { queryTemplateList } from '@/services/api/schema'
|
|
|
import { PageContainer } from '@ant-design/pro-layout'
|
|
|
-import React, { useEffect, useState } from 'react'
|
|
|
+import React, { useEffect, useMemo, useState } from 'react'
|
|
|
import { history, useRequest, connect, useDispatch } from '@umijs/max'
|
|
|
import { createForm } from '@formily/core'
|
|
|
import { createSchemaField } from '@formily/react'
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
} from '@formily/antd'
|
|
|
import { Button } from 'antd'
|
|
|
import LeftMenu from '../Base/components/LeftMenu'
|
|
|
+import { isString } from '@/utils/is'
|
|
|
|
|
|
type iState = {
|
|
|
menuData?: API.TemplateListItem[]
|
|
@@ -51,31 +52,43 @@ const Budget: React.FC = () => {
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
- const onSelect = (key: string) => {
|
|
|
- setState({ ...state, activeID: key })
|
|
|
- }
|
|
|
|
|
|
- const form = createForm({
|
|
|
- initialValues: {},
|
|
|
- effects() {}
|
|
|
- })
|
|
|
- const SchemaField = createSchemaField({
|
|
|
- components: {
|
|
|
- FormLayout,
|
|
|
- FormItem,
|
|
|
- FormGrid,
|
|
|
- Input,
|
|
|
- Switch,
|
|
|
- Select,
|
|
|
- Radio,
|
|
|
- Checkbox,
|
|
|
- NumberPicker,
|
|
|
- Password,
|
|
|
- DatePicker,
|
|
|
- TimePicker,
|
|
|
- TreeSelect
|
|
|
+ const currentSchema = useMemo(() => {
|
|
|
+ const schema = state.menuData?.find(item => item.action === state.activeKey)?.schema
|
|
|
+ if (schema && isString(schema)) {
|
|
|
+ return JSON.parse(schema)
|
|
|
}
|
|
|
- })
|
|
|
+ return {}
|
|
|
+ }, [state.activeKey])
|
|
|
+ const renderForm = () => {
|
|
|
+ const normalForm = createForm({
|
|
|
+ validateFirst: true,
|
|
|
+ pattern: 'readOnly'
|
|
|
+ })
|
|
|
+
|
|
|
+ const SchemaField = createSchemaField({
|
|
|
+ components: {
|
|
|
+ FormLayout,
|
|
|
+ FormItem,
|
|
|
+ FormGrid,
|
|
|
+ Input,
|
|
|
+ Switch,
|
|
|
+ Select,
|
|
|
+ Radio,
|
|
|
+ Checkbox,
|
|
|
+ NumberPicker,
|
|
|
+ Password,
|
|
|
+ DatePicker,
|
|
|
+ TimePicker,
|
|
|
+ TreeSelect
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return (
|
|
|
+ <Form form={normalForm} labelCol={4} wrapperCol={8}>
|
|
|
+ <SchemaField schema={currentSchema} />
|
|
|
+ </Form>
|
|
|
+ )
|
|
|
+ }
|
|
|
|
|
|
return (
|
|
|
<PageContainer title={false}>
|
|
@@ -97,11 +110,7 @@ const Budget: React.FC = () => {
|
|
|
</Button>
|
|
|
)}
|
|
|
</div>
|
|
|
- <div className="w-600px">
|
|
|
- <Form form={form} labelCol={8}>
|
|
|
- <SchemaField />
|
|
|
- </Form>
|
|
|
- </div>
|
|
|
+ <div className="w-600px">{renderForm()}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</PageContainer>
|