Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
啊嘞嘞EC
vue-vben-admin
提交
1b30834e
V
vue-vben-admin
项目概览
啊嘞嘞EC
/
vue-vben-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-vben-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
1b30834e
编写于
3月 29, 2023
作者:
O
oooplz
提交者:
GitHub
3月 29, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 解构字段设置value (#2648)
上级
c5f97b9d
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
9 deletion
+53
-9
src/components/Form/src/hooks/useFormEvents.ts
src/components/Form/src/hooks/useFormEvents.ts
+53
-9
未找到文件。
src/components/Form/src/hooks/useFormEvents.ts
浏览文件 @
1b30834e
...
@@ -14,7 +14,7 @@ import {
...
@@ -14,7 +14,7 @@ import {
import
{
deepMerge
}
from
'
/@/utils
'
;
import
{
deepMerge
}
from
'
/@/utils
'
;
import
{
dateItemType
,
handleInputNumberValue
,
defaultValueComponents
}
from
'
../helper
'
;
import
{
dateItemType
,
handleInputNumberValue
,
defaultValueComponents
}
from
'
../helper
'
;
import
{
dateUtil
}
from
'
/@/utils/dateUtil
'
;
import
{
dateUtil
}
from
'
/@/utils/dateUtil
'
;
import
{
cloneDeep
,
uniqBy
}
from
'
lodash-es
'
;
import
{
cloneDeep
,
set
,
uniqBy
}
from
'
lodash-es
'
;
import
{
error
}
from
'
/@/utils/log
'
;
import
{
error
}
from
'
/@/utils/log
'
;
interface
UseFormActionContext
{
interface
UseFormActionContext
{
...
@@ -27,6 +27,47 @@ interface UseFormActionContext {
...
@@ -27,6 +27,47 @@ interface UseFormActionContext {
schemaRef
:
Ref
<
FormSchema
[]
>
;
schemaRef
:
Ref
<
FormSchema
[]
>
;
handleFormValues
:
Fn
;
handleFormValues
:
Fn
;
}
}
function
tryConstructArray
(
field
:
string
,
values
:
Recordable
=
{}):
any
[]
|
undefined
{
const
pattern
=
/^
\[(
.+
)\]
$/
;
if
(
pattern
.
test
(
field
))
{
const
match
=
field
.
match
(
pattern
);
if
(
match
&&
match
[
1
])
{
const
keys
=
match
[
1
].
split
(
'
,
'
);
if
(
!
keys
.
length
)
{
return
undefined
;
}
const
result
=
[];
keys
.
forEach
((
k
,
index
)
=>
{
set
(
result
,
index
,
values
[
k
.
trim
()]);
});
return
result
.
length
?
result
:
undefined
;
}
}
}
function
tryConstructObject
(
field
:
string
,
values
:
Recordable
=
{}):
Recordable
|
undefined
{
const
pattern
=
/^
\{(
.+
)\}
$/
;
if
(
pattern
.
test
(
field
))
{
const
match
=
field
.
match
(
pattern
);
if
(
match
&&
match
[
1
])
{
const
keys
=
match
[
1
].
split
(
'
,
'
);
if
(
!
keys
.
length
)
{
return
;
}
const
result
=
{};
keys
.
forEach
((
k
)
=>
{
set
(
result
,
k
.
trim
(),
values
[
k
.
trim
()]);
});
return
Object
.
values
(
result
).
filter
(
Boolean
).
length
?
result
:
undefined
;
}
}
}
export
function
useFormEvents
({
export
function
useFormEvents
({
emit
,
emit
,
getProps
,
getProps
,
...
@@ -69,7 +110,7 @@ export function useFormEvents({
...
@@ -69,7 +110,7 @@ export function useFormEvents({
const
nestKeyArray
=
fields
.
filter
((
item
)
=>
String
(
item
).
indexOf
(
delimiter
)
>=
0
);
const
nestKeyArray
=
fields
.
filter
((
item
)
=>
String
(
item
).
indexOf
(
delimiter
)
>=
0
);
const
validKeys
:
string
[]
=
[];
const
validKeys
:
string
[]
=
[];
Object
.
keys
(
values
)
.
forEach
((
key
)
=>
{
fields
.
forEach
((
key
)
=>
{
const
schema
=
unref
(
getSchema
).
find
((
item
)
=>
item
.
field
===
key
);
const
schema
=
unref
(
getSchema
).
find
((
item
)
=>
item
.
field
===
key
);
let
value
=
values
[
key
];
let
value
=
values
[
key
];
...
@@ -81,24 +122,28 @@ export function useFormEvents({
...
@@ -81,24 +122,28 @@ export function useFormEvents({
if
(
typeof
componentProps
===
'
function
'
)
{
if
(
typeof
componentProps
===
'
function
'
)
{
_props
=
_props
({
formModel
:
unref
(
formModel
)
});
_props
=
_props
({
formModel
:
unref
(
formModel
)
});
}
}
const
constructValue
=
tryConstructArray
(
key
,
values
)
||
tryConstructObject
(
key
,
values
);
// 0| '' is allow
// 0| '' is allow
if
(
hasKey
&&
fields
.
includes
(
key
))
{
if
(
hasKey
||
!!
constructValue
)
{
const
fieldValue
=
constructValue
||
value
;
// time type
// time type
if
(
itemIsDateType
(
key
))
{
if
(
itemIsDateType
(
key
))
{
if
(
Array
.
isArray
(
v
alue
))
{
if
(
Array
.
isArray
(
fieldV
alue
))
{
const
arr
:
any
[]
=
[];
const
arr
:
any
[]
=
[];
for
(
const
ele
of
v
alue
)
{
for
(
const
ele
of
fieldV
alue
)
{
arr
.
push
(
ele
?
dateUtil
(
ele
)
:
null
);
arr
.
push
(
ele
?
dateUtil
(
ele
)
:
null
);
}
}
unref
(
formModel
)[
key
]
=
arr
;
unref
(
formModel
)[
key
]
=
arr
;
}
else
{
}
else
{
unref
(
formModel
)[
key
]
=
value
?
(
_props
?.
valueFormat
?
value
:
dateUtil
(
v
alue
))
:
null
;
unref
(
formModel
)[
key
]
=
fieldValue
?
(
_props
?.
valueFormat
?
fieldValue
:
dateUtil
(
fieldV
alue
))
:
null
;
}
}
}
else
{
}
else
{
unref
(
formModel
)[
key
]
=
v
alue
;
unref
(
formModel
)[
key
]
=
fieldV
alue
;
}
}
if
(
_props
?.
onChange
)
{
if
(
_props
?.
onChange
)
{
_props
?.
onChange
(
v
alue
);
_props
?.
onChange
(
fieldV
alue
);
}
}
validKeys
.
push
(
key
);
validKeys
.
push
(
key
);
}
else
{
}
else
{
...
@@ -335,4 +380,3 @@ export function useFormEvents({
...
@@ -335,4 +380,3 @@ export function useFormEvents({
setFieldsValue
,
setFieldsValue
,
scrollToField
,
scrollToField
,
};
};
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录