Browse Source

Merge branch 'main' of https://github.com/vbenjs/vue-vben-admin

# Conflicts:
#	src/components/Form/src/components/ApiSelect.vue
shizhongming 2 years ago
parent
commit
cf0dbe6451
  1. 2
      .github/ISSUE_TEMPLATE/1-bug.md
  2. 2
      .github/ISSUE_TEMPLATE/3-bug-cn.md
  3. 12
      CHANGELOG.md
  4. 8
      package.json
  5. 2
      packages/hooks/package.json
  6. 221
      pnpm-lock.yaml
  7. 48
      src/components/Form/src/components/ApiCascader.vue
  8. 22
      src/components/Form/src/components/ApiRadioGroup.vue
  9. 22
      src/components/Form/src/components/ApiSelect.vue
  10. 27
      src/components/Form/src/components/ApiTransfer.vue
  11. 36
      src/components/Form/src/components/ApiTree.vue
  12. 28
      src/components/Form/src/components/ApiTreeSelect.vue
  13. 7
      src/components/Upload/src/BasicUpload.vue
  14. 1
      src/components/Upload/src/props.ts

2
.github/ISSUE_TEMPLATE/1-bug.md

@ -36,4 +36,4 @@ Please describe the steps of the problem in detail to ensure that we can restore
- Operating System:
- Node version:
- Package manager (npm/yarn/pnpm) and version:
- pnpm version:

2
.github/ISSUE_TEMPLATE/3-bug-cn.md

@ -25,4 +25,4 @@ assignees: ''
- 操作系统:
- Node 版本:
- 包管理器 (npm/yarn/pnpm) 及其版本:
- pnpm 版本:

12
CHANGELOG.md

@ -1,3 +1,15 @@
## [2.11.3](https://github.com/vbenjs/vue-vben-admin/compare/v2.11.2...v2.11.3) (2024-04-24)
### Bug Fixes
- **deps:** lock vue version to 3.4.23 ([#3785](https://github.com/vbenjs/vue-vben-admin/issues/3785)) ([2f655c2](https://github.com/vbenjs/vue-vben-admin/commit/2f655c2127753c0cde1cb29834314e961ce0930e)), closes [#3783](https://github.com/vbenjs/vue-vben-admin/issues/3783)
- **upload:** disabled prop not effect to upload in the form ([#3780](https://github.com/vbenjs/vue-vben-admin/issues/3780)) ([69a6e90](https://github.com/vbenjs/vue-vben-admin/commit/69a6e9023ef80a5504178d0887119f8e7bbd5113))
### Features
- **BasicForm->Components:** add beforeFetch & afterFetch to apicomp && perf the code ([#3786](https://github.com/vbenjs/vue-vben-admin/issues/3786)) ([7ae2ec0](https://github.com/vbenjs/vue-vben-admin/commit/7ae2ec03a773c2223feabbd1e341e90f012f8b7e))
- **demo:** use Tour component replace dirverjs ([#3777](https://github.com/vbenjs/vue-vben-admin/issues/3777)) ([49c4dc6](https://github.com/vbenjs/vue-vben-admin/commit/49c4dc646a9d123527577f02ee0d92865da9988e))
## [2.11.2](https://github.com/vbenjs/vue-vben-admin/compare/v2.11.1...v2.11.2) (2024-04-23)
### Bug Fixes

8
package.json

@ -1,6 +1,6 @@
{
"name": "vben-admin",
"version": "2.11.2",
"version": "2.11.3",
"homepage": "https://github.com/vbenjs/vue-vben-admin",
"bugs": {
"url": "https://github.com/vbenjs/vue-vben-admin/issues"
@ -75,7 +75,7 @@
"@logicflow/core": "^1.2.26",
"@logicflow/extension": "^1.2.26",
"@vben/hooks": "workspace:*",
"@vue/shared": "^3.4.24",
"@vue/shared": "3.4.23",
"@vueuse/core": "^10.9.0",
"@zxcvbn-ts/core": "^3.0.4",
"ant-design-vue": "^4.2.0",
@ -101,7 +101,7 @@
"tinymce": "^5.10.9",
"unocss": "^0.59.4",
"vditor": "^3.10.4",
"vue": "^3.4.24",
"vue": "3.4.23",
"vue-i18n": "^9.13.1",
"vue-json-pretty": "^2.4.0",
"vue-router": "^4.3.2",
@ -131,7 +131,7 @@
"@vben/ts-config": "workspace:*",
"@vben/types": "workspace:*",
"@vben/vite-config": "workspace:*",
"@vue/compiler-sfc": "^3.4.24",
"@vue/compiler-sfc": "3.4.23",
"@vue/test-utils": "^2.4.5",
"conventional-changelog-cli": "^4.1.0",
"cross-env": "^7.0.3",

2
packages/hooks/package.json

@ -32,7 +32,7 @@
"dependencies": {
"@vueuse/core": "^10.9.0",
"lodash-es": "^4.17.21",
"vue": "^3.4.24"
"vue": "3.4.23"
},
"devDependencies": {
"@vben/types": "workspace:*"

221
pnpm-lock.yaml

@ -10,7 +10,7 @@ importers:
dependencies:
'@ant-design/icons-vue':
specifier: ^7.0.1
version: 7.0.1(vue@3.4.24(typescript@5.4.5))
version: 7.0.1(vue@3.4.23(typescript@5.4.5))
'@iconify/iconify':
specifier: ^3.1.1
version: 3.1.1
@ -24,17 +24,17 @@ importers:
specifier: workspace:*
version: link:packages/hooks
'@vue/shared':
specifier: ^3.4.24
version: 3.4.24
specifier: 3.4.23
version: 3.4.23
'@vueuse/core':
specifier: ^10.9.0
version: 10.9.0(vue@3.4.24(typescript@5.4.5))
version: 10.9.0(vue@3.4.23(typescript@5.4.5))
'@zxcvbn-ts/core':
specifier: ^3.0.4
version: 3.0.4
ant-design-vue:
specifier: ^4.2.0
version: 4.2.0(vue@3.4.24(typescript@5.4.5))
version: 4.2.0(vue@3.4.23(typescript@5.4.5))
axios:
specifier: ^1.6.8
version: 1.6.8
@ -70,10 +70,10 @@ importers:
version: 6.2.2
pinia:
specifier: 2.1.7
version: 2.1.7(typescript@5.4.5)(vue@3.4.24(typescript@5.4.5))
version: 2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5))
pinia-plugin-persistedstate:
specifier: ^3.2.1
version: 3.2.1(pinia@2.1.7(typescript@5.4.5)(vue@3.4.24(typescript@5.4.5)))
version: 3.2.1(pinia@2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)))
print-js:
specifier: ^1.6.0
version: 1.6.0
@ -102,29 +102,29 @@ importers:
specifier: ^3.10.4
version: 3.10.4
vue:
specifier: ^3.4.24
version: 3.4.24(typescript@5.4.5)
specifier: 3.4.23
version: 3.4.23(typescript@5.4.5)
vue-i18n:
specifier: ^9.13.1
version: 9.13.1(vue@3.4.24(typescript@5.4.5))
version: 9.13.1(vue@3.4.23(typescript@5.4.5))
vue-json-pretty:
specifier: ^2.4.0
version: 2.4.0(vue@3.4.24(typescript@5.4.5))
version: 2.4.0(vue@3.4.23(typescript@5.4.5))
vue-router:
specifier: ^4.3.2
version: 4.3.2(vue@3.4.24(typescript@5.4.5))
version: 4.3.2(vue@3.4.23(typescript@5.4.5))
vue-types:
specifier: ^5.1.1
version: 5.1.1(vue@3.4.24(typescript@5.4.5))
version: 5.1.1(vue@3.4.23(typescript@5.4.5))
vuedraggable:
specifier: ^4.1.0
version: 4.1.0(vue@3.4.24(typescript@5.4.5))
version: 4.1.0(vue@3.4.23(typescript@5.4.5))
vxe-table:
specifier: ^4.6.0
version: 4.6.0(vue@3.4.24(typescript@5.4.5))
version: 4.6.0(vue@3.4.23(typescript@5.4.5))
vxe-table-plugin-export-xlsx:
specifier: ^4.0.1
version: 4.0.1(vxe-table@4.6.0(vue@3.4.24(typescript@5.4.5)))
version: 4.0.1(vxe-table@4.6.0(vue@3.4.23(typescript@5.4.5)))
xe-utils:
specifier: ^3.5.25
version: 3.5.25
@ -187,8 +187,8 @@ importers:
specifier: workspace:*
version: link:internal/vite-config
'@vue/compiler-sfc':
specifier: ^3.4.24
version: 3.4.24
specifier: 3.4.23
version: 3.4.23
'@vue/test-utils':
specifier: ^2.4.5
version: 2.4.5
@ -457,13 +457,13 @@ importers:
dependencies:
'@vueuse/core':
specifier: ^10.9.0
version: 10.9.0(vue@3.4.24(typescript@5.4.5))
version: 10.9.0(vue@3.4.23(typescript@5.4.5))
lodash-es:
specifier: ^4.17.21
version: 4.17.21
vue:
specifier: ^3.4.24
version: 3.4.24(typescript@5.4.5)
specifier: 3.4.23
version: 3.4.23(typescript@5.4.5)
devDependencies:
'@vben/types':
specifier: workspace:*
@ -1943,9 +1943,15 @@ packages:
'@vue/compiler-dom@3.4.24':
resolution: {integrity: sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==}
'@vue/compiler-sfc@3.4.23':
resolution: {integrity: sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==}
'@vue/compiler-sfc@3.4.24':
resolution: {integrity: sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==}
'@vue/compiler-ssr@3.4.23':
resolution: {integrity: sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==}
'@vue/compiler-ssr@3.4.24':
resolution: {integrity: sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==}
@ -1968,15 +1974,29 @@ packages:
typescript:
optional: true
'@vue/reactivity@3.4.23':
resolution: {integrity: sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==}
'@vue/reactivity@3.4.24':
resolution: {integrity: sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==}
'@vue/runtime-core@3.4.23':
resolution: {integrity: sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==}
'@vue/runtime-core@3.4.24':
resolution: {integrity: sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==}
'@vue/runtime-dom@3.4.23':
resolution: {integrity: sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==}
'@vue/runtime-dom@3.4.24':
resolution: {integrity: sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==}
'@vue/server-renderer@3.4.23':
resolution: {integrity: sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==}
peerDependencies:
vue: 3.4.23
'@vue/server-renderer@3.4.24':
resolution: {integrity: sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==}
peerDependencies:
@ -6960,6 +6980,14 @@ packages:
vue:
optional: true
vue@3.4.23:
resolution: {integrity: sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
vue@3.4.24:
resolution: {integrity: sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==}
peerDependencies:
@ -7237,6 +7265,12 @@ snapshots:
'@ant-design/icons-svg@4.4.2': {}
'@ant-design/icons-vue@7.0.1(vue@3.4.23(typescript@5.4.5))':
dependencies:
'@ant-design/colors': 6.0.0
'@ant-design/icons-svg': 4.4.2
vue: 3.4.23(typescript@5.4.5)
'@ant-design/icons-vue@7.0.1(vue@3.4.24(typescript@5.4.5))':
dependencies:
'@ant-design/colors': 6.0.0
@ -9009,7 +9043,7 @@ snapshots:
'@babel/helper-module-imports': 7.22.15
'@babel/helper-plugin-utils': 7.24.0
'@babel/parser': 7.24.4
'@vue/compiler-sfc': 3.4.24
'@vue/compiler-sfc': 3.4.23
'@vue/compiler-core@3.4.23':
dependencies:
@ -9037,6 +9071,18 @@ snapshots:
'@vue/compiler-core': 3.4.24
'@vue/shared': 3.4.24
'@vue/compiler-sfc@3.4.23':
dependencies:
'@babel/parser': 7.24.4
'@vue/compiler-core': 3.4.23
'@vue/compiler-dom': 3.4.23
'@vue/compiler-ssr': 3.4.23
'@vue/shared': 3.4.23
estree-walker: 2.0.2
magic-string: 0.30.10
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-sfc@3.4.24':
dependencies:
'@babel/parser': 7.24.4
@ -9049,6 +9095,11 @@ snapshots:
postcss: 8.4.38
source-map-js: 1.2.0
'@vue/compiler-ssr@3.4.23':
dependencies:
'@vue/compiler-dom': 3.4.23
'@vue/shared': 3.4.23
'@vue/compiler-ssr@3.4.24':
dependencies:
'@vue/compiler-dom': 3.4.24
@ -9060,8 +9111,8 @@ snapshots:
dependencies:
'@volar/language-core': 1.11.1
'@volar/source-map': 1.11.1
'@vue/compiler-dom': 3.4.23
'@vue/shared': 3.4.24
'@vue/compiler-dom': 3.4.24
'@vue/shared': 3.4.23
computeds: 0.0.1
minimatch: 9.0.4
muggle-string: 0.3.1
@ -9073,8 +9124,8 @@ snapshots:
'@vue/language-core@2.0.14(typescript@5.4.5)':
dependencies:
'@volar/language-core': 2.2.0-alpha.10
'@vue/compiler-dom': 3.4.23
'@vue/shared': 3.4.24
'@vue/compiler-dom': 3.4.24
'@vue/shared': 3.4.23
computeds: 0.0.1
minimatch: 9.0.4
path-browserify: 1.0.1
@ -9082,21 +9133,42 @@ snapshots:
optionalDependencies:
typescript: 5.4.5
'@vue/reactivity@3.4.23':
dependencies:
'@vue/shared': 3.4.23
'@vue/reactivity@3.4.24':
dependencies:
'@vue/shared': 3.4.24
'@vue/runtime-core@3.4.23':
dependencies:
'@vue/reactivity': 3.4.23
'@vue/shared': 3.4.23
'@vue/runtime-core@3.4.24':
dependencies:
'@vue/reactivity': 3.4.24
'@vue/shared': 3.4.24
'@vue/runtime-dom@3.4.23':
dependencies:
'@vue/runtime-core': 3.4.23
'@vue/shared': 3.4.23
csstype: 3.1.3
'@vue/runtime-dom@3.4.24':
dependencies:
'@vue/runtime-core': 3.4.24
'@vue/shared': 3.4.24
csstype: 3.1.3
'@vue/server-renderer@3.4.23(vue@3.4.23(typescript@5.4.5))':
dependencies:
'@vue/compiler-ssr': 3.4.23
'@vue/shared': 3.4.23
vue: 3.4.23(typescript@5.4.5)
'@vue/server-renderer@3.4.24(vue@3.4.24(typescript@5.4.5))':
dependencies:
'@vue/compiler-ssr': 3.4.24
@ -9112,21 +9184,21 @@ snapshots:
js-beautify: 1.15.1
vue-component-type-helpers: 2.0.13
'@vueuse/core@10.9.0(vue@3.4.24(typescript@5.4.5))':
'@vueuse/core@10.9.0(vue@3.4.23(typescript@5.4.5))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.9.0
'@vueuse/shared': 10.9.0(vue@3.4.24(typescript@5.4.5))
vue-demi: 0.14.7(vue@3.4.24(typescript@5.4.5))
'@vueuse/shared': 10.9.0(vue@3.4.23(typescript@5.4.5))
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
'@vueuse/metadata@10.9.0': {}
'@vueuse/shared@10.9.0(vue@3.4.24(typescript@5.4.5))':
'@vueuse/shared@10.9.0(vue@3.4.23(typescript@5.4.5))':
dependencies:
vue-demi: 0.14.7(vue@3.4.24(typescript@5.4.5))
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@ -9232,6 +9304,32 @@ snapshots:
ansi-styles@6.2.1: {}
ant-design-vue@4.2.0(vue@3.4.23(typescript@5.4.5)):
dependencies:
'@ant-design/colors': 6.0.0
'@ant-design/icons-vue': 7.0.1(vue@3.4.23(typescript@5.4.5))
'@babel/runtime': 7.24.4
'@ctrl/tinycolor': 3.6.1
'@emotion/hash': 0.9.1
'@emotion/unitless': 0.8.1
'@simonwep/pickr': 1.8.2
array-tree-filter: 2.1.0
async-validator: 4.2.5
csstype: 3.1.3
dayjs: 1.11.10
dom-align: 1.12.4
dom-scroll-into-view: 2.0.1
lodash: 4.17.21
lodash-es: 4.17.21
resize-observer-polyfill: 1.5.1
scroll-into-view-if-needed: 2.2.31
shallow-equal: 1.2.1
stylis: 4.3.1
throttle-debounce: 5.0.0
vue: 3.4.23(typescript@5.4.5)
vue-types: 3.0.2(vue@3.4.23(typescript@5.4.5))
warning: 4.0.3
ant-design-vue@4.2.0(vue@3.4.24(typescript@5.4.5)):
dependencies:
'@ant-design/colors': 6.0.0
@ -9420,7 +9518,7 @@ snapshots:
axios@1.6.8:
dependencies:
follow-redirects: 1.15.6
follow-redirects: 1.15.6(debug@4.3.4)
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
@ -10972,8 +11070,6 @@ snapshots:
flatted@3.3.1: {}
follow-redirects@1.15.6: {}
follow-redirects@1.15.6(debug@4.3.4):
optionalDependencies:
debug: 4.3.4
@ -12947,15 +13043,15 @@ snapshots:
pify@4.0.1:
optional: true
pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.4.5)(vue@3.4.24(typescript@5.4.5))):
pinia-plugin-persistedstate@3.2.1(pinia@2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5))):
dependencies:
pinia: 2.1.7(typescript@5.4.5)(vue@3.4.24(typescript@5.4.5))
pinia: 2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5))
pinia@2.1.7(typescript@5.4.5)(vue@3.4.24(typescript@5.4.5)):
pinia@2.1.7(typescript@5.4.5)(vue@3.4.23(typescript@5.4.5)):
dependencies:
'@vue/devtools-api': 6.6.1
vue: 3.4.24(typescript@5.4.5)
vue-demi: 0.14.7(vue@3.4.24(typescript@5.4.5))
vue: 3.4.23(typescript@5.4.5)
vue-demi: 0.14.7(vue@3.4.23(typescript@5.4.5))
optionalDependencies:
typescript: 5.4.5
@ -14743,9 +14839,9 @@ snapshots:
vue-component-type-helpers@2.0.13: {}
vue-demi@0.14.7(vue@3.4.24(typescript@5.4.5)):
vue-demi@0.14.7(vue@3.4.23(typescript@5.4.5)):
dependencies:
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vue-eslint-parser@9.4.2(eslint@8.57.0):
dependencies:
@ -14760,21 +14856,21 @@ snapshots:
transitivePeerDependencies:
- supports-color
vue-i18n@9.13.1(vue@3.4.24(typescript@5.4.5)):
vue-i18n@9.13.1(vue@3.4.23(typescript@5.4.5)):
dependencies:
'@intlify/core-base': 9.13.1
'@intlify/shared': 9.13.1
'@vue/devtools-api': 6.6.1
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vue-json-pretty@2.4.0(vue@3.4.24(typescript@5.4.5)):
vue-json-pretty@2.4.0(vue@3.4.23(typescript@5.4.5)):
dependencies:
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vue-router@4.3.2(vue@3.4.24(typescript@5.4.5)):
vue-router@4.3.2(vue@3.4.23(typescript@5.4.5)):
dependencies:
'@vue/devtools-api': 6.6.1
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vue-template-compiler@2.7.16:
dependencies:
@ -14795,16 +14891,31 @@ snapshots:
semver: 7.6.0
typescript: 5.4.5
vue-types@3.0.2(vue@3.4.23(typescript@5.4.5)):
dependencies:
is-plain-object: 3.0.1
vue: 3.4.23(typescript@5.4.5)
vue-types@3.0.2(vue@3.4.24(typescript@5.4.5)):
dependencies:
is-plain-object: 3.0.1
vue: 3.4.24(typescript@5.4.5)
vue-types@5.1.1(vue@3.4.24(typescript@5.4.5)):
vue-types@5.1.1(vue@3.4.23(typescript@5.4.5)):
dependencies:
is-plain-object: 5.0.0
optionalDependencies:
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vue@3.4.23(typescript@5.4.5):
dependencies:
'@vue/compiler-dom': 3.4.23
'@vue/compiler-sfc': 3.4.23
'@vue/runtime-dom': 3.4.23
'@vue/server-renderer': 3.4.23(vue@3.4.23(typescript@5.4.5))
'@vue/shared': 3.4.23
optionalDependencies:
typescript: 5.4.5
vue@3.4.24(typescript@5.4.5):
dependencies:
@ -14816,19 +14927,19 @@ snapshots:
optionalDependencies:
typescript: 5.4.5
vuedraggable@4.1.0(vue@3.4.24(typescript@5.4.5)):
vuedraggable@4.1.0(vue@3.4.23(typescript@5.4.5)):
dependencies:
sortablejs: 1.14.0
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
vxe-table-plugin-export-xlsx@4.0.1(vxe-table@4.6.0(vue@3.4.24(typescript@5.4.5))):
vxe-table-plugin-export-xlsx@4.0.1(vxe-table@4.6.0(vue@3.4.23(typescript@5.4.5))):
dependencies:
vxe-table: 4.6.0(vue@3.4.24(typescript@5.4.5))
vxe-table: 4.6.0(vue@3.4.23(typescript@5.4.5))
vxe-table@4.6.0(vue@3.4.24(typescript@5.4.5)):
vxe-table@4.6.0(vue@3.4.23(typescript@5.4.5)):
dependencies:
dom-zindex: 1.0.1
vue: 3.4.24(typescript@5.4.5)
vue: 3.4.23(typescript@5.4.5)
xe-utils: 3.5.25
w3c-hr-time@1.0.2:

48
src/components/Form/src/components/ApiCascader.vue

@ -69,6 +69,14 @@
displayRenderArray: {
type: Array,
},
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
});
const emit = defineEmits(['change', 'defaultChange']);
@ -112,19 +120,25 @@
}, [] as Option[]);
}
async function initialFetch() {
const api = props.api;
async function fetch() {
let { api, beforeFetch, initFetchParams, afterFetch, resultField } = props;
if (!api || !isFunction(api)) return;
apiData.value = [];
loading.value = true;
try {
const res = await api(props.initFetchParams);
if (beforeFetch && isFunction(beforeFetch)) {
initFetchParams = (await beforeFetch(initFetchParams)) || initFetchParams;
}
let res = await api(initFetchParams);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
if (Array.isArray(res)) {
apiData.value = res;
return;
}
if (props.resultField) {
apiData.value = get(res, props.resultField) || [];
if (resultField) {
apiData.value = get(res, resultField) || [];
}
} catch (error) {
console.warn(error);
@ -136,20 +150,26 @@
const loadData: CascaderProps['loadData'] = async (selectedOptions) => {
const targetOption = selectedOptions[selectedOptions.length - 1];
targetOption.loading = true;
const api = props.api;
let { api, beforeFetch, afterFetch, resultField, apiParamKey } = props;
if (!api || !isFunction(api)) return;
try {
const res = await api({
[props.apiParamKey]: Reflect.get(targetOption, 'value'),
});
let param = {
[apiParamKey]: Reflect.get(targetOption, 'value'),
};
if (beforeFetch && isFunction(beforeFetch)) {
param = (await beforeFetch(param)) || param;
}
let res = await api(param);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
if (Array.isArray(res)) {
const children = generatorOptions(res);
targetOption.children = children;
return;
}
if (props.resultField) {
const children = generatorOptions(get(res, props.resultField) || []);
if (resultField) {
const children = generatorOptions(get(res, resultField) || []);
targetOption.children = children;
}
} catch (e) {
@ -162,7 +182,7 @@
watch(
() => props.immediate,
() => {
props.immediate && initialFetch();
props.immediate && fetch();
},
{
immediate: true,
@ -172,7 +192,7 @@
watch(
() => props.initFetchParams,
() => {
!unref(isFirstLoad) && initialFetch();
!unref(isFirstLoad) && fetch();
},
{ deep: true },
);

22
src/components/Form/src/components/ApiRadioGroup.vue

@ -57,6 +57,14 @@
labelField: propTypes.string.def('label'),
valueField: propTypes.string.def('value'),
immediate: propTypes.bool.def(true),
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
});
const emit = defineEmits(['options-change', 'change', 'update:value']);
@ -95,19 +103,25 @@
);
async function fetch() {
const api = props.api;
let { api, beforeFetch, afterFetch, params, resultField } = props;
if (!api || !isFunction(api)) return;
options.value = [];
try {
loading.value = true;
const res = await api(props.params);
if (beforeFetch && isFunction(beforeFetch)) {
params = (await beforeFetch(params)) || params;
}
let res = await api(params);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
if (Array.isArray(res)) {
options.value = res;
emitChange();
return;
}
if (props.resultField) {
options.value = get(res, props.resultField) || [];
if (resultField) {
options.value = get(res, resultField) || [];
}
emitChange();
} catch (error) {

22
src/components/Form/src/components/ApiSelect.vue

@ -55,6 +55,14 @@
default: [],
},
labelWithCode: propTypes.bool,
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
});
const emit = defineEmits(['options-change', 'change', 'update:value']);
@ -104,20 +112,26 @@
);
async function fetch() {
const api = props.api;
let { api, beforeFetch, afterFetch, params, resultField } = props;
if (!api || !isFunction(api) || loading.value) return;
optionsRef.value = [];
try {
loading.value = true;
const res = await api(props.params);
if (beforeFetch && isFunction(beforeFetch)) {
params = (await beforeFetch(params)) || params;
}
let res = await api(params);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
isFirstLoaded.value = true;
if (Array.isArray(res)) {
optionsRef.value = res;
emitChange();
return;
}
if (props.resultField) {
optionsRef.value = get(res, props.resultField) || [];
if (resultField) {
optionsRef.value = get(res, resultField) || [];
}
emitChange();
} catch (error) {

27
src/components/Form/src/components/ApiTransfer.vue

@ -32,7 +32,14 @@
dataSource: { type: Array as PropType<Array<TransferItem>> },
immediate: propTypes.bool.def(true),
alwaysLoad: propTypes.bool.def(false),
afterFetch: { type: Function },
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
resultField: propTypes.string.def(''),
labelField: propTypes.string.def('title'),
valueField: propTypes.string.def('key'),
@ -98,23 +105,29 @@
);
async function fetch() {
const api = props.api;
let { api, beforeFetch, afterFetch, params, resultField, dataSource } = props;
if (!api || !isFunction(api)) {
if (Array.isArray(props.dataSource)) {
_dataSource.value = props.dataSource;
if (Array.isArray(dataSource)) {
_dataSource.value = dataSource;
}
return;
}
_dataSource.value = [];
try {
const res = await api(props.params);
if (beforeFetch && isFunction(beforeFetch)) {
params = (await beforeFetch(params)) || params;
}
let res = await api(params);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
if (Array.isArray(res)) {
_dataSource.value = res;
emitChange();
return;
}
if (props.resultField) {
_dataSource.value = get(res, props.resultField) || [];
if (resultField) {
_dataSource.value = get(res, resultField) || [];
}
emitChange();
} catch (error) {

36
src/components/Form/src/components/ApiTree.vue

@ -7,10 +7,10 @@
</template>
<script lang="ts" setup>
import { type Recordable, type AnyFunction } from '@vben/types';
import { type Recordable } from '@vben/types';
import { type PropType, computed, watch, ref, onMounted, unref, useAttrs } from 'vue';
import { Tree, TreeProps } from 'ant-design-vue';
import { isArray, isFunction } from '@/utils/is';
import { isFunction } from '@/utils/is';
import { get } from 'lodash-es';
import { DataNode } from 'ant-design-vue/es/tree';
import { useRuleFormItem } from '@/hooks/component/useFormItem';
@ -22,7 +22,14 @@
params: { type: Object },
immediate: { type: Boolean, default: true },
resultField: { type: String, default: '' },
afterFetch: { type: Function as PropType<AnyFunction> },
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
value: {
type: Array as PropType<TreeProps['selectedKeys']>,
},
@ -72,25 +79,28 @@
});
async function fetch() {
const { api, afterFetch } = props;
let { api, beforeFetch, afterFetch, params, resultField } = props;
if (!api || !isFunction(api)) return;
loading.value = true;
treeData.value = [];
let result;
let res;
try {
result = await api(props.params);
if (beforeFetch && isFunction(beforeFetch)) {
params = (await beforeFetch(params)) || params;
}
res = await api(params);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
} catch (e) {
console.error(e);
}
if (afterFetch && isFunction(afterFetch)) {
result = afterFetch(result);
}
loading.value = false;
if (!result) return;
if (!isArray(result)) {
result = get(result, props.resultField);
if (!res) return;
if (resultField) {
res = get(res, resultField) || [];
}
treeData.value = (result as (Recordable & { key: string | number })[]) || [];
treeData.value = (res as (Recordable & { key: string | number })[]) || [];
isFirstLoaded.value = true;
emit('options-change', treeData.value);
}

28
src/components/Form/src/components/ApiTreeSelect.vue

@ -34,6 +34,14 @@
labelField: propTypes.string.def('title'),
valueField: propTypes.string.def('value'),
childrenField: propTypes.string.def('children'),
beforeFetch: {
type: Function as PropType<Fn>,
default: null,
},
afterFetch: {
type: Function as PropType<Fn>,
default: null,
},
});
const emit = defineEmits(['options-change', 'change', 'load-data']);
@ -88,22 +96,28 @@
}
async function fetch() {
const { api } = props;
let { api, beforeFetch, afterFetch, params, resultField } = props;
if (!api || !isFunction(api) || loading.value) return;
loading.value = true;
treeData.value = [];
let result;
let res;
try {
result = await api(props.params);
if (beforeFetch && isFunction(beforeFetch)) {
params = (await beforeFetch(params)) || params;
}
res = await api(params);
if (afterFetch && isFunction(afterFetch)) {
res = (await afterFetch(res)) || res;
}
} catch (e) {
console.error(e);
}
loading.value = false;
if (!result) return;
if (!isArray(result)) {
result = get(result, props.resultField);
if (!res) return;
if (resultField) {
res = get(res, resultField) || [];
}
treeData.value = (result as Recordable<any>[]) || [];
treeData.value = (res as Recordable<any>[]) || [];
isFirstLoaded.value = true;
emit('options-change', treeData.value);
}

7
src/components/Upload/src/BasicUpload.vue

@ -1,7 +1,12 @@
<template>
<div>
<Space>
<a-button type="primary" @click="openUploadModal" preIcon="carbon:cloud-upload">
<a-button
type="primary"
@click="openUploadModal"
preIcon="carbon:cloud-upload"
:disabled="disabled"
>
{{ t('component.upload.upload') }}
</a-button>
<Tooltip placement="bottom" v-if="showPreview">

1
src/components/Upload/src/props.ts

@ -31,6 +31,7 @@ export const previewType = {
type ListType = 'text' | 'picture' | 'picture-card';
export const basicProps = {
disabled: { type: Boolean, default: false },
listType: {
type: String as PropType<ListType>,
default: 'picture-card',

Loading…
Cancel
Save