mirror of
https://github.com/vbenjs/gf-vben-admin.git
synced 2025-02-02 19:08:40 +08:00
fix: fix form validate error
This commit is contained in:
parent
db0bfc8863
commit
1db72c8fe1
@ -1,3 +1,28 @@
|
|||||||
|
## Wip
|
||||||
|
|
||||||
|
### ⚡ Performance Improvements
|
||||||
|
|
||||||
|
- Menu performance continues to be optimized and smoother
|
||||||
|
- Optimize lazy loading components and examples
|
||||||
|
|
||||||
|
### 🎫 Chores
|
||||||
|
|
||||||
|
- Delete menu background image
|
||||||
|
- Update the version of ʻant-design-vue`to`beta13`
|
||||||
|
- Update `vite` version to `rc.9`
|
||||||
|
- Exception page adjustment
|
||||||
|
- `BasicTitle` Color blocks are not displayed by default
|
||||||
|
|
||||||
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
- Fix table type problem after upgrade
|
||||||
|
- Fix the problem that the last submenu continues to be displayed when the menu is divided and there is no data in the left menu
|
||||||
|
- Fix the issue of ʻuseMessage` type
|
||||||
|
- Fix the problem that the form item setting `disabled` does not take effect
|
||||||
|
- Fix that ʻuseECharts`can't adapt when`resize`, and an error is reported
|
||||||
|
- Fix that `resize` is not deleted after ʻuseWatermark` is cleared
|
||||||
|
- Fix form verification problem
|
||||||
|
|
||||||
## 2.0.0-rc.8 (2020-11-2)
|
## 2.0.0-rc.8 (2020-11-2)
|
||||||
|
|
||||||
### ✨ Features
|
### ✨ Features
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
- 更新`ant-design-vue`版本为`beta13`
|
- 更新`ant-design-vue`版本为`beta13`
|
||||||
- 更新`vite`版本为`rc.9`
|
- 更新`vite`版本为`rc.9`
|
||||||
- 异常页调整
|
- 异常页调整
|
||||||
- `BasicTitle` Color blocks are not displayed by default
|
- `BasicTitle` 色块默认不显示
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
@ -21,6 +21,7 @@
|
|||||||
- 修复表单项设置`disabled`不生效问题
|
- 修复表单项设置`disabled`不生效问题
|
||||||
- 修复`useECharts`在`resize`时不能自适应,报错
|
- 修复`useECharts`在`resize`时不能自适应,报错
|
||||||
- 修复`useWatermark`在清空后`resize`未删除
|
- 修复`useWatermark`在清空后`resize`未删除
|
||||||
|
- 修复表单校验问题
|
||||||
|
|
||||||
## 2.0.0-rc.8 (2020-11-2)
|
## 2.0.0-rc.8 (2020-11-2)
|
||||||
|
|
||||||
|
@ -28,16 +28,7 @@
|
|||||||
import type { Ref } from 'vue';
|
import type { Ref } from 'vue';
|
||||||
import type { ValidateFields } from 'ant-design-vue/lib/form/interface';
|
import type { ValidateFields } from 'ant-design-vue/lib/form/interface';
|
||||||
|
|
||||||
import {
|
import { defineComponent, reactive, ref, computed, unref, toRef, onMounted, watch } from 'vue';
|
||||||
defineComponent,
|
|
||||||
reactive,
|
|
||||||
ref,
|
|
||||||
computed,
|
|
||||||
unref,
|
|
||||||
toRef,
|
|
||||||
onMounted,
|
|
||||||
watchEffect,
|
|
||||||
} from 'vue';
|
|
||||||
import { Form, Row } from 'ant-design-vue';
|
import { Form, Row } from 'ant-design-vue';
|
||||||
import FormItem from './FormItem';
|
import FormItem from './FormItem';
|
||||||
import { basicProps } from './props';
|
import { basicProps } from './props';
|
||||||
@ -153,10 +144,16 @@
|
|||||||
actionState,
|
actionState,
|
||||||
});
|
});
|
||||||
|
|
||||||
watchEffect(() => {
|
watch(
|
||||||
if (!unref(getMergePropsRef).model) return;
|
() => unref(getMergePropsRef).model,
|
||||||
setFieldsValue(unref(getMergePropsRef).model);
|
() => {
|
||||||
});
|
if (!unref(getMergePropsRef).model) return;
|
||||||
|
setFieldsValue(unref(getMergePropsRef).model);
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description:设置表单
|
* @description:设置表单
|
||||||
|
@ -14,6 +14,8 @@ import { createPlaceholderMessage } from './helper';
|
|||||||
import { upperFirst, cloneDeep } from 'lodash-es';
|
import { upperFirst, cloneDeep } from 'lodash-es';
|
||||||
|
|
||||||
import { useItemLabelWidth } from './hooks/useLabelWidth';
|
import { useItemLabelWidth } from './hooks/useLabelWidth';
|
||||||
|
import { ComponentType } from './types';
|
||||||
|
import { isNumber } from '../../../utils/is';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'BasicFormItem',
|
name: 'BasicFormItem',
|
||||||
@ -145,6 +147,14 @@ export default defineComponent({
|
|||||||
return rules;
|
return rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleValue(component: ComponentType, field: string) {
|
||||||
|
const val = (props.formModel as any)[field];
|
||||||
|
if (['Input', 'InputPassword', 'InputSearch', 'InputTextArea'].includes(component)) {
|
||||||
|
return isNumber(val) && val ? `${val}` : val;
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
function renderComponent() {
|
function renderComponent() {
|
||||||
const {
|
const {
|
||||||
componentProps,
|
componentProps,
|
||||||
@ -162,11 +172,7 @@ export default defineComponent({
|
|||||||
if (propsData[eventKey]) {
|
if (propsData[eventKey]) {
|
||||||
propsData[eventKey](e);
|
propsData[eventKey](e);
|
||||||
}
|
}
|
||||||
if (e && e.target) {
|
(props.formModel as any)[field] = e && e.target ? e.target.value : e;
|
||||||
(props.formModel as any)[field] = e.target.value;
|
|
||||||
} else {
|
|
||||||
(props.formModel as any)[field] = e;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const Comp = componentMap.get(component);
|
const Comp = componentMap.get(component);
|
||||||
@ -190,9 +196,8 @@ export default defineComponent({
|
|||||||
propsData.placeholder = placeholder;
|
propsData.placeholder = placeholder;
|
||||||
propsData.codeField = field;
|
propsData.codeField = field;
|
||||||
propsData.formValues = unref(getValuesRef);
|
propsData.formValues = unref(getValuesRef);
|
||||||
|
|
||||||
const bindValue = {
|
const bindValue = {
|
||||||
[isCheck ? 'checked' : 'value']: (props.formModel as any)[field],
|
[isCheck ? 'checked' : 'value']: handleValue(component, field),
|
||||||
};
|
};
|
||||||
if (!renderComponentContent) {
|
if (!renderComponentContent) {
|
||||||
return <Comp {...propsData} {...on} {...bindValue} />;
|
return <Comp {...propsData} {...on} {...bindValue} />;
|
||||||
|
@ -43,8 +43,6 @@ export function useFormAction({
|
|||||||
Object.keys(formModel).forEach((key) => {
|
Object.keys(formModel).forEach((key) => {
|
||||||
(formModel as any)[key] = defaultValueRef.value[key];
|
(formModel as any)[key] = defaultValueRef.value[key];
|
||||||
});
|
});
|
||||||
// @ts-ignore
|
|
||||||
// TODO 官方组件库类型定义错误,可以不传参数
|
|
||||||
formEl.clearValidate();
|
formEl.clearValidate();
|
||||||
emit('reset', toRaw(formModel));
|
emit('reset', toRaw(formModel));
|
||||||
// return values;
|
// return values;
|
||||||
@ -58,10 +56,12 @@ export function useFormAction({
|
|||||||
const fields = unref(getSchema)
|
const fields = unref(getSchema)
|
||||||
.map((item) => item.field)
|
.map((item) => item.field)
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
const formEl = unref(formElRef);
|
// const formEl = unref(formElRef);
|
||||||
|
|
||||||
|
const validKeys: string[] = [];
|
||||||
Object.keys(values).forEach((key) => {
|
Object.keys(values).forEach((key) => {
|
||||||
const element = values[key];
|
const element = values[key];
|
||||||
if (fields.includes(key) && element !== undefined && element !== null) {
|
if (element !== undefined && element !== null && fields.includes(key)) {
|
||||||
// 时间
|
// 时间
|
||||||
if (itemIsDateType(key)) {
|
if (itemIsDateType(key)) {
|
||||||
if (Array.isArray(element)) {
|
if (Array.isArray(element)) {
|
||||||
@ -76,11 +76,12 @@ export function useFormAction({
|
|||||||
} else {
|
} else {
|
||||||
(formModel as any)[key] = element;
|
(formModel as any)[key] = element;
|
||||||
}
|
}
|
||||||
if (formEl) {
|
validKeys.push(key);
|
||||||
formEl.validateFields([key]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// if (formEl) {
|
||||||
|
// formEl.validateFields(validKeys);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @description: 根据字段名删除
|
* @description: 根据字段名删除
|
||||||
@ -151,8 +152,8 @@ export function useFormAction({
|
|||||||
updateData.forEach((item) => {
|
updateData.forEach((item) => {
|
||||||
unref(getSchema).forEach((val) => {
|
unref(getSchema).forEach((val) => {
|
||||||
if (val.field === item.field) {
|
if (val.field === item.field) {
|
||||||
const newScheam = deepMerge(val, item);
|
const newSchema = deepMerge(val, item);
|
||||||
schema.push(newScheam as FormSchema);
|
schema.push(newSchema as FormSchema);
|
||||||
} else {
|
} else {
|
||||||
schema.push(val);
|
schema.push(val);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user