feat: 新增 GiEditTable 编辑表格组件(同步 GiDemo 更新)

This commit is contained in:
2024-10-27 19:51:35 +08:00
parent 26291a1e44
commit b46235b7ed
7 changed files with 414 additions and 126 deletions

View File

@@ -2,12 +2,11 @@ import autoImport from 'unplugin-auto-import/vite'
export default function createAutoImport() {
return autoImport({
// 自动导入 vue 相关函数,如: ref、reactive、toRef等
imports: [
'vue',
'vue-router',
'pinia'
],
// 自动导入 vue 相关函数
imports: ['vue', 'vue-router', {
// vue 3.5.x
vue: ['useTemplateRef', 'onWatcherCleanup', 'useId']
}],
dts: './src/types/auto-imports.d.ts'
})
}

View File

@@ -42,7 +42,7 @@
"v-viewer": "^3.0.10",
"viewerjs": "^1.11.6",
"vite-plugin-vue-devtools": "^7.0.27",
"vue": "^3.4.21",
"vue": "^3.5.4",
"vue-codemirror6": "^1.1.27",
"vue-color-kit": "^1.0.5",
"vue-cropper": "^1.1.1",

349
pnpm-lock.yaml generated
View File

@@ -16,7 +16,7 @@ importers:
version: 0.4.0
'@arco-themes/vue-gi-demo':
specifier: ^0.0.51
version: 0.0.51(@arco-design/web-vue@2.56.0(vue@3.4.27(typescript@5.0.4)))
version: 0.0.51(@arco-design/web-vue@2.56.0(vue@3.5.12(typescript@5.0.4)))
'@codemirror/lang-javascript':
specifier: ^6.2.1
version: 6.2.2
@@ -31,19 +31,19 @@ importers:
version: 1.4.2
'@vue-office/docx':
specifier: 1.6.0
version: 1.6.0(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))
version: 1.6.0(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))
'@vue-office/excel':
specifier: 1.7.1
version: 1.7.1(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))
version: 1.7.1(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))
'@vue-office/pdf':
specifier: 1.6.4
version: 1.6.4(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))
version: 1.6.4(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))
'@vueuse/components':
specifier: ^10.5.0
version: 10.9.0(vue@3.4.27(typescript@5.0.4))
version: 10.9.0(vue@3.5.12(typescript@5.0.4))
'@vueuse/core':
specifier: ^10.5.0
version: 10.9.0(vue@3.4.27(typescript@5.0.4))
version: 10.9.0(vue@3.5.12(typescript@5.0.4))
aieditor:
specifier: ^1.0.13
version: 1.0.13(@tiptap/extension-code-block@2.5.8(@tiptap/core@2.5.8(@tiptap/pm@2.5.8))(@tiptap/pm@2.5.8))
@@ -85,10 +85,10 @@ importers:
version: 0.2.0
pinia:
specifier: ^2.0.16
version: 2.1.7(typescript@5.0.4)(vue@3.4.27(typescript@5.0.4))
version: 2.1.7(typescript@5.0.4)(vue@3.5.12(typescript@5.0.4))
pinia-plugin-persistedstate:
specifier: ^3.1.0
version: 3.2.1(pinia@2.1.7(typescript@5.0.4)(vue@3.4.27(typescript@5.0.4)))
version: 3.2.1(pinia@2.1.7(typescript@5.0.4)(vue@3.5.12(typescript@5.0.4)))
qs:
specifier: ^6.11.2
version: 6.12.1
@@ -97,40 +97,40 @@ importers:
version: 9.0.0
v-viewer:
specifier: ^3.0.10
version: 3.0.13(viewerjs@1.11.6)(vue@3.4.27(typescript@5.0.4))
version: 3.0.13(viewerjs@1.11.6)(vue@3.5.12(typescript@5.0.4))
viewerjs:
specifier: ^1.11.6
version: 1.11.6
vite-plugin-vue-devtools:
specifier: ^7.0.27
version: 7.2.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))
version: 7.2.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))
vue:
specifier: ^3.4.21
version: 3.4.27(typescript@5.0.4)
specifier: ^3.5.4
version: 3.5.12(typescript@5.0.4)
vue-codemirror6:
specifier: ^1.1.27
version: 1.3.0(@lezer/common@1.2.1)(vue@3.4.27(typescript@5.0.4))
version: 1.3.0(@lezer/common@1.2.1)(vue@3.5.12(typescript@5.0.4))
vue-color-kit:
specifier: ^1.0.5
version: 1.0.6(vue@3.4.27(typescript@5.0.4))
version: 1.0.6(vue@3.5.12(typescript@5.0.4))
vue-cropper:
specifier: ^1.1.1
version: 1.1.3
vue-demi:
specifier: ^0.14.10
version: 0.14.10(vue@3.4.27(typescript@5.0.4))
version: 0.14.10(vue@3.5.12(typescript@5.0.4))
vue-draggable-plus:
specifier: ^0.3.5
version: 0.3.5(@types/sortablejs@1.15.8)
vue-echarts:
specifier: ^6.5.5
version: 6.7.2(@vue/runtime-core@3.4.27)(echarts@5.5.0)(vue@3.4.27(typescript@5.0.4))
version: 6.7.2(@vue/runtime-core@3.5.12)(echarts@5.5.0)(vue@3.5.12(typescript@5.0.4))
vue-json-pretty:
specifier: ^2.4.0
version: 2.4.0(vue@3.4.27(typescript@5.0.4))
version: 2.4.0(vue@3.5.12(typescript@5.0.4))
vue-router:
specifier: ^4.3.3
version: 4.3.3(vue@3.4.27(typescript@5.0.4))
version: 4.3.3(vue@3.5.12(typescript@5.0.4))
xe-utils:
specifier: ^3.5.7
version: 3.5.26
@@ -140,10 +140,10 @@ importers:
devDependencies:
'@antfu/eslint-config':
specifier: ^2.16.3
version: 2.18.1(@vue/compiler-sfc@3.4.27)(eslint@9.3.0)(typescript@5.0.4)
version: 2.18.1(@vue/compiler-sfc@3.5.12)(eslint@9.3.0)(typescript@5.0.4)
'@arco-design/web-vue':
specifier: ^2.56.0
version: 2.56.0(vue@3.4.27(typescript@5.0.4))
version: 2.56.0(vue@3.5.12(typescript@5.0.4))
'@types/crypto-js':
specifier: ^4.2.2
version: 4.2.2
@@ -155,10 +155,10 @@ importers:
version: 6.3.0
'@vitejs/plugin-vue':
specifier: ^5.0.4
version: 5.0.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))
version: 5.0.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))
'@vitejs/plugin-vue-jsx':
specifier: ^3.1.0
version: 3.1.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))
version: 3.1.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))
'@vue/tsconfig':
specifier: ^0.1.3
version: 0.1.3(@types/node@20.12.12)
@@ -188,10 +188,10 @@ importers:
version: 5.0.4
unplugin-auto-import:
specifier: ^0.16.4
version: 0.16.7(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.0.4)))(rollup@4.17.2)
version: 0.16.7(@vueuse/core@10.9.0(vue@3.5.12(typescript@5.0.4)))(rollup@4.17.2)
unplugin-vue-components:
specifier: ^0.25.1
version: 0.25.2(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.4.27(typescript@5.0.4))
version: 0.25.2(@babel/parser@7.26.1)(rollup@4.17.2)(vue@3.5.12(typescript@5.0.4))
vite:
specifier: ^5.1.5
version: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0)
@@ -372,10 +372,18 @@ packages:
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.25.9':
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.24.5':
resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.25.9':
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.23.5':
resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
engines: {node: '>=6.9.0'}
@@ -393,6 +401,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/parser@7.26.1':
resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-proposal-decorators@7.24.1':
resolution: {integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==}
engines: {node: '>=6.9.0'}
@@ -450,6 +463,10 @@ packages:
resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.0':
resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
engines: {node: '>=6.9.0'}
'@clack/core@0.3.4':
resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==}
@@ -701,6 +718,9 @@ packages:
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
@@ -1296,15 +1316,27 @@ packages:
'@vue/compiler-core@3.4.27':
resolution: {integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==}
'@vue/compiler-core@3.5.12':
resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==}
'@vue/compiler-dom@3.4.27':
resolution: {integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==}
'@vue/compiler-dom@3.5.12':
resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==}
'@vue/compiler-sfc@3.4.27':
resolution: {integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==}
'@vue/compiler-sfc@3.5.12':
resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==}
'@vue/compiler-ssr@3.4.27':
resolution: {integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==}
'@vue/compiler-ssr@3.5.12':
resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==}
'@vue/devtools-api@6.6.1':
resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==}
@@ -1327,23 +1359,26 @@ packages:
typescript:
optional: true
'@vue/reactivity@3.4.27':
resolution: {integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==}
'@vue/reactivity@3.5.12':
resolution: {integrity: sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==}
'@vue/runtime-core@3.4.27':
resolution: {integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==}
'@vue/runtime-core@3.5.12':
resolution: {integrity: sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==}
'@vue/runtime-dom@3.4.27':
resolution: {integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==}
'@vue/runtime-dom@3.5.12':
resolution: {integrity: sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==}
'@vue/server-renderer@3.4.27':
resolution: {integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==}
'@vue/server-renderer@3.5.12':
resolution: {integrity: sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==}
peerDependencies:
vue: 3.4.27
vue: 3.5.12
'@vue/shared@3.4.27':
resolution: {integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==}
'@vue/shared@3.5.12':
resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==}
'@vue/tsconfig@0.1.3':
resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==}
peerDependencies:
@@ -3139,6 +3174,9 @@ packages:
magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
magic-string@0.30.12:
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@@ -3469,6 +3507,9 @@ packages:
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
@@ -3530,6 +3571,10 @@ packages:
resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
engines: {node: ^10 || ^12 || >=14}
postcss@8.4.47:
resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
engines: {node: ^10 || ^12 || >=14}
posthtml-parser@0.2.1:
resolution: {integrity: sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==}
@@ -3878,6 +3923,10 @@ packages:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
source-map-resolve@0.5.3:
resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
deprecated: See https://github.com/lydell/source-map-resolve#deprecated
@@ -4456,8 +4505,8 @@ packages:
peerDependencies:
typescript: '*'
vue@3.4.27:
resolution: {integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==}
vue@3.5.12:
resolution: {integrity: sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
@@ -4574,7 +4623,7 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
'@antfu/eslint-config@2.18.1(@vue/compiler-sfc@3.4.27)(eslint@9.3.0)(typescript@5.0.4)':
'@antfu/eslint-config@2.18.1(@vue/compiler-sfc@3.5.12)(eslint@9.3.0)(typescript@5.0.4)':
dependencies:
'@antfu/install-pkg': 0.3.3
'@clack/prompts': 0.7.0
@@ -4602,7 +4651,7 @@ snapshots:
eslint-plugin-vitest: 0.5.4(@typescript-eslint/eslint-plugin@7.9.0(@typescript-eslint/parser@7.9.0(eslint@9.3.0)(typescript@5.0.4))(eslint@9.3.0)(typescript@5.0.4))(eslint@9.3.0)(typescript@5.0.4)
eslint-plugin-vue: 9.26.0(eslint@9.3.0)
eslint-plugin-yml: 1.14.0(eslint@9.3.0)
eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.4.27)(eslint@9.3.0)
eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.12)(eslint@9.3.0)
globals: 15.2.0
jsonc-eslint-parser: 2.4.0
local-pkg: 0.5.0
@@ -4629,7 +4678,7 @@ snapshots:
dependencies:
color: 3.2.1
'@arco-design/web-vue@2.56.0(vue@3.4.27(typescript@5.0.4))':
'@arco-design/web-vue@2.56.0(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@arco-design/color': 0.4.0
b-tween: 0.3.3
@@ -4639,11 +4688,11 @@ snapshots:
number-precision: 1.6.0
resize-observer-polyfill: 1.5.1
scroll-into-view-if-needed: 2.2.31
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
'@arco-themes/vue-gi-demo@0.0.51(@arco-design/web-vue@2.56.0(vue@3.4.27(typescript@5.0.4)))':
'@arco-themes/vue-gi-demo@0.0.51(@arco-design/web-vue@2.56.0(vue@3.5.12(typescript@5.0.4)))':
dependencies:
'@arco-design/web-vue': 2.56.0(vue@3.4.27(typescript@5.0.4))
'@arco-design/web-vue': 2.56.0(vue@3.5.12(typescript@5.0.4))
'@babel/code-frame@7.24.2':
dependencies:
@@ -4763,8 +4812,12 @@ snapshots:
'@babel/helper-string-parser@7.24.1': {}
'@babel/helper-string-parser@7.25.9': {}
'@babel/helper-validator-identifier@7.24.5': {}
'@babel/helper-validator-identifier@7.25.9': {}
'@babel/helper-validator-option@7.23.5': {}
'@babel/helpers@7.24.5':
@@ -4786,6 +4839,10 @@ snapshots:
dependencies:
'@babel/types': 7.24.5
'@babel/parser@7.26.1':
dependencies:
'@babel/types': 7.26.0
'@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5)':
dependencies:
'@babel/core': 7.24.5
@@ -4857,6 +4914,11 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0
'@babel/types@7.26.0':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@clack/core@0.3.4':
dependencies:
picocolors: 1.0.1
@@ -5101,6 +5163,8 @@ snapshots:
'@jridgewell/sourcemap-codec@1.4.15': {}
'@jridgewell/sourcemap-codec@1.5.0': {}
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
@@ -5634,20 +5698,20 @@ snapshots:
'@typescript-eslint/types': 7.9.0
eslint-visitor-keys: 3.4.3
'@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))':
'@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@babel/core': 7.24.5
'@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5)
'@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.5)
vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0)
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
transitivePeerDependencies:
- supports-color
'@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))':
'@vitejs/plugin-vue@5.0.4(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))':
dependencies:
vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0)
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
'@volar/language-core@2.2.4':
dependencies:
@@ -5662,20 +5726,20 @@ snapshots:
'@volar/language-core': 2.2.4
path-browserify: 1.0.1
'@vue-office/docx@1.6.0(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))':
'@vue-office/docx@1.6.0(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))':
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
'@vue-office/excel@1.7.1(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))':
'@vue-office/excel@1.7.1(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))':
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
'@vue-office/pdf@1.6.4(vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)))(vue@3.4.27(typescript@5.0.4))':
'@vue-office/pdf@1.6.4(vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)))(vue@3.5.12(typescript@5.0.4))':
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
'@vue/babel-helper-vue-transform-on@1.2.2': {}
@@ -5714,11 +5778,24 @@ snapshots:
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-core@3.5.12':
dependencies:
'@babel/parser': 7.26.1
'@vue/shared': 3.5.12
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
'@vue/compiler-dom@3.4.27':
dependencies:
'@vue/compiler-core': 3.4.27
'@vue/shared': 3.4.27
'@vue/compiler-dom@3.5.12':
dependencies:
'@vue/compiler-core': 3.5.12
'@vue/shared': 3.5.12
'@vue/compiler-sfc@3.4.27':
dependencies:
'@babel/parser': 7.24.5
@@ -5731,16 +5808,33 @@ snapshots:
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-sfc@3.5.12':
dependencies:
'@babel/parser': 7.26.1
'@vue/compiler-core': 3.5.12
'@vue/compiler-dom': 3.5.12
'@vue/compiler-ssr': 3.5.12
'@vue/shared': 3.5.12
estree-walker: 2.0.2
magic-string: 0.30.12
postcss: 8.4.47
source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.27':
dependencies:
'@vue/compiler-dom': 3.4.27
'@vue/shared': 3.4.27
'@vue/compiler-ssr@3.5.12':
dependencies:
'@vue/compiler-dom': 3.5.12
'@vue/shared': 3.5.12
'@vue/devtools-api@6.6.1': {}
'@vue/devtools-core@7.2.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))':
'@vue/devtools-core@7.2.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@vue/devtools-kit': 7.2.0(vue@3.4.27(typescript@5.0.4))
'@vue/devtools-kit': 7.2.0(vue@3.5.12(typescript@5.0.4))
'@vue/devtools-shared': 7.2.0
mitt: 3.0.1
nanoid: 3.3.7
@@ -5750,14 +5844,14 @@ snapshots:
- vite
- vue
'@vue/devtools-kit@7.2.0(vue@3.4.27(typescript@5.0.4))':
'@vue/devtools-kit@7.2.0(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@vue/devtools-shared': 7.2.0
hookable: 5.5.3
mitt: 3.0.1
perfect-debounce: 1.0.0
speakingurl: 14.0.1
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
'@vue/devtools-shared@7.2.0':
dependencies:
@@ -5775,57 +5869,60 @@ snapshots:
optionalDependencies:
typescript: 5.0.4
'@vue/reactivity@3.4.27':
'@vue/reactivity@3.5.12':
dependencies:
'@vue/shared': 3.4.27
'@vue/shared': 3.5.12
'@vue/runtime-core@3.4.27':
'@vue/runtime-core@3.5.12':
dependencies:
'@vue/reactivity': 3.4.27
'@vue/shared': 3.4.27
'@vue/reactivity': 3.5.12
'@vue/shared': 3.5.12
'@vue/runtime-dom@3.4.27':
'@vue/runtime-dom@3.5.12':
dependencies:
'@vue/runtime-core': 3.4.27
'@vue/shared': 3.4.27
'@vue/reactivity': 3.5.12
'@vue/runtime-core': 3.5.12
'@vue/shared': 3.5.12
csstype: 3.1.3
'@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.0.4))':
'@vue/server-renderer@3.5.12(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@vue/compiler-ssr': 3.4.27
'@vue/shared': 3.4.27
vue: 3.4.27(typescript@5.0.4)
'@vue/compiler-ssr': 3.5.12
'@vue/shared': 3.5.12
vue: 3.5.12(typescript@5.0.4)
'@vue/shared@3.4.27': {}
'@vue/shared@3.5.12': {}
'@vue/tsconfig@0.1.3(@types/node@20.12.12)':
optionalDependencies:
'@types/node': 20.12.12
'@vueuse/components@10.9.0(vue@3.4.27(typescript@5.0.4))':
'@vueuse/components@10.9.0(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.0.4))
'@vueuse/shared': 10.9.0(vue@3.4.27(typescript@5.0.4))
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
'@vueuse/core': 10.9.0(vue@3.5.12(typescript@5.0.4))
'@vueuse/shared': 10.9.0(vue@3.5.12(typescript@5.0.4))
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@vueuse/core@10.9.0(vue@3.4.27(typescript@5.0.4))':
'@vueuse/core@10.9.0(vue@3.5.12(typescript@5.0.4))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.9.0
'@vueuse/shared': 10.9.0(vue@3.4.27(typescript@5.0.4))
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
'@vueuse/shared': 10.9.0(vue@3.5.12(typescript@5.0.4))
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@vueuse/metadata@10.9.0': {}
'@vueuse/shared@10.9.0(vue@3.4.27(typescript@5.0.4))':
'@vueuse/shared@10.9.0(vue@3.5.12(typescript@5.0.4))':
dependencies:
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -7012,9 +7109,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.27)(eslint@9.3.0):
eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.12)(eslint@9.3.0):
dependencies:
'@vue/compiler-sfc': 3.4.27
'@vue/compiler-sfc': 3.5.12
eslint: 9.3.0
eslint-rule-composer@0.3.0: {}
@@ -7805,6 +7902,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
magic-string@0.30.12:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
make-dir@2.1.0:
dependencies:
pify: 4.0.1
@@ -8156,6 +8257,8 @@ snapshots:
picocolors@1.0.1: {}
picocolors@1.1.1: {}
picomatch@2.3.1: {}
picomatch@4.0.2: {}
@@ -8163,15 +8266,15 @@ snapshots:
pify@4.0.1:
optional: true
pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.0.4)(vue@3.4.27(typescript@5.0.4))):
pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.0.4)(vue@3.5.12(typescript@5.0.4))):
dependencies:
pinia: 2.1.7(typescript@5.0.4)(vue@3.4.27(typescript@5.0.4))
pinia: 2.1.7(typescript@5.0.4)(vue@3.5.12(typescript@5.0.4))
pinia@2.1.7(typescript@5.0.4)(vue@3.4.27(typescript@5.0.4)):
pinia@2.1.7(typescript@5.0.4)(vue@3.5.12(typescript@5.0.4)):
dependencies:
'@vue/devtools-api': 6.6.1
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
optionalDependencies:
typescript: 5.0.4
@@ -8209,6 +8312,12 @@ snapshots:
picocolors: 1.0.1
source-map-js: 1.2.0
postcss@8.4.47:
dependencies:
nanoid: 3.3.7
picocolors: 1.1.1
source-map-js: 1.2.1
posthtml-parser@0.2.1:
dependencies:
htmlparser2: 3.10.1
@@ -8628,6 +8737,8 @@ snapshots:
source-map-js@1.2.0: {}
source-map-js@1.2.1: {}
source-map-resolve@0.5.3:
dependencies:
atob: 2.1.2
@@ -9001,7 +9112,7 @@ snapshots:
unpipe@1.0.0: {}
unplugin-auto-import@0.16.7(@vueuse/core@10.9.0(vue@3.4.27(typescript@5.0.4)))(rollup@4.17.2):
unplugin-auto-import@0.16.7(@vueuse/core@10.9.0(vue@3.5.12(typescript@5.0.4)))(rollup@4.17.2):
dependencies:
'@antfu/utils': 0.7.8
'@rollup/pluginutils': 5.1.0(rollup@4.17.2)
@@ -9012,11 +9123,11 @@ snapshots:
unimport: 3.7.1(rollup@4.17.2)
unplugin: 1.10.1
optionalDependencies:
'@vueuse/core': 10.9.0(vue@3.4.27(typescript@5.0.4))
'@vueuse/core': 10.9.0(vue@3.5.12(typescript@5.0.4))
transitivePeerDependencies:
- rollup
unplugin-vue-components@0.25.2(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.4.27(typescript@5.0.4)):
unplugin-vue-components@0.25.2(@babel/parser@7.26.1)(rollup@4.17.2)(vue@3.5.12(typescript@5.0.4)):
dependencies:
'@antfu/utils': 0.7.8
'@rollup/pluginutils': 5.1.0(rollup@4.17.2)
@@ -9028,9 +9139,9 @@ snapshots:
minimatch: 9.0.4
resolve: 1.22.8
unplugin: 1.10.1
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
optionalDependencies:
'@babel/parser': 7.24.5
'@babel/parser': 7.26.1
transitivePeerDependencies:
- rollup
- supports-color
@@ -9073,11 +9184,11 @@ snapshots:
utils-merge@1.0.1: {}
v-viewer@3.0.13(viewerjs@1.11.6)(vue@3.4.27(typescript@5.0.4)):
v-viewer@3.0.13(viewerjs@1.11.6)(vue@3.5.12(typescript@5.0.4)):
dependencies:
lodash-es: 4.17.21
viewerjs: 1.11.6
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
validate-npm-package-license@3.0.4:
dependencies:
@@ -9148,10 +9259,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
vite-plugin-vue-devtools@7.2.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4)):
vite-plugin-vue-devtools@7.2.0(rollup@4.17.2)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4)):
dependencies:
'@vue/devtools-core': 7.2.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.4.27(typescript@5.0.4))
'@vue/devtools-kit': 7.2.0(vue@3.4.27(typescript@5.0.4))
'@vue/devtools-core': 7.2.0(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(sass@1.77.2)(terser@5.31.0))(vue@3.5.12(typescript@5.0.4))
'@vue/devtools-kit': 7.2.0(vue@3.5.12(typescript@5.0.4))
'@vue/devtools-shared': 7.2.0
execa: 8.0.1
sirv: 2.0.4
@@ -9191,41 +9302,41 @@ snapshots:
sass: 1.77.2
terser: 5.31.0
vue-codemirror6@1.3.0(@lezer/common@1.2.1)(vue@3.4.27(typescript@5.0.4)):
vue-codemirror6@1.3.0(@lezer/common@1.2.1)(vue@3.5.12(typescript@5.0.4)):
dependencies:
codemirror: 6.0.1(@lezer/common@1.2.1)
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.14.10(vue@3.5.12(typescript@5.0.4))
transitivePeerDependencies:
- '@lezer/common'
- '@vue/composition-api'
vue-color-kit@1.0.6(vue@3.4.27(typescript@5.0.4)):
vue-color-kit@1.0.6(vue@3.5.12(typescript@5.0.4)):
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
vue-cropper@1.1.3: {}
vue-demi@0.13.11(vue@3.4.27(typescript@5.0.4)):
vue-demi@0.13.11(vue@3.5.12(typescript@5.0.4)):
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
vue-demi@0.14.10(vue@3.4.27(typescript@5.0.4)):
vue-demi@0.14.10(vue@3.5.12(typescript@5.0.4)):
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
vue-draggable-plus@0.3.5(@types/sortablejs@1.15.8):
dependencies:
'@types/sortablejs': 1.15.8
vue-echarts@6.7.2(@vue/runtime-core@3.4.27)(echarts@5.5.0)(vue@3.4.27(typescript@5.0.4)):
vue-echarts@6.7.2(@vue/runtime-core@3.5.12)(echarts@5.5.0)(vue@3.5.12(typescript@5.0.4)):
dependencies:
echarts: 5.5.0
resize-detector: 0.3.0
vue: 3.4.27(typescript@5.0.4)
vue-demi: 0.13.11(vue@3.4.27(typescript@5.0.4))
vue: 3.5.12(typescript@5.0.4)
vue-demi: 0.13.11(vue@3.5.12(typescript@5.0.4))
optionalDependencies:
'@vue/runtime-core': 3.4.27
'@vue/runtime-core': 3.5.12
vue-eslint-parser@9.4.2(eslint@9.3.0):
dependencies:
@@ -9240,14 +9351,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
vue-json-pretty@2.4.0(vue@3.4.27(typescript@5.0.4)):
vue-json-pretty@2.4.0(vue@3.5.12(typescript@5.0.4)):
dependencies:
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
vue-router@4.3.3(vue@3.4.27(typescript@5.0.4)):
vue-router@4.3.3(vue@3.5.12(typescript@5.0.4)):
dependencies:
'@vue/devtools-api': 6.6.1
vue: 3.4.27(typescript@5.0.4)
vue: 3.5.12(typescript@5.0.4)
vue-template-compiler@2.7.16:
dependencies:
@@ -9261,13 +9372,13 @@ snapshots:
semver: 7.6.2
typescript: 5.0.4
vue@3.4.27(typescript@5.0.4):
vue@3.5.12(typescript@5.0.4):
dependencies:
'@vue/compiler-dom': 3.4.27
'@vue/compiler-sfc': 3.4.27
'@vue/runtime-dom': 3.4.27
'@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.0.4))
'@vue/shared': 3.4.27
'@vue/compiler-dom': 3.5.12
'@vue/compiler-sfc': 3.5.12
'@vue/runtime-dom': 3.5.12
'@vue/server-renderer': 3.5.12(vue@3.5.12(typescript@5.0.4))
'@vue/shared': 3.5.12
optionalDependencies:
typescript: 5.0.4

View File

@@ -0,0 +1,121 @@
<template>
<div class="gi-edit-table">
<a-form ref="formRef" :model="form">
<a-table :data="form.tableData" :bordered="{ cell: true }" :pagination="false" v-bind="attrs">
<template #columns>
<a-table-column v-for="col in props.columns" :key="col.dataIndex" :title="col.title"
:data-index="col.dataIndex" :header-cell-class="headerCellClass(col)" v-bind="col.columnProps">
<template #cell="{ record, rowIndex, column }">
<a-form-item :field="`tableData[${rowIndex}].${col.dataIndex}`" :label-col-style="{ display: 'none' }"
:wrapper-col-props="{ span: 24 }" v-bind="col.formItemProps"
:rules="[{ required: col.required || false, message: getRuleMessage(col) }, ...(col.rules || [])]">
<template v-if="col.slotName">
<slot :name="col.dataIndex" v-bind="{ record, rowIndex, column }"></slot>
</template>
<component :is="`a-${col.type}`" v-else v-bind="getComponentBindProps(col)"
v-model="record[col.dataIndex]" :disabled="isDisabled({ row: record, rowIndex, col })">
</component>
</a-form-item>
</template>
</a-table-column>
</template>
</a-table>
</a-form>
</div>
</template>
<script lang='ts' setup generic="T extends TableData">
import type { TableData } from '@arco-design/web-vue'
import type { ColumnItem, Disabled } from './type'
defineOptions({ name: 'GiEditTable', inheritAttrs: false })
const props = withDefaults(defineProps<Props>(), {
cellDisabled: false
})
defineSlots<{
[propsName: string]: (props: { record: T, rowIndex: number, column: ColumnItem }) => void
}>()
interface Props {
columns: ColumnItem[]
data: T[]
cellDisabled?: Disabled<T>
}
const attrs = useAttrs()
const form = computed(() => ({ tableData: props.data }))
const formRef = useTemplateRef('formRef')
defineExpose({ formRef })
const headerCellClass = (col: ColumnItem) => {
return col.required ? 'gi_column_require' : ''
}
const getComponentBindProps = (col: ColumnItem) => {
const obj: Partial<ColumnItem['props'] & { placeholder: string }> = {}
if (col.type === 'input') {
obj.allowClear = true
obj.placeholder = `请输入${col.title}`
obj.maxLength = 50
}
if (col.type === 'input-number') {
obj.placeholder = `请输入${col.title}`
}
if (col.type === 'textarea') {
obj.allowClear = true
obj.placeholder = `填写${col.title}`
obj.maxLength = 200
}
if (col.type === 'select') {
obj.allowClear = true
obj.placeholder = `请选择${col.title}`
}
if (col.type === 'cascader') {
obj.allowClear = true
obj.placeholder = `请选择${col.title}`
}
if (col.type === 'tree-select') {
obj.allowClear = true
obj.placeholder = `请选择${col.title}`
}
if (col.type === 'date-picker') {
obj.placeholder = '请选择日期'
}
if (col.type === 'time-picker') {
obj.allowClear = true
obj.placeholder = `请选择时间`
}
return { ...obj, ...col.props }
}
const getRuleMessage = (col: ColumnItem) => {
if (['input', 'input-number'].includes(col.type ?? '')) {
return `请输入${col.title}`
}
if (['textarea'].includes(col.type ?? '')) {
return `请填写${col.title}`
}
if (['select', 'cascader', 'tree-select'].includes(col.type ?? '')) {
return `请选择${col.title}`
}
if (['date-picker'].includes(col.type ?? '')) {
return `请选择日期`
}
if (['time-picker'].includes(col.type ?? '')) {
return `请选择时间`
}
return ''
}
const isDisabled: Props['cellDisabled'] = (p) => {
if (typeof props?.cellDisabled === 'boolean') return props.cellDisabled
if (typeof props?.cellDisabled === 'function') return props.cellDisabled(p)
return false
}
</script>
<style lang='scss' scoped></style>

View File

@@ -0,0 +1,5 @@
import GiEditTable from './GiEditTable.vue'
export type * from './type'
export default GiEditTable

View File

@@ -0,0 +1,51 @@
import type * as A from '@arco-design/web-vue'
export interface ColumnItem {
type?:
| 'input'
| 'select'
| 'radio-group'
| 'checkbox-group'
| 'textarea'
| 'date-picker'
| 'year-picker'
| 'quarter-picker'
| 'week-picker'
| 'range-picker'
| 'month-picker'
| 'time-picker'
| 'color-picker'
| 'input-number'
| 'rate'
| 'switch'
| 'slider'
| 'cascader'
| 'tree-select'
| 'upload'
| ''
title: string
dataIndex: string
required?: boolean
rules?: A.FormItemInstance['$props']['rules'] // 表单校验规则
props?:
& A.InputInstance['$props']
& A.SelectInstance['$props']
& A.TextareaInstance['$props']
& A.DatePickerInstance['$props']
& A.TimePickerInstance['$props']
& A.RadioGroupInstance['$props']
& A.CheckboxGroupInstance['$props']
& A.InputNumberInstance['$props']
& A.RateInstance['$props']
& A.SwitchInstance['$props']
& A.SliderInstance['$props']
& A.CascaderInstance['$props']
& A.TreeSelectInstance['$props']
& A.UploadInstance['$props']
& A.AlertInstance['$props']
columnProps?: A.TableColumnInstance['$props']
formItemProps?: A.FormItemInstance['$props']
slotName?: string
}
export type Disabled<T> = boolean | ((e: { row: T, rowIndex: number, col: ColumnItem }) => boolean)

View File

@@ -22,6 +22,7 @@ declare module 'vue' {
GiCellTags: typeof import('./../components/GiCell/GiCellTags.vue')['default']
GiCodeView: typeof import('./../components/GiCodeView/index.vue')['default']
GiDot: typeof import('./../components/GiDot/index.tsx')['default']
GiEditTable: typeof import('./../components/GiEditTable/GiEditTable.vue')['default']
GiFlexibleBox: typeof import('./../components/GiFlexibleBox/index.vue')['default']
GiFooter: typeof import('./../components/GiFooter/index.vue')['default']
GiForm: typeof import('./../components/GiForm/src/GiForm.vue')['default']