mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
commit
161205d32a
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "yudao-ui-admin-vue3",
|
"name": "yudao-ui-admin-vue3",
|
||||||
"version": "1.6.6-snapshot.1911",
|
"version": "1.6.6-snapshot.1912",
|
||||||
"description": "基于vue3、vite4、element-plus、typesScript",
|
"description": "基于vue3、vite4、element-plus、typesScript",
|
||||||
"author": "xingyu",
|
"author": "xingyu",
|
||||||
"private": false,
|
"private": false,
|
||||||
@ -55,9 +55,9 @@
|
|||||||
"xe-utils": "^3.5.7"
|
"xe-utils": "^3.5.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.4.1",
|
"@commitlint/cli": "^17.4.2",
|
||||||
"@commitlint/config-conventional": "^17.4.0",
|
"@commitlint/config-conventional": "^17.4.2",
|
||||||
"@iconify/json": "^2.2.5",
|
"@iconify/json": "^2.2.6",
|
||||||
"@intlify/unplugin-vue-i18n": "^0.8.1",
|
"@intlify/unplugin-vue-i18n": "^0.8.1",
|
||||||
"@purge-icons/generated": "^0.9.0",
|
"@purge-icons/generated": "^0.9.0",
|
||||||
"@types/intro.js": "^5.1.0",
|
"@types/intro.js": "^5.1.0",
|
||||||
@ -77,14 +77,14 @@
|
|||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-define-config": "^1.14.0",
|
"eslint-define-config": "^1.14.0",
|
||||||
"eslint-plugin-prettier": "^4.2.1",
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
"eslint-plugin-vue": "^9.8.0",
|
"eslint-plugin-vue": "^9.9.0",
|
||||||
"lint-staged": "^13.1.0",
|
"lint-staged": "^13.1.0",
|
||||||
"postcss": "^8.4.21",
|
"postcss": "^8.4.21",
|
||||||
"postcss-html": "^1.5.0",
|
"postcss-html": "^1.5.0",
|
||||||
"postcss-scss": "^4.0.6",
|
"postcss-scss": "^4.0.6",
|
||||||
"prettier": "^2.8.2",
|
"prettier": "^2.8.2",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^4.0.4",
|
||||||
"rollup": "^3.9.1",
|
"rollup": "^3.10.0",
|
||||||
"sass": "^1.57.1",
|
"sass": "^1.57.1",
|
||||||
"stylelint": "^14.16.1",
|
"stylelint": "^14.16.1",
|
||||||
"stylelint-config-html": "^1.1.0",
|
"stylelint-config-html": "^1.1.0",
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
lockfileVersion: 5.4
|
lockfileVersion: 5.4
|
||||||
|
|
||||||
specifiers:
|
specifiers:
|
||||||
'@commitlint/cli': ^17.4.1
|
'@commitlint/cli': ^17.4.2
|
||||||
'@commitlint/config-conventional': ^17.4.0
|
'@commitlint/config-conventional': ^17.4.2
|
||||||
'@iconify/iconify': ^3.0.1
|
'@iconify/iconify': ^3.0.1
|
||||||
'@iconify/json': ^2.2.5
|
'@iconify/json': ^2.2.6
|
||||||
'@intlify/unplugin-vue-i18n': ^0.8.1
|
'@intlify/unplugin-vue-i18n': ^0.8.1
|
||||||
'@purge-icons/generated': ^0.9.0
|
'@purge-icons/generated': ^0.9.0
|
||||||
'@types/intro.js': ^5.1.0
|
'@types/intro.js': ^5.1.0
|
||||||
@ -36,7 +36,7 @@ specifiers:
|
|||||||
eslint-config-prettier: ^8.6.0
|
eslint-config-prettier: ^8.6.0
|
||||||
eslint-define-config: ^1.14.0
|
eslint-define-config: ^1.14.0
|
||||||
eslint-plugin-prettier: ^4.2.1
|
eslint-plugin-prettier: ^4.2.1
|
||||||
eslint-plugin-vue: ^9.8.0
|
eslint-plugin-vue: ^9.9.0
|
||||||
intro.js: ^6.0.0
|
intro.js: ^6.0.0
|
||||||
jsencrypt: ^3.3.1
|
jsencrypt: ^3.3.1
|
||||||
lint-staged: ^13.1.0
|
lint-staged: ^13.1.0
|
||||||
@ -50,8 +50,8 @@ specifiers:
|
|||||||
prettier: ^2.8.2
|
prettier: ^2.8.2
|
||||||
qrcode: ^1.5.1
|
qrcode: ^1.5.1
|
||||||
qs: ^6.11.0
|
qs: ^6.11.0
|
||||||
rimraf: ^3.0.2
|
rimraf: ^4.0.4
|
||||||
rollup: ^3.9.1
|
rollup: ^3.10.0
|
||||||
sass: ^1.57.1
|
sass: ^1.57.1
|
||||||
stylelint: ^14.16.1
|
stylelint: ^14.16.1
|
||||||
stylelint-config-html: ^1.1.0
|
stylelint-config-html: ^1.1.0
|
||||||
@ -114,9 +114,9 @@ dependencies:
|
|||||||
xe-utils: 3.5.7
|
xe-utils: 3.5.7
|
||||||
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@commitlint/cli': 17.4.1
|
'@commitlint/cli': 17.4.2
|
||||||
'@commitlint/config-conventional': 17.4.0
|
'@commitlint/config-conventional': 17.4.2
|
||||||
'@iconify/json': 2.2.5
|
'@iconify/json': 2.2.6
|
||||||
'@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2
|
'@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.2.2
|
||||||
'@purge-icons/generated': 0.9.0
|
'@purge-icons/generated': 0.9.0
|
||||||
'@types/intro.js': 5.1.0
|
'@types/intro.js': 5.1.0
|
||||||
@ -136,14 +136,14 @@ devDependencies:
|
|||||||
eslint-config-prettier: 8.6.0_eslint@8.31.0
|
eslint-config-prettier: 8.6.0_eslint@8.31.0
|
||||||
eslint-define-config: 1.14.0
|
eslint-define-config: 1.14.0
|
||||||
eslint-plugin-prettier: 4.2.1_iu5s7nk6dw7o3tajefwfiqfmge
|
eslint-plugin-prettier: 4.2.1_iu5s7nk6dw7o3tajefwfiqfmge
|
||||||
eslint-plugin-vue: 9.8.0_eslint@8.31.0
|
eslint-plugin-vue: 9.9.0_eslint@8.31.0
|
||||||
lint-staged: 13.1.0
|
lint-staged: 13.1.0
|
||||||
postcss: 8.4.21
|
postcss: 8.4.21
|
||||||
postcss-html: 1.5.0
|
postcss-html: 1.5.0
|
||||||
postcss-scss: 4.0.6_postcss@8.4.21
|
postcss-scss: 4.0.6_postcss@8.4.21
|
||||||
prettier: 2.8.2
|
prettier: 2.8.2
|
||||||
rimraf: 3.0.2
|
rimraf: 4.0.4
|
||||||
rollup: 3.9.1
|
rollup: 3.10.0
|
||||||
sass: 1.57.1
|
sass: 1.57.1
|
||||||
stylelint: 14.16.1
|
stylelint: 14.16.1
|
||||||
stylelint-config-html: 1.1.0_kbto3rg3njmczth2rrsgfnlsqa
|
stylelint-config-html: 1.1.0_kbto3rg3njmczth2rrsgfnlsqa
|
||||||
@ -506,15 +506,15 @@ packages:
|
|||||||
'@babel/helper-validator-identifier': 7.19.1
|
'@babel/helper-validator-identifier': 7.19.1
|
||||||
to-fast-properties: 2.0.0
|
to-fast-properties: 2.0.0
|
||||||
|
|
||||||
/@commitlint/cli/17.4.1:
|
/@commitlint/cli/17.4.2:
|
||||||
resolution: {integrity: sha512-W8OJwz+izY+fVwyUt1HveCDmABMZNRVZHSVPw/Bh9Y62tp11SmmQaycgbsYLMiMy7JGn4mAJqEGlSHS9Uti9ZQ==}
|
resolution: {integrity: sha512-0rPGJ2O1owhpxMIXL9YJ2CgPkdrFLKZElIZHXDN8L8+qWK1DGH7Q7IelBT1pchXTYTuDlqkOTdh//aTvT3bSUA==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/format': 17.4.0
|
'@commitlint/format': 17.4.0
|
||||||
'@commitlint/lint': 17.4.0
|
'@commitlint/lint': 17.4.2
|
||||||
'@commitlint/load': 17.4.1
|
'@commitlint/load': 17.4.2
|
||||||
'@commitlint/read': 17.4.0
|
'@commitlint/read': 17.4.2
|
||||||
'@commitlint/types': 17.4.0
|
'@commitlint/types': 17.4.0
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
lodash.isfunction: 3.0.9
|
lodash.isfunction: 3.0.9
|
||||||
@ -526,8 +526,8 @@ packages:
|
|||||||
- '@swc/wasm'
|
- '@swc/wasm'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/config-conventional/17.4.0:
|
/@commitlint/config-conventional/17.4.2:
|
||||||
resolution: {integrity: sha512-G4XBf45J4ZMspO4NwBFzY3g/1Kb+B42BcIxeikF8wucQxcyxcmhRdjeQpRpS1XEcBq5pdtEEQFipuB9IuiNFhw==}
|
resolution: {integrity: sha512-JVo1moSj5eDMoql159q8zKCU8lkOhQ+b23Vl3LVVrS6PXDLQIELnJ34ChQmFVbBdSSRNAbbXnRDhosFU+wnuHw==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
conventional-changelog-conventionalcommits: 5.0.0
|
conventional-changelog-conventionalcommits: 5.0.0
|
||||||
@ -566,26 +566,26 @@ packages:
|
|||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/is-ignored/17.4.0:
|
/@commitlint/is-ignored/17.4.2:
|
||||||
resolution: {integrity: sha512-mkRuBlPUaBimvSvJyIHEHEW1/jP1SqEI7NOoaO9/eyJkMbsaiv5b1QgDYL4ZXlHdS64RMV7Y21MVVzuIceImDA==}
|
resolution: {integrity: sha512-1b2Y2qJ6n7bHG9K6h8S4lBGUl6kc7mMhJN9gy1SQfUZqe92ToDjUTtgNWb6LbzR1X8Cq4SEus4VU8Z/riEa94Q==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/types': 17.4.0
|
'@commitlint/types': 17.4.0
|
||||||
semver: 7.3.8
|
semver: 7.3.8
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/lint/17.4.0:
|
/@commitlint/lint/17.4.2:
|
||||||
resolution: {integrity: sha512-HG2YT4TUbQKs9v8QvpQjJ6OK+fhflsDB8M+D5tLrY79hbQOWA9mDKdRkABsW/AAhpNI9+zeGUWF3jj245jSHKw==}
|
resolution: {integrity: sha512-HcymabrdBhsDMNzIv146+ZPNBPBK5gMNsVH+el2lCagnYgCi/4ixrHooeVyS64Fgce2K26+MC7OQ4vVH8wQWVw==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/is-ignored': 17.4.0
|
'@commitlint/is-ignored': 17.4.2
|
||||||
'@commitlint/parse': 17.4.0
|
'@commitlint/parse': 17.4.2
|
||||||
'@commitlint/rules': 17.4.0
|
'@commitlint/rules': 17.4.2
|
||||||
'@commitlint/types': 17.4.0
|
'@commitlint/types': 17.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/load/17.4.1:
|
/@commitlint/load/17.4.2:
|
||||||
resolution: {integrity: sha512-6A7/LhIaQpL4ieciIDcVvK2d5z/UI1GBrtDaHm6sQSCL0265clB2/F7XKQNTJHXv9yG4LByT2r+QCpM4GugIfw==}
|
resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/config-validator': 17.4.0
|
'@commitlint/config-validator': 17.4.0
|
||||||
@ -607,13 +607,13 @@ packages:
|
|||||||
- '@swc/wasm'
|
- '@swc/wasm'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/message/17.4.0:
|
/@commitlint/message/17.4.2:
|
||||||
resolution: {integrity: sha512-USGJDU9PPxcgQjKXCzvPUal65KAhxWq3hp+MrU1pNCN2itWM654CLIoY2LMIQ7rScTli9B5dTLH3vXhzbItmzA==}
|
resolution: {integrity: sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/parse/17.4.0:
|
/@commitlint/parse/17.4.2:
|
||||||
resolution: {integrity: sha512-x8opKc5p+Hgs+CrMbq3VAnW2L2foPAX6arW8u9c8nTzksldGgFsENT+XVyPmpSMLlVBswZ1tndcz1xyKiY9TJA==}
|
resolution: {integrity: sha512-DK4EwqhxfXpyCA+UH8TBRIAXAfmmX4q9QRBz/2h9F9sI91yt6mltTrL6TKURMcjUVmgaB80wgS9QybNIyVBIJA==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/types': 17.4.0
|
'@commitlint/types': 17.4.0
|
||||||
@ -621,8 +621,8 @@ packages:
|
|||||||
conventional-commits-parser: 3.2.4
|
conventional-commits-parser: 3.2.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/read/17.4.0:
|
/@commitlint/read/17.4.2:
|
||||||
resolution: {integrity: sha512-pGDeZpbkyvhxK8ZoCDUacPPRpauKPWF3n2XpDBEnuGreqUF2clq2PVJpwMMaNN5cHW8iFKCbcoOjXhD01sln0A==}
|
resolution: {integrity: sha512-hasYOdbhEg+W4hi0InmXHxtD/1favB4WdwyFxs1eOy/DvMw6+2IZBmATgGOlqhahsypk4kChhxjAFJAZ2F+JBg==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/top-level': 17.4.0
|
'@commitlint/top-level': 17.4.0
|
||||||
@ -644,12 +644,12 @@ packages:
|
|||||||
resolve-global: 1.0.0
|
resolve-global: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@commitlint/rules/17.4.0:
|
/@commitlint/rules/17.4.2:
|
||||||
resolution: {integrity: sha512-lz3i1jet2NNjTWpAMwjjQjMZCPWBIHK1Kkja9o09UmUtMjRdALTb8uMLe8gCyeq3DiiZ5lLYOhbsoPK56xGQKA==}
|
resolution: {integrity: sha512-OGrPsMb9Fx3/bZ64/EzJehY9YDSGWzp81Pj+zJiY+r/NSgJI3nUYdlS37jykNIugzazdEXfMtQ10kmA+Kx2pZQ==}
|
||||||
engines: {node: '>=v14'}
|
engines: {node: '>=v14'}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@commitlint/ensure': 17.4.0
|
'@commitlint/ensure': 17.4.0
|
||||||
'@commitlint/message': 17.4.0
|
'@commitlint/message': 17.4.2
|
||||||
'@commitlint/to-lines': 17.4.0
|
'@commitlint/to-lines': 17.4.0
|
||||||
'@commitlint/types': 17.4.0
|
'@commitlint/types': 17.4.0
|
||||||
execa: 5.1.1
|
execa: 5.1.1
|
||||||
@ -963,8 +963,8 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
|
|
||||||
/@iconify/json/2.2.5:
|
/@iconify/json/2.2.6:
|
||||||
resolution: {integrity: sha512-AIbJTRF9HJz7FJ8t7058huwDXHaFEY4a4f6uuPtctEQ8/I3ybrX66iZMgoLD1kLaamU4tzZPlZ6tSpA3pM8LZg==}
|
resolution: {integrity: sha512-fRP5PwXvX0PAGne1/xHvd6zVYiHq9dQzdvhhxamwJuNjoIVRWNNP5y465NkxybzEX94kn2JnoULkA9kbZkXoqA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
pathe: 1.0.0
|
pathe: 1.0.0
|
||||||
@ -3029,8 +3029,8 @@ packages:
|
|||||||
prettier-linter-helpers: 1.0.0
|
prettier-linter-helpers: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-plugin-vue/9.8.0_eslint@8.31.0:
|
/eslint-plugin-vue/9.9.0_eslint@8.31.0:
|
||||||
resolution: {integrity: sha512-E/AXwcTzunyzM83C2QqDHxepMzvI2y6x+mmeYHbVDQlKFqmKYvRrhaVixEeeG27uI44p9oKDFiyCRw4XxgtfHA==}
|
resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==}
|
||||||
engines: {node: ^14.17.0 || >=16.0.0}
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
||||||
@ -3039,7 +3039,7 @@ packages:
|
|||||||
eslint-utils: 3.0.0_eslint@8.31.0
|
eslint-utils: 3.0.0_eslint@8.31.0
|
||||||
natural-compare: 1.4.0
|
natural-compare: 1.4.0
|
||||||
nth-check: 2.1.1
|
nth-check: 2.1.1
|
||||||
postcss-selector-parser: 6.0.10
|
postcss-selector-parser: 6.0.11
|
||||||
semver: 7.3.8
|
semver: 7.3.8
|
||||||
vue-eslint-parser: 9.1.0_eslint@8.31.0
|
vue-eslint-parser: 9.1.0_eslint@8.31.0
|
||||||
xml-name-validator: 4.0.0
|
xml-name-validator: 4.0.0
|
||||||
@ -4880,14 +4880,6 @@ packages:
|
|||||||
postcss: 8.4.21
|
postcss: 8.4.21
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-selector-parser/6.0.10:
|
|
||||||
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
|
|
||||||
engines: {node: '>=4'}
|
|
||||||
dependencies:
|
|
||||||
cssesc: 3.0.0
|
|
||||||
util-deprecate: 1.0.2
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/postcss-selector-parser/6.0.11:
|
/postcss-selector-parser/6.0.11:
|
||||||
resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
|
resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -5200,6 +5192,12 @@ packages:
|
|||||||
glob: 7.2.3
|
glob: 7.2.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/rimraf/4.0.4:
|
||||||
|
resolution: {integrity: sha512-R0hoVr9xTwemarQjoWlNt/nb5dEGVTBhVdkRmEX2zEkT8T6onH0XKiGjuaC7rNNj/gYzY2p4NVRJ3sjO1ascHQ==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/rollup-plugin-purge-icons/0.9.1:
|
/rollup-plugin-purge-icons/0.9.1:
|
||||||
resolution: {integrity: sha512-hRDKBsPUz47UMdBufki2feTmBF2ClEJlYqL7N6vpVAHSLd7V2BJUaNKOF7YYbLMofVVF+9hm44YSkYO6k9hUgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/rollup-plugin-purge-icons/-/rollup-plugin-purge-icons-0.9.1.tgz}
|
resolution: {integrity: sha512-hRDKBsPUz47UMdBufki2feTmBF2ClEJlYqL7N6vpVAHSLd7V2BJUaNKOF7YYbLMofVVF+9hm44YSkYO6k9hUgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npm.taobao.org/rollup-plugin-purge-icons/-/rollup-plugin-purge-icons-0.9.1.tgz}
|
||||||
engines: {node: '>= 12'}
|
engines: {node: '>= 12'}
|
||||||
@ -5219,8 +5217,8 @@ packages:
|
|||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/rollup/3.9.1:
|
/rollup/3.10.0:
|
||||||
resolution: {integrity: sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==}
|
resolution: {integrity: sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA==}
|
||||||
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
@ -6207,7 +6205,7 @@ packages:
|
|||||||
esbuild: 0.16.5
|
esbuild: 0.16.5
|
||||||
postcss: 8.4.21
|
postcss: 8.4.21
|
||||||
resolve: 1.22.1
|
resolve: 1.22.1
|
||||||
rollup: 3.9.1
|
rollup: 3.10.0
|
||||||
sass: 1.57.1
|
sass: 1.57.1
|
||||||
terser: 5.16.1
|
terser: 5.16.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
@ -78,4 +78,4 @@ $vxe-modal-border-color: #3b3b3b;
|
|||||||
/*pulldown*/
|
/*pulldown*/
|
||||||
$vxe-pulldown-panel-background-color: #262626 !default;
|
$vxe-pulldown-panel-background-color: #262626 !default;
|
||||||
|
|
||||||
@import 'vxe-table/styles/index';
|
@import 'vxe-table/styles/index.scss';
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
@import 'vxe-table/styles/variable.scss';
|
// @import 'vxe-table/styles/variable.scss';
|
||||||
@import 'vxe-table/styles/modules.scss';
|
// @import 'vxe-table/styles/modules.scss';
|
||||||
// @import './theme/light.scss';
|
// @import './theme/light.scss';
|
||||||
i {
|
i {
|
||||||
border-color: initial;
|
border-color: initial;
|
||||||
|
@ -13,4 +13,4 @@ $vxe-danger-color: #f56c6c !default;
|
|||||||
$vxe-disabled-color: #bfbfbf !default;
|
$vxe-disabled-color: #bfbfbf !default;
|
||||||
$vxe-primary-disabled-color: #c0c4cc !default;
|
$vxe-primary-disabled-color: #c0c4cc !default;
|
||||||
|
|
||||||
@import 'vxe-table/styles/index';
|
@import 'vxe-table/styles/index.scss';
|
||||||
|
@ -35,6 +35,8 @@ import { createApp } from 'vue'
|
|||||||
|
|
||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
|
|
||||||
|
import './permission'
|
||||||
|
|
||||||
// 创建实例
|
// 创建实例
|
||||||
const setupAll = async () => {
|
const setupAll = async () => {
|
||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
|
70
yudao-ui-admin-vue3/src/permission.ts
Normal file
70
yudao-ui-admin-vue3/src/permission.ts
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
import router from './router'
|
||||||
|
import type { RouteRecordRaw } from 'vue-router'
|
||||||
|
import { isRelogin } from '@/config/axios/service'
|
||||||
|
import { getAccessToken } from '@/utils/auth'
|
||||||
|
import { useTitle } from '@/hooks/web/useTitle'
|
||||||
|
import { useNProgress } from '@/hooks/web/useNProgress'
|
||||||
|
import { usePageLoading } from '@/hooks/web/usePageLoading'
|
||||||
|
import { useDictStoreWithOut } from '@/store/modules/dict'
|
||||||
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
|
import { usePermissionStoreWithOut } from '@/store/modules/permission'
|
||||||
|
|
||||||
|
const { start, done } = useNProgress()
|
||||||
|
|
||||||
|
const { loadStart, loadDone } = usePageLoading()
|
||||||
|
// 路由不重定向白名单
|
||||||
|
const whiteList = [
|
||||||
|
'/login',
|
||||||
|
'/social-login',
|
||||||
|
'/auth-redirect',
|
||||||
|
'/bind',
|
||||||
|
'/register',
|
||||||
|
'/oauthLogin/gitee'
|
||||||
|
]
|
||||||
|
|
||||||
|
// 路由加载前
|
||||||
|
router.beforeEach(async (to, from, next) => {
|
||||||
|
start()
|
||||||
|
loadStart()
|
||||||
|
if (getAccessToken()) {
|
||||||
|
if (to.path === '/login') {
|
||||||
|
next({ path: '/' })
|
||||||
|
} else {
|
||||||
|
// 获取所有字典
|
||||||
|
const dictStore = useDictStoreWithOut()
|
||||||
|
const userStore = useUserStoreWithOut()
|
||||||
|
const permissionStore = usePermissionStoreWithOut()
|
||||||
|
if (!dictStore.getIsSetDict) {
|
||||||
|
dictStore.setDictMap()
|
||||||
|
}
|
||||||
|
if (!userStore.getIsSetUser) {
|
||||||
|
isRelogin.show = true
|
||||||
|
await userStore.setUserInfoAction()
|
||||||
|
isRelogin.show = false
|
||||||
|
// 后端过滤菜单
|
||||||
|
await permissionStore.generateRoutes()
|
||||||
|
permissionStore.getAddRouters.forEach((route) => {
|
||||||
|
router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表
|
||||||
|
})
|
||||||
|
const redirectPath = from.query.redirect || to.path
|
||||||
|
const redirect = decodeURIComponent(redirectPath as string)
|
||||||
|
const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect }
|
||||||
|
next(nextData)
|
||||||
|
} else {
|
||||||
|
next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (whiteList.indexOf(to.path) !== -1) {
|
||||||
|
next()
|
||||||
|
} else {
|
||||||
|
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
router.afterEach((to) => {
|
||||||
|
useTitle(to?.meta?.title as string)
|
||||||
|
done() // 结束Progress
|
||||||
|
loadDone()
|
||||||
|
})
|
@ -1,6 +0,0 @@
|
|||||||
@import 'vxe-table/styles/variable.scss';
|
|
||||||
@import 'vxe-table/styles/modules.scss';
|
|
||||||
// @import './theme/light.scss';
|
|
||||||
i {
|
|
||||||
border-color: initial;
|
|
||||||
}
|
|
@ -1,81 +0,0 @@
|
|||||||
// 修改样式变量
|
|
||||||
//@import 'vxe-table/styles/variable.scss';
|
|
||||||
|
|
||||||
/*font*/
|
|
||||||
$vxe-font-color: #e5e7eb;
|
|
||||||
// $vxe-font-size: 14px !default;
|
|
||||||
// $vxe-font-size-medium: 16px !default;
|
|
||||||
// $vxe-font-size-small: 14px !default;
|
|
||||||
// $vxe-font-size-mini: 12px !default;
|
|
||||||
|
|
||||||
/*color*/
|
|
||||||
$vxe-primary-color: #409eff !default;
|
|
||||||
$vxe-success-color: #67c23a !default;
|
|
||||||
$vxe-info-color: #909399 !default;
|
|
||||||
$vxe-warning-color: #e6a23c !default;
|
|
||||||
$vxe-danger-color: #f56c6c !default;
|
|
||||||
$vxe-disabled-color: #bfbfbf !default;
|
|
||||||
$vxe-primary-disabled-color: #c0c4cc !default;
|
|
||||||
|
|
||||||
/*loading*/
|
|
||||||
$vxe-loading-color: $vxe-primary-color !default;
|
|
||||||
$vxe-loading-background-color: #1d1e1f !default;
|
|
||||||
$vxe-loading-z-index: 999 !default;
|
|
||||||
|
|
||||||
/*icon*/
|
|
||||||
$vxe-icon-font-family: Verdana, Arial, Tahoma !default;
|
|
||||||
$vxe-icon-background-color: #e5e7eb !default;
|
|
||||||
|
|
||||||
/*toolbar*/
|
|
||||||
$vxe-toolbar-background-color: #1d1e1f !default;
|
|
||||||
$vxe-toolbar-button-border: #dcdfe6 !default;
|
|
||||||
$vxe-toolbar-custom-active-background-color: #d9dadb !default;
|
|
||||||
$vxe-toolbar-panel-background-color: #e5e7eb !default;
|
|
||||||
|
|
||||||
$vxe-table-font-color: #e5e7eb;
|
|
||||||
$vxe-table-header-background-color: #1d1e1f;
|
|
||||||
$vxe-table-body-background-color: #141414;
|
|
||||||
$vxe-table-row-striped-background-color: #1d1d1d;
|
|
||||||
$vxe-table-row-hover-background-color: #1d1e1f;
|
|
||||||
$vxe-table-row-hover-striped-background-color: #1e1e1e;
|
|
||||||
$vxe-table-footer-background-color: #1d1e1f;
|
|
||||||
$vxe-table-row-current-background-color: #302d2d;
|
|
||||||
$vxe-table-column-current-background-color: #302d2d;
|
|
||||||
$vxe-table-column-hover-background-color: #302d2d;
|
|
||||||
$vxe-table-row-hover-current-background-color: #302d2d;
|
|
||||||
$vxe-table-row-checkbox-checked-background-color: #3e3c37 !default;
|
|
||||||
$vxe-table-row-hover-checkbox-checked-background-color: #615a4a !default;
|
|
||||||
$vxe-table-menu-background-color: #1d1e1f;
|
|
||||||
$vxe-table-border-width: 1px !default;
|
|
||||||
$vxe-table-border-color: #4c4d4f !default;
|
|
||||||
$vxe-table-fixed-left-scrolling-box-shadow: 8px 0px 10px -5px rgba(0, 0, 0, 0.12) !default;
|
|
||||||
$vxe-table-fixed-right-scrolling-box-shadow: -8px 0px 10px -5px rgba(0, 0, 0, 0.12) !default;
|
|
||||||
|
|
||||||
$vxe-form-background-color: #141414;
|
|
||||||
|
|
||||||
/*pager*/
|
|
||||||
$vxe-pager-background-color: #1d1e1f !default;
|
|
||||||
$vxe-pager-perfect-background-color: #262727 !default;
|
|
||||||
$vxe-pager-perfect-button-background-color: #a7a3a3 !default;
|
|
||||||
|
|
||||||
$vxe-input-background-color: #141414;
|
|
||||||
$vxe-input-border-color: #4c4d4f !default;
|
|
||||||
|
|
||||||
$vxe-select-option-hover-background-color: #262626 !default;
|
|
||||||
$vxe-select-panel-background-color: #141414 !default;
|
|
||||||
$vxe-select-empty-color: #262626 !default;
|
|
||||||
$vxe-optgroup-title-color: #909399 !default;
|
|
||||||
|
|
||||||
/*button*/
|
|
||||||
$vxe-button-default-background-color: #262626;
|
|
||||||
$vxe-button-dropdown-panel-background-color: #141414;
|
|
||||||
|
|
||||||
/*modal*/
|
|
||||||
$vxe-modal-header-background-color: #141414;
|
|
||||||
$vxe-modal-body-background-color: #141414;
|
|
||||||
$vxe-modal-border-color: #3b3b3b;
|
|
||||||
|
|
||||||
/*pulldown*/
|
|
||||||
$vxe-pulldown-panel-background-color: #262626 !default;
|
|
||||||
|
|
||||||
@import 'vxe-table/styles/index';
|
|
@ -1,16 +0,0 @@
|
|||||||
// 修改样式变量
|
|
||||||
// /*font*/
|
|
||||||
// $vxe-font-size: 12px !default;
|
|
||||||
// $vxe-font-size-medium: 16px !default;
|
|
||||||
// $vxe-font-size-small: 14px !default;
|
|
||||||
// $vxe-font-size-mini: 12px !default;
|
|
||||||
/*color*/
|
|
||||||
$vxe-primary-color: #409eff !default;
|
|
||||||
$vxe-success-color: #67c23a !default;
|
|
||||||
$vxe-info-color: #909399 !default;
|
|
||||||
$vxe-warning-color: #e6a23c !default;
|
|
||||||
$vxe-danger-color: #f56c6c !default;
|
|
||||||
$vxe-disabled-color: #bfbfbf !default;
|
|
||||||
$vxe-primary-disabled-color: #c0c4cc !default;
|
|
||||||
|
|
||||||
@import 'vxe-table/styles/index.scss';
|
|
@ -2,19 +2,6 @@ import type { App } from 'vue'
|
|||||||
import type { RouteRecordRaw } from 'vue-router'
|
import type { RouteRecordRaw } from 'vue-router'
|
||||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||||
import remainingRouter from './modules/remaining'
|
import remainingRouter from './modules/remaining'
|
||||||
import { isRelogin } from '@/config/axios/service'
|
|
||||||
import { getAccessToken } from '@/utils/auth'
|
|
||||||
import { useTitle } from '@/hooks/web/useTitle'
|
|
||||||
import { useNProgress } from '@/hooks/web/useNProgress'
|
|
||||||
import { usePageLoading } from '@/hooks/web/usePageLoading'
|
|
||||||
import { useDictStoreWithOut } from '@/store/modules/dict'
|
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
|
||||||
import { usePermissionStoreWithOut } from '@/store/modules/permission'
|
|
||||||
import { getInfoApi } from '@/api/login'
|
|
||||||
|
|
||||||
const { start, done } = useNProgress()
|
|
||||||
|
|
||||||
const { loadStart, loadDone } = usePageLoading()
|
|
||||||
|
|
||||||
// 创建路由实例
|
// 创建路由实例
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
@ -24,64 +11,6 @@ const router = createRouter({
|
|||||||
scrollBehavior: () => ({ left: 0, top: 0 })
|
scrollBehavior: () => ({ left: 0, top: 0 })
|
||||||
})
|
})
|
||||||
|
|
||||||
// 路由不重定向白名单
|
|
||||||
const whiteList = [
|
|
||||||
'/login',
|
|
||||||
'/social-login',
|
|
||||||
'/auth-redirect',
|
|
||||||
'/bind',
|
|
||||||
'/register',
|
|
||||||
'/oauthLogin/gitee'
|
|
||||||
]
|
|
||||||
|
|
||||||
// 路由加载前
|
|
||||||
router.beforeEach(async (to, from, next) => {
|
|
||||||
start()
|
|
||||||
loadStart()
|
|
||||||
if (getAccessToken()) {
|
|
||||||
if (to.path === '/login') {
|
|
||||||
next({ path: '/' })
|
|
||||||
} else {
|
|
||||||
// 获取所有字典
|
|
||||||
const dictStore = useDictStoreWithOut()
|
|
||||||
const userStore = useUserStoreWithOut()
|
|
||||||
const permissionStore = usePermissionStoreWithOut()
|
|
||||||
if (!dictStore.getIsSetDict) {
|
|
||||||
dictStore.setDictMap()
|
|
||||||
}
|
|
||||||
if (!userStore.getIsSetUser) {
|
|
||||||
isRelogin.show = true
|
|
||||||
const res = await getInfoApi()
|
|
||||||
await userStore.setUserInfoAction(res)
|
|
||||||
isRelogin.show = false
|
|
||||||
// 后端过滤菜单
|
|
||||||
await permissionStore.generateRoutes()
|
|
||||||
permissionStore.getAddRouters.forEach((route) => {
|
|
||||||
router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表
|
|
||||||
})
|
|
||||||
const redirectPath = from.query.redirect || to.path
|
|
||||||
const redirect = decodeURIComponent(redirectPath as string)
|
|
||||||
const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect }
|
|
||||||
next(nextData)
|
|
||||||
} else {
|
|
||||||
next()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (whiteList.indexOf(to.path) !== -1) {
|
|
||||||
next()
|
|
||||||
} else {
|
|
||||||
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
router.afterEach((to) => {
|
|
||||||
useTitle(to?.meta?.title as string)
|
|
||||||
done() // 结束Progress
|
|
||||||
loadDone()
|
|
||||||
})
|
|
||||||
|
|
||||||
export const resetRouter = (): void => {
|
export const resetRouter = (): void => {
|
||||||
const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
|
const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
|
||||||
router.getRoutes().forEach((route) => {
|
router.getRoutes().forEach((route) => {
|
||||||
|
@ -2,6 +2,7 @@ import { store } from '../index'
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { getAccessToken, removeToken } from '@/utils/auth'
|
import { getAccessToken, removeToken } from '@/utils/auth'
|
||||||
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
|
||||||
|
import { getInfoApi } from '@/api/login'
|
||||||
|
|
||||||
const { wsCache } = useCache()
|
const { wsCache } = useCache()
|
||||||
|
|
||||||
@ -43,11 +44,15 @@ export const useUserStore = defineStore('admin-user', {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
async setUserInfoAction(userInfo: UserInfoVO) {
|
async setUserInfoAction() {
|
||||||
if (!getAccessToken()) {
|
if (!getAccessToken()) {
|
||||||
this.resetState()
|
this.resetState()
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
let userInfo = wsCache.get(CACHE_KEY.USER)
|
||||||
|
if (!userInfo) {
|
||||||
|
userInfo = await getInfoApi()
|
||||||
|
}
|
||||||
this.permissions = userInfo.permissions
|
this.permissions = userInfo.permissions
|
||||||
this.roles = userInfo.roles
|
this.roles = userInfo.roles
|
||||||
this.user = userInfo.user
|
this.user = userInfo.user
|
||||||
|
@ -2,3 +2,5 @@
|
|||||||
$namespace: v;
|
$namespace: v;
|
||||||
// el命名空间
|
// el命名空间
|
||||||
$elNamespace: el;
|
$elNamespace: el;
|
||||||
|
// vxe命名空间
|
||||||
|
$vxeNamespace: vxe;
|
||||||
|
@ -17,13 +17,12 @@ const propTypes = createTypes({
|
|||||||
|
|
||||||
// 需要自定义扩展的类型
|
// 需要自定义扩展的类型
|
||||||
// see: https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#the-extend-method
|
// see: https://dwightjack.github.io/vue-types/advanced/extending-vue-types.html#the-extend-method
|
||||||
propTypes.extend([
|
// propTypes.extend([
|
||||||
{
|
// {
|
||||||
name: 'style',
|
// name: 'style',
|
||||||
getter: true,
|
// getter: true,
|
||||||
type: [String, Object],
|
// type: [String, Object],
|
||||||
default: undefined
|
// default: undefined
|
||||||
}
|
// }
|
||||||
])
|
// ])
|
||||||
|
|
||||||
export { propTypes }
|
export { propTypes }
|
||||||
|
@ -8,9 +8,6 @@
|
|||||||
<el-tab-pane label="字段信息" name="cloum">
|
<el-tab-pane label="字段信息" name="cloum">
|
||||||
<CloumInfoForm ref="cloumInfoRef" :info="cloumCurrentRow" />
|
<CloumInfoForm ref="cloumInfoRef" :info="cloumCurrentRow" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="生成信息" name="genInfo">
|
|
||||||
<GenInfoForm ref="genInfoRef" :genInfo="tableCurrentRow" />
|
|
||||||
</el-tab-pane>
|
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<template #right>
|
<template #right>
|
||||||
<XButton
|
<XButton
|
||||||
@ -30,7 +27,7 @@ import { ElTabs, ElTabPane } from 'element-plus'
|
|||||||
import { useI18n } from '@/hooks/web/useI18n'
|
import { useI18n } from '@/hooks/web/useI18n'
|
||||||
import { useMessage } from '@/hooks/web/useMessage'
|
import { useMessage } from '@/hooks/web/useMessage'
|
||||||
import { ContentDetailWrap } from '@/components/ContentDetailWrap'
|
import { ContentDetailWrap } from '@/components/ContentDetailWrap'
|
||||||
import { BasicInfoForm, CloumInfoForm, GenInfoForm } from './components'
|
import { BasicInfoForm, CloumInfoForm } from './components'
|
||||||
import { getCodegenTableApi, updateCodegenTableApi } from '@/api/infra/codegen'
|
import { getCodegenTableApi, updateCodegenTableApi } from '@/api/infra/codegen'
|
||||||
import { CodegenTableVO, CodegenColumnVO, CodegenUpdateReqVO } from '@/api/infra/codegen/types'
|
import { CodegenTableVO, CodegenColumnVO, CodegenUpdateReqVO } from '@/api/infra/codegen/types'
|
||||||
|
|
||||||
@ -40,33 +37,29 @@ const { push } = useRouter()
|
|||||||
const { query } = useRoute()
|
const { query } = useRoute()
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const title = ref('代码生成')
|
const title = ref('代码生成')
|
||||||
const activeName = ref('cloum')
|
const activeName = ref('basicInfo')
|
||||||
const cloumInfoRef = ref(null)
|
const cloumInfoRef = ref(null)
|
||||||
const tableCurrentRow = ref<CodegenTableVO>()
|
const tableCurrentRow = ref<CodegenTableVO>()
|
||||||
const cloumCurrentRow = ref<CodegenColumnVO[]>([])
|
const cloumCurrentRow = ref<CodegenColumnVO[]>([])
|
||||||
const basicInfoRef = ref<ComponentRef<typeof BasicInfoForm>>()
|
const basicInfoRef = ref<ComponentRef<typeof BasicInfoForm>>()
|
||||||
const genInfoRef = ref<ComponentRef<typeof GenInfoForm>>()
|
|
||||||
|
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
const id = query.id as unknown as number
|
const id = query.id as unknown as number
|
||||||
if (id) {
|
if (id) {
|
||||||
// 获取表详细信息
|
// 获取表详细信息
|
||||||
const res = await getCodegenTableApi(id)
|
const res = await getCodegenTableApi(id)
|
||||||
tableCurrentRow.value = res.table
|
|
||||||
title.value = '修改[ ' + res.table.tableName + ' ]生成配置'
|
title.value = '修改[ ' + res.table.tableName + ' ]生成配置'
|
||||||
|
tableCurrentRow.value = res.table
|
||||||
cloumCurrentRow.value = res.columns
|
cloumCurrentRow.value = res.columns
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
const basicInfo = unref(basicInfoRef)
|
const basicInfo = unref(basicInfoRef)
|
||||||
const genInfo = unref(genInfoRef)
|
|
||||||
const basicForm = await basicInfo?.elFormRef?.validate()?.catch(() => {})
|
const basicForm = await basicInfo?.elFormRef?.validate()?.catch(() => {})
|
||||||
const genForm = await genInfo?.elFormRef?.validate()?.catch(() => {})
|
if (basicForm) {
|
||||||
if (basicForm && genForm) {
|
|
||||||
const basicInfoData = (await basicInfo?.getFormData()) as CodegenTableVO
|
const basicInfoData = (await basicInfo?.getFormData()) as CodegenTableVO
|
||||||
const genInfoData = (await genInfo?.getFormData()) as CodegenTableVO
|
|
||||||
const genTable: CodegenUpdateReqVO = {
|
const genTable: CodegenUpdateReqVO = {
|
||||||
table: Object.assign({}, basicInfoData, genInfoData),
|
table: basicInfoData,
|
||||||
columns: cloumCurrentRow.value
|
columns: cloumCurrentRow.value
|
||||||
}
|
}
|
||||||
await updateCodegenTableApi(genTable)
|
await updateCodegenTableApi(genTable)
|
||||||
|
@ -2,25 +2,59 @@
|
|||||||
<Form :rules="rules" @register="register" />
|
<Form :rules="rules" @register="register" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { PropType, reactive, watch } from 'vue'
|
import { onMounted, PropType, reactive, ref, watch } from 'vue'
|
||||||
import { required } from '@/utils/formRules'
|
import { required } from '@/utils/formRules'
|
||||||
import { useForm } from '@/hooks/web/useForm'
|
import { useForm } from '@/hooks/web/useForm'
|
||||||
import { Form } from '@/components/Form'
|
import { Form } from '@/components/Form'
|
||||||
import { FormSchema } from '@/types/form'
|
import { FormSchema } from '@/types/form'
|
||||||
import { CodegenTableVO } from '@/api/infra/codegen/types'
|
import { CodegenTableVO } from '@/api/infra/codegen/types'
|
||||||
|
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||||
|
import { listSimpleMenusApi } from '@/api/system/menu'
|
||||||
|
import { handleTree, defaultProps } from '@/utils/tree'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
basicInfo: {
|
basicInfo: {
|
||||||
type: Object as PropType<Nullable<CodegenTableVO>>,
|
type: Object as PropType<Nullable<CodegenTableVO>>,
|
||||||
default: () => null
|
default: () => null
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const templateTypeOptions = getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_TEMPLATE_TYPE)
|
||||||
|
const sceneOptions = getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_SCENE)
|
||||||
|
const menuOptions = ref<any>([]) // 树形结构
|
||||||
|
const getTree = async () => {
|
||||||
|
const res = await listSimpleMenusApi()
|
||||||
|
menuOptions.value = handleTree(res)
|
||||||
|
}
|
||||||
|
|
||||||
const rules = reactive({
|
const rules = reactive({
|
||||||
tableName: [required],
|
tableName: [required],
|
||||||
tableComment: [required],
|
tableComment: [required],
|
||||||
className: [required],
|
className: [required],
|
||||||
author: [required]
|
author: [required],
|
||||||
|
templateType: [required],
|
||||||
|
scene: [required],
|
||||||
|
moduleName: [required],
|
||||||
|
businessName: [required],
|
||||||
|
businessPackage: [required],
|
||||||
|
classComment: [required]
|
||||||
})
|
})
|
||||||
const schema = reactive<FormSchema[]>([
|
const schema = reactive<FormSchema[]>([
|
||||||
|
{
|
||||||
|
label: '上级菜单',
|
||||||
|
field: 'parentMenuId',
|
||||||
|
component: 'TreeSelect',
|
||||||
|
componentProps: {
|
||||||
|
data: menuOptions,
|
||||||
|
props: defaultProps,
|
||||||
|
checkStrictly: true,
|
||||||
|
nodeKey: 'id'
|
||||||
|
},
|
||||||
|
labelMessage: '分配到指定菜单下,例如 系统管理',
|
||||||
|
colProps: {
|
||||||
|
span: 24
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '表名称',
|
label: '表名称',
|
||||||
field: 'tableName',
|
field: 'tableName',
|
||||||
@ -45,6 +79,64 @@ const schema = reactive<FormSchema[]>([
|
|||||||
span: 12
|
span: 12
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '类名称',
|
||||||
|
field: 'className',
|
||||||
|
component: 'Input',
|
||||||
|
labelMessage: '类名称(首字母大写),例如SysUser、SysMenu、SysDictData 等等',
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '生成模板',
|
||||||
|
field: 'templateType',
|
||||||
|
component: 'Select',
|
||||||
|
componentProps: {
|
||||||
|
options: templateTypeOptions
|
||||||
|
},
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '生成场景',
|
||||||
|
field: 'scene',
|
||||||
|
component: 'Select',
|
||||||
|
componentProps: {
|
||||||
|
options: sceneOptions
|
||||||
|
},
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '模块名',
|
||||||
|
field: 'moduleName',
|
||||||
|
component: 'Input',
|
||||||
|
labelMessage: '模块名,即一级目录,例如 system、infra、tool 等等',
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '业务名',
|
||||||
|
field: 'businessName',
|
||||||
|
component: 'Input',
|
||||||
|
labelMessage: '业务名,即二级目录,例如 user、permission、dict 等等',
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '类描述',
|
||||||
|
field: 'classComment',
|
||||||
|
component: 'Input',
|
||||||
|
labelMessage: '用作类描述,例如 用户',
|
||||||
|
colProps: {
|
||||||
|
span: 12
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '作者',
|
label: '作者',
|
||||||
field: 'author',
|
field: 'author',
|
||||||
@ -62,7 +154,7 @@ const schema = reactive<FormSchema[]>([
|
|||||||
rows: 4
|
rows: 4
|
||||||
},
|
},
|
||||||
colProps: {
|
colProps: {
|
||||||
span: 12
|
span: 24
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
@ -81,6 +173,10 @@ watch(
|
|||||||
immediate: true
|
immediate: true
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
// ========== 初始化 ==========
|
||||||
|
onMounted(async () => {
|
||||||
|
await getTree()
|
||||||
|
})
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
elFormRef,
|
elFormRef,
|
||||||
|
@ -1,113 +1,117 @@
|
|||||||
<template>
|
<template>
|
||||||
<vxe-table
|
<vxe-table
|
||||||
ref="dragTable"
|
ref="dragTable"
|
||||||
|
border
|
||||||
:data="info"
|
:data="info"
|
||||||
max-height="600"
|
max-height="600"
|
||||||
stripe
|
stripe
|
||||||
class="xtable-scrollbar"
|
class="xtable-scrollbar"
|
||||||
:column-config="{ resizable: true }"
|
:column-config="{ resizable: true }"
|
||||||
>
|
>
|
||||||
<vxe-column title="字段列名" field="columnName" fixed="left" width="80" />
|
<vxe-column title="字段列名" field="columnName" fixed="left" width="10%" />
|
||||||
<vxe-column title="字段描述" field="columnComment">
|
<vxe-colgroup title="基础属性">
|
||||||
|
<vxe-column title="字段描述" field="columnComment" width="10%">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.columnComment" />
|
<vxe-input v-model="row.columnComment" placeholder="请输入字段描述" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="物理类型" field="dataType" width="10%" />
|
<vxe-column title="物理类型" field="dataType" width="10%" />
|
||||||
<vxe-column title="Java类型" width="10%" field="javaType">
|
<vxe-column title="Java类型" width="10%" field="javaType">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-select v-model="row.javaType">
|
<vxe-select v-model="row.javaType" placeholder="请选择Java类型">
|
||||||
<el-option label="Long" value="Long" />
|
<vxe-option label="Long" value="Long" />
|
||||||
<el-option label="String" value="String" />
|
<vxe-option label="String" value="String" />
|
||||||
<el-option label="Integer" value="Integer" />
|
<vxe-option label="Integer" value="Integer" />
|
||||||
<el-option label="Double" value="Double" />
|
<vxe-option label="Double" value="Double" />
|
||||||
<el-option label="BigDecimal" value="BigDecimal" />
|
<vxe-option label="BigDecimal" value="BigDecimal" />
|
||||||
<el-option label="LocalDateTime" value="LocalDateTime" />
|
<vxe-option label="LocalDateTime" value="LocalDateTime" />
|
||||||
<el-option label="Boolean" value="Boolean" />
|
<vxe-option label="Boolean" value="Boolean" />
|
||||||
</el-select>
|
</vxe-select>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="java属性" width="10%" field="javaField">
|
<vxe-column title="java属性" width="8%" field="javaField">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.javaField" />
|
<vxe-input v-model="row.javaField" placeholder="请输入java属性" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="插入" width="4%" field="createOperation">
|
</vxe-colgroup>
|
||||||
|
<vxe-colgroup title="增删改查">
|
||||||
|
<vxe-column title="插入" width="40px" field="createOperation">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<vxe-checkbox true-label="true" false-label="false" v-model="row.createOperation" />
|
<vxe-checkbox true-label="true" false-label="false" v-model="row.createOperation" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="编辑" width="4%" field="updateOperation">
|
<vxe-column title="编辑" width="40px" field="updateOperation">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<vxe-checkbox true-label="true" false-label="false" v-model="row.updateOperation" />
|
<vxe-checkbox true-label="true" false-label="false" v-model="row.updateOperation" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="列表" width="4%" field="listOperationResult">
|
<vxe-column title="列表" width="40px" field="listOperationResult">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<vxe-checkbox true-label="true" false-label="false" v-model="row.listOperationResult" />
|
<vxe-checkbox true-label="true" false-label="false" v-model="row.listOperationResult" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="查询" width="4%" field="listOperation">
|
<vxe-column title="查询" width="40px" field="listOperation">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<vxe-checkbox true-label="true" false-label="false" v-model="row.listOperation" />
|
<vxe-checkbox true-label="true" false-label="false" v-model="row.listOperation" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="查询方式" width="8%" field="listOperationCondition">
|
<vxe-column title="允许空" width="40px" field="nullable">
|
||||||
<template #default="{ row }">
|
|
||||||
<el-select v-model="row.listOperationCondition">
|
|
||||||
<el-option label="=" value="=" />
|
|
||||||
<el-option label="!=" value="!=" />
|
|
||||||
<el-option label=">" value=">" />
|
|
||||||
<el-option label=">=" value=">=" />
|
|
||||||
<el-option label="<" value="<>" />
|
|
||||||
<el-option label="<=" value="<=" />
|
|
||||||
<el-option label="LIKE" value="LIKE" />
|
|
||||||
<el-option label="BETWEEN" value="BETWEEN" />
|
|
||||||
</el-select>
|
|
||||||
</template>
|
|
||||||
</vxe-column>
|
|
||||||
<vxe-column title="允许空" width="4%" field="nullable">
|
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<vxe-checkbox true-label="true" false-label="false" v-model="row.nullable" />
|
<vxe-checkbox true-label="true" false-label="false" v-model="row.nullable" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
<vxe-column title="查询方式" width="60px" field="listOperationCondition">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<vxe-select v-model="row.listOperationCondition" placeholder="请选择查询方式">
|
||||||
|
<vxe-option label="=" value="=" />
|
||||||
|
<vxe-option label="!=" value="!=" />
|
||||||
|
<vxe-option label=">" value=">" />
|
||||||
|
<vxe-option label=">=" value=">=" />
|
||||||
|
<vxe-option label="<" value="<>" />
|
||||||
|
<vxe-option label="<=" value="<=" />
|
||||||
|
<vxe-option label="LIKE" value="LIKE" />
|
||||||
|
<vxe-option label="BETWEEN" value="BETWEEN" />
|
||||||
|
</vxe-select>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
</vxe-colgroup>
|
||||||
<vxe-column title="显示类型" width="10%" field="htmlType">
|
<vxe-column title="显示类型" width="10%" field="htmlType">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-select v-model="row.htmlType">
|
<vxe-select v-model="row.htmlType" placeholder="请选择显示类型">
|
||||||
<el-option label="文本框" value="input" />
|
<vxe-option label="文本框" value="input" />
|
||||||
<el-option label="文本域" value="textarea" />
|
<vxe-option label="文本域" value="textarea" />
|
||||||
<el-option label="下拉框" value="select" />
|
<vxe-option label="下拉框" value="select" />
|
||||||
<el-option label="单选框" value="radio" />
|
<vxe-option label="单选框" value="radio" />
|
||||||
<el-option label="复选框" value="checkbox" />
|
<vxe-option label="复选框" value="checkbox" />
|
||||||
<el-option label="日期控件" value="datetime" />
|
<vxe-option label="日期控件" value="datetime" />
|
||||||
<el-option label="图片上传" value="imageUpload" />
|
<vxe-option label="图片上传" value="imageUpload" />
|
||||||
<el-option label="文件上传" value="fileUpload" />
|
<vxe-option label="文件上传" value="fileUpload" />
|
||||||
<el-option label="富文本控件" value="editor" />
|
<vxe-option label="富文本控件" value="editor" />
|
||||||
</el-select>
|
</vxe-select>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="字典类型" width="10%" field="dictType">
|
<vxe-column title="字典类型" width="10%" field="dictType">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-select v-model="row.dictType" clearable filterable placeholder="请选择">
|
<vxe-select v-model="row.dictType" clearable filterable placeholder="请选择字典类型">
|
||||||
<el-option
|
<vxe-option
|
||||||
v-for="dict in dictOptions"
|
v-for="dict in dictOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.name"
|
:label="dict.name"
|
||||||
:value="dict.type"
|
:value="dict.type"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</vxe-select>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column title="示例" field="example">
|
<vxe-column title="示例" field="example">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input v-model="row.example" />
|
<vxe-input v-model="row.example" placeholder="请输入示例" />
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, PropType, ref } from 'vue'
|
import { onMounted, PropType, ref } from 'vue'
|
||||||
import { ElInput, ElSelect, ElOption } from 'element-plus'
|
|
||||||
import { DictTypeVO } from '@/api/system/dict/types'
|
import { DictTypeVO } from '@/api/system/dict/types'
|
||||||
import { CodegenColumnVO } from '@/api/infra/codegen/types'
|
import { CodegenColumnVO } from '@/api/infra/codegen/types'
|
||||||
import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type'
|
import { listSimpleDictTypeApi } from '@/api/system/dict/dict.type'
|
||||||
|
@ -1,135 +0,0 @@
|
|||||||
<template>
|
|
||||||
<Form :rules="rules" @register="register" />
|
|
||||||
</template>
|
|
||||||
<script setup lang="ts">
|
|
||||||
import { onMounted, PropType, reactive, ref, watch } from 'vue'
|
|
||||||
import { Form } from '@/components/Form'
|
|
||||||
import { useForm } from '@/hooks/web/useForm'
|
|
||||||
import { required } from '@/utils/formRules'
|
|
||||||
import { handleTree, defaultProps } from '@/utils/tree'
|
|
||||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
|
||||||
import { listSimpleMenusApi } from '@/api/system/menu'
|
|
||||||
import { CodegenTableVO } from '@/api/infra/codegen/types'
|
|
||||||
import { FormSchema } from '@/types/form'
|
|
||||||
const props = defineProps({
|
|
||||||
genInfo: {
|
|
||||||
type: Object as PropType<Nullable<CodegenTableVO>>,
|
|
||||||
default: () => null
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const rules = reactive({
|
|
||||||
templateType: [required],
|
|
||||||
scene: [required],
|
|
||||||
moduleName: [required],
|
|
||||||
businessName: [required],
|
|
||||||
businessPackage: [required],
|
|
||||||
className: [required],
|
|
||||||
classComment: [required]
|
|
||||||
})
|
|
||||||
const templateTypeOptions = getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_TEMPLATE_TYPE)
|
|
||||||
const sceneOptions = getIntDictOptions(DICT_TYPE.INFRA_CODEGEN_SCENE)
|
|
||||||
const menuOptions = ref<any>([]) // 树形结构
|
|
||||||
const getTree = async () => {
|
|
||||||
const res = await listSimpleMenusApi()
|
|
||||||
menuOptions.value = handleTree(res)
|
|
||||||
}
|
|
||||||
const schema = reactive<FormSchema[]>([
|
|
||||||
{
|
|
||||||
label: '生成模板',
|
|
||||||
field: 'templateType',
|
|
||||||
component: 'Select',
|
|
||||||
componentProps: {
|
|
||||||
options: templateTypeOptions
|
|
||||||
},
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '生成场景',
|
|
||||||
field: 'scene',
|
|
||||||
component: 'Select',
|
|
||||||
componentProps: {
|
|
||||||
options: sceneOptions
|
|
||||||
},
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '模块名',
|
|
||||||
field: 'moduleName',
|
|
||||||
component: 'Input',
|
|
||||||
labelMessage: '模块名,即一级目录,例如 system、infra、tool 等等',
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '业务名',
|
|
||||||
field: 'businessName',
|
|
||||||
component: 'Input',
|
|
||||||
labelMessage: '业务名,即二级目录,例如 user、permission、dict 等等',
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '类名称',
|
|
||||||
field: 'className',
|
|
||||||
component: 'Input',
|
|
||||||
labelMessage: '类名称(首字母大写),例如SysUser、SysMenu、SysDictData 等等',
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '类描述',
|
|
||||||
field: 'classComment',
|
|
||||||
component: 'Input',
|
|
||||||
labelMessage: '用作类描述,例如 用户',
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '上级菜单',
|
|
||||||
field: 'parentMenuId',
|
|
||||||
component: 'TreeSelect',
|
|
||||||
componentProps: {
|
|
||||||
data: menuOptions,
|
|
||||||
props: defaultProps,
|
|
||||||
checkStrictly: true,
|
|
||||||
nodeKey: 'id'
|
|
||||||
},
|
|
||||||
labelMessage: '分配到指定菜单下,例如 系统管理',
|
|
||||||
colProps: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
}
|
|
||||||
])
|
|
||||||
const { register, methods, elFormRef } = useForm({
|
|
||||||
schema
|
|
||||||
})
|
|
||||||
|
|
||||||
// ========== 初始化 ==========
|
|
||||||
onMounted(async () => {
|
|
||||||
await getTree()
|
|
||||||
})
|
|
||||||
watch(
|
|
||||||
() => props.genInfo,
|
|
||||||
(genInfo) => {
|
|
||||||
if (!genInfo) return
|
|
||||||
const { setValues } = methods
|
|
||||||
setValues(genInfo)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
deep: true,
|
|
||||||
immediate: true
|
|
||||||
}
|
|
||||||
)
|
|
||||||
defineExpose({
|
|
||||||
elFormRef,
|
|
||||||
getFormData: methods.getFormData
|
|
||||||
})
|
|
||||||
</script>
|
|
@ -1,6 +1,5 @@
|
|||||||
import BasicInfoForm from './BasicInfoForm.vue'
|
import BasicInfoForm from './BasicInfoForm.vue'
|
||||||
import CloumInfoForm from './CloumInfoForm.vue'
|
import CloumInfoForm from './CloumInfoForm.vue'
|
||||||
import GenInfoForm from './GenInfoForm.vue'
|
|
||||||
import ImportTable from './ImportTable.vue'
|
import ImportTable from './ImportTable.vue'
|
||||||
import Preview from './Preview.vue'
|
import Preview from './Preview.vue'
|
||||||
export { BasicInfoForm, CloumInfoForm, GenInfoForm, ImportTable, Preview }
|
export { BasicInfoForm, CloumInfoForm, ImportTable, Preview }
|
||||||
|
@ -167,6 +167,7 @@ const submitForm = async () => {
|
|||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
} finally {
|
} finally {
|
||||||
actionLoading.value = false
|
actionLoading.value = false
|
||||||
|
await getTree()
|
||||||
await reload()
|
await reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user