From c7cfeb54560972db3e4e30bb27997d3f9343e5ff Mon Sep 17 00:00:00 2001 From: vben Date: Fri, 23 Oct 2020 23:45:21 +0800 Subject: [PATCH] chore: form reset logic modification --- CHANGELOG.zh_CN.md | 1 + src/components/Form/src/BasicForm.vue | 8 ++--- src/components/Form/src/FormItem.tsx | 15 +++++++++- src/layouts/default/multitabs/index.tsx | 39 +++++++++++++------------ src/views/demo/table/tableData.tsx | 2 -- 5 files changed, 40 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index ffd8df85..0d310a69 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -8,6 +8,7 @@ ### 🎫 Chores - 删除代码内的可选链语法 +- 表单重置逻辑修改 ### 🐛 Bug Fixes diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index 209e272a..3d8dfbd3 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -194,7 +194,7 @@ model: formModel, field: schema.field, values: { - ...unerf(defaultValueRef), + ...unref(defaultValueRef), ...formModel, }, }); @@ -271,11 +271,11 @@ const formEl = unref(formElRef); if (!formEl) return; Object.keys(formModel).forEach((key) => { - (formModel as any)[key] = undefined; + (formModel as any)[key] = defaultValueRef.value[key]; }); - const values = formEl.resetFields(); + // const values = formEl.resetFields(); emit('reset', toRaw(formModel)); - return values; + // return values; } /** diff --git a/src/components/Form/src/FormItem.tsx b/src/components/Form/src/FormItem.tsx index 2f6bff2a..688d1658 100644 --- a/src/components/Form/src/FormItem.tsx +++ b/src/components/Form/src/FormItem.tsx @@ -139,6 +139,7 @@ export default defineComponent({ } return rules; } + function renderComponent() { const { componentProps, @@ -163,7 +164,6 @@ export default defineComponent({ } }, }; - const Comp = componentMap.get(component); const { autoSetPlaceHolder, size } = props.formProps; @@ -189,9 +189,22 @@ export default defineComponent({ const bindValue = { [isCheck ? 'checked' : 'value']: (props.formModel as any)[field], }; + // TODO先兼容antd的警告,后面官方修复后删除 + if (component === 'Select') { + if (Reflect.has(propsData, 'options')) { + propsData.options = propsData.options.map((item: any) => { + return { + key: item.value, + ...item, + }; + }); + } + } + if (!renderComponentContent) { return ; } + return ( {{ diff --git a/src/layouts/default/multitabs/index.tsx b/src/layouts/default/multitabs/index.tsx index b8434f72..9cceb7e3 100644 --- a/src/layouts/default/multitabs/index.tsx +++ b/src/layouts/default/multitabs/index.tsx @@ -8,7 +8,7 @@ import { computed, // ref, unref, - onMounted, + // onMounted, toRaw, } from 'vue'; import { Tabs } from 'ant-design-vue'; @@ -24,7 +24,7 @@ import { tabStore } from '/@/store/modules/tab'; import { closeTab } from './useTabDropdown'; import router from '/@/router'; import { useTabs } from '/@/hooks/web/useTabs'; -import { PageEnum } from '/@/enums/pageEnum'; +// import { PageEnum } from '/@/enums/pageEnum'; import './index.less'; export default defineComponent({ @@ -33,14 +33,17 @@ export default defineComponent({ let isAddAffix = false; const go = useGo(); const { currentRoute } = useRouter(); - const { addTab, activeKeyRef } = useTabs(); - onMounted(() => { - const route = unref(currentRoute); - addTab(unref(currentRoute).path as PageEnum, false, { - query: route.query, - params: route.params, - }); - }); + const { + // addTab, + activeKeyRef, + } = useTabs(); + // onMounted(() => { + // const route = unref(currentRoute); + // addTab(unref(currentRoute).path as PageEnum, false, { + // query: route.query, + // params: route.params, + // }); + // }); // 当前激活tab // const activeKeyRef = ref(''); @@ -64,14 +67,14 @@ export default defineComponent({ // 监听路由的话虽然可以,但是路由切换的时间会造成卡顿现象? // 使用useTab的addTab的话,当用户手动调转,需要自行调用addTab // tabStore.commitAddTab((unref(currentRoute) as unknown) as AppRouteRecordRaw); - // const { affix } = currentRoute.value.meta || {}; - // if (affix) return; - // const hasInTab = tabStore.getTabsState.some( - // (item) => item.fullPath === currentRoute.value.fullPath - // ); - // if (!hasInTab) { - // tabStore.commitAddTab((unref(currentRoute) as unknown) as AppRouteRecordRaw); - // } + const { affix } = currentRoute.value.meta || {}; + if (affix) return; + const hasInTab = tabStore.getTabsState.some( + (item) => item.fullPath === currentRoute.value.fullPath + ); + if (!hasInTab) { + tabStore.commitAddTab((unref(currentRoute) as unknown) as AppRouteRecordRaw); + } }, { immediate: true, diff --git a/src/views/demo/table/tableData.tsx b/src/views/demo/table/tableData.tsx index 64c81b46..5e8ceeee 100644 --- a/src/views/demo/table/tableData.tsx +++ b/src/views/demo/table/tableData.tsx @@ -239,12 +239,10 @@ export function getFormConfig(): Partial { { label: '选项1', value: '1', - key: '1', }, { label: '选项2', value: '2', - key: '2', }, ], }, -- GitLab