From 2c867b3d636d57cdc526a4ca600af7d747b7d833 Mon Sep 17 00:00:00 2001
From: 无木 <netfan@foxmail.com>
Date: 星期四, 19 八月 2021 23:57:42 +0800
Subject: [PATCH] feat(table): add `beforeEditSubmit` for editable cell

---
 src/views/demo/table/EditCellTable.vue |   41 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/src/views/demo/table/EditCellTable.vue b/src/views/demo/table/EditCellTable.vue
index 8131f41..70d6ee9 100644
--- a/src/views/demo/table/EditCellTable.vue
+++ b/src/views/demo/table/EditCellTable.vue
@@ -4,6 +4,7 @@
       @register="registerTable"
       @edit-end="handleEditEnd"
       @edit-cancel="handleEditCancel"
+      :beforeEditSubmit="beforeEditSubmit"
     />
   </div>
 </template>
@@ -14,6 +15,7 @@
 
   import { demoListApi } from '/@/api/demo/table';
   import { treeOptionsListApi } from '/@/api/demo/tree';
+  import { useMessage } from '/@/hooks/web/useMessage';
   const columns: BasicColumn[] = [
     {
       title: '杈撳叆妗�',
@@ -93,7 +95,7 @@
     },
     {
       title: '杩滅▼涓嬫媺鏍�',
-      dataIndex: 'name7',
+      dataIndex: 'name71',
       edit: true,
       editComponent: 'ApiTreeSelect',
       editRule: false,
@@ -157,8 +159,44 @@
         bordered: true,
       });
 
+      const { createMessage } = useMessage();
+
       function handleEditEnd({ record, index, key, value }: Recordable) {
         console.log(record, index, key, value);
+        return false;
+      }
+
+      // 妯℃嫙灏嗘寚瀹氭暟鎹繚瀛�
+      function feakSave({ value, key, id }) {
+        createMessage.loading({
+          content: `姝e湪妯℃嫙淇濆瓨${key}`,
+          key: '_save_fake_data',
+          duration: 0,
+        });
+        return new Promise((resolve) => {
+          setTimeout(() => {
+            if (value === '') {
+              createMessage.error({
+                content: '淇濆瓨澶辫触锛氫笉鑳戒负绌�',
+                key: '_save_fake_data',
+                duration: 2,
+              });
+              resolve(false);
+            } else {
+              createMessage.success({
+                content: `璁板綍${id}鐨�${key}宸蹭繚瀛榒,
+                key: '_save_fake_data',
+                duration: 2,
+              });
+              resolve(true);
+            }
+          }, 2000);
+        });
+      }
+
+      async function beforeEditSubmit({ record, index, key, value }) {
+        console.log('鍗曞厓鏍兼暟鎹鍦ㄥ噯澶囨彁浜�', { record, index, key, value });
+        return await feakSave({ id: record.id, key, value });
       }
 
       function handleEditCancel() {
@@ -169,6 +207,7 @@
         registerTable,
         handleEditEnd,
         handleEditCancel,
+        beforeEditSubmit,
       };
     },
   });

--
Gitblit v1.8.0