Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ChenSun1
vue-vben-admin
提交
3de5b53b
V
vue-vben-admin
项目概览
ChenSun1
/
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,发现更多精彩内容 >>
未验证
提交
3de5b53b
编写于
3月 14, 2023
作者:
L
lzdjack
提交者:
GitHub
3月 14, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 修复表单验证 (#2620)
1.优化验证 2.修复自定义组件验证出错的问题
上级
d7f5dfeb
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
44 addition
and
11 deletion
+44
-11
src/components/Form/src/BasicForm.vue
src/components/Form/src/BasicForm.vue
+3
-7
src/components/Form/src/components/FormItem.vue
src/components/Form/src/components/FormItem.vue
+14
-1
src/components/Form/src/helper.ts
src/components/Form/src/helper.ts
+13
-0
src/hooks/component/useFormItem.ts
src/hooks/component/useFormItem.ts
+1
-3
src/views/demo/form/index.vue
src/views/demo/form/index.vue
+13
-0
未找到文件。
src/components/Form/src/BasicForm.vue
浏览文件 @
3de5b53b
...
...
@@ -64,7 +64,6 @@
import
{
basicProps
}
from
'
./props
'
;
import
{
useDesign
}
from
'
/@/hooks/web/useDesign
'
;
import
{
cloneDeep
}
from
'
lodash-es
'
;
import
{
isFunction
,
isArray
}
from
'
/@/utils/is
'
;
export
default
defineComponent
({
name
:
'
BasicForm
'
,
...
...
@@ -245,14 +244,11 @@
function
setFormModel
(
key
:
string
,
value
:
any
,
schema
:
FormSchema
)
{
formModel
[
key
]
=
value
;
const
{
validateTrigger
}
=
unref
(
getBindValue
);
if
(
isFunction
(
schema
.
dynamicRules
)
||
isArray
(
schema
.
rules
))
{
return
;
}
if
(
!
validateTrigger
||
validateTrigger
===
'
change
'
)
{
emit
(
'
field-value-change
'
,
key
,
value
);
// TODO 优化验证,这里如果是autoLink=false手动关联的情况下才会再次触发此函数
if
(
schema
&&
schema
.
itemProps
&&
!
schema
.
itemProps
.
autoLink
)
{
validateFields
([
key
]).
catch
((
_
)
=>
{});
}
emit
(
'
field-value-change
'
,
key
,
value
);
}
function
handleEnterPress
(
e
:
KeyboardEvent
)
{
...
...
src/components/Form/src/components/FormItem.vue
浏览文件 @
3de5b53b
...
...
@@ -9,7 +9,11 @@
import
{
BasicHelp
}
from
'
/@/components/Basic
'
;
import
{
isBoolean
,
isFunction
,
isNull
}
from
'
/@/utils/is
'
;
import
{
getSlot
}
from
'
/@/utils/helper/tsxHelper
'
;
import
{
createPlaceholderMessage
,
setComponentRuleType
}
from
'
../helper
'
;
import
{
createPlaceholderMessage
,
NO_AUTO_LINK_COMPONENTS
,
setComponentRuleType
,
}
from
'
../helper
'
;
import
{
cloneDeep
,
upperFirst
}
from
'
lodash-es
'
;
import
{
useItemLabelWidth
}
from
'
../hooks/useLabelWidth
'
;
import
{
useI18n
}
from
'
/@/hooks/web/useI18n
'
;
...
...
@@ -347,6 +351,15 @@
const
showSuffix
=
!!
suffix
;
const
getSuffix
=
isFunction
(
suffix
)
?
suffix
(
unref
(
getValues
))
:
suffix
;
// TODO 自定义组件验证会出现问题,因此这里框架默认将自定义组件设置手动触发验证,如果其他组件还有此问题请手动设置autoLink=false
if
(
NO_AUTO_LINK_COMPONENTS
.
includes
(
component
))
{
props
.
schema
&&
(
props
.
schema
.
itemProps
!
=
{
autoLink
:
false
,
...
props
.
schema
.
itemProps
,
});
}
return
(
<
Form
.
Item
name
=
{
field
}
...
...
src/components/Form/src/helper.ts
浏览文件 @
3de5b53b
...
...
@@ -72,3 +72,16 @@ export function handleInputNumberValue(component?: ComponentType, val?: any) {
export
const
dateItemType
=
genType
();
export
const
defaultValueComponents
=
[
'
Input
'
,
'
InputPassword
'
,
'
InputSearch
'
,
'
InputTextArea
'
];
// TODO 自定义组件封装会出现验证问题,因此这里目前改成手动触发验证
export
const
NO_AUTO_LINK_COMPONENTS
:
ComponentType
[]
=
[
'
Upload
'
,
'
ApiTransfer
'
,
'
ApiTree
'
,
'
ApiSelect
'
,
'
ApiTreeSelect
'
,
'
ApiRadioGroup
'
,
'
ApiCascader
'
,
'
AutoComplete
'
,
'
RadioButtonGroup
'
,
];
src/hooks/component/useFormItem.ts
浏览文件 @
3de5b53b
...
...
@@ -41,9 +41,7 @@ export function useRuleFormItem<T extends Recordable>(
if
(
isEqual
(
value
,
defaultState
.
value
))
return
;
innerState
.
value
=
value
as
T
[
keyof
T
];
setTimeout
(()
=>
{
emit
?.(
changeEvent
,
value
,
...(
toRaw
(
unref
(
emitData
))
||
[]));
});
emit
?.(
changeEvent
,
value
,
...(
toRaw
(
unref
(
emitData
))
||
[]));
},
});
...
...
src/views/demo/form/index.vue
浏览文件 @
3de5b53b
...
...
@@ -68,6 +68,7 @@
import
{
Select
}
from
'
ant-design-vue
'
;
import
{
cloneDeep
}
from
'
lodash-es
'
;
import
{
areaRecord
}
from
'
/@/api/demo/cascader
'
;
import
{
uploadApi
}
from
'
/@/api/sys/upload
'
;
const
valueSelectA
=
ref
<
string
[]
>
([]);
const
valueSelectB
=
ref
<
string
[]
>
([]);
...
...
@@ -189,6 +190,18 @@
},
suffix
:
'
天
'
,
},
{
field
:
'
fieldsc
'
,
component
:
'
Upload
'
,
label
:
'
上传
'
,
colProps
:
{
span
:
8
,
},
rules
:
[{
required
:
true
,
message
:
'
请选择上传文件
'
}],
componentProps
:
{
api
:
uploadApi
,
},
},
{
field
:
'
field3
'
,
component
:
'
DatePicker
'
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录