|
@@ -1,8 +1,8 @@
|
|
-import { forwardRef, memo, useEffect, useImperativeHandle, useState } from 'react'
|
|
|
|
|
|
+import { forwardRef, memo, useEffect, useImperativeHandle, useRef, useState } from 'react'
|
|
import { cloneDeep } from 'lodash-es'
|
|
import { cloneDeep } from 'lodash-es'
|
|
import { getTenantApply, ITenantApplyInfo } from '@/api/services/riskcontrol/declare'
|
|
import { getTenantApply, ITenantApplyInfo } from '@/api/services/riskcontrol/declare'
|
|
import { orderStateMap } from './constants/orderState'
|
|
import { orderStateMap } from './constants/orderState'
|
|
-import DynamicForm from './components/DynamicForm'
|
|
|
|
|
|
+import DynamicForm, { DynamicFormRef } from './components/DynamicForm'
|
|
|
|
|
|
export interface FormParseRef {}
|
|
export interface FormParseRef {}
|
|
|
|
|
|
@@ -15,8 +15,8 @@ interface FormParseProps {
|
|
expiry?: string
|
|
expiry?: string
|
|
isExpiry?: boolean
|
|
isExpiry?: boolean
|
|
className?: string
|
|
className?: string
|
|
- onFormDataChange: (data: Record<string, any>) => void
|
|
|
|
- onFormRuleChange: (rule: any) => void
|
|
|
|
|
|
+ setFormData: (data: Record<string, any>) => void
|
|
|
|
+ setFormRule: (rule: any) => void
|
|
}
|
|
}
|
|
|
|
|
|
const checkStateMap = {
|
|
const checkStateMap = {
|
|
@@ -36,8 +36,8 @@ const FormParse = memo(
|
|
state,
|
|
state,
|
|
expiry,
|
|
expiry,
|
|
isExpiry,
|
|
isExpiry,
|
|
- onFormDataChange,
|
|
|
|
- onFormRuleChange
|
|
|
|
|
|
+ setFormData,
|
|
|
|
+ setFormRule
|
|
},
|
|
},
|
|
ref
|
|
ref
|
|
) => {
|
|
) => {
|
|
@@ -91,7 +91,7 @@ const FormParse = memo(
|
|
formItemsCopy?.forEach((item) => {
|
|
formItemsCopy?.forEach((item) => {
|
|
// 初始化数据
|
|
// 初始化数据
|
|
if (item.itemStruct?.type === 'FILE_PICKER') {
|
|
if (item.itemStruct?.type === 'FILE_PICKER') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
? item.itemDeli.map((deli) => ({
|
|
? item.itemDeli.map((deli) => ({
|
|
@@ -106,7 +106,7 @@ const FormParse = memo(
|
|
: []
|
|
: []
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'INVOICE_PICKER') {
|
|
} else if (item.itemStruct?.type === 'INVOICE_PICKER') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
? item.itemDeli.map((deli) => ({
|
|
? item.itemDeli.map((deli) => ({
|
|
@@ -121,7 +121,7 @@ const FormParse = memo(
|
|
: []
|
|
: []
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'FINANCE_PICKER') {
|
|
} else if (item.itemStruct?.type === 'FINANCE_PICKER') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
? item.itemDeli.map((deli) => ({
|
|
? item.itemDeli.map((deli) => ({
|
|
@@ -136,27 +136,27 @@ const FormParse = memo(
|
|
: []
|
|
: []
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'INPUT') {
|
|
} else if (item.itemStruct?.type === 'INPUT') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'NUMBER_INPUT') {
|
|
} else if (item.itemStruct?.type === 'NUMBER_INPUT') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'AMOUNT_INPUT') {
|
|
} else if (item.itemStruct?.type === 'AMOUNT_INPUT') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'RADIO') {
|
|
} else if (item.itemStruct?.type === 'RADIO') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length ? item.itemDeli[0].value : ''
|
|
}))
|
|
}))
|
|
} else if (item.itemStruct?.type === 'SELECT') {
|
|
} else if (item.itemStruct?.type === 'SELECT') {
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
? item.itemDeli[0].value
|
|
? item.itemDeli[0].value
|
|
@@ -168,7 +168,7 @@ const FormParse = memo(
|
|
const isRangeType = ['DATERANGE', 'DATETIMERANGE'].includes(
|
|
const isRangeType = ['DATERANGE', 'DATETIMERANGE'].includes(
|
|
(item.itemStruct.expand as API.FD_COM['DATETIME_PICKER']).dateType
|
|
(item.itemStruct.expand as API.FD_COM['DATETIME_PICKER']).dateType
|
|
)
|
|
)
|
|
- onFormDataChange((prev: Record<string, any>) => ({
|
|
|
|
|
|
+ setFormData((prev: Record<string, any>) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
[item.itemStruct!.widgetId!]: item.itemDeli?.length
|
|
? item.itemDeli[0].value
|
|
? item.itemDeli[0].value
|
|
@@ -311,14 +311,14 @@ const FormParse = memo(
|
|
})
|
|
})
|
|
})
|
|
})
|
|
if (Array.isArray(formRule![item.itemStruct!.widgetId!]) && disabled) {
|
|
if (Array.isArray(formRule![item.itemStruct!.widgetId!]) && disabled) {
|
|
- onFormRuleChange((prev: any) => ({
|
|
|
|
|
|
+ setFormRule((prev: any) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: [
|
|
[item.itemStruct!.widgetId!]: [
|
|
...((formRule![item.itemStruct!.widgetId!] as []) || [])
|
|
...((formRule![item.itemStruct!.widgetId!] as []) || [])
|
|
]
|
|
]
|
|
}))
|
|
}))
|
|
} else {
|
|
} else {
|
|
- onFormRuleChange((prev: any) => ({
|
|
|
|
|
|
+ setFormRule((prev: any) => ({
|
|
...prev,
|
|
...prev,
|
|
[item.itemStruct!.widgetId!]: rules as any
|
|
[item.itemStruct!.widgetId!]: rules as any
|
|
}))
|
|
}))
|
|
@@ -331,6 +331,8 @@ const FormParse = memo(
|
|
initFn()
|
|
initFn()
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
|
|
+ const DynamicFormInstanceRef = useRef<DynamicFormRef>(null)
|
|
|
|
+
|
|
return (
|
|
return (
|
|
<div>
|
|
<div>
|
|
{state && (
|
|
{state && (
|
|
@@ -390,7 +392,15 @@ const FormParse = memo(
|
|
<span className='ml-20 break-all'>原因说明:{declFormData?.remarks || '-'}</span>
|
|
<span className='ml-20 break-all'>原因说明:{declFormData?.remarks || '-'}</span>
|
|
</div>
|
|
</div>
|
|
{/* 动态生成表单 */}
|
|
{/* 动态生成表单 */}
|
|
- {isInited && <DynamicForm formItems={formItemsCopy} />}
|
|
|
|
|
|
+ {isInited && (
|
|
|
|
+ <DynamicForm
|
|
|
|
+ ref={DynamicFormInstanceRef}
|
|
|
|
+ formItems={formItemsCopy}
|
|
|
|
+ formData={formData}
|
|
|
|
+ setFormData={setFormData}
|
|
|
|
+ disabled={disabled}
|
|
|
|
+ />
|
|
|
|
+ )}
|
|
</div>
|
|
</div>
|
|
)
|
|
)
|
|
}
|
|
}
|