Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
xiaojuan huang
Ccms
Commits
a47a004f
Commit
a47a004f
authored
3 years ago
by
zhenjintao
Browse files
Options
Download
Email Patches
Plain Diff
feat: 表单项tabs增加required参数
parent
81eb250a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/components/formFields/tabs/index.tsx
+30
-28
src/components/formFields/tabs/index.tsx
with
30 additions
and
28 deletions
+30
-28
src/components/formFields/tabs/index.tsx
+
30
-
28
View file @
a47a004f
import
{
Field
,
FieldConfig
,
FieldConfigs
,
FieldError
,
FieldProps
,
IField
}
from
"
../common
"
;
import
{
Field
,
FieldConfig
,
FieldConfigs
,
FieldError
,
FieldProps
,
IField
}
from
'
../common
'
import
getALLComponents
from
'
../
'
import
React
from
"
react
"
;
import
ConditionHelper
from
"
../../../util/condition
"
;
import
{
cloneDeep
}
from
"
lodash
"
;
import
{
getValue
,
setValue
}
from
"
../../../util/value
"
;
import
React
from
'
react
'
import
ConditionHelper
from
'
../../../util/condition
'
import
{
cloneDeep
}
from
'
lodash
'
import
{
getValue
,
setValue
,
getBoolean
}
from
'
../../../util/value
'
export
type
TabsFieldConfig
=
TabsFieldConfig_Same
|
TabsFieldConfig_Diff
...
...
@@ -33,7 +33,6 @@ export interface ITabsField {
children
:
React
.
ReactNode
[]
}
export
interface
ITabsFieldItem
{
key
:
string
label
:
string
...
...
@@ -43,6 +42,7 @@ export interface ITabsFieldItem {
export
interface
ITabsFieldItemField
{
index
:
number
label
:
string
required
:
boolean
status
:
'
normal
'
|
'
error
'
|
'
loading
'
description
?:
string
message
?:
string
...
...
@@ -80,7 +80,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
}
get
=
async
()
=>
{
let
data
:
any
=
{}
;
let
data
:
any
=
{}
for
(
const
index
in
(
this
.
props
.
config
.
tabs
||
[]))
{
const
tab
=
(
this
.
props
.
config
.
tabs
||
[])[
index
]
...
...
@@ -153,7 +153,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
}
if
(
this
.
formFieldsMountedList
[
index
][
formFieldIndex
])
{
return
true
}
}
this
.
formFieldsMountedList
[
index
][
formFieldIndex
]
=
true
const
tab
=
(
this
.
props
.
config
.
tabs
||
[])[
index
]
...
...
@@ -175,7 +175,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
if
(
source
!==
value
)
{
this
.
props
.
onValueSet
(
fullPath
,
value
,
true
)
}
if
(
value
!==
undefined
)
{
const
validation
=
await
formField
.
validate
(
value
)
if
(
validation
===
true
)
{
...
...
@@ -209,7 +209,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
const
fieldPath
=
formFieldConfig
.
field
===
''
||
path
===
''
?
`
${
formFieldConfig
.
field
}${
path
}
`
:
`
${
formFieldConfig
.
field
}
.
${
path
}
`
const
fullPath
=
tab
.
field
===
''
||
fieldPath
===
''
?
`
${
tab
.
field
}${
fieldPath
}
`
:
`
${
tab
.
field
}
.
${
fieldPath
}
`
await
this
.
props
.
onValueSet
(
fullPath
,
value
,
true
)
const
formDataList
=
cloneDeep
(
this
.
state
.
formDataList
)
if
(
!
formDataList
[
index
])
formDataList
[
index
]
=
[]
if
(
validation
===
true
)
{
...
...
@@ -233,7 +233,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
const
fieldPath
=
formFieldConfig
.
field
===
''
||
path
===
''
?
`
${
formFieldConfig
.
field
}${
path
}
`
:
`
${
formFieldConfig
.
field
}
.
${
path
}
`
const
fullPath
=
tab
.
field
===
''
||
fieldPath
===
''
?
`
${
tab
.
field
}${
fieldPath
}
`
:
`
${
tab
.
field
}
.
${
fieldPath
}
`
await
this
.
props
.
onValueUnset
(
fullPath
,
true
)
const
formDataList
=
cloneDeep
(
this
.
state
.
formDataList
)
if
(
!
formDataList
[
index
])
formDataList
[
index
]
=
[]
if
(
validation
===
true
)
{
...
...
@@ -257,7 +257,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
const
fieldPath
=
formFieldConfig
.
field
===
''
||
path
===
''
?
`
${
formFieldConfig
.
field
}${
path
}
`
:
`
${
formFieldConfig
.
field
}
.
${
path
}
`
const
fullPath
=
tab
.
field
===
''
||
fieldPath
===
''
?
`
${
tab
.
field
}${
fieldPath
}
`
:
`
${
tab
.
field
}
.
${
fieldPath
}
`
await
this
.
props
.
onValueListAppend
(
fullPath
,
value
,
true
)
const
formDataList
=
cloneDeep
(
this
.
state
.
formDataList
)
if
(
!
formDataList
[
index
])
formDataList
[
index
]
=
[]
if
(
validation
===
true
)
{
...
...
@@ -281,7 +281,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
const
fieldPath
=
formFieldConfig
.
field
===
''
||
path
===
''
?
`
${
formFieldConfig
.
field
}${
path
}
`
:
`
${
formFieldConfig
.
field
}
.
${
path
}
`
const
fullPath
=
tab
.
field
===
''
||
fieldPath
===
''
?
`
${
tab
.
field
}${
fieldPath
}
`
:
`
${
tab
.
field
}
.
${
fieldPath
}
`
await
this
.
props
.
onValueListSplice
(
fullPath
,
_index
,
count
,
true
)
const
formDataList
=
cloneDeep
(
this
.
state
.
formDataList
)
if
(
!
formDataList
[
index
])
formDataList
[
index
]
=
[]
if
(
validation
===
true
)
{
...
...
@@ -295,6 +295,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
})
}
}
handleValueListSort
=
async
(
index
:
number
,
formFieldIndex
:
number
,
path
:
string
,
_index
:
number
,
sortType
:
'
up
'
|
'
down
'
,
validation
:
true
|
FieldError
[])
=>
{
const
tab
=
(
this
.
props
.
config
.
tabs
||
[])[
index
]
...
...
@@ -304,7 +305,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
const
fieldPath
=
formFieldConfig
.
field
===
''
||
path
===
''
?
`
${
formFieldConfig
.
field
}${
path
}
`
:
`
${
formFieldConfig
.
field
}
.
${
path
}
`
const
fullPath
=
tab
.
field
===
''
||
fieldPath
===
''
?
`
${
tab
.
field
}${
fieldPath
}
`
:
`
${
tab
.
field
}
.
${
fieldPath
}
`
await
this
.
props
.
onValueListSort
(
fullPath
,
_index
,
sortType
,
true
)
const
formDataList
=
cloneDeep
(
this
.
state
.
formDataList
)
if
(
!
formDataList
[
index
])
formDataList
[
index
]
=
[]
if
(
validation
===
true
)
{
...
...
@@ -321,8 +322,8 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
/**
* 用于展示子表单组件
* @param _props
* @returns
* @param _props
* @returns
*/
renderComponent
=
(
_props
:
ITabsField
)
=>
{
return
<
React
.
Fragment
>
...
...
@@ -332,25 +333,25 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
/**
* 用于展示子表单组件中的每一个子项
* @param props
* @returns
* @param props
* @returns
*/
renderItemComponent
=
(
props
:
ITabsFieldItem
)
=>
{
return
<
React
.
Fragment
>
return
<
React
.
Fragment
>
您当前使用的UI版本没有实现FormField组件的renderItemComponent方法。
</
React
.
Fragment
>
}
}
/**
/**
* 用于展示子表单组件中的每一子项中的每一个子表单项组件
* @param props
* @returns
* @param props
* @returns
*/
renderItemFieldComponent
=
(
props
:
ITabsFieldItemField
)
=>
{
return
<
React
.
Fragment
>
return
<
React
.
Fragment
>
您当前使用的UI版本没有实现FormField组件的renderItemFieldComponent方法。
</
React
.
Fragment
>
}
}
render
=
()
=>
{
const
{
...
...
@@ -390,9 +391,9 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
hidden
=
true
display
=
false
}
const
FormField
=
this
.
getALLComponents
(
formFieldConfig
.
type
)
||
Field
let
status
=
((
this
.
state
.
formDataList
[
index
]
||
[])[
formFieldIndex
]
||
{}).
status
||
'
normal
'
if
([
'
group
'
,
'
import_subform
'
,
'
object
'
,
'
tabs
'
,
'
form
'
].
some
((
type
)
=>
type
===
formFieldConfig
.
type
))
{
...
...
@@ -408,6 +409,7 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
label
:
formFieldConfig
.
label
,
status
,
message
:
((
this
.
state
.
formDataList
[
index
]
||
[])[
formFieldIndex
]
||
{}).
message
||
''
,
required
:
getBoolean
(
formFieldConfig
.
required
),
layout
:
this
.
props
.
formLayout
,
fieldType
:
formFieldConfig
.
type
,
children
:
(
...
...
@@ -452,4 +454,4 @@ export default class TabsField<S> extends Field<TabsFieldConfig, ITabsField, { [
</
React
.
Fragment
>
)
}
}
\ No newline at end of file
}
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help