From 1c075a7a32dd05454bc45d4eb686e2234c3c6175 Mon Sep 17 00:00:00 2001
From: vben <anncwb@126.com>
Date: 星期四, 22 十月 2020 23:10:37 +0800
Subject: [PATCH] fix: reset back to default value after fixing form query

---
 src/components/Table/src/BasicTable.vue |   52 +++++++++--------
 lint-staged.config.js                   |    4 
 src/components/Basic/src/BasicArrow.vue |    3 -
 src/components/Form/src/BasicForm.vue   |   42 ++++++++-----
 src/views/demo/table/tableData.tsx      |   28 +++++++++
 CHANGELOG.zh_CN.md                      |    1 
 6 files changed, 83 insertions(+), 47 deletions(-)

diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md
index 7bae588..5c5f110 100644
--- a/CHANGELOG.zh_CN.md
+++ b/CHANGELOG.zh_CN.md
@@ -3,6 +3,7 @@
 ### 馃悰 Bug Fixes
 
 - 淇鎶藉眽缁勪欢鑷姩楂樺害鍙婃樉绀� footer 鏄剧ず闂
+- 淇琛ㄥ崟鏌ヨ鍚庨噸缃洖榛樿鍊�
 
 # 2.0.0-rc.4 (2020-10-21)
 
diff --git a/lint-staged.config.js b/lint-staged.config.js
index 2857b0c..4448b78 100644
--- a/lint-staged.config.js
+++ b/lint-staged.config.js
@@ -2,7 +2,7 @@
   '*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
   '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --write--parser json'],
   'package.json': ['prettier --write'],
-  '*.vue': ['prettier --write', 'stylelint --fix', 'git add .'],
-  '*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write', 'git add .'],
+  '*.vue': ['prettier --write', 'stylelint --fix'],
+  '*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write'],
   '*.md': ['prettier --write'],
 };
diff --git a/src/components/Basic/src/BasicArrow.vue b/src/components/Basic/src/BasicArrow.vue
index 00f5ad2..799b250 100644
--- a/src/components/Basic/src/BasicArrow.vue
+++ b/src/components/Basic/src/BasicArrow.vue
@@ -51,9 +51,6 @@
 
     &__active {
       transform: rotate(90deg);
-      // > span {
-      //   transform: rotate(90deg);
-      // }
     }
   }
 </style>
diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue
index 0288bd8..209e272 100644
--- a/src/components/Form/src/BasicForm.vue
+++ b/src/components/Form/src/BasicForm.vue
@@ -6,7 +6,7 @@
         <FormItem
           :schema="schema"
           :formProps="getProps"
-          :allDefaultValues="getAllDefaultValues"
+          :allDefaultValues="defaultValueRef"
           :formModel="formModel"
         >
           <template #[item]="data" v-for="item in Object.keys($slots)">
@@ -56,8 +56,8 @@
 
   export default defineComponent({
     name: 'BasicForm',
-    inheritAttrs: false,
     components: { FormItem, Form, Row, FormAction },
+    inheritAttrs: false,
     props: basicProps,
     emits: ['advanced-change', 'reset', 'submit', 'register'],
     setup(props, { emit }) {
@@ -68,6 +68,7 @@
         isLoad: false,
         actionSpan: 6,
       });
+      const defaultValueRef = ref<any>({});
       const propsRef = ref<Partial<FormProps>>({});
       const schemaRef = ref<FormSchema[] | null>(null);
       const formElRef = ref<Nullable<FormType>>(null);
@@ -132,17 +133,6 @@
         return schemas as FormSchema[];
       });
 
-      const getAllDefaultValues = computed(() => {
-        const schemas = unref(getSchema);
-        const obj: any = {};
-        schemas.forEach((item) => {
-          if (item.defaultValue) {
-            obj[item.field] = item.defaultValue;
-            (formModel as any)[item.field] = item.defaultValue;
-          }
-        });
-        return obj;
-      });
       const getEmptySpanRef = computed((): number => {
         if (!advanceState.isAdvanced) {
           return 0;
@@ -174,6 +164,19 @@
         },
         { immediate: true }
       );
+
+      function initDefault() {
+        const schemas = unref(getSchema);
+        const obj: any = {};
+        schemas.forEach((item) => {
+          if (item.defaultValue) {
+            obj[item.field] = item.defaultValue;
+            (formModel as any)[item.field] = item.defaultValue;
+          }
+        });
+        defaultValueRef.value = obj;
+      }
+
       function updateAdvanced() {
         let itemColSum = 0;
         let realItemColSum = 0;
@@ -191,7 +194,7 @@
               model: formModel,
               field: schema.field,
               values: {
-                ...getAllDefaultValues,
+                ...unerf(defaultValueRef),
                 ...formModel,
               },
             });
@@ -343,6 +346,7 @@
         }
         schemaRef.value = schemaList as any;
       }
+
       /**
        * @description: 鏍规嵁瀛楁鍚嶅垹闄�
        */
@@ -354,6 +358,7 @@
           }
         }
       }
+
       /**
        * @description: 寰�鏌愪釜瀛楁鍚庨潰鎻掑叆,濡傛灉娌℃湁鎻掑叆鏈�鍚庝竴涓�
        */
@@ -400,7 +405,6 @@
             }
           });
         });
-
         schemaRef.value = unique(schema, 'field') as any;
       }
 
@@ -412,6 +416,7 @@
         toRef(props, 'transformDateFunc'),
         toRef(props, 'fieldMapToTime')
       );
+
       function getFieldsValue(): any {
         const formEl = unref(formElRef);
         if (!formEl) return;
@@ -426,6 +431,7 @@
           return item.field === key ? dateItemType.includes(item.component!) : false;
         });
       }
+
       /**
        * @description:璁剧疆琛ㄥ崟
        */
@@ -438,6 +444,7 @@
         if (!formElRef.value) return;
         return formElRef.value.validateFields(nameList);
       }
+
       function validate(nameList?: NamePath[] | undefined) {
         if (!formElRef.value) return;
         return formElRef.value.validate(nameList);
@@ -460,14 +467,17 @@
         validateFields: validateFields as ValidateFields,
         validate: validate as ValidateFields,
       };
+
       onMounted(() => {
+        initDefault();
         emit('register', methods);
       });
+
       return {
         handleToggleAdvanced,
         formModel,
         getActionPropsRef,
-        getAllDefaultValues,
+        defaultValueRef,
         advanceState,
         getProps,
         formElRef,
diff --git a/src/components/Table/src/BasicTable.vue b/src/components/Table/src/BasicTable.vue
index b6d361b..9578d73 100644
--- a/src/components/Table/src/BasicTable.vue
+++ b/src/components/Table/src/BasicTable.vue
@@ -216,34 +216,36 @@
         fetch();
       }
 
+      function handleSummary() {
+        if (unref(getMergeProps).showSummary) {
+          nextTick(() => {
+            const tableEl = unref(tableElRef);
+            if (!tableEl) {
+              return;
+            }
+            const bodyDomList = tableEl.$el.querySelectorAll('.ant-table-body') as HTMLDivElement[];
+            const bodyDom = bodyDomList[0];
+            useEvent({
+              el: bodyDom,
+              name: 'scroll',
+              listener: () => {
+                const footerBodyDom = tableEl.$el.querySelector(
+                  '.ant-table-footer .ant-table-body'
+                ) as HTMLDivElement;
+                if (!footerBodyDom || !bodyDom) return;
+                footerBodyDom.scrollLeft = bodyDom.scrollLeft;
+              },
+              wait: 0,
+              options: true,
+            });
+          });
+        }
+      }
+
       watch(
         () => unref(getDataSourceRef),
         () => {
-          if (unref(getMergeProps).showSummary) {
-            nextTick(() => {
-              const tableEl = unref(tableElRef);
-              if (!tableEl) {
-                return;
-              }
-              const bodyDomList = tableEl.$el.querySelectorAll(
-                '.ant-table-body'
-              ) as HTMLDivElement[];
-              const bodyDom = bodyDomList[0];
-              useEvent({
-                el: bodyDom,
-                name: 'scroll',
-                listener: () => {
-                  const footerBodyDom = tableEl.$el.querySelector(
-                    '.ant-table-footer .ant-table-body'
-                  ) as HTMLDivElement;
-                  if (!footerBodyDom || !bodyDom) return;
-                  footerBodyDom.scrollLeft = bodyDom.scrollLeft;
-                },
-                wait: 0,
-                options: true,
-              });
-            });
-          }
+          handleSummary();
         },
         { immediate: true }
       );
diff --git a/src/views/demo/table/tableData.tsx b/src/views/demo/table/tableData.tsx
index b76bb7e..64c81b4 100644
--- a/src/views/demo/table/tableData.tsx
+++ b/src/views/demo/table/tableData.tsx
@@ -227,7 +227,33 @@
 export function getFormConfig(): Partial<FormProps> {
   return {
     labelWidth: 100,
-    schemas: getAdvanceSchema(6),
+    schemas: [
+      ...getAdvanceSchema(5),
+      {
+        field: `field11`,
+        label: `瀛楁33`,
+        component: 'Select',
+        defaultValue: '1',
+        componentProps: {
+          options: [
+            {
+              label: '閫夐」1',
+              value: '1',
+              key: '1',
+            },
+            {
+              label: '閫夐」2',
+              value: '2',
+              key: '2',
+            },
+          ],
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+    ],
   };
 }
 export function getBasicData() {

--
Gitblit v1.8.0