ソースを参照

feat: tablePro 导出问题

lvkun996 2 年 前
コミット
d7f36cdf3c
3 ファイル変更344 行追加231 行削除
  1. 122 129
      package-lock.json
  2. 1 1
      package.json
  3. 221 101
      src/components/TableProV2/index.tsx

+ 122 - 129
package-lock.json

@@ -826,9 +826,9 @@
       }
     },
     "@babel/parser": {
-      "version": "7.21.3",
-      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.21.3.tgz",
-      "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ=="
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
     },
     "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
       "version": "7.22.5",
@@ -2263,8 +2263,7 @@
     "@jridgewell/sourcemap-codec": {
       "version": "1.4.15",
       "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
-      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
-      "dev": true
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
     },
     "@jridgewell/trace-mapping": {
       "version": "0.3.18",
@@ -3235,49 +3234,6 @@
         "webpack-merge": "^5.7.3",
         "webpack-virtual-modules": "^0.4.2",
         "whatwg-fetch": "^3.6.2"
-      },
-      "dependencies": {
-        "@vue/vue-loader-v15": {
-          "version": "npm:vue-loader@15.10.2",
-          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
-          "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
-          "dev": true,
-          "requires": {
-            "@vue/component-compiler-utils": "^3.1.0",
-            "hash-sum": "^1.0.2",
-            "loader-utils": "^1.1.0",
-            "vue-hot-reload-api": "^2.3.0",
-            "vue-style-loader": "^4.1.0"
-          },
-          "dependencies": {
-            "hash-sum": {
-              "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
-              "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-              "dev": true
-            }
-          }
-        },
-        "json5": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
-          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.2",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
-          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
-          }
-        }
       }
     },
     "@vue/cli-shared-utils": {
@@ -3352,49 +3308,49 @@
       }
     },
     "@vue/compiler-core": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
-      "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
       "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.47",
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
         "estree-walker": "^2.0.2",
-        "source-map": "^0.6.1"
+        "source-map-js": "^1.0.2"
       }
     },
     "@vue/compiler-dom": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
-      "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
       "requires": {
-        "@vue/compiler-core": "3.2.47",
-        "@vue/shared": "3.2.47"
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
       }
     },
     "@vue/compiler-sfc": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
-      "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
-      "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.47",
-        "@vue/compiler-dom": "3.2.47",
-        "@vue/compiler-ssr": "3.2.47",
-        "@vue/reactivity-transform": "3.2.47",
-        "@vue/shared": "3.2.47",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
         "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7",
+        "magic-string": "^0.30.0",
         "postcss": "^8.1.10",
-        "source-map": "^0.6.1"
+        "source-map-js": "^1.0.2"
       }
     },
     "@vue/compiler-ssr": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
-      "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
       "requires": {
-        "@vue/compiler-dom": "3.2.47",
-        "@vue/shared": "3.2.47"
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
       }
     },
     "@vue/component-compiler-utils": {
@@ -3480,57 +3436,98 @@
       }
     },
     "@vue/reactivity": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
-      "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
       "requires": {
-        "@vue/shared": "3.2.47"
+        "@vue/shared": "3.3.4"
       }
     },
     "@vue/reactivity-transform": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
-      "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
       "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.47",
-        "@vue/shared": "3.2.47",
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
         "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7"
+        "magic-string": "^0.30.0"
       }
     },
     "@vue/runtime-core": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
-      "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
       "requires": {
-        "@vue/reactivity": "3.2.47",
-        "@vue/shared": "3.2.47"
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
       }
     },
     "@vue/runtime-dom": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
-      "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
       "requires": {
-        "@vue/runtime-core": "3.2.47",
-        "@vue/shared": "3.2.47",
-        "csstype": "^2.6.8"
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
       }
     },
     "@vue/server-renderer": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
-      "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
       "requires": {
-        "@vue/compiler-ssr": "3.2.47",
-        "@vue/shared": "3.2.47"
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
       }
     },
     "@vue/shared": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
-      "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "@vue/vue-loader-v15": {
+      "version": "npm:vue-loader@15.10.2",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
+      "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^3.1.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      },
+      "dependencies": {
+        "hash-sum": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
+          "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
     },
     "@vue/web-component-wrapper": {
       "version": "1.3.0",
@@ -5061,9 +5058,9 @@
       }
     },
     "csstype": {
-      "version": "2.6.21",
-      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
-      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
     },
     "d3": {
       "version": "7.8.5",
@@ -6495,7 +6492,7 @@
     },
     "estree-walker": {
       "version": "2.0.2",
-      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
     },
     "esutils": {
@@ -8525,11 +8522,11 @@
       }
     },
     "magic-string": {
-      "version": "0.25.9",
-      "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
-      "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+      "version": "0.30.5",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+      "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
       "requires": {
-        "sourcemap-codec": "^1.4.8"
+        "@jridgewell/sourcemap-codec": "^1.4.15"
       }
     },
     "make-dir": {
@@ -10547,7 +10544,8 @@
     "source-map": {
       "version": "0.6.1",
       "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "dev": true
     },
     "source-map-js": {
       "version": "1.0.2",
@@ -10564,11 +10562,6 @@
         "source-map": "^0.6.0"
       }
     },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
-    },
     "spdx-correct": {
       "version": "3.2.0",
       "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
@@ -11336,15 +11329,15 @@
       "dev": true
     },
     "vue": {
-      "version": "3.2.47",
-      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
-      "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
-      "requires": {
-        "@vue/compiler-dom": "3.2.47",
-        "@vue/compiler-sfc": "3.2.47",
-        "@vue/runtime-dom": "3.2.47",
-        "@vue/server-renderer": "3.2.47",
-        "@vue/shared": "3.2.47"
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
       }
     },
     "vue-class-component": {

+ 1 - 1
package.json

@@ -36,7 +36,7 @@
     "path-browserify": "^1.0.1",
     "pinia": "^2.0.33",
     "style-resources-loader": "^1.5.0",
-    "vue": "^3.2.13",
+    "vue": "^3.3.4",
     "vue-class-component": "^8.0.0-0",
     "vue-countup-v3": "^1.4.0",
     "vue-hooks-plus": "^1.6.2",

+ 221 - 101
src/components/TableProV2/index.tsx

@@ -5,13 +5,6 @@ import {
 import { DownOutlined } from '@ant-design/icons-vue'
 import { PropType, computed, defineComponent, reactive, ref } from 'vue'
 
-// interface Methods {
-//   get: string
-//   post: string
-//   put: string
-//   del: string
-// }
-
 /**
  * @description Table Pro 超级table 将各种业务与操作融合起来
  */
@@ -20,91 +13,213 @@ interface GenericListProps<T> {
   dataSource: T;
 }
 
-export default defineComponent({
-  name: 'table-pro-v2',
-  props: {
-    columns: {
-      type: Array as PropType<TableColumnProps[]>,
-      default: () => [],
-      required: true
-    },
-    pagination: {
-      type: Object as PropType<PaginationProps> || false,
-      required: true,
-      default: () => {
-        return {
-          page: 1,
-          pageSize: 10,
-          total: 0
-        }
-      }
-    },
-    request: {
-      type: Object as PropType<{get: Function, params: Object}>,
-      default: () => {
-        return {
-          params: {},
-          get: () => {}
-        }
-      }
-    }
-  },
-  emits: ['reload', 'add'],
-  setup (props, ctx) {
-    const { request, columns } = props
-
-    const columnsPro = ref<TableColumnProps & {hidden: boolean} []>(columns.map(column => ({ ...column, hidden: false })))
-
-    const rowCustomized = computed(() => props.columns.map(item => ({ title: item.title, key: item.key })))
-
-    const loading = ref<Boolean>(false)
-
-    const dataSource = ref([])
-
-    const pagination = reactive<PaginationProps>(Object.assign({}, {
-      current: 1,
-      pageSize: 10,
-      total: 0,
-      onChange: (page: number, pageSize: number) => onChangePage(page, pageSize)
-    }, { ...props.pagination }))
-
-    const opraMeun = (
-      <Menu>
-        <Menu.item key={0} onClick={ctx.emit('add')} > 新增 </Menu.item>
-        <Menu.item key={2} onClick={() => exportExcel()}> 导出 </Menu.item>
-        <Menu.item key={3} onClick={() => pure()}> 纯净 </Menu.item>
-      </Menu>
-    )
-
-    const exportExcel = () => {}
-
-    const pure = () => {}
-
-    const onChangePage = (page: number, pageSize: number) => {
-      pagination.current = page
-      pagination.pageSize = pageSize
-      dispatchRequest()
-    }
-
-    const dispatchRequest = async () => {
-      loading.value = true
-      const { data, sum } = await request.get({
-        ...request.params,
-        page: pagination.current,
-        pageSize: pagination.pageSize
-      })
-      loading.value = false
-      pagination.total = sum
-      dataSource.value = data
-    }
-
-    const init = () => {
-
-    }
-
-    init()
-
-    return () => (
+// export default /* #__PURE__ */ defineComponent<T>({
+//   name: 'table-pro-v2',
+//   props: {
+//     columns: {
+//       type: Array as PropType<TableColumnProps[]>,
+//       default: () => [],
+//       required: true
+//     },
+//     pagination: {
+//       type: Object as PropType<PaginationProps> || false,
+//       required: true,
+//       default: () => {
+//         return {
+//           page: 1,
+//           pageSize: 10,
+//           total: 0
+//         }
+//       }
+//     },
+//     request: {
+//       type: Object as PropType<{get: Function, params: Object}>,
+//       default: () => {
+//         return {
+//           params: {},
+//           get: () => {}
+//         }
+//       }
+//     }
+//   },
+//   emits: ['reload', 'add'],
+//   setup (props, ctx) {
+//     const { request, columns } = props
+
+//     const columnsPro = ref<TableColumnProps & {hidden: boolean} []>(columns.map(column => ({ ...column, hidden: false })))
+
+//     const rowCustomized = computed(() => props.columns.map(item => ({ title: item.title, key: item.key })))
+
+//     const loading = ref<Boolean>(false)
+
+//     const dataSource = ref([])
+
+//     const pagination = reactive<PaginationProps>(Object.assign({}, {
+//       current: 1,
+//       pageSize: 10,
+//       total: 0,
+//       onChange: (page: number, pageSize: number) => onChangePage(page, pageSize)
+//     }, { ...props.pagination }))
+
+//     const opraMeun = (
+//       <Menu>
+//         <Menu.item key={0} onClick={ctx.emit('add')} > 新增 </Menu.item>
+//         <Menu.item key={2} onClick={() => exportExcel()}> 导出 </Menu.item>
+//         <Menu.item key={3} onClick={() => pure()}> 纯净 </Menu.item>
+//       </Menu>
+//     )
+
+//     const exportExcel = () => {}
+
+//     const pure = () => {}
+
+//     const onChangePage = (page: number, pageSize: number) => {
+//       pagination.current = page
+//       pagination.pageSize = pageSize
+//       dispatchRequest()
+//     }
+
+//     const dispatchRequest = async () => {
+//       loading.value = true
+//       const { data, sum } = await request.get({
+//         ...request.params,
+//         page: pagination.current,
+//         pageSize: pagination.pageSize
+//       })
+//       loading.value = false
+//       pagination.total = sum
+//       dataSource.value = data
+//     }
+
+//     const init = () => {
+
+//     }
+
+//     init()
+
+//     return () => (
+//       <>
+//         <Row gutter={[8, 8]}>
+//           <Col>
+//             <solt name="search" ></solt>
+//           </Col>
+//           <Col>
+//             <Space>
+//               <Tooltip title='列表定制' >
+//                  {/*  @click.prevent */}
+//                  {/*  <a class="ant-dropdown-link"> <menu-outlined /> </a> */}
+//                 <Dropdown
+//                   trigger={['click']}
+//                   overlay={
+//                   <Menu>
+//                     {
+//                       rowCustomized.value.map(item => (
+//                         <Menu.item key={item.key}>
+//                           {item.title}
+//                         </Menu.item>
+//                       ))
+//                     }
+//                   </Menu>}
+//                 >
+//                 </Dropdown>
+//               </Tooltip>
+//                  {/*  @click.prevent */}
+//                  {/*  <a class="ant-dropdown-link"> <menu-outlined /> </a> */}
+//                 <DropdownButton
+//                   trigger={['click']}
+//                   overlay={opraMeun}
+//                   icon={<DownOutlined />}
+//                   onClick={dispatchRequest}
+//                 >
+//                   <Button>操作</Button>
+//                 </DropdownButton>
+//             </Space>
+//           </Col>
+//         </Row>
+//         <Table
+//           columns={columns}
+//           loading={loading}
+//           pagination={pagination}
+//           dataSource={dataSource}
+//         >
+//           <slot name='action'></slot>
+//         </Table>
+//       </>
+//     )
+//   }
+// })
+
+// export default
+
+const com = defineComponent((props: {
+  columns: TableColumnProps[],
+  pagination: PaginationProps | false
+  request: {
+    get: (record: any) => {data, sum},
+    params: any
+  }
+}) => {
+  const { columns, request } = props
+
+  const emits = defineEmits(['add'])
+
+  const loading = ref<boolean>(false)
+
+  const columnsPro = ref<(TableColumnProps & {hidden: boolean}) []>(columns.map(column => ({ ...column, hidden: false })))
+
+  const columnsFilter = computed(() => columnsPro.value.filter(column => !column.hidden))
+
+  const rowCustomized = computed(() => columns.map(item => ({ title: item.title, key: item.key })))
+
+  const pagination = reactive<PaginationProps>(Object.assign({}, {
+    current: 1,
+    pageSize: 10,
+    total: 0,
+    onChange: (page: number, pageSize: number) => onChangePage(page, pageSize)
+  }, typeof props.pagination === 'boolean' ? {} : { ...props.pagination }))
+
+  const dataSource = ref()
+
+  const opraMeun = (
+    <Menu>
+      <Menu.item key={0} onClick={emits('add')} > 新增 </Menu.item>
+      <Menu.item key={2} onClick={() => exportExcel()}> 导出 </Menu.item>
+      <Menu.item key={3} onClick={() => pure()}> 纯净 </Menu.item>
+    </Menu>
+  )
+
+  const exportExcel = () => {}
+
+  const pure = () => {}
+
+  const reload = () => dispatchRequest()
+
+  const onChangePage = (page: number, pageSize: number) => {
+    pagination.current = page
+    pagination.pageSize = pageSize
+    dispatchRequest()
+  }
+
+  const dispatchRequest = async () => {
+    loading.value = true
+    const { data, sum } = await request.get({
+      ...request.params,
+      page: pagination.current,
+      pageSize: pagination.pageSize
+    })
+    loading.value = false
+    pagination.total = sum
+    dataSource.value = data
+  }
+
+  /**
+   * 展示或者隐藏对应的column
+   */
+  const swicthColumn = (index: number) => {
+    columnsPro.value[index].hidden = !columnsPro.value[index].hidden
+  }
+
+  return () => (
       <>
         <Row gutter={[8, 8]}>
           <Col>
@@ -120,8 +235,8 @@ export default defineComponent({
                   overlay={
                   <Menu>
                     {
-                      rowCustomized.value.map(item => (
-                        <Menu.item key={item.key}>
+                      rowCustomized.value.map((item, index) => (
+                        <Menu.item key={item.key} onClick={() => swicthColumn(index)} >
                           {item.title}
                         </Menu.item>
                       ))
@@ -136,22 +251,27 @@ export default defineComponent({
                   trigger={['click']}
                   overlay={opraMeun}
                   icon={<DownOutlined />}
-                  onClick={dispatchRequest}
+                  onClick={reload}
                 >
-                  <Button>操作</Button>
+                  <Button>刷新</Button>
                 </DropdownButton>
             </Space>
           </Col>
         </Row>
         <Table
-          columns={columns}
-          loading={loading}
-          pagination={pagination}
+          columns={columnsFilter.value}
+          loading={loading.value}
+          pagination={typeof props.pagination === 'boolean' ? false : pagination}
           dataSource={dataSource}
         >
+          <slot></slot>
           <slot name='action'></slot>
         </Table>
       </>
-    )
-  }
+  )
 })
+
+export {
+  com
+  // 这里直接导出ref有没有可能优雅一些
+}