Commit 29cd9b79defce7fdf3772ac74cb12ddebef0f0f1
Committed by
Gitee
!299 refactor vue3 vxe crud
Merge pull request !299 from xingyu/feature/vue3
Showing
20 changed files
with
693 additions
and
704 deletions
yudao-ui-admin-vue3/pnpm-lock.yaml
| 1 | -lockfileVersion: 5.3 | 1 | +lockfileVersion: 5.4 |
| 2 | 2 | ||
| 3 | specifiers: | 3 | specifiers: |
| 4 | '@commitlint/cli': ^17.2.0 | 4 | '@commitlint/cli': ^17.2.0 |
| @@ -84,7 +84,7 @@ dependencies: | @@ -84,7 +84,7 @@ dependencies: | ||
| 84 | '@iconify/iconify': 3.0.0 | 84 | '@iconify/iconify': 3.0.0 |
| 85 | '@vueuse/core': 9.5.0_vue@3.2.44 | 85 | '@vueuse/core': 9.5.0_vue@3.2.44 |
| 86 | '@wangeditor/editor': 5.1.22 | 86 | '@wangeditor/editor': 5.1.22 |
| 87 | - '@wangeditor/editor-for-vue': 5.1.12_95363b7c2c964a937bf2a01c911df30e | 87 | + '@wangeditor/editor-for-vue': 5.1.12_su3dw7bmszfjg67suaojchptby |
| 88 | '@zxcvbn-ts/core': 2.1.0 | 88 | '@zxcvbn-ts/core': 2.1.0 |
| 89 | animate.css: 4.1.1 | 89 | animate.css: 4.1.1 |
| 90 | axios: 0.27.2 | 90 | axios: 0.27.2 |
| @@ -99,7 +99,7 @@ dependencies: | @@ -99,7 +99,7 @@ dependencies: | ||
| 99 | lodash-es: 4.17.21 | 99 | lodash-es: 4.17.21 |
| 100 | mitt: 3.0.0 | 100 | mitt: 3.0.0 |
| 101 | nprogress: 0.2.0 | 101 | nprogress: 0.2.0 |
| 102 | - pinia: 2.0.23_typescript@4.8.4+vue@3.2.44 | 102 | + pinia: 2.0.23_d45o5shxrtvj6wh4y524t7cqnm |
| 103 | qrcode: 1.5.1 | 103 | qrcode: 1.5.1 |
| 104 | qs: 6.11.0 | 104 | qs: 6.11.0 |
| 105 | url: 0.11.0 | 105 | url: 0.11.0 |
| @@ -124,15 +124,15 @@ devDependencies: | @@ -124,15 +124,15 @@ devDependencies: | ||
| 124 | '@types/nprogress': 0.2.0 | 124 | '@types/nprogress': 0.2.0 |
| 125 | '@types/qrcode': 1.5.0 | 125 | '@types/qrcode': 1.5.0 |
| 126 | '@types/qs': 6.9.7 | 126 | '@types/qs': 6.9.7 |
| 127 | - '@typescript-eslint/eslint-plugin': 5.42.1_d506b9be61cb4ac2646ecbc6e0680464 | ||
| 128 | - '@typescript-eslint/parser': 5.42.1_eslint@8.27.0+typescript@4.8.4 | 127 | + '@typescript-eslint/eslint-plugin': 5.42.1_2udltptbznfmezdozpdoa2aemq |
| 128 | + '@typescript-eslint/parser': 5.42.1_rmayb2veg2btbq6mbmnyivgasy | ||
| 129 | '@vitejs/plugin-vue': 3.2.0_vite@3.2.3+vue@3.2.44 | 129 | '@vitejs/plugin-vue': 3.2.0_vite@3.2.3+vue@3.2.44 |
| 130 | '@vitejs/plugin-vue-jsx': 2.1.1_vite@3.2.3+vue@3.2.44 | 130 | '@vitejs/plugin-vue-jsx': 2.1.1_vite@3.2.3+vue@3.2.44 |
| 131 | autoprefixer: 10.4.13_postcss@8.4.18 | 131 | autoprefixer: 10.4.13_postcss@8.4.18 |
| 132 | eslint: 8.27.0 | 132 | eslint: 8.27.0 |
| 133 | eslint-config-prettier: 8.5.0_eslint@8.27.0 | 133 | eslint-config-prettier: 8.5.0_eslint@8.27.0 |
| 134 | eslint-define-config: 1.12.0 | 134 | eslint-define-config: 1.12.0 |
| 135 | - eslint-plugin-prettier: 4.2.1_afddd95fb7dd832efd05cfac2e17feb1 | 135 | + eslint-plugin-prettier: 4.2.1_v7o5sx5x3wbs57ifz6wc4f76we |
| 136 | eslint-plugin-vue: 9.7.0_eslint@8.27.0 | 136 | eslint-plugin-vue: 9.7.0_eslint@8.27.0 |
| 137 | less: 4.1.3 | 137 | less: 4.1.3 |
| 138 | lint-staged: 13.0.3 | 138 | lint-staged: 13.0.3 |
| @@ -144,14 +144,14 @@ devDependencies: | @@ -144,14 +144,14 @@ devDependencies: | ||
| 144 | rimraf: 3.0.2 | 144 | rimraf: 3.0.2 |
| 145 | rollup: 3.2.5 | 145 | rollup: 3.2.5 |
| 146 | stylelint: 14.14.1 | 146 | stylelint: 14.14.1 |
| 147 | - stylelint-config-html: 1.1.0_0711e485e505c8bbf0b549e6b356f7f2 | 147 | + stylelint-config-html: 1.1.0_a4i6jbpfaxelx4fvjhtlgvxx6i |
| 148 | stylelint-config-prettier: 9.0.4_stylelint@14.14.1 | 148 | stylelint-config-prettier: 9.0.4_stylelint@14.14.1 |
| 149 | stylelint-config-recommended: 9.0.0_stylelint@14.14.1 | 149 | stylelint-config-recommended: 9.0.0_stylelint@14.14.1 |
| 150 | stylelint-config-standard: 29.0.0_stylelint@14.14.1 | 150 | stylelint-config-standard: 29.0.0_stylelint@14.14.1 |
| 151 | stylelint-order: 5.0.0_stylelint@14.14.1 | 151 | stylelint-order: 5.0.0_stylelint@14.14.1 |
| 152 | typescript: 4.8.4 | 152 | typescript: 4.8.4 |
| 153 | - unplugin-vue-macros: 0.16.2_688fcac82e974ec4fd5c071d8de5a7a5 | ||
| 154 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 153 | + unplugin-vue-macros: 0.16.2_nch4vsbos5hmj7k4a4oy3znhuu |
| 154 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi | ||
| 155 | vite-plugin-compression: 0.5.1_vite@3.2.3 | 155 | vite-plugin-compression: 0.5.1_vite@3.2.3 |
| 156 | vite-plugin-eslint: 1.8.1_eslint@8.27.0+vite@3.2.3 | 156 | vite-plugin-eslint: 1.8.1_eslint@8.27.0+vite@3.2.3 |
| 157 | vite-plugin-html: 3.2.0_vite@3.2.3 | 157 | vite-plugin-html: 3.2.0_vite@3.2.3 |
| @@ -574,10 +574,10 @@ packages: | @@ -574,10 +574,10 @@ packages: | ||
| 574 | '@types/node': 14.18.31 | 574 | '@types/node': 14.18.31 |
| 575 | chalk: 4.1.2 | 575 | chalk: 4.1.2 |
| 576 | cosmiconfig: 7.0.1 | 576 | cosmiconfig: 7.0.1 |
| 577 | - cosmiconfig-typescript-loader: 4.1.1_33d7b64ae90e9bb80d48469351c457b9 | 577 | + cosmiconfig-typescript-loader: 4.1.1_gpl3msxjb2n3qdkii2jvdrcxxe |
| 578 | lodash: 4.17.21 | 578 | lodash: 4.17.21 |
| 579 | resolve-from: 5.0.0 | 579 | resolve-from: 5.0.0 |
| 580 | - ts-node: 10.9.1_2abc08acbb4fe741ae8218df9aa74f5c | 580 | + ts-node: 10.9.1_fk6arlf3j7tudlucddpzvj2plq |
| 581 | typescript: 4.8.4 | 581 | typescript: 4.8.4 |
| 582 | transitivePeerDependencies: | 582 | transitivePeerDependencies: |
| 583 | - '@swc/core' | 583 | - '@swc/core' |
| @@ -658,7 +658,7 @@ packages: | @@ -658,7 +658,7 @@ packages: | ||
| 658 | '@jridgewell/trace-mapping': 0.3.9 | 658 | '@jridgewell/trace-mapping': 0.3.9 |
| 659 | dev: true | 659 | dev: true |
| 660 | 660 | ||
| 661 | - /@csstools/selector-specificity/2.0.2_1d546e2941f6b4ca889831b9fbdc79d8: | 661 | + /@csstools/selector-specificity/2.0.2_dvkg4kkb622mvceygg47xxdz3a: |
| 662 | resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} | 662 | resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} |
| 663 | engines: {node: ^12 || ^14 || >=16} | 663 | engines: {node: ^12 || ^14 || >=16} |
| 664 | peerDependencies: | 664 | peerDependencies: |
| @@ -798,14 +798,12 @@ packages: | @@ -798,14 +798,12 @@ packages: | ||
| 798 | '@intlify/message-compiler': 9.2.2 | 798 | '@intlify/message-compiler': 9.2.2 |
| 799 | '@intlify/shared': 9.2.2 | 799 | '@intlify/shared': 9.2.2 |
| 800 | '@intlify/vue-devtools': 9.2.2 | 800 | '@intlify/vue-devtools': 9.2.2 |
| 801 | - dev: false | ||
| 802 | 801 | ||
| 803 | /@intlify/devtools-if/9.2.2: | 802 | /@intlify/devtools-if/9.2.2: |
| 804 | resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==} | 803 | resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==} |
| 805 | engines: {node: '>= 14'} | 804 | engines: {node: '>= 14'} |
| 806 | dependencies: | 805 | dependencies: |
| 807 | '@intlify/shared': 9.2.2 | 806 | '@intlify/shared': 9.2.2 |
| 808 | - dev: false | ||
| 809 | 807 | ||
| 810 | /@intlify/message-compiler/9.2.2: | 808 | /@intlify/message-compiler/9.2.2: |
| 811 | resolution: {integrity: sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==} | 809 | resolution: {integrity: sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==} |
| @@ -813,7 +811,6 @@ packages: | @@ -813,7 +811,6 @@ packages: | ||
| 813 | dependencies: | 811 | dependencies: |
| 814 | '@intlify/shared': 9.2.2 | 812 | '@intlify/shared': 9.2.2 |
| 815 | source-map: 0.6.1 | 813 | source-map: 0.6.1 |
| 816 | - dev: false | ||
| 817 | 814 | ||
| 818 | /@intlify/message-compiler/9.3.0-beta.6: | 815 | /@intlify/message-compiler/9.3.0-beta.6: |
| 819 | resolution: {integrity: sha512-3PJqRJoqvFHExA9DCkf7fZYKbvYne1tYQ0fptJAhUOZsELarh8wr4aPLKWCkQSRuutdrtZ/n5CcPgJgUmVthDw==} | 816 | resolution: {integrity: sha512-3PJqRJoqvFHExA9DCkf7fZYKbvYne1tYQ0fptJAhUOZsELarh8wr4aPLKWCkQSRuutdrtZ/n5CcPgJgUmVthDw==} |
| @@ -826,7 +823,6 @@ packages: | @@ -826,7 +823,6 @@ packages: | ||
| 826 | /@intlify/shared/9.2.2: | 823 | /@intlify/shared/9.2.2: |
| 827 | resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==} | 824 | resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==} |
| 828 | engines: {node: '>= 14'} | 825 | engines: {node: '>= 14'} |
| 829 | - dev: false | ||
| 830 | 826 | ||
| 831 | /@intlify/shared/9.3.0-beta.6: | 827 | /@intlify/shared/9.3.0-beta.6: |
| 832 | resolution: {integrity: sha512-ITA1R4tvJYwZXT5x6QCSwxcwQ4dU52zrzVm/EUbgsp8oWzYS1xexBrxyNM80PSQudYvL2rvcZJKQ7yBh7b0LkQ==} | 828 | resolution: {integrity: sha512-ITA1R4tvJYwZXT5x6QCSwxcwQ4dU52zrzVm/EUbgsp8oWzYS1xexBrxyNM80PSQudYvL2rvcZJKQ7yBh7b0LkQ==} |
| @@ -854,7 +850,7 @@ packages: | @@ -854,7 +850,7 @@ packages: | ||
| 854 | debug: 4.3.4 | 850 | debug: 4.3.4 |
| 855 | fast-glob: 3.2.12 | 851 | fast-glob: 3.2.12 |
| 856 | source-map: 0.6.1 | 852 | source-map: 0.6.1 |
| 857 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 853 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 858 | vue-i18n: 9.2.2_vue@3.2.44 | 854 | vue-i18n: 9.2.2_vue@3.2.44 |
| 859 | transitivePeerDependencies: | 855 | transitivePeerDependencies: |
| 860 | - supports-color | 856 | - supports-color |
| @@ -866,7 +862,6 @@ packages: | @@ -866,7 +862,6 @@ packages: | ||
| 866 | dependencies: | 862 | dependencies: |
| 867 | '@intlify/core-base': 9.2.2 | 863 | '@intlify/core-base': 9.2.2 |
| 868 | '@intlify/shared': 9.2.2 | 864 | '@intlify/shared': 9.2.2 |
| 869 | - dev: false | ||
| 870 | 865 | ||
| 871 | /@jridgewell/gen-mapping/0.1.1: | 866 | /@jridgewell/gen-mapping/0.1.1: |
| 872 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} | 867 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} |
| @@ -1097,9 +1092,8 @@ packages: | @@ -1097,9 +1092,8 @@ packages: | ||
| 1097 | 1092 | ||
| 1098 | /@types/web-bluetooth/0.0.16: | 1093 | /@types/web-bluetooth/0.0.16: |
| 1099 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} | 1094 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} |
| 1100 | - dev: false | ||
| 1101 | 1095 | ||
| 1102 | - /@typescript-eslint/eslint-plugin/5.42.1_d506b9be61cb4ac2646ecbc6e0680464: | 1096 | + /@typescript-eslint/eslint-plugin/5.42.1_2udltptbznfmezdozpdoa2aemq: |
| 1103 | resolution: {integrity: sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==} | 1097 | resolution: {integrity: sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg==} |
| 1104 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1098 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1105 | peerDependencies: | 1099 | peerDependencies: |
| @@ -1110,10 +1104,10 @@ packages: | @@ -1110,10 +1104,10 @@ packages: | ||
| 1110 | typescript: | 1104 | typescript: |
| 1111 | optional: true | 1105 | optional: true |
| 1112 | dependencies: | 1106 | dependencies: |
| 1113 | - '@typescript-eslint/parser': 5.42.1_eslint@8.27.0+typescript@4.8.4 | 1107 | + '@typescript-eslint/parser': 5.42.1_rmayb2veg2btbq6mbmnyivgasy |
| 1114 | '@typescript-eslint/scope-manager': 5.42.1 | 1108 | '@typescript-eslint/scope-manager': 5.42.1 |
| 1115 | - '@typescript-eslint/type-utils': 5.42.1_eslint@8.27.0+typescript@4.8.4 | ||
| 1116 | - '@typescript-eslint/utils': 5.42.1_eslint@8.27.0+typescript@4.8.4 | 1109 | + '@typescript-eslint/type-utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy |
| 1110 | + '@typescript-eslint/utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy | ||
| 1117 | debug: 4.3.4 | 1111 | debug: 4.3.4 |
| 1118 | eslint: 8.27.0 | 1112 | eslint: 8.27.0 |
| 1119 | ignore: 5.2.0 | 1113 | ignore: 5.2.0 |
| @@ -1126,7 +1120,7 @@ packages: | @@ -1126,7 +1120,7 @@ packages: | ||
| 1126 | - supports-color | 1120 | - supports-color |
| 1127 | dev: true | 1121 | dev: true |
| 1128 | 1122 | ||
| 1129 | - /@typescript-eslint/parser/5.42.1_eslint@8.27.0+typescript@4.8.4: | 1123 | + /@typescript-eslint/parser/5.42.1_rmayb2veg2btbq6mbmnyivgasy: |
| 1130 | resolution: {integrity: sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==} | 1124 | resolution: {integrity: sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q==} |
| 1131 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1125 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1132 | peerDependencies: | 1126 | peerDependencies: |
| @@ -1154,7 +1148,7 @@ packages: | @@ -1154,7 +1148,7 @@ packages: | ||
| 1154 | '@typescript-eslint/visitor-keys': 5.42.1 | 1148 | '@typescript-eslint/visitor-keys': 5.42.1 |
| 1155 | dev: true | 1149 | dev: true |
| 1156 | 1150 | ||
| 1157 | - /@typescript-eslint/type-utils/5.42.1_eslint@8.27.0+typescript@4.8.4: | 1151 | + /@typescript-eslint/type-utils/5.42.1_rmayb2veg2btbq6mbmnyivgasy: |
| 1158 | resolution: {integrity: sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==} | 1152 | resolution: {integrity: sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg==} |
| 1159 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1153 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1160 | peerDependencies: | 1154 | peerDependencies: |
| @@ -1165,7 +1159,7 @@ packages: | @@ -1165,7 +1159,7 @@ packages: | ||
| 1165 | optional: true | 1159 | optional: true |
| 1166 | dependencies: | 1160 | dependencies: |
| 1167 | '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4 | 1161 | '@typescript-eslint/typescript-estree': 5.42.1_typescript@4.8.4 |
| 1168 | - '@typescript-eslint/utils': 5.42.1_eslint@8.27.0+typescript@4.8.4 | 1162 | + '@typescript-eslint/utils': 5.42.1_rmayb2veg2btbq6mbmnyivgasy |
| 1169 | debug: 4.3.4 | 1163 | debug: 4.3.4 |
| 1170 | eslint: 8.27.0 | 1164 | eslint: 8.27.0 |
| 1171 | tsutils: 3.21.0_typescript@4.8.4 | 1165 | tsutils: 3.21.0_typescript@4.8.4 |
| @@ -1200,7 +1194,7 @@ packages: | @@ -1200,7 +1194,7 @@ packages: | ||
| 1200 | - supports-color | 1194 | - supports-color |
| 1201 | dev: true | 1195 | dev: true |
| 1202 | 1196 | ||
| 1203 | - /@typescript-eslint/utils/5.42.1_eslint@8.27.0+typescript@4.8.4: | 1197 | + /@typescript-eslint/utils/5.42.1_rmayb2veg2btbq6mbmnyivgasy: |
| 1204 | resolution: {integrity: sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==} | 1198 | resolution: {integrity: sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ==} |
| 1205 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} | 1199 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} |
| 1206 | peerDependencies: | 1200 | peerDependencies: |
| @@ -1279,7 +1273,7 @@ packages: | @@ -1279,7 +1273,7 @@ packages: | ||
| 1279 | '@babel/core': 7.19.6 | 1273 | '@babel/core': 7.19.6 |
| 1280 | '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.19.6 | 1274 | '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.19.6 |
| 1281 | '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.6 | 1275 | '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.6 |
| 1282 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 1276 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 1283 | vue: 3.2.44 | 1277 | vue: 3.2.44 |
| 1284 | transitivePeerDependencies: | 1278 | transitivePeerDependencies: |
| 1285 | - supports-color | 1279 | - supports-color |
| @@ -1292,7 +1286,7 @@ packages: | @@ -1292,7 +1286,7 @@ packages: | ||
| 1292 | vite: ^3.0.0 | 1286 | vite: ^3.0.0 |
| 1293 | vue: ^3.2.25 | 1287 | vue: ^3.2.25 |
| 1294 | dependencies: | 1288 | dependencies: |
| 1295 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 1289 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 1296 | vue: 3.2.44 | 1290 | vue: 3.2.44 |
| 1297 | dev: true | 1291 | dev: true |
| 1298 | 1292 | ||
| @@ -1424,7 +1418,7 @@ packages: | @@ -1424,7 +1418,7 @@ packages: | ||
| 1424 | unplugin: 0.10.2 | 1418 | unplugin: 0.10.2 |
| 1425 | dev: true | 1419 | dev: true |
| 1426 | 1420 | ||
| 1427 | - /@vue-macros/named-template/0.0.5_aaae75a03f99901122a33a7412c8cd0a: | 1421 | + /@vue-macros/named-template/0.0.5_vkxhlib7tgibcivdhj2bfsgnbi: |
| 1428 | resolution: {integrity: sha512-bZRUljNyvOOqeE9dyqXvKPQCLUCcPt1EkThmXqSbxagV29ohyviF8+CCs/8OdmNygLTBIChjP8DexQ3nUIFzUg==} | 1422 | resolution: {integrity: sha512-bZRUljNyvOOqeE9dyqXvKPQCLUCcPt1EkThmXqSbxagV29ohyviF8+CCs/8OdmNygLTBIChjP8DexQ3nUIFzUg==} |
| 1429 | engines: {node: '>=14.19.0'} | 1423 | engines: {node: '>=14.19.0'} |
| 1430 | dependencies: | 1424 | dependencies: |
| @@ -1521,7 +1515,6 @@ packages: | @@ -1521,7 +1515,6 @@ packages: | ||
| 1521 | '@vue/shared': 3.2.44 | 1515 | '@vue/shared': 3.2.44 |
| 1522 | estree-walker: 2.0.2 | 1516 | estree-walker: 2.0.2 |
| 1523 | source-map: 0.6.1 | 1517 | source-map: 0.6.1 |
| 1524 | - dev: false | ||
| 1525 | 1518 | ||
| 1526 | /@vue/compiler-dom/3.2.41: | 1519 | /@vue/compiler-dom/3.2.41: |
| 1527 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==} | 1520 | resolution: {integrity: sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==} |
| @@ -1542,7 +1535,6 @@ packages: | @@ -1542,7 +1535,6 @@ packages: | ||
| 1542 | dependencies: | 1535 | dependencies: |
| 1543 | '@vue/compiler-core': 3.2.44 | 1536 | '@vue/compiler-core': 3.2.44 |
| 1544 | '@vue/shared': 3.2.44 | 1537 | '@vue/shared': 3.2.44 |
| 1545 | - dev: false | ||
| 1546 | 1538 | ||
| 1547 | /@vue/compiler-sfc/3.2.41: | 1539 | /@vue/compiler-sfc/3.2.41: |
| 1548 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==} | 1540 | resolution: {integrity: sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==} |
| @@ -1587,7 +1579,6 @@ packages: | @@ -1587,7 +1579,6 @@ packages: | ||
| 1587 | magic-string: 0.25.9 | 1579 | magic-string: 0.25.9 |
| 1588 | postcss: 8.4.18 | 1580 | postcss: 8.4.18 |
| 1589 | source-map: 0.6.1 | 1581 | source-map: 0.6.1 |
| 1590 | - dev: false | ||
| 1591 | 1582 | ||
| 1592 | /@vue/compiler-ssr/3.2.41: | 1583 | /@vue/compiler-ssr/3.2.41: |
| 1593 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==} | 1584 | resolution: {integrity: sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==} |
| @@ -1608,11 +1599,9 @@ packages: | @@ -1608,11 +1599,9 @@ packages: | ||
| 1608 | dependencies: | 1599 | dependencies: |
| 1609 | '@vue/compiler-dom': 3.2.44 | 1600 | '@vue/compiler-dom': 3.2.44 |
| 1610 | '@vue/shared': 3.2.44 | 1601 | '@vue/shared': 3.2.44 |
| 1611 | - dev: false | ||
| 1612 | 1602 | ||
| 1613 | /@vue/devtools-api/6.4.3: | 1603 | /@vue/devtools-api/6.4.3: |
| 1614 | resolution: {integrity: sha512-9WCRwdROJvWcHAdyrR7SZMM/qUvllDZnpndHXokThkUsjnJ2xe4/pvsH9FZrxFe22L+JmDKczL79HjLJ7DK9rg==} | 1604 | resolution: {integrity: sha512-9WCRwdROJvWcHAdyrR7SZMM/qUvllDZnpndHXokThkUsjnJ2xe4/pvsH9FZrxFe22L+JmDKczL79HjLJ7DK9rg==} |
| 1615 | - dev: false | ||
| 1616 | 1605 | ||
| 1617 | /@vue/devtools-api/6.4.4: | 1606 | /@vue/devtools-api/6.4.4: |
| 1618 | resolution: {integrity: sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==} | 1607 | resolution: {integrity: sha512-Ku31WzpOV/8cruFaXaEZKF81WkNnvCSlBY4eOGtz5WMSdJvX1v1WWlSMGZeqUwPtQ27ZZz7B62erEMq8JDjcXw==} |
| @@ -1650,7 +1639,6 @@ packages: | @@ -1650,7 +1639,6 @@ packages: | ||
| 1650 | '@vue/shared': 3.2.44 | 1639 | '@vue/shared': 3.2.44 |
| 1651 | estree-walker: 2.0.2 | 1640 | estree-walker: 2.0.2 |
| 1652 | magic-string: 0.25.9 | 1641 | magic-string: 0.25.9 |
| 1653 | - dev: false | ||
| 1654 | 1642 | ||
| 1655 | /@vue/reactivity/3.2.41: | 1643 | /@vue/reactivity/3.2.41: |
| 1656 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} | 1644 | resolution: {integrity: sha512-9JvCnlj8uc5xRiQGZ28MKGjuCoPhhTwcoAdv3o31+cfGgonwdPNuvqAXLhlzu4zwqavFEG5tvaoINQEfxz+l6g==} |
| @@ -1662,14 +1650,12 @@ packages: | @@ -1662,14 +1650,12 @@ packages: | ||
| 1662 | resolution: {integrity: sha512-Fe0s52fTsPl+RSdvoqUZ3HRKlaVsKhIh1mea5EWOedFvZCjnymzlj3YC1wZMxi89qXRFSdEASVA/BWUGypk0Ig==} | 1650 | resolution: {integrity: sha512-Fe0s52fTsPl+RSdvoqUZ3HRKlaVsKhIh1mea5EWOedFvZCjnymzlj3YC1wZMxi89qXRFSdEASVA/BWUGypk0Ig==} |
| 1663 | dependencies: | 1651 | dependencies: |
| 1664 | '@vue/shared': 3.2.44 | 1652 | '@vue/shared': 3.2.44 |
| 1665 | - dev: false | ||
| 1666 | 1653 | ||
| 1667 | /@vue/runtime-core/3.2.44: | 1654 | /@vue/runtime-core/3.2.44: |
| 1668 | resolution: {integrity: sha512-uwEV1cttL33k2dC+CNGYhKEYqGejT9KmgQ+4n/LmYUfZ1Gorl8F32DlIX+1pANyGHL1tBAisqHDxKyQBp2oBNA==} | 1655 | resolution: {integrity: sha512-uwEV1cttL33k2dC+CNGYhKEYqGejT9KmgQ+4n/LmYUfZ1Gorl8F32DlIX+1pANyGHL1tBAisqHDxKyQBp2oBNA==} |
| 1669 | dependencies: | 1656 | dependencies: |
| 1670 | '@vue/reactivity': 3.2.44 | 1657 | '@vue/reactivity': 3.2.44 |
| 1671 | '@vue/shared': 3.2.44 | 1658 | '@vue/shared': 3.2.44 |
| 1672 | - dev: false | ||
| 1673 | 1659 | ||
| 1674 | /@vue/runtime-dom/3.2.44: | 1660 | /@vue/runtime-dom/3.2.44: |
| 1675 | resolution: {integrity: sha512-LDzNwXpU/nSpxrLk5jS0bfStgt88msgsgFzj6vHrl7es3QktIrCGybQS5CB/p/TO0q98iAiYtEVmi+Lej7Vgjg==} | 1661 | resolution: {integrity: sha512-LDzNwXpU/nSpxrLk5jS0bfStgt88msgsgFzj6vHrl7es3QktIrCGybQS5CB/p/TO0q98iAiYtEVmi+Lej7Vgjg==} |
| @@ -1677,7 +1663,6 @@ packages: | @@ -1677,7 +1663,6 @@ packages: | ||
| 1677 | '@vue/runtime-core': 3.2.44 | 1663 | '@vue/runtime-core': 3.2.44 |
| 1678 | '@vue/shared': 3.2.44 | 1664 | '@vue/shared': 3.2.44 |
| 1679 | csstype: 2.6.21 | 1665 | csstype: 2.6.21 |
| 1680 | - dev: false | ||
| 1681 | 1666 | ||
| 1682 | /@vue/server-renderer/3.2.44_vue@3.2.44: | 1667 | /@vue/server-renderer/3.2.44_vue@3.2.44: |
| 1683 | resolution: {integrity: sha512-3+ArN07UgOAdbGKIp3uVqeC3bnR3J324QNjPR6vxHbLrTlkibFv8QNled/ux3fVq0KDCkVVKGOKB2V4sCIYOgg==} | 1668 | resolution: {integrity: sha512-3+ArN07UgOAdbGKIp3uVqeC3bnR3J324QNjPR6vxHbLrTlkibFv8QNled/ux3fVq0KDCkVVKGOKB2V4sCIYOgg==} |
| @@ -1687,7 +1672,6 @@ packages: | @@ -1687,7 +1672,6 @@ packages: | ||
| 1687 | '@vue/compiler-ssr': 3.2.44 | 1672 | '@vue/compiler-ssr': 3.2.44 |
| 1688 | '@vue/shared': 3.2.44 | 1673 | '@vue/shared': 3.2.44 |
| 1689 | vue: 3.2.44 | 1674 | vue: 3.2.44 |
| 1690 | - dev: false | ||
| 1691 | 1675 | ||
| 1692 | /@vue/shared/3.2.41: | 1676 | /@vue/shared/3.2.41: |
| 1693 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} | 1677 | resolution: {integrity: sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==} |
| @@ -1699,7 +1683,6 @@ packages: | @@ -1699,7 +1683,6 @@ packages: | ||
| 1699 | 1683 | ||
| 1700 | /@vue/shared/3.2.44: | 1684 | /@vue/shared/3.2.44: |
| 1701 | resolution: {integrity: sha512-mGZ44bnn0zpZ36nXtxbrBPno43yr96wjQE1dBEKS1Sieugt27HS4OGZVBRIgsdGzosB7vqZAvu0ttu1FDVdolA==} | 1685 | resolution: {integrity: sha512-mGZ44bnn0zpZ36nXtxbrBPno43yr96wjQE1dBEKS1Sieugt27HS4OGZVBRIgsdGzosB7vqZAvu0ttu1FDVdolA==} |
| 1702 | - dev: false | ||
| 1703 | 1686 | ||
| 1704 | /@vueuse/core/9.5.0_vue@3.2.44: | 1687 | /@vueuse/core/9.5.0_vue@3.2.44: |
| 1705 | resolution: {integrity: sha512-6GsWBsJHEb3sYw15mbLrcbslAVY45pkzjJYTKYKCXv88z7srAF0VEW0q+oXKsl58tCbqooplInahXFg8Yo1m4w==} | 1688 | resolution: {integrity: sha512-6GsWBsJHEb3sYw15mbLrcbslAVY45pkzjJYTKYKCXv88z7srAF0VEW0q+oXKsl58tCbqooplInahXFg8Yo1m4w==} |
| @@ -1711,11 +1694,9 @@ packages: | @@ -1711,11 +1694,9 @@ packages: | ||
| 1711 | transitivePeerDependencies: | 1694 | transitivePeerDependencies: |
| 1712 | - '@vue/composition-api' | 1695 | - '@vue/composition-api' |
| 1713 | - vue | 1696 | - vue |
| 1714 | - dev: false | ||
| 1715 | 1697 | ||
| 1716 | /@vueuse/metadata/9.5.0: | 1698 | /@vueuse/metadata/9.5.0: |
| 1717 | resolution: {integrity: sha512-4M1AyPZmIv41pym+K5+4wup3bKuYebbH8w8BROY1hmT7rIwcyS4tEL+UsGz0Hiu1FCOxcoBrwtAizc0YmBJjyQ==} | 1699 | resolution: {integrity: sha512-4M1AyPZmIv41pym+K5+4wup3bKuYebbH8w8BROY1hmT7rIwcyS4tEL+UsGz0Hiu1FCOxcoBrwtAizc0YmBJjyQ==} |
| 1718 | - dev: false | ||
| 1719 | 1700 | ||
| 1720 | /@vueuse/shared/9.5.0_vue@3.2.44: | 1701 | /@vueuse/shared/9.5.0_vue@3.2.44: |
| 1721 | resolution: {integrity: sha512-HnnCWU1Vg9CVWRCcI8ohDKDRB2Sc4bTgT1XAIaoLSfVHHn+TKbrox6pd3klCSw4UDxkhDfOk8cAdcK+Z5KleCA==} | 1702 | resolution: {integrity: sha512-HnnCWU1Vg9CVWRCcI8ohDKDRB2Sc4bTgT1XAIaoLSfVHHn+TKbrox6pd3klCSw4UDxkhDfOk8cAdcK+Z5KleCA==} |
| @@ -1724,9 +1705,8 @@ packages: | @@ -1724,9 +1705,8 @@ packages: | ||
| 1724 | transitivePeerDependencies: | 1705 | transitivePeerDependencies: |
| 1725 | - '@vue/composition-api' | 1706 | - '@vue/composition-api' |
| 1726 | - vue | 1707 | - vue |
| 1727 | - dev: false | ||
| 1728 | 1708 | ||
| 1729 | - /@wangeditor/basic-modules/1.1.6_77a30faf19af486fa77beec27d9e830b: | 1709 | + /@wangeditor/basic-modules/1.1.6_o6rq7lyzv5eg7j3353bh3hudbm: |
| 1730 | resolution: {integrity: sha512-wckcFm/kEAHpTn7dTmN0+7POFoygqt9bZdNHJUkdKObXtAerml8RdjrkHRcwJFCkSELbrNK63fvkwS0+FsabfA==} | 1710 | resolution: {integrity: sha512-wckcFm/kEAHpTn7dTmN0+7POFoygqt9bZdNHJUkdKObXtAerml8RdjrkHRcwJFCkSELbrNK63fvkwS0+FsabfA==} |
| 1731 | peerDependencies: | 1711 | peerDependencies: |
| 1732 | '@wangeditor/core': 1.x | 1712 | '@wangeditor/core': 1.x |
| @@ -1736,7 +1716,7 @@ packages: | @@ -1736,7 +1716,7 @@ packages: | ||
| 1736 | slate: ^0.72.0 | 1716 | slate: ^0.72.0 |
| 1737 | snabbdom: ^3.1.0 | 1717 | snabbdom: ^3.1.0 |
| 1738 | dependencies: | 1718 | dependencies: |
| 1739 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1719 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e |
| 1740 | dom7: 3.0.0 | 1720 | dom7: 3.0.0 |
| 1741 | is-url: 1.2.4 | 1721 | is-url: 1.2.4 |
| 1742 | lodash.throttle: 4.1.1 | 1722 | lodash.throttle: 4.1.1 |
| @@ -1745,7 +1725,7 @@ packages: | @@ -1745,7 +1725,7 @@ packages: | ||
| 1745 | snabbdom: 3.5.1 | 1725 | snabbdom: 3.5.1 |
| 1746 | dev: false | 1726 | dev: false |
| 1747 | 1727 | ||
| 1748 | - /@wangeditor/code-highlight/1.0.3_5fc334405e4d9219aba9f66fdd32274f: | 1728 | + /@wangeditor/code-highlight/1.0.3_l7btiqc6jwjbtk5j6zx52mrhj4: |
| 1749 | resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} | 1729 | resolution: {integrity: sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==} |
| 1750 | peerDependencies: | 1730 | peerDependencies: |
| 1751 | '@wangeditor/core': 1.x | 1731 | '@wangeditor/core': 1.x |
| @@ -1753,14 +1733,14 @@ packages: | @@ -1753,14 +1733,14 @@ packages: | ||
| 1753 | slate: ^0.72.0 | 1733 | slate: ^0.72.0 |
| 1754 | snabbdom: ^3.1.0 | 1734 | snabbdom: ^3.1.0 |
| 1755 | dependencies: | 1735 | dependencies: |
| 1756 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1736 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e |
| 1757 | dom7: 3.0.0 | 1737 | dom7: 3.0.0 |
| 1758 | prismjs: 1.29.0 | 1738 | prismjs: 1.29.0 |
| 1759 | slate: 0.72.8 | 1739 | slate: 0.72.8 |
| 1760 | snabbdom: 3.5.1 | 1740 | snabbdom: 3.5.1 |
| 1761 | dev: false | 1741 | dev: false |
| 1762 | 1742 | ||
| 1763 | - /@wangeditor/core/1.1.18_83942e33b1d7a7a6aab922626cc5c0f9: | 1743 | + /@wangeditor/core/1.1.18_qokc4m5r26t2nkvzejrgzroa7e: |
| 1764 | resolution: {integrity: sha512-GZsW/8tm2Hc2hZKX8BZP9PO7vTZll9YXsOt+jKck3D2bj9nk4T0FZymuE5fq9ZHdo+MwLiXBHXS/D1SIGlVnGQ==} | 1744 | resolution: {integrity: sha512-GZsW/8tm2Hc2hZKX8BZP9PO7vTZll9YXsOt+jKck3D2bj9nk4T0FZymuE5fq9ZHdo+MwLiXBHXS/D1SIGlVnGQ==} |
| 1765 | peerDependencies: | 1745 | peerDependencies: |
| 1766 | '@uppy/core': ^2.1.1 | 1746 | '@uppy/core': ^2.1.1 |
| @@ -1800,7 +1780,7 @@ packages: | @@ -1800,7 +1780,7 @@ packages: | ||
| 1800 | snabbdom: 3.5.1 | 1780 | snabbdom: 3.5.1 |
| 1801 | dev: false | 1781 | dev: false |
| 1802 | 1782 | ||
| 1803 | - /@wangeditor/editor-for-vue/5.1.12_95363b7c2c964a937bf2a01c911df30e: | 1783 | + /@wangeditor/editor-for-vue/5.1.12_su3dw7bmszfjg67suaojchptby: |
| 1804 | resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} | 1784 | resolution: {integrity: sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==} |
| 1805 | peerDependencies: | 1785 | peerDependencies: |
| 1806 | '@wangeditor/editor': '>=5.1.0' | 1786 | '@wangeditor/editor': '>=5.1.0' |
| @@ -1815,13 +1795,13 @@ packages: | @@ -1815,13 +1795,13 @@ packages: | ||
| 1815 | dependencies: | 1795 | dependencies: |
| 1816 | '@uppy/core': 2.3.4 | 1796 | '@uppy/core': 2.3.4 |
| 1817 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 | 1797 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 |
| 1818 | - '@wangeditor/basic-modules': 1.1.6_77a30faf19af486fa77beec27d9e830b | ||
| 1819 | - '@wangeditor/code-highlight': 1.0.3_5fc334405e4d9219aba9f66fdd32274f | ||
| 1820 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | ||
| 1821 | - '@wangeditor/list-module': 1.0.5_5fc334405e4d9219aba9f66fdd32274f | ||
| 1822 | - '@wangeditor/table-module': 1.1.4_5d8cd29e73aad229850928ebedfb04b7 | ||
| 1823 | - '@wangeditor/upload-image-module': 1.0.2_7a9aad2bf3b86405f1f37087d2b924a4 | ||
| 1824 | - '@wangeditor/video-module': 1.1.4_47db22f98847f2d6b6569a7e95c5dcf5 | 1798 | + '@wangeditor/basic-modules': 1.1.6_o6rq7lyzv5eg7j3353bh3hudbm |
| 1799 | + '@wangeditor/code-highlight': 1.0.3_l7btiqc6jwjbtk5j6zx52mrhj4 | ||
| 1800 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e | ||
| 1801 | + '@wangeditor/list-module': 1.0.5_l7btiqc6jwjbtk5j6zx52mrhj4 | ||
| 1802 | + '@wangeditor/table-module': 1.1.4_lwgnfhttvljctbijfdv636yew4 | ||
| 1803 | + '@wangeditor/upload-image-module': 1.0.2_pknk2k7txbsal4ptocd5fojeuq | ||
| 1804 | + '@wangeditor/video-module': 1.1.4_i7nsf6mii7znnnswtj7jlro46u | ||
| 1825 | dom7: 3.0.0 | 1805 | dom7: 3.0.0 |
| 1826 | is-hotkey: 0.2.0 | 1806 | is-hotkey: 0.2.0 |
| 1827 | lodash.camelcase: 4.3.0 | 1807 | lodash.camelcase: 4.3.0 |
| @@ -1836,7 +1816,7 @@ packages: | @@ -1836,7 +1816,7 @@ packages: | ||
| 1836 | snabbdom: 3.5.1 | 1816 | snabbdom: 3.5.1 |
| 1837 | dev: false | 1817 | dev: false |
| 1838 | 1818 | ||
| 1839 | - /@wangeditor/list-module/1.0.5_5fc334405e4d9219aba9f66fdd32274f: | 1819 | + /@wangeditor/list-module/1.0.5_l7btiqc6jwjbtk5j6zx52mrhj4: |
| 1840 | resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} | 1820 | resolution: {integrity: sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==} |
| 1841 | peerDependencies: | 1821 | peerDependencies: |
| 1842 | '@wangeditor/core': 1.x | 1822 | '@wangeditor/core': 1.x |
| @@ -1844,13 +1824,13 @@ packages: | @@ -1844,13 +1824,13 @@ packages: | ||
| 1844 | slate: ^0.72.0 | 1824 | slate: ^0.72.0 |
| 1845 | snabbdom: ^3.1.0 | 1825 | snabbdom: ^3.1.0 |
| 1846 | dependencies: | 1826 | dependencies: |
| 1847 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1827 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e |
| 1848 | dom7: 3.0.0 | 1828 | dom7: 3.0.0 |
| 1849 | slate: 0.72.8 | 1829 | slate: 0.72.8 |
| 1850 | snabbdom: 3.5.1 | 1830 | snabbdom: 3.5.1 |
| 1851 | dev: false | 1831 | dev: false |
| 1852 | 1832 | ||
| 1853 | - /@wangeditor/table-module/1.1.4_5d8cd29e73aad229850928ebedfb04b7: | 1833 | + /@wangeditor/table-module/1.1.4_lwgnfhttvljctbijfdv636yew4: |
| 1854 | resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} | 1834 | resolution: {integrity: sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==} |
| 1855 | peerDependencies: | 1835 | peerDependencies: |
| 1856 | '@wangeditor/core': 1.x | 1836 | '@wangeditor/core': 1.x |
| @@ -1861,7 +1841,7 @@ packages: | @@ -1861,7 +1841,7 @@ packages: | ||
| 1861 | slate: ^0.72.0 | 1841 | slate: ^0.72.0 |
| 1862 | snabbdom: ^3.1.0 | 1842 | snabbdom: ^3.1.0 |
| 1863 | dependencies: | 1843 | dependencies: |
| 1864 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1844 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e |
| 1865 | dom7: 3.0.0 | 1845 | dom7: 3.0.0 |
| 1866 | lodash.isequal: 4.5.0 | 1846 | lodash.isequal: 4.5.0 |
| 1867 | lodash.throttle: 4.1.1 | 1847 | lodash.throttle: 4.1.1 |
| @@ -1870,7 +1850,7 @@ packages: | @@ -1870,7 +1850,7 @@ packages: | ||
| 1870 | snabbdom: 3.5.1 | 1850 | snabbdom: 3.5.1 |
| 1871 | dev: false | 1851 | dev: false |
| 1872 | 1852 | ||
| 1873 | - /@wangeditor/upload-image-module/1.0.2_7a9aad2bf3b86405f1f37087d2b924a4: | 1853 | + /@wangeditor/upload-image-module/1.0.2_pknk2k7txbsal4ptocd5fojeuq: |
| 1874 | resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} | 1854 | resolution: {integrity: sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==} |
| 1875 | peerDependencies: | 1855 | peerDependencies: |
| 1876 | '@uppy/core': ^2.0.3 | 1856 | '@uppy/core': ^2.0.3 |
| @@ -1884,15 +1864,15 @@ packages: | @@ -1884,15 +1864,15 @@ packages: | ||
| 1884 | dependencies: | 1864 | dependencies: |
| 1885 | '@uppy/core': 2.3.4 | 1865 | '@uppy/core': 2.3.4 |
| 1886 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 | 1866 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 |
| 1887 | - '@wangeditor/basic-modules': 1.1.6_77a30faf19af486fa77beec27d9e830b | ||
| 1888 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1867 | + '@wangeditor/basic-modules': 1.1.6_o6rq7lyzv5eg7j3353bh3hudbm |
| 1868 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e | ||
| 1889 | dom7: 3.0.0 | 1869 | dom7: 3.0.0 |
| 1890 | lodash.foreach: 4.5.0 | 1870 | lodash.foreach: 4.5.0 |
| 1891 | slate: 0.72.8 | 1871 | slate: 0.72.8 |
| 1892 | snabbdom: 3.5.1 | 1872 | snabbdom: 3.5.1 |
| 1893 | dev: false | 1873 | dev: false |
| 1894 | 1874 | ||
| 1895 | - /@wangeditor/video-module/1.1.4_47db22f98847f2d6b6569a7e95c5dcf5: | 1875 | + /@wangeditor/video-module/1.1.4_i7nsf6mii7znnnswtj7jlro46u: |
| 1896 | resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} | 1876 | resolution: {integrity: sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==} |
| 1897 | peerDependencies: | 1877 | peerDependencies: |
| 1898 | '@uppy/core': ^2.1.4 | 1878 | '@uppy/core': ^2.1.4 |
| @@ -1905,7 +1885,7 @@ packages: | @@ -1905,7 +1885,7 @@ packages: | ||
| 1905 | dependencies: | 1885 | dependencies: |
| 1906 | '@uppy/core': 2.3.4 | 1886 | '@uppy/core': 2.3.4 |
| 1907 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 | 1887 | '@uppy/xhr-upload': 2.1.3_@uppy+core@2.3.4 |
| 1908 | - '@wangeditor/core': 1.1.18_83942e33b1d7a7a6aab922626cc5c0f9 | 1888 | + '@wangeditor/core': 1.1.18_qokc4m5r26t2nkvzejrgzroa7e |
| 1909 | dom7: 3.0.0 | 1889 | dom7: 3.0.0 |
| 1910 | nanoid: 3.3.4 | 1890 | nanoid: 3.3.4 |
| 1911 | slate: 0.72.8 | 1891 | slate: 0.72.8 |
| @@ -2269,6 +2249,8 @@ packages: | @@ -2269,6 +2249,8 @@ packages: | ||
| 2269 | snapdragon-node: 2.1.1 | 2249 | snapdragon-node: 2.1.1 |
| 2270 | split-string: 3.1.0 | 2250 | split-string: 3.1.0 |
| 2271 | to-regex: 3.0.2 | 2251 | to-regex: 3.0.2 |
| 2252 | + transitivePeerDependencies: | ||
| 2253 | + - supports-color | ||
| 2272 | dev: true | 2254 | dev: true |
| 2273 | 2255 | ||
| 2274 | /braces/3.0.2: | 2256 | /braces/3.0.2: |
| @@ -2652,8 +2634,8 @@ packages: | @@ -2652,8 +2634,8 @@ packages: | ||
| 2652 | engines: {node: '>=10'} | 2634 | engines: {node: '>=10'} |
| 2653 | hasBin: true | 2635 | hasBin: true |
| 2654 | dependencies: | 2636 | dependencies: |
| 2655 | - is-text-path: 1.0.1 | ||
| 2656 | JSONStream: 1.3.5 | 2637 | JSONStream: 1.3.5 |
| 2638 | + is-text-path: 1.0.1 | ||
| 2657 | lodash: 4.17.21 | 2639 | lodash: 4.17.21 |
| 2658 | meow: 8.1.2 | 2640 | meow: 8.1.2 |
| 2659 | split2: 3.2.2 | 2641 | split2: 3.2.2 |
| @@ -2685,7 +2667,7 @@ packages: | @@ -2685,7 +2667,7 @@ packages: | ||
| 2685 | vary: 1.1.2 | 2667 | vary: 1.1.2 |
| 2686 | dev: true | 2668 | dev: true |
| 2687 | 2669 | ||
| 2688 | - /cosmiconfig-typescript-loader/4.1.1_33d7b64ae90e9bb80d48469351c457b9: | 2670 | + /cosmiconfig-typescript-loader/4.1.1_gpl3msxjb2n3qdkii2jvdrcxxe: |
| 2689 | resolution: {integrity: sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==} | 2671 | resolution: {integrity: sha512-9DHpa379Gp0o0Zefii35fcmuuin6q92FnLDffzdZ0l9tVd3nEobG3O+MZ06+kuBvFTSVScvNb/oHA13Nd4iipg==} |
| 2690 | engines: {node: '>=12', npm: '>=6'} | 2672 | engines: {node: '>=12', npm: '>=6'} |
| 2691 | peerDependencies: | 2673 | peerDependencies: |
| @@ -2696,7 +2678,7 @@ packages: | @@ -2696,7 +2678,7 @@ packages: | ||
| 2696 | dependencies: | 2678 | dependencies: |
| 2697 | '@types/node': 14.18.31 | 2679 | '@types/node': 14.18.31 |
| 2698 | cosmiconfig: 7.0.1 | 2680 | cosmiconfig: 7.0.1 |
| 2699 | - ts-node: 10.9.1_2abc08acbb4fe741ae8218df9aa74f5c | 2681 | + ts-node: 10.9.1_fk6arlf3j7tudlucddpzvj2plq |
| 2700 | typescript: 4.8.4 | 2682 | typescript: 4.8.4 |
| 2701 | dev: true | 2683 | dev: true |
| 2702 | 2684 | ||
| @@ -2779,7 +2761,6 @@ packages: | @@ -2779,7 +2761,6 @@ packages: | ||
| 2779 | 2761 | ||
| 2780 | /csstype/2.6.21: | 2762 | /csstype/2.6.21: |
| 2781 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} | 2763 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} |
| 2782 | - dev: false | ||
| 2783 | 2764 | ||
| 2784 | /d/1.0.1: | 2765 | /d/1.0.1: |
| 2785 | resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} | 2766 | resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} |
| @@ -2803,12 +2784,22 @@ packages: | @@ -2803,12 +2784,22 @@ packages: | ||
| 2803 | 2784 | ||
| 2804 | /debug/2.6.9: | 2785 | /debug/2.6.9: |
| 2805 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} | 2786 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} |
| 2787 | + peerDependencies: | ||
| 2788 | + supports-color: '*' | ||
| 2789 | + peerDependenciesMeta: | ||
| 2790 | + supports-color: | ||
| 2791 | + optional: true | ||
| 2806 | dependencies: | 2792 | dependencies: |
| 2807 | ms: 2.0.0 | 2793 | ms: 2.0.0 |
| 2808 | dev: true | 2794 | dev: true |
| 2809 | 2795 | ||
| 2810 | /debug/3.2.7: | 2796 | /debug/3.2.7: |
| 2811 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} | 2797 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} |
| 2798 | + peerDependencies: | ||
| 2799 | + supports-color: '*' | ||
| 2800 | + peerDependenciesMeta: | ||
| 2801 | + supports-color: | ||
| 2802 | + optional: true | ||
| 2812 | dependencies: | 2803 | dependencies: |
| 2813 | ms: 2.1.3 | 2804 | ms: 2.1.3 |
| 2814 | dev: true | 2805 | dev: true |
| @@ -3074,7 +3065,7 @@ packages: | @@ -3074,7 +3065,7 @@ packages: | ||
| 3074 | escape-html: 1.0.3 | 3065 | escape-html: 1.0.3 |
| 3075 | lodash: 4.17.21 | 3066 | lodash: 4.17.21 |
| 3076 | lodash-es: 4.17.21 | 3067 | lodash-es: 4.17.21 |
| 3077 | - lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd | 3068 | + lodash-unified: 1.0.2_3ib2ivapxullxkx3xftsimdk7u |
| 3078 | memoize-one: 6.0.0 | 3069 | memoize-one: 6.0.0 |
| 3079 | normalize-wheel-es: 1.2.0 | 3070 | normalize-wheel-es: 1.2.0 |
| 3080 | vue: 3.2.44 | 3071 | vue: 3.2.44 |
| @@ -3398,7 +3389,7 @@ packages: | @@ -3398,7 +3389,7 @@ packages: | ||
| 3398 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} | 3389 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} |
| 3399 | dev: true | 3390 | dev: true |
| 3400 | 3391 | ||
| 3401 | - /eslint-plugin-prettier/4.2.1_afddd95fb7dd832efd05cfac2e17feb1: | 3392 | + /eslint-plugin-prettier/4.2.1_v7o5sx5x3wbs57ifz6wc4f76we: |
| 3402 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} | 3393 | resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} |
| 3403 | engines: {node: '>=12.0.0'} | 3394 | engines: {node: '>=12.0.0'} |
| 3404 | peerDependencies: | 3395 | peerDependencies: |
| @@ -3632,6 +3623,8 @@ packages: | @@ -3632,6 +3623,8 @@ packages: | ||
| 3632 | regex-not: 1.0.2 | 3623 | regex-not: 1.0.2 |
| 3633 | snapdragon: 0.8.2 | 3624 | snapdragon: 0.8.2 |
| 3634 | to-regex: 3.0.2 | 3625 | to-regex: 3.0.2 |
| 3626 | + transitivePeerDependencies: | ||
| 3627 | + - supports-color | ||
| 3635 | dev: true | 3628 | dev: true |
| 3636 | 3629 | ||
| 3637 | /expand-tilde/2.0.2: | 3630 | /expand-tilde/2.0.2: |
| @@ -3687,6 +3680,8 @@ packages: | @@ -3687,6 +3680,8 @@ packages: | ||
| 3687 | regex-not: 1.0.2 | 3680 | regex-not: 1.0.2 |
| 3688 | snapdragon: 0.8.2 | 3681 | snapdragon: 0.8.2 |
| 3689 | to-regex: 3.0.2 | 3682 | to-regex: 3.0.2 |
| 3683 | + transitivePeerDependencies: | ||
| 3684 | + - supports-color | ||
| 3690 | dev: true | 3685 | dev: true |
| 3691 | 3686 | ||
| 3692 | /fast-deep-equal/3.1.3: | 3687 | /fast-deep-equal/3.1.3: |
| @@ -4708,6 +4703,8 @@ packages: | @@ -4708,6 +4703,8 @@ packages: | ||
| 4708 | mime: 1.6.0 | 4703 | mime: 1.6.0 |
| 4709 | needle: 3.1.0 | 4704 | needle: 3.1.0 |
| 4710 | source-map: 0.6.1 | 4705 | source-map: 0.6.1 |
| 4706 | + transitivePeerDependencies: | ||
| 4707 | + - supports-color | ||
| 4711 | dev: true | 4708 | dev: true |
| 4712 | 4709 | ||
| 4713 | /levn/0.4.1: | 4710 | /levn/0.4.1: |
| @@ -4814,7 +4811,7 @@ packages: | @@ -4814,7 +4811,7 @@ packages: | ||
| 4814 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} | 4811 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} |
| 4815 | dev: false | 4812 | dev: false |
| 4816 | 4813 | ||
| 4817 | - /lodash-unified/1.0.2_da03a4540fbd16bbaafbb96724306afd: | 4814 | + /lodash-unified/1.0.2_3ib2ivapxullxkx3xftsimdk7u: |
| 4818 | resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==} | 4815 | resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==} |
| 4819 | peerDependencies: | 4816 | peerDependencies: |
| 4820 | '@types/lodash-es': '*' | 4817 | '@types/lodash-es': '*' |
| @@ -5043,6 +5040,8 @@ packages: | @@ -5043,6 +5040,8 @@ packages: | ||
| 5043 | regex-not: 1.0.2 | 5040 | regex-not: 1.0.2 |
| 5044 | snapdragon: 0.8.2 | 5041 | snapdragon: 0.8.2 |
| 5045 | to-regex: 3.0.2 | 5042 | to-regex: 3.0.2 |
| 5043 | + transitivePeerDependencies: | ||
| 5044 | + - supports-color | ||
| 5046 | dev: true | 5045 | dev: true |
| 5047 | 5046 | ||
| 5048 | /micromatch/4.0.5: | 5047 | /micromatch/4.0.5: |
| @@ -5183,6 +5182,8 @@ packages: | @@ -5183,6 +5182,8 @@ packages: | ||
| 5183 | regex-not: 1.0.2 | 5182 | regex-not: 1.0.2 |
| 5184 | snapdragon: 0.8.2 | 5183 | snapdragon: 0.8.2 |
| 5185 | to-regex: 3.0.2 | 5184 | to-regex: 3.0.2 |
| 5185 | + transitivePeerDependencies: | ||
| 5186 | + - supports-color | ||
| 5186 | dev: true | 5187 | dev: true |
| 5187 | 5188 | ||
| 5188 | /natural-compare-lite/1.4.0: | 5189 | /natural-compare-lite/1.4.0: |
| @@ -5202,6 +5203,8 @@ packages: | @@ -5202,6 +5203,8 @@ packages: | ||
| 5202 | debug: 3.2.7 | 5203 | debug: 3.2.7 |
| 5203 | iconv-lite: 0.6.3 | 5204 | iconv-lite: 0.6.3 |
| 5204 | sax: 1.2.4 | 5205 | sax: 1.2.4 |
| 5206 | + transitivePeerDependencies: | ||
| 5207 | + - supports-color | ||
| 5205 | dev: true | 5208 | dev: true |
| 5206 | optional: true | 5209 | optional: true |
| 5207 | 5210 | ||
| @@ -5602,7 +5605,7 @@ packages: | @@ -5602,7 +5605,7 @@ packages: | ||
| 5602 | dev: true | 5605 | dev: true |
| 5603 | optional: true | 5606 | optional: true |
| 5604 | 5607 | ||
| 5605 | - /pinia/2.0.23_typescript@4.8.4+vue@3.2.44: | 5608 | + /pinia/2.0.23_d45o5shxrtvj6wh4y524t7cqnm: |
| 5606 | resolution: {integrity: sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q==} | 5609 | resolution: {integrity: sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q==} |
| 5607 | peerDependencies: | 5610 | peerDependencies: |
| 5608 | '@vue/composition-api': ^1.4.0 | 5611 | '@vue/composition-api': ^1.4.0 |
| @@ -6258,6 +6261,8 @@ packages: | @@ -6258,6 +6261,8 @@ packages: | ||
| 6258 | source-map: 0.5.7 | 6261 | source-map: 0.5.7 |
| 6259 | source-map-resolve: 0.5.3 | 6262 | source-map-resolve: 0.5.3 |
| 6260 | use: 3.1.1 | 6263 | use: 3.1.1 |
| 6264 | + transitivePeerDependencies: | ||
| 6265 | + - supports-color | ||
| 6261 | dev: true | 6266 | dev: true |
| 6262 | 6267 | ||
| 6263 | /source-map-js/1.0.2: | 6268 | /source-map-js/1.0.2: |
| @@ -6430,7 +6435,7 @@ packages: | @@ -6430,7 +6435,7 @@ packages: | ||
| 6430 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} | 6435 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} |
| 6431 | dev: true | 6436 | dev: true |
| 6432 | 6437 | ||
| 6433 | - /stylelint-config-html/1.1.0_0711e485e505c8bbf0b549e6b356f7f2: | 6438 | + /stylelint-config-html/1.1.0_a4i6jbpfaxelx4fvjhtlgvxx6i: |
| 6434 | resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} | 6439 | resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} |
| 6435 | engines: {node: ^12 || >=14} | 6440 | engines: {node: ^12 || >=14} |
| 6436 | peerDependencies: | 6441 | peerDependencies: |
| @@ -6483,7 +6488,7 @@ packages: | @@ -6483,7 +6488,7 @@ packages: | ||
| 6483 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} | 6488 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} |
| 6484 | hasBin: true | 6489 | hasBin: true |
| 6485 | dependencies: | 6490 | dependencies: |
| 6486 | - '@csstools/selector-specificity': 2.0.2_1d546e2941f6b4ca889831b9fbdc79d8 | 6491 | + '@csstools/selector-specificity': 2.0.2_dvkg4kkb622mvceygg47xxdz3a |
| 6487 | balanced-match: 2.0.0 | 6492 | balanced-match: 2.0.0 |
| 6488 | colord: 2.9.3 | 6493 | colord: 2.9.3 |
| 6489 | cosmiconfig: 7.0.1 | 6494 | cosmiconfig: 7.0.1 |
| @@ -6580,6 +6585,8 @@ packages: | @@ -6580,6 +6585,8 @@ packages: | ||
| 6580 | posthtml-svg-mode: 1.0.3 | 6585 | posthtml-svg-mode: 1.0.3 |
| 6581 | query-string: 4.3.4 | 6586 | query-string: 4.3.4 |
| 6582 | traverse: 0.6.6 | 6587 | traverse: 0.6.6 |
| 6588 | + transitivePeerDependencies: | ||
| 6589 | + - supports-color | ||
| 6583 | dev: true | 6590 | dev: true |
| 6584 | 6591 | ||
| 6585 | /svg-tags/1.0.0: | 6592 | /svg-tags/1.0.0: |
| @@ -6707,7 +6714,7 @@ packages: | @@ -6707,7 +6714,7 @@ packages: | ||
| 6707 | engines: {node: '>=8'} | 6714 | engines: {node: '>=8'} |
| 6708 | dev: true | 6715 | dev: true |
| 6709 | 6716 | ||
| 6710 | - /ts-node/10.9.1_2abc08acbb4fe741ae8218df9aa74f5c: | 6717 | + /ts-node/10.9.1_fk6arlf3j7tudlucddpzvj2plq: |
| 6711 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} | 6718 | resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} |
| 6712 | hasBin: true | 6719 | hasBin: true |
| 6713 | peerDependencies: | 6720 | peerDependencies: |
| @@ -6804,7 +6811,6 @@ packages: | @@ -6804,7 +6811,6 @@ packages: | ||
| 6804 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} | 6811 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} |
| 6805 | engines: {node: '>=4.2.0'} | 6812 | engines: {node: '>=4.2.0'} |
| 6806 | hasBin: true | 6813 | hasBin: true |
| 6807 | - dev: true | ||
| 6808 | 6814 | ||
| 6809 | /uglify-js/3.17.3: | 6815 | /uglify-js/3.17.3: |
| 6810 | resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} | 6816 | resolution: {integrity: sha512-JmMFDME3iufZnBpyKL+uS78LRiC+mK55zWfM5f/pWBJfpOttXAqYfdDGRukYhJuyRinvPVAtUhvy7rlDybNtFg==} |
| @@ -6855,7 +6861,7 @@ packages: | @@ -6855,7 +6861,7 @@ packages: | ||
| 6855 | '@antfu/utils': 0.6.0 | 6861 | '@antfu/utils': 0.6.0 |
| 6856 | rollup: 3.2.5 | 6862 | rollup: 3.2.5 |
| 6857 | unplugin: 0.10.2 | 6863 | unplugin: 0.10.2 |
| 6858 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 6864 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 6859 | dev: true | 6865 | dev: true |
| 6860 | 6866 | ||
| 6861 | /unplugin-vue-define-options/0.12.7: | 6867 | /unplugin-vue-define-options/0.12.7: |
| @@ -6868,7 +6874,7 @@ packages: | @@ -6868,7 +6874,7 @@ packages: | ||
| 6868 | unplugin: 0.10.2 | 6874 | unplugin: 0.10.2 |
| 6869 | dev: true | 6875 | dev: true |
| 6870 | 6876 | ||
| 6871 | - /unplugin-vue-macros/0.16.2_688fcac82e974ec4fd5c071d8de5a7a5: | 6877 | + /unplugin-vue-macros/0.16.2_nch4vsbos5hmj7k4a4oy3znhuu: |
| 6872 | resolution: {integrity: sha512-uNfjIXVUYBujbjJUcjXreE6zipZlPAIEMsx6bc/5qygwTfdvkJeHCAvvxrl0c8hdcT5/18OV2VDdwI60vCh56g==} | 6878 | resolution: {integrity: sha512-uNfjIXVUYBujbjJUcjXreE6zipZlPAIEMsx6bc/5qygwTfdvkJeHCAvvxrl0c8hdcT5/18OV2VDdwI60vCh56g==} |
| 6873 | engines: {node: '>=14.19.0'} | 6879 | engines: {node: '>=14.19.0'} |
| 6874 | peerDependencies: | 6880 | peerDependencies: |
| @@ -6881,7 +6887,7 @@ packages: | @@ -6881,7 +6887,7 @@ packages: | ||
| 6881 | '@vue-macros/define-render': 0.13.8_vue@3.2.44 | 6887 | '@vue-macros/define-render': 0.13.8_vue@3.2.44 |
| 6882 | '@vue-macros/define-slots': 0.0.5_vue@3.2.44 | 6888 | '@vue-macros/define-slots': 0.0.5_vue@3.2.44 |
| 6883 | '@vue-macros/hoist-static': 0.12.7 | 6889 | '@vue-macros/hoist-static': 0.12.7 |
| 6884 | - '@vue-macros/named-template': 0.0.5_aaae75a03f99901122a33a7412c8cd0a | 6890 | + '@vue-macros/named-template': 0.0.5_vkxhlib7tgibcivdhj2bfsgnbi |
| 6885 | '@vue-macros/setup-component': 0.12.7_rollup@3.2.5+vite@3.2.3 | 6891 | '@vue-macros/setup-component': 0.12.7_rollup@3.2.5+vite@3.2.3 |
| 6886 | '@vue-macros/setup-sfc': 0.12.7 | 6892 | '@vue-macros/setup-sfc': 0.12.7 |
| 6887 | '@vue-macros/short-emits': 0.12.8 | 6893 | '@vue-macros/short-emits': 0.12.8 |
| @@ -6997,7 +7003,7 @@ packages: | @@ -6997,7 +7003,7 @@ packages: | ||
| 6997 | chalk: 4.1.2 | 7003 | chalk: 4.1.2 |
| 6998 | debug: 4.3.4 | 7004 | debug: 4.3.4 |
| 6999 | fs-extra: 10.1.0 | 7005 | fs-extra: 10.1.0 |
| 7000 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7006 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7001 | transitivePeerDependencies: | 7007 | transitivePeerDependencies: |
| 7002 | - supports-color | 7008 | - supports-color |
| 7003 | dev: true | 7009 | dev: true |
| @@ -7012,7 +7018,7 @@ packages: | @@ -7012,7 +7018,7 @@ packages: | ||
| 7012 | '@types/eslint': 8.4.6 | 7018 | '@types/eslint': 8.4.6 |
| 7013 | eslint: 8.27.0 | 7019 | eslint: 8.27.0 |
| 7014 | rollup: 2.79.1 | 7020 | rollup: 2.79.1 |
| 7015 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7021 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7016 | dev: true | 7022 | dev: true |
| 7017 | 7023 | ||
| 7018 | /vite-plugin-html/3.2.0_vite@3.2.3: | 7024 | /vite-plugin-html/3.2.0_vite@3.2.3: |
| @@ -7032,7 +7038,7 @@ packages: | @@ -7032,7 +7038,7 @@ packages: | ||
| 7032 | html-minifier-terser: 6.1.0 | 7038 | html-minifier-terser: 6.1.0 |
| 7033 | node-html-parser: 5.4.2 | 7039 | node-html-parser: 5.4.2 |
| 7034 | pathe: 0.2.0 | 7040 | pathe: 0.2.0 |
| 7035 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7041 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7036 | dev: true | 7042 | dev: true |
| 7037 | 7043 | ||
| 7038 | /vite-plugin-purge-icons/0.9.1_vite@3.2.3: | 7044 | /vite-plugin-purge-icons/0.9.1_vite@3.2.3: |
| @@ -7044,7 +7050,7 @@ packages: | @@ -7044,7 +7050,7 @@ packages: | ||
| 7044 | '@purge-icons/core': 0.9.1 | 7050 | '@purge-icons/core': 0.9.1 |
| 7045 | '@purge-icons/generated': 0.9.0 | 7051 | '@purge-icons/generated': 0.9.0 |
| 7046 | rollup-plugin-purge-icons: 0.9.1 | 7052 | rollup-plugin-purge-icons: 0.9.1 |
| 7047 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7053 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7048 | transitivePeerDependencies: | 7054 | transitivePeerDependencies: |
| 7049 | - encoding | 7055 | - encoding |
| 7050 | - supports-color | 7056 | - supports-color |
| @@ -7062,7 +7068,7 @@ packages: | @@ -7062,7 +7068,7 @@ packages: | ||
| 7062 | fs-extra: 10.1.0 | 7068 | fs-extra: 10.1.0 |
| 7063 | magic-string: 0.25.9 | 7069 | magic-string: 0.25.9 |
| 7064 | pathe: 0.2.0 | 7070 | pathe: 0.2.0 |
| 7065 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7071 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7066 | dev: true | 7072 | dev: true |
| 7067 | 7073 | ||
| 7068 | /vite-plugin-svg-icons/2.0.1_vite@3.2.3: | 7074 | /vite-plugin-svg-icons/2.0.1_vite@3.2.3: |
| @@ -7078,7 +7084,7 @@ packages: | @@ -7078,7 +7084,7 @@ packages: | ||
| 7078 | pathe: 0.2.0 | 7084 | pathe: 0.2.0 |
| 7079 | svg-baker: 1.7.0 | 7085 | svg-baker: 1.7.0 |
| 7080 | svgo: 2.8.0 | 7086 | svgo: 2.8.0 |
| 7081 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7087 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7082 | transitivePeerDependencies: | 7088 | transitivePeerDependencies: |
| 7083 | - supports-color | 7089 | - supports-color |
| 7084 | dev: true | 7090 | dev: true |
| @@ -7091,13 +7097,13 @@ packages: | @@ -7091,13 +7097,13 @@ packages: | ||
| 7091 | '@windicss/plugin-utils': 1.8.8 | 7097 | '@windicss/plugin-utils': 1.8.8 |
| 7092 | debug: 4.3.4 | 7098 | debug: 4.3.4 |
| 7093 | kolorist: 1.6.0 | 7099 | kolorist: 1.6.0 |
| 7094 | - vite: 3.2.3_@types+node@18.11.9+less@4.1.3 | 7100 | + vite: 3.2.3_mp5lu76ee5qtwstsyca37sdhqi |
| 7095 | windicss: 3.5.6 | 7101 | windicss: 3.5.6 |
| 7096 | transitivePeerDependencies: | 7102 | transitivePeerDependencies: |
| 7097 | - supports-color | 7103 | - supports-color |
| 7098 | dev: true | 7104 | dev: true |
| 7099 | 7105 | ||
| 7100 | - /vite/3.2.3_@types+node@18.11.9+less@4.1.3: | 7106 | + /vite/3.2.3_mp5lu76ee5qtwstsyca37sdhqi: |
| 7101 | resolution: {integrity: sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==} | 7107 | resolution: {integrity: sha512-h8jl1TZ76eGs3o2dIBSsvXDLb1m/Ec1iej8ZMdz+PsaFUsftZeWe2CZOI3qogEsMNaywc17gu0q6cQDzh/weCQ==} |
| 7102 | engines: {node: ^14.18.0 || >=16.0.0} | 7108 | engines: {node: ^14.18.0 || >=16.0.0} |
| 7103 | hasBin: true | 7109 | hasBin: true |
| @@ -7149,7 +7155,6 @@ packages: | @@ -7149,7 +7155,6 @@ packages: | ||
| 7149 | optional: true | 7155 | optional: true |
| 7150 | dependencies: | 7156 | dependencies: |
| 7151 | vue: 3.2.44 | 7157 | vue: 3.2.44 |
| 7152 | - dev: false | ||
| 7153 | 7158 | ||
| 7154 | /vue-eslint-parser/9.1.0_eslint@8.27.0: | 7159 | /vue-eslint-parser/9.1.0_eslint@8.27.0: |
| 7155 | resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} | 7160 | resolution: {integrity: sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==} |
| @@ -7180,7 +7185,6 @@ packages: | @@ -7180,7 +7185,6 @@ packages: | ||
| 7180 | '@intlify/vue-devtools': 9.2.2 | 7185 | '@intlify/vue-devtools': 9.2.2 |
| 7181 | '@vue/devtools-api': 6.4.3 | 7186 | '@vue/devtools-api': 6.4.3 |
| 7182 | vue: 3.2.44 | 7187 | vue: 3.2.44 |
| 7183 | - dev: false | ||
| 7184 | 7188 | ||
| 7185 | /vue-router/4.1.6_vue@3.2.44: | 7189 | /vue-router/4.1.6_vue@3.2.44: |
| 7186 | resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} | 7190 | resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} |
| @@ -7227,7 +7231,6 @@ packages: | @@ -7227,7 +7231,6 @@ packages: | ||
| 7227 | '@vue/runtime-dom': 3.2.44 | 7231 | '@vue/runtime-dom': 3.2.44 |
| 7228 | '@vue/server-renderer': 3.2.44_vue@3.2.44 | 7232 | '@vue/server-renderer': 3.2.44_vue@3.2.44 |
| 7229 | '@vue/shared': 3.2.44 | 7233 | '@vue/shared': 3.2.44 |
| 7230 | - dev: false | ||
| 7231 | 7234 | ||
| 7232 | /vxe-table/4.3.5_vue@3.2.44+xe-utils@3.5.7: | 7235 | /vxe-table/4.3.5_vue@3.2.44+xe-utils@3.5.7: |
| 7233 | resolution: {integrity: sha512-JEvGAs7SBN1rWn5f2tkoRiXd/rAT7RfnDTTlFsHsTtASiUTKNTISI2WBsVeLkkNRTs0SXh6FgrYsIPO2soSBXA==} | 7236 | resolution: {integrity: sha512-JEvGAs7SBN1rWn5f2tkoRiXd/rAT7RfnDTTlFsHsTtASiUTKNTISI2WBsVeLkkNRTs0SXh6FgrYsIPO2soSBXA==} |
yudao-ui-admin-vue3/src/api/system/menu/index.ts
| 1 | import request from '@/config/axios' | 1 | import request from '@/config/axios' |
| 2 | import type { MenuVO } from './types' | 2 | import type { MenuVO } from './types' |
| 3 | 3 | ||
| 4 | -// 查询菜单(精简)列表 | 4 | +// 查询菜单(精简)列表 |
| 5 | export const listSimpleMenusApi = () => { | 5 | export const listSimpleMenusApi = () => { |
| 6 | return request.get({ url: '/system/menu/list-all-simple' }) | 6 | return request.get({ url: '/system/menu/list-all-simple' }) |
| 7 | } | 7 | } |
| 8 | + | ||
| 8 | // 查询菜单列表 | 9 | // 查询菜单列表 |
| 9 | export const getMenuListApi = (params) => { | 10 | export const getMenuListApi = (params) => { |
| 10 | return request.get({ url: '/system/menu/list', params }) | 11 | return request.get({ url: '/system/menu/list', params }) |
yudao-ui-admin-vue3/src/api/system/post/index.ts
| @@ -31,6 +31,7 @@ export const deletePostApi = async (id: number) => { | @@ -31,6 +31,7 @@ export const deletePostApi = async (id: number) => { | ||
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | // 导出岗位 | 33 | // 导出岗位 |
| 34 | +// TODO @星语:导出这块,咱怎么弄哈 | ||
| 34 | export const exportPostApi = async (params: PostExportReqVO) => { | 35 | export const exportPostApi = async (params: PostExportReqVO) => { |
| 35 | return await request.download({ url: '/system/post/export', params }) | 36 | return await request.download({ url: '/system/post/export', params }) |
| 36 | } | 37 | } |
yudao-ui-admin-vue3/src/api/system/post/types.ts
| @@ -8,6 +8,7 @@ export type PostVO = { | @@ -8,6 +8,7 @@ export type PostVO = { | ||
| 8 | createTime?: string | 8 | createTime?: string |
| 9 | } | 9 | } |
| 10 | 10 | ||
| 11 | +// TODO @星语:要不要搞个 Page 基类呀?和后端对应 | ||
| 11 | export type PostPageReqVO = { | 12 | export type PostPageReqVO = { |
| 12 | code: string | 13 | code: string |
| 13 | name: string | 14 | name: string |
yudao-ui-admin-vue3/src/components/Descriptions/src/Descriptions.vue
| 1 | <script setup lang="ts"> | 1 | <script setup lang="ts"> |
| 2 | +import dayjs from 'dayjs' | ||
| 2 | import { ElCollapseTransition, ElDescriptions, ElDescriptionsItem, ElTooltip } from 'element-plus' | 3 | import { ElCollapseTransition, ElDescriptions, ElDescriptionsItem, ElTooltip } from 'element-plus' |
| 3 | import { useDesign } from '@/hooks/web/useDesign' | 4 | import { useDesign } from '@/hooks/web/useDesign' |
| 4 | import { propTypes } from '@/utils/propTypes' | 5 | import { propTypes } from '@/utils/propTypes' |
| @@ -111,7 +112,13 @@ const toggleClick = () => { | @@ -111,7 +112,13 @@ const toggleClick = () => { | ||
| 111 | </template> | 112 | </template> |
| 112 | 113 | ||
| 113 | <template #default> | 114 | <template #default> |
| 114 | - <slot :name="item.field" :row="data">{{ data[item.field] }}</slot> | 115 | + <slot v-if="item.dateFormat"> |
| 116 | + {{ dayjs(data[item.field]).format(item.dateFormat) }} | ||
| 117 | + </slot> | ||
| 118 | + <slot v-else-if="item.dictType"> | ||
| 119 | + <DictTag :type="item.dictType" :value="data[item.field]" /> | ||
| 120 | + </slot> | ||
| 121 | + <slot v-else :name="item.field" :row="data">{{ data[item.field] }}</slot> | ||
| 115 | </template> | 122 | </template> |
| 116 | </ElDescriptionsItem> | 123 | </ElDescriptionsItem> |
| 117 | </ElDescriptions> | 124 | </ElDescriptions> |
yudao-ui-admin-vue3/src/config/axios/service.ts
| @@ -5,7 +5,7 @@ import axios, { | @@ -5,7 +5,7 @@ import axios, { | ||
| 5 | AxiosResponse, | 5 | AxiosResponse, |
| 6 | AxiosError | 6 | AxiosError |
| 7 | } from 'axios' | 7 | } from 'axios' |
| 8 | -import { useMessage } from '@/hooks/web/useMessage' | 8 | +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' |
| 9 | import qs from 'qs' | 9 | import qs from 'qs' |
| 10 | import { config } from '@/config/axios/config' | 10 | import { config } from '@/config/axios/config' |
| 11 | import { getAccessToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth' | 11 | import { getAccessToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth' |
| @@ -17,7 +17,6 @@ import { useCache } from '@/hooks/web/useCache' | @@ -17,7 +17,6 @@ import { useCache } from '@/hooks/web/useCache' | ||
| 17 | const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE | 17 | const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE |
| 18 | const { result_code, base_url, request_timeout } = config | 18 | const { result_code, base_url, request_timeout } = config |
| 19 | 19 | ||
| 20 | -const message = useMessage() | ||
| 21 | // 需要忽略的提示。忽略后,自动 Promise.reject('error') | 20 | // 需要忽略的提示。忽略后,自动 Promise.reject('error') |
| 22 | const ignoreMsgs = [ | 21 | const ignoreMsgs = [ |
| 23 | '无效的刷新令牌', // 刷新令牌被删除时,不用提示 | 22 | '无效的刷新令牌', // 刷新令牌被删除时,不用提示 |
| @@ -30,6 +29,8 @@ export const isRelogin = { show: false } | @@ -30,6 +29,8 @@ export const isRelogin = { show: false } | ||
| 30 | let requestList: any[] = [] | 29 | let requestList: any[] = [] |
| 31 | // 是否正在刷新中 | 30 | // 是否正在刷新中 |
| 32 | let isRefreshToken = false | 31 | let isRefreshToken = false |
| 32 | +// 请求白名单,无须token的接口 | ||
| 33 | +const whiteList: string[] = ['/login', '/refresh-token'] | ||
| 33 | 34 | ||
| 34 | // 创建axios实例 | 35 | // 创建axios实例 |
| 35 | const service: AxiosInstance = axios.create({ | 36 | const service: AxiosInstance = axios.create({ |
| @@ -42,14 +43,20 @@ const service: AxiosInstance = axios.create({ | @@ -42,14 +43,20 @@ const service: AxiosInstance = axios.create({ | ||
| 42 | service.interceptors.request.use( | 43 | service.interceptors.request.use( |
| 43 | (config: AxiosRequestConfig) => { | 44 | (config: AxiosRequestConfig) => { |
| 44 | // 是否需要设置 token | 45 | // 是否需要设置 token |
| 45 | - const isToken = (config!.headers || {}).isToken === false | 46 | + let isToken = (config!.headers || {}).isToken === false |
| 47 | + whiteList.some((v) => { | ||
| 48 | + if (config.url) { | ||
| 49 | + config.url.indexOf(v) > -1 | ||
| 50 | + return (isToken = false) | ||
| 51 | + } | ||
| 52 | + }) | ||
| 46 | if (getAccessToken() && !isToken) { | 53 | if (getAccessToken() && !isToken) { |
| 47 | ;(config as Recordable).headers.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token | 54 | ;(config as Recordable).headers.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token |
| 48 | } | 55 | } |
| 49 | // 设置租户 | 56 | // 设置租户 |
| 50 | if (tenantEnable && tenantEnable === 'true') { | 57 | if (tenantEnable && tenantEnable === 'true') { |
| 51 | const tenantId = getTenantId() | 58 | const tenantId = getTenantId() |
| 52 | - if (tenantId) (config as Recordable).headers.common['tenant-id'] = tenantId | 59 | + if (tenantId) (config as Recordable).headers['tenant-id'] = tenantId |
| 53 | } | 60 | } |
| 54 | const params = config.params || {} | 61 | const params = config.params || {} |
| 55 | const data = config.data || false | 62 | const data = config.data || false |
| @@ -157,10 +164,10 @@ service.interceptors.response.use( | @@ -157,10 +164,10 @@ service.interceptors.response.use( | ||
| 157 | }) | 164 | }) |
| 158 | } | 165 | } |
| 159 | } else if (code === 500) { | 166 | } else if (code === 500) { |
| 160 | - message.error(t('sys.api.errMsg500')) | 167 | + ElMessage.error(t('sys.api.errMsg500')) |
| 161 | return Promise.reject(new Error(msg)) | 168 | return Promise.reject(new Error(msg)) |
| 162 | } else if (code === 901) { | 169 | } else if (code === 901) { |
| 163 | - message.error( | 170 | + ElMessage.error( |
| 164 | '<div>' + | 171 | '<div>' + |
| 165 | t('sys.api.errMsg901') + | 172 | t('sys.api.errMsg901') + |
| 166 | '</div>' + | 173 | '</div>' + |
| @@ -175,7 +182,7 @@ service.interceptors.response.use( | @@ -175,7 +182,7 @@ service.interceptors.response.use( | ||
| 175 | // hard coding:忽略这个提示,直接登出 | 182 | // hard coding:忽略这个提示,直接登出 |
| 176 | console.log(msg) | 183 | console.log(msg) |
| 177 | } else { | 184 | } else { |
| 178 | - message.notifyError(msg) | 185 | + ElNotification.error({ title: msg }) |
| 179 | } | 186 | } |
| 180 | return Promise.reject('error') | 187 | return Promise.reject('error') |
| 181 | } else { | 188 | } else { |
| @@ -184,16 +191,16 @@ service.interceptors.response.use( | @@ -184,16 +191,16 @@ service.interceptors.response.use( | ||
| 184 | }, | 191 | }, |
| 185 | (error: AxiosError) => { | 192 | (error: AxiosError) => { |
| 186 | console.log('err' + error) // for debug | 193 | console.log('err' + error) // for debug |
| 187 | - let { message: msg } = error | 194 | + let { message } = error |
| 188 | const { t } = useI18n() | 195 | const { t } = useI18n() |
| 189 | - if (msg === 'Network Error') { | ||
| 190 | - msg = t('sys.api.errorMessage') | ||
| 191 | - } else if (msg.includes('timeout')) { | ||
| 192 | - msg = t('sys.api.apiTimeoutMessage') | ||
| 193 | - } else if (msg.includes('Request failed with status code')) { | ||
| 194 | - msg = t('sys.api.apiRequestFailed') + msg.substr(msg.length - 3) | 196 | + if (message === 'Network Error') { |
| 197 | + message = t('sys.api.errorMessage') | ||
| 198 | + } else if (message.includes('timeout')) { | ||
| 199 | + message = t('sys.api.apiTimeoutMessage') | ||
| 200 | + } else if (message.includes('Request failed with status code')) { | ||
| 201 | + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) | ||
| 195 | } | 202 | } |
| 196 | - message.error(msg) | 203 | + ElMessage.error(message) |
| 197 | return Promise.reject(error) | 204 | return Promise.reject(error) |
| 198 | } | 205 | } |
| 199 | ) | 206 | ) |
| @@ -205,8 +212,11 @@ const handleAuthorized = () => { | @@ -205,8 +212,11 @@ const handleAuthorized = () => { | ||
| 205 | const { t } = useI18n() | 212 | const { t } = useI18n() |
| 206 | if (!isRelogin.show) { | 213 | if (!isRelogin.show) { |
| 207 | isRelogin.show = true | 214 | isRelogin.show = true |
| 208 | - message | ||
| 209 | - .confirm(t('sys.api.timeoutMessage')) | 215 | + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { |
| 216 | + confirmButtonText: t('login.relogin'), | ||
| 217 | + cancelButtonText: t('common.cancel'), | ||
| 218 | + type: 'warning' | ||
| 219 | + }) | ||
| 210 | .then(() => { | 220 | .then(() => { |
| 211 | const { wsCache } = useCache() | 221 | const { wsCache } = useCache() |
| 212 | resetRouter() // 重置静态路由表 | 222 | resetRouter() // 重置静态路由表 |
yudao-ui-admin-vue3/src/hooks/web/useVxeCrudSchemas.ts
| @@ -14,18 +14,31 @@ import { VxeTableColumn } from '@/types/table' | @@ -14,18 +14,31 @@ import { VxeTableColumn } from '@/types/table' | ||
| 14 | import { FormSchema } from '@/types/form' | 14 | import { FormSchema } from '@/types/form' |
| 15 | import { ComponentOptions } from '@/types/components' | 15 | import { ComponentOptions } from '@/types/components' |
| 16 | 16 | ||
| 17 | -export type VxeCrudSchema = Omit<VxeTableColumn, 'children'> & { | 17 | +export type VxeCrudSchema = { |
| 18 | + // 主键ID | ||
| 19 | + primaryKey?: string | ||
| 20 | + primaryType?: VxeColumnPropTypes.Type | ||
| 21 | + // 是否开启操作栏插槽 | ||
| 22 | + action?: boolean | ||
| 23 | + columns: VxeCrudColumns[] | ||
| 24 | +} | ||
| 25 | +type VxeCrudColumns = Omit<VxeTableColumn, 'children'> & { | ||
| 18 | field: string | 26 | field: string |
| 19 | title?: string | 27 | title?: string |
| 20 | formatter?: VxeColumnPropTypes.Formatter | 28 | formatter?: VxeColumnPropTypes.Formatter |
| 29 | + isSearch?: boolean | ||
| 21 | search?: CrudSearchParams | 30 | search?: CrudSearchParams |
| 31 | + isTable?: boolean | ||
| 22 | table?: CrudTableParams | 32 | table?: CrudTableParams |
| 33 | + isForm?: boolean | ||
| 23 | form?: CrudFormParams | 34 | form?: CrudFormParams |
| 35 | + isDetail?: boolean | ||
| 24 | detail?: CrudDescriptionsParams | 36 | detail?: CrudDescriptionsParams |
| 25 | print?: CrudPrintParams | 37 | print?: CrudPrintParams |
| 26 | - children?: VxeCrudSchema[] | 38 | + children?: VxeCrudColumns[] |
| 27 | dictType?: string | 39 | dictType?: string |
| 28 | } | 40 | } |
| 41 | + | ||
| 29 | type CrudSearchParams = { | 42 | type CrudSearchParams = { |
| 30 | // 是否显示在查询项 | 43 | // 是否显示在查询项 |
| 31 | show?: boolean | 44 | show?: boolean |
| @@ -61,7 +74,7 @@ export type VxeAllSchemas = { | @@ -61,7 +74,7 @@ export type VxeAllSchemas = { | ||
| 61 | 74 | ||
| 62 | // 过滤所有结构 | 75 | // 过滤所有结构 |
| 63 | export const useVxeCrudSchemas = ( | 76 | export const useVxeCrudSchemas = ( |
| 64 | - crudSchema: VxeCrudSchema[] | 77 | + crudSchema: VxeCrudSchema |
| 65 | ): { | 78 | ): { |
| 66 | allSchemas: VxeAllSchemas | 79 | allSchemas: VxeAllSchemas |
| 67 | } => { | 80 | } => { |
| @@ -95,12 +108,12 @@ export const useVxeCrudSchemas = ( | @@ -95,12 +108,12 @@ export const useVxeCrudSchemas = ( | ||
| 95 | } | 108 | } |
| 96 | 109 | ||
| 97 | // 过滤 Search 结构 | 110 | // 过滤 Search 结构 |
| 98 | -const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => { | ||
| 99 | - const searchSchema: VxeFormItemProps[] = [] | 111 | +const filterSearchSchema = (crudSchema: VxeCrudSchema): VxeFormItemProps[] => { |
| 100 | const { t } = useI18n() | 112 | const { t } = useI18n() |
| 101 | - eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { | 113 | + const searchSchema: VxeFormItemProps[] = [] |
| 114 | + eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => { | ||
| 102 | // 判断是否显示 | 115 | // 判断是否显示 |
| 103 | - if (schemaItem?.search?.show) { | 116 | + if (schemaItem?.isSearch) { |
| 104 | let itemRenderName = schemaItem?.search?.itemRender?.name || '$input' | 117 | let itemRenderName = schemaItem?.search?.itemRender?.name || '$input' |
| 105 | const options: any[] = [] | 118 | const options: any[] = [] |
| 106 | let itemRender: FormItemRenderOptions = { | 119 | let itemRender: FormItemRenderOptions = { |
| @@ -114,7 +127,7 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | @@ -114,7 +127,7 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | ||
| 114 | options.push(dict) | 127 | options.push(dict) |
| 115 | }) | 128 | }) |
| 116 | itemRender.options = options | 129 | itemRender.options = options |
| 117 | - if (!schemaItem.search.itemRender?.name) itemRenderName = '$select' | 130 | + if (!schemaItem?.search?.itemRender?.name) itemRenderName = '$select' |
| 118 | itemRender = { | 131 | itemRender = { |
| 119 | name: itemRenderName, | 132 | name: itemRenderName, |
| 120 | options: options, | 133 | options: options, |
| @@ -123,15 +136,12 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | @@ -123,15 +136,12 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | ||
| 123 | } | 136 | } |
| 124 | const searchSchemaItem = { | 137 | const searchSchemaItem = { |
| 125 | // 默认为 input | 138 | // 默认为 input |
| 126 | - span: 8, | ||
| 127 | folding: searchSchema.length > 2, | 139 | folding: searchSchema.length > 2, |
| 128 | - itemRender: itemRender, | ||
| 129 | - ...schemaItem.search, | 140 | + itemRender: schemaItem.itemRender ? schemaItem.itemRender : itemRender, |
| 130 | field: schemaItem.field, | 141 | field: schemaItem.field, |
| 131 | - title: schemaItem.search?.title || schemaItem.title | 142 | + title: schemaItem.search?.title || schemaItem.title, |
| 143 | + span: 8 | ||
| 132 | } | 144 | } |
| 133 | - // 删除不必要的字段 | ||
| 134 | - delete searchSchemaItem.show | ||
| 135 | 145 | ||
| 136 | searchSchema.push(searchSchemaItem) | 146 | searchSchema.push(searchSchemaItem) |
| 137 | } | 147 | } |
| @@ -154,36 +164,63 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | @@ -154,36 +164,63 @@ const filterSearchSchema = (crudSchema: VxeCrudSchema[]): VxeFormItemProps[] => | ||
| 154 | } | 164 | } |
| 155 | 165 | ||
| 156 | // 过滤 table 结构 | 166 | // 过滤 table 结构 |
| 157 | -const filterTableSchema = (crudSchema: VxeCrudSchema[]): VxeGridPropTypes.Columns => { | 167 | +const filterTableSchema = (crudSchema: VxeCrudSchema): VxeGridPropTypes.Columns => { |
| 168 | + const { t } = useI18n() | ||
| 158 | const tableSchema: VxeGridPropTypes.Columns = [] | 169 | const tableSchema: VxeGridPropTypes.Columns = [] |
| 159 | - eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { | 170 | + // 主键ID |
| 171 | + if (crudSchema.primaryKey) { | ||
| 172 | + const tableSchemaItem = { | ||
| 173 | + title: t('common.index'), | ||
| 174 | + field: crudSchema.primaryKey, | ||
| 175 | + type: crudSchema.primaryType ? crudSchema.primaryType : 'seq', | ||
| 176 | + width: '50px' | ||
| 177 | + } | ||
| 178 | + tableSchema.push(tableSchemaItem) | ||
| 179 | + } | ||
| 180 | + eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => { | ||
| 160 | // 判断是否显示 | 181 | // 判断是否显示 |
| 161 | - if (schemaItem?.table?.show !== false) { | 182 | + if (schemaItem?.isTable !== false) { |
| 162 | const tableSchemaItem = { | 183 | const tableSchemaItem = { |
| 163 | ...schemaItem.table, | 184 | ...schemaItem.table, |
| 164 | field: schemaItem.field, | 185 | field: schemaItem.field, |
| 165 | title: schemaItem.table?.title || schemaItem.title | 186 | title: schemaItem.table?.title || schemaItem.title |
| 166 | } | 187 | } |
| 188 | + tableSchemaItem.showOverflow = 'tooltip' | ||
| 167 | if (schemaItem?.formatter) { | 189 | if (schemaItem?.formatter) { |
| 168 | tableSchemaItem.formatter = schemaItem.formatter | 190 | tableSchemaItem.formatter = schemaItem.formatter |
| 169 | } | 191 | } |
| 170 | - | ||
| 171 | - // 删除不必要的字段 | ||
| 172 | - delete tableSchemaItem.show | 192 | + if (schemaItem?.dictType) { |
| 193 | + tableSchemaItem.cellRender = { | ||
| 194 | + name: 'XDict', | ||
| 195 | + content: schemaItem.dictType | ||
| 196 | + } | ||
| 197 | + } | ||
| 173 | 198 | ||
| 174 | tableSchema.push(tableSchemaItem) | 199 | tableSchema.push(tableSchemaItem) |
| 175 | } | 200 | } |
| 176 | }) | 201 | }) |
| 202 | + // 操作栏插槽 | ||
| 203 | + if (crudSchema.action && crudSchema.action == true) { | ||
| 204 | + const tableSchemaItem = { | ||
| 205 | + title: t('table.action'), | ||
| 206 | + field: 'actionbtns', | ||
| 207 | + width: '240px', | ||
| 208 | + slots: { | ||
| 209 | + default: 'actionbtns_default' | ||
| 210 | + } | ||
| 211 | + } | ||
| 212 | + tableSchema.push(tableSchemaItem) | ||
| 213 | + } | ||
| 177 | return tableSchema | 214 | return tableSchema |
| 178 | } | 215 | } |
| 179 | 216 | ||
| 180 | // 过滤 form 结构 | 217 | // 过滤 form 结构 |
| 181 | -const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => { | 218 | +const filterFormSchema = (crudSchema: VxeCrudSchema): FormSchema[] => { |
| 182 | const formSchema: FormSchema[] = [] | 219 | const formSchema: FormSchema[] = [] |
| 183 | 220 | ||
| 184 | - eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { | 221 | + eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => { |
| 185 | // 判断是否显示 | 222 | // 判断是否显示 |
| 186 | - if (schemaItem?.form?.show !== false) { | 223 | + if (schemaItem?.isForm !== false) { |
| 187 | let component = schemaItem?.form?.component || 'Input' | 224 | let component = schemaItem?.form?.component || 'Input' |
| 188 | const options: ComponentOptions[] = [] | 225 | const options: ComponentOptions[] = [] |
| 189 | let comonentProps = {} | 226 | let comonentProps = {} |
| @@ -205,9 +242,6 @@ const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => { | @@ -205,9 +242,6 @@ const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => { | ||
| 205 | label: schemaItem.form?.label || schemaItem.title | 242 | label: schemaItem.form?.label || schemaItem.title |
| 206 | } | 243 | } |
| 207 | 244 | ||
| 208 | - // 删除不必要的字段 | ||
| 209 | - delete formSchemaItem.show | ||
| 210 | - | ||
| 211 | formSchema.push(formSchemaItem) | 245 | formSchema.push(formSchemaItem) |
| 212 | } | 246 | } |
| 213 | }) | 247 | }) |
| @@ -216,20 +250,26 @@ const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => { | @@ -216,20 +250,26 @@ const filterFormSchema = (crudSchema: VxeCrudSchema[]): FormSchema[] => { | ||
| 216 | } | 250 | } |
| 217 | 251 | ||
| 218 | // 过滤 descriptions 结构 | 252 | // 过滤 descriptions 结构 |
| 219 | -const filterDescriptionsSchema = (crudSchema: VxeCrudSchema[]): DescriptionsSchema[] => { | 253 | +const filterDescriptionsSchema = (crudSchema: VxeCrudSchema): DescriptionsSchema[] => { |
| 220 | const descriptionsSchema: DescriptionsSchema[] = [] | 254 | const descriptionsSchema: DescriptionsSchema[] = [] |
| 221 | 255 | ||
| 222 | - eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { | 256 | + eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => { |
| 223 | // 判断是否显示 | 257 | // 判断是否显示 |
| 224 | - if (schemaItem?.detail?.show !== false) { | 258 | + if (schemaItem?.isDetail !== false) { |
| 225 | const descriptionsSchemaItem = { | 259 | const descriptionsSchemaItem = { |
| 226 | ...schemaItem.detail, | 260 | ...schemaItem.detail, |
| 227 | field: schemaItem.field, | 261 | field: schemaItem.field, |
| 228 | label: schemaItem.detail?.label || schemaItem.title | 262 | label: schemaItem.detail?.label || schemaItem.title |
| 229 | } | 263 | } |
| 230 | - | ||
| 231 | - // 删除不必要的字段 | ||
| 232 | - delete descriptionsSchemaItem.show | 264 | + if (schemaItem.dictType) { |
| 265 | + descriptionsSchemaItem.dictType = schemaItem.dictType | ||
| 266 | + } | ||
| 267 | + if (schemaItem.detail?.dateFormat || schemaItem.formatter == 'formatDate') { | ||
| 268 | + // descriptionsSchemaItem.dateFormat = schemaItem.detail.dateFormat | ||
| 269 | + // ? schemaItem?.detail?.dateFormat | ||
| 270 | + // : 'YYYY-MM-DD HH:mm:ss' | ||
| 271 | + descriptionsSchemaItem.dateFormat = 'YYYY-MM-DD HH:mm:ss' | ||
| 272 | + } | ||
| 233 | 273 | ||
| 234 | descriptionsSchema.push(descriptionsSchemaItem) | 274 | descriptionsSchema.push(descriptionsSchemaItem) |
| 235 | } | 275 | } |
| @@ -239,10 +279,10 @@ const filterDescriptionsSchema = (crudSchema: VxeCrudSchema[]): DescriptionsSche | @@ -239,10 +279,10 @@ const filterDescriptionsSchema = (crudSchema: VxeCrudSchema[]): DescriptionsSche | ||
| 239 | } | 279 | } |
| 240 | 280 | ||
| 241 | // 过滤 打印 结构 | 281 | // 过滤 打印 结构 |
| 242 | -const filterPrintSchema = (crudSchema: VxeCrudSchema[]): any[] => { | 282 | +const filterPrintSchema = (crudSchema: VxeCrudSchema): any[] => { |
| 243 | const printSchema: any[] = [] | 283 | const printSchema: any[] = [] |
| 244 | 284 | ||
| 245 | - eachTree(crudSchema, (schemaItem: VxeCrudSchema) => { | 285 | + eachTree(crudSchema.columns, (schemaItem: VxeCrudColumns) => { |
| 246 | // 判断是否显示 | 286 | // 判断是否显示 |
| 247 | if (schemaItem?.print?.show !== false) { | 287 | if (schemaItem?.print?.show !== false) { |
| 248 | const printSchemaItem = { | 288 | const printSchemaItem = { |
yudao-ui-admin-vue3/src/hooks/web/useVxeGrid.ts
| @@ -43,10 +43,6 @@ export const useVxeGrid = <T = any>(config?: UseVxeGridConfig<T>) => { | @@ -43,10 +43,6 @@ export const useVxeGrid = <T = any>(config?: UseVxeGridConfig<T>) => { | ||
| 43 | isCurrent: true, // 当鼠标点击行时,是否要高亮当前行 | 43 | isCurrent: true, // 当鼠标点击行时,是否要高亮当前行 |
| 44 | isHover: true // 当鼠标移到行时,是否要高亮当前行 | 44 | isHover: true // 当鼠标移到行时,是否要高亮当前行 |
| 45 | }, | 45 | }, |
| 46 | - showOverflow: 'tooltip', // 当内容溢出时显示为省略号 | ||
| 47 | - tooltipConfig: { | ||
| 48 | - showAll: true // 开启全表工具提示 | ||
| 49 | - }, | ||
| 50 | toolbarConfig: { | 46 | toolbarConfig: { |
| 51 | custom: true, | 47 | custom: true, |
| 52 | slots: { buttons: 'toolbar_buttons' } | 48 | slots: { buttons: 'toolbar_buttons' } |
| @@ -85,7 +81,7 @@ export const useVxeGrid = <T = any>(config?: UseVxeGridConfig<T>) => { | @@ -85,7 +81,7 @@ export const useVxeGrid = <T = any>(config?: UseVxeGridConfig<T>) => { | ||
| 85 | props: { result: 'list', total: 'total' }, | 81 | props: { result: 'list', total: 'total' }, |
| 86 | ajax: { | 82 | ajax: { |
| 87 | query: ({ page, form }) => { | 83 | query: ({ page, form }) => { |
| 88 | - const queryParams = Object.assign({}, form) | 84 | + const queryParams = Object.assign({}, JSON.parse(JSON.stringify(form))) |
| 89 | queryParams.pageSize = page.pageSize | 85 | queryParams.pageSize = page.pageSize |
| 90 | queryParams.pageNo = page.currentPage | 86 | queryParams.pageNo = page.currentPage |
| 91 | gridOptions.loading = false | 87 | gridOptions.loading = false |
yudao-ui-admin-vue3/src/plugins/vxeTable/index.ts
| 1 | import { App, unref } from 'vue' | 1 | import { App, unref } from 'vue' |
| 2 | import 'xe-utils' | 2 | import 'xe-utils' |
| 3 | import XEUtils from 'xe-utils' | 3 | import XEUtils from 'xe-utils' |
| 4 | +import './renderer' | ||
| 4 | import { i18n } from '@/plugins/vueI18n' | 5 | import { i18n } from '@/plugins/vueI18n' |
| 5 | import zhCN from 'vxe-table/es/locale/lang/zh-CN' | 6 | import zhCN from 'vxe-table/es/locale/lang/zh-CN' |
| 6 | import enUS from 'vxe-table/lib/locale/lang/en-US' | 7 | import enUS from 'vxe-table/lib/locale/lang/en-US' |
| @@ -138,6 +139,10 @@ VXETable.formats.mixin({ | @@ -138,6 +139,10 @@ VXETable.formats.mixin({ | ||
| 138 | formatDate({ cellValue }, format) { | 139 | formatDate({ cellValue }, format) { |
| 139 | return XEUtils.toDateString(cellValue, format || 'yyyy-MM-dd HH:mm:ss') | 140 | return XEUtils.toDateString(cellValue, format || 'yyyy-MM-dd HH:mm:ss') |
| 140 | }, | 141 | }, |
| 142 | + // 格式字典 | ||
| 143 | + formatDict() { | ||
| 144 | + return 'cellValue 123' | ||
| 145 | + }, | ||
| 141 | // 四舍五入金额,每隔3位逗号分隔,默认2位数 | 146 | // 四舍五入金额,每隔3位逗号分隔,默认2位数 |
| 142 | formatAmount({ cellValue }, digits = 2) { | 147 | formatAmount({ cellValue }, digits = 2) { |
| 143 | return XEUtils.commafy(Number(cellValue), { digits }) | 148 | return XEUtils.commafy(Number(cellValue), { digits }) |
yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dataTimePicker.tsx
0 → 100644
| 1 | +import { useI18n } from '@/hooks/web/useI18n' | ||
| 2 | +import { ElDatePicker } from 'element-plus' | ||
| 3 | +import { VXETable } from 'vxe-table' | ||
| 4 | + | ||
| 5 | +// 日期区间选择渲染 | ||
| 6 | +VXETable.renderer.add('XDataTimePicker', { | ||
| 7 | + // 默认显示模板 | ||
| 8 | + renderItemContent(renderOpts, params) { | ||
| 9 | + const { t } = useI18n() | ||
| 10 | + const { data, field } = params | ||
| 11 | + const { content } = renderOpts | ||
| 12 | + return ( | ||
| 13 | + <ElDatePicker | ||
| 14 | + v-model={data[field]} | ||
| 15 | + type={content ? (content as any) : 'datetimerange'} | ||
| 16 | + value-format="YYYY-MM-DD HH:mm:ss" | ||
| 17 | + range-separator="-" | ||
| 18 | + start-placeholder={t('common.startTimeText')} | ||
| 19 | + end-placeholder={t('common.endTimeText')} | ||
| 20 | + ></ElDatePicker> | ||
| 21 | + ) | ||
| 22 | + } | ||
| 23 | +}) |
yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/dict.tsx
0 → 100644
| 1 | +import { DictTag } from '@/components/DictTag' | ||
| 2 | +import { VXETable } from 'vxe-table' | ||
| 3 | + | ||
| 4 | +// 字典渲染 | ||
| 5 | +VXETable.renderer.add('XDict', { | ||
| 6 | + // 默认显示模板 | ||
| 7 | + renderDefault(renderOpts, params) { | ||
| 8 | + const { row, column } = params | ||
| 9 | + const { content } = renderOpts | ||
| 10 | + return <DictTag type={content as unknown as string} value={row[column.field]}></DictTag> | ||
| 11 | + } | ||
| 12 | +}) |
yudao-ui-admin-vue3/src/plugins/vxeTable/renderer/index.tsx
0 → 100644
yudao-ui-admin-vue3/src/types/descriptions.d.ts
| @@ -8,4 +8,6 @@ export interface DescriptionsSchema { | @@ -8,4 +8,6 @@ export interface DescriptionsSchema { | ||
| 8 | labelAlign?: 'left' | 'center' | 'right' | 8 | labelAlign?: 'left' | 'center' | 'right' |
| 9 | className?: string | 9 | className?: string |
| 10 | labelClassName?: string | 10 | labelClassName?: string |
| 11 | + dateFormat?: string | ||
| 12 | + dictType?: string | ||
| 11 | } | 13 | } |
yudao-ui-admin-vue3/src/views/system/errorCode/errorCode.data.ts
| @@ -2,9 +2,8 @@ import { reactive } from 'vue' | @@ -2,9 +2,8 @@ import { reactive } from 'vue' | ||
| 2 | import { required } from '@/utils/formRules' | 2 | import { required } from '@/utils/formRules' |
| 3 | import { useI18n } from '@/hooks/web/useI18n' | 3 | import { useI18n } from '@/hooks/web/useI18n' |
| 4 | import { DICT_TYPE } from '@/utils/dict' | 4 | import { DICT_TYPE } from '@/utils/dict' |
| 5 | -import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' | ||
| 6 | -// 国际化 | ||
| 7 | -const { t } = useI18n() | 5 | +import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas' |
| 6 | +const { t } = useI18n() // 国际化 | ||
| 8 | // 表单校验 | 7 | // 表单校验 |
| 9 | export const rules = reactive({ | 8 | export const rules = reactive({ |
| 10 | applicationName: [required], | 9 | applicationName: [required], |
| @@ -12,71 +11,43 @@ export const rules = reactive({ | @@ -12,71 +11,43 @@ export const rules = reactive({ | ||
| 12 | message: [required] | 11 | message: [required] |
| 13 | }) | 12 | }) |
| 14 | // 新增 + 修改 | 13 | // 新增 + 修改 |
| 15 | -const crudSchemas = reactive<CrudSchema[]>([ | ||
| 16 | - { | ||
| 17 | - label: t('common.index'), | ||
| 18 | - field: 'id', | ||
| 19 | - type: 'index', | ||
| 20 | - form: { | ||
| 21 | - show: false | 14 | +const crudSchemas = reactive<VxeCrudSchema>({ |
| 15 | + primaryKey: 'id', | ||
| 16 | + primaryType: 'seq', | ||
| 17 | + action: true, | ||
| 18 | + columns: [ | ||
| 19 | + { | ||
| 20 | + title: '错误码类型', | ||
| 21 | + field: 'type', | ||
| 22 | + dictType: DICT_TYPE.SYSTEM_ERROR_CODE_TYPE, | ||
| 23 | + isSearch: true | ||
| 22 | }, | 24 | }, |
| 23 | - detail: { | ||
| 24 | - show: false | ||
| 25 | - } | ||
| 26 | - }, | ||
| 27 | - { | ||
| 28 | - label: '错误码类型', | ||
| 29 | - field: 'type', | ||
| 30 | - component: 'InputNumber', | ||
| 31 | - dictType: DICT_TYPE.SYSTEM_ERROR_CODE_TYPE, | ||
| 32 | - search: { | ||
| 33 | - show: true | ||
| 34 | - } | ||
| 35 | - }, | ||
| 36 | - { | ||
| 37 | - label: '应用名', | ||
| 38 | - field: 'applicationName', | ||
| 39 | - search: { | ||
| 40 | - show: true | ||
| 41 | - } | ||
| 42 | - }, | ||
| 43 | - { | ||
| 44 | - label: '错误码编码', | ||
| 45 | - field: 'code', | ||
| 46 | - search: { | ||
| 47 | - show: true | ||
| 48 | - } | ||
| 49 | - }, | ||
| 50 | - { | ||
| 51 | - label: '错误码错误提示', | ||
| 52 | - field: 'message' | ||
| 53 | - }, | ||
| 54 | - { | ||
| 55 | - label: t('common.createTime'), | ||
| 56 | - field: 'createTime', | ||
| 57 | - form: { | ||
| 58 | - show: false | 25 | + { |
| 26 | + title: '应用名', | ||
| 27 | + field: 'applicationName', | ||
| 28 | + isSearch: true | ||
| 59 | }, | 29 | }, |
| 60 | - search: { | ||
| 61 | - show: true, | ||
| 62 | - component: 'DatePicker', | ||
| 63 | - componentProps: { | ||
| 64 | - type: 'daterange', | ||
| 65 | - valueFormat: 'YYYY-MM-DD HH:mm:ss', | ||
| 66 | - defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] | ||
| 67 | - } | ||
| 68 | - } | ||
| 69 | - }, | ||
| 70 | - { | ||
| 71 | - field: 'action', | ||
| 72 | - width: '240px', | ||
| 73 | - label: t('table.action'), | ||
| 74 | - form: { | ||
| 75 | - show: false | 30 | + { |
| 31 | + title: '错误码编码', | ||
| 32 | + field: 'code', | ||
| 33 | + isSearch: true | ||
| 34 | + }, | ||
| 35 | + { | ||
| 36 | + title: '错误码错误提示', | ||
| 37 | + field: 'message' | ||
| 76 | }, | 38 | }, |
| 77 | - detail: { | ||
| 78 | - show: false | 39 | + { |
| 40 | + title: t('common.createTime'), | ||
| 41 | + field: 'createTime', | ||
| 42 | + formatter: 'formatDate', | ||
| 43 | + isForm: false, | ||
| 44 | + isSearch: true, | ||
| 45 | + search: { | ||
| 46 | + itemRender: { | ||
| 47 | + name: 'XDataTimePicker' | ||
| 48 | + } | ||
| 49 | + } | ||
| 79 | } | 50 | } |
| 80 | - } | ||
| 81 | -]) | ||
| 82 | -export const { allSchemas } = useCrudSchemas(crudSchemas) | 51 | + ] |
| 52 | +}) | ||
| 53 | +export const { allSchemas } = useVxeCrudSchemas(crudSchemas) |
yudao-ui-admin-vue3/src/views/system/errorCode/index.vue
| 1 | +<template> | ||
| 2 | + <ContentWrap> | ||
| 3 | + <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | ||
| 4 | + <template #toolbar_buttons> | ||
| 5 | + <XButton | ||
| 6 | + type="primary" | ||
| 7 | + preIcon="ep:zoom-in" | ||
| 8 | + :title="t('action.add')" | ||
| 9 | + v-hasPermi="['system:error-code:create']" | ||
| 10 | + @click="handleCreate()" | ||
| 11 | + /> | ||
| 12 | + </template> | ||
| 13 | + <template #actionbtns_default="{ row }"> | ||
| 14 | + <XTextButton | ||
| 15 | + preIcon="ep:edit" | ||
| 16 | + :title="t('action.edit')" | ||
| 17 | + v-hasPermi="['system:error-code:update']" | ||
| 18 | + @click="handleUpdate(row.id)" | ||
| 19 | + /> | ||
| 20 | + <XTextButton | ||
| 21 | + preIcon="ep:view" | ||
| 22 | + :title="t('action.detail')" | ||
| 23 | + v-hasPermi="['system:error-code:update']" | ||
| 24 | + @click="handleDetail(row)" | ||
| 25 | + /> | ||
| 26 | + <XTextButton | ||
| 27 | + preIcon="ep:delete" | ||
| 28 | + :title="t('action.del')" | ||
| 29 | + v-hasPermi="['system:error-code:delete']" | ||
| 30 | + @click="handleDelete(row.id)" | ||
| 31 | + /> | ||
| 32 | + </template> | ||
| 33 | + </vxe-grid> | ||
| 34 | + </ContentWrap> | ||
| 35 | + <XModal id="errorCodeModel" v-model="dialogVisible" :title="dialogTitle"> | ||
| 36 | + <template #default> | ||
| 37 | + <!-- 对话框(添加 / 修改) --> | ||
| 38 | + <Form | ||
| 39 | + v-if="['create', 'update'].includes(actionType)" | ||
| 40 | + :schema="allSchemas.formSchema" | ||
| 41 | + :rules="rules" | ||
| 42 | + ref="formRef" | ||
| 43 | + /> | ||
| 44 | + <!-- 对话框(详情) --> | ||
| 45 | + <Descriptions | ||
| 46 | + v-if="actionType === 'detail'" | ||
| 47 | + :schema="allSchemas.detailSchema" | ||
| 48 | + :data="detailRef" | ||
| 49 | + /> | ||
| 50 | + </template> | ||
| 51 | + <!-- 操作按钮 --> | ||
| 52 | + <template #footer> | ||
| 53 | + <XButton | ||
| 54 | + v-if="['create', 'update'].includes(actionType)" | ||
| 55 | + type="primary" | ||
| 56 | + :title="t('action.save')" | ||
| 57 | + :loading="actionLoading" | ||
| 58 | + @click="submitForm" | ||
| 59 | + /> | ||
| 60 | + <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" /> | ||
| 61 | + </template> | ||
| 62 | + </XModal> | ||
| 63 | +</template> | ||
| 64 | + | ||
| 1 | <script setup lang="ts"> | 65 | <script setup lang="ts"> |
| 2 | import { ref, unref } from 'vue' | 66 | import { ref, unref } from 'vue' |
| 3 | -import dayjs from 'dayjs' | ||
| 4 | -import { ElMessage } from 'element-plus' | ||
| 5 | -import { DICT_TYPE } from '@/utils/dict' | ||
| 6 | -import { useTable } from '@/hooks/web/useTable' | ||
| 7 | -import { useI18n } from '@/hooks/web/useI18n' | ||
| 8 | -import { FormExpose } from '@/components/Form' | ||
| 9 | import type { ErrorCodeVO } from '@/api/system/errorCode/types' | 67 | import type { ErrorCodeVO } from '@/api/system/errorCode/types' |
| 10 | import { rules, allSchemas } from './errorCode.data' | 68 | import { rules, allSchemas } from './errorCode.data' |
| 11 | import * as ErrorCodeApi from '@/api/system/errorCode' | 69 | import * as ErrorCodeApi from '@/api/system/errorCode' |
| 12 | -const { t } = useI18n() // 国际化 | ||
| 13 | - | ||
| 14 | -// ========== 列表相关 ========== | ||
| 15 | -const { register, tableObject, methods } = useTable<ErrorCodeVO>({ | ||
| 16 | - getListApi: ErrorCodeApi.getErrorCodePageApi, | ||
| 17 | - delListApi: ErrorCodeApi.deleteErrorCodeApi | ||
| 18 | -}) | ||
| 19 | -const { getList, setSearchParams, delList } = methods | 70 | +import { useI18n } from '@/hooks/web/useI18n' |
| 71 | +import { useMessage } from '@/hooks/web/useMessage' | ||
| 72 | +import { useVxeGrid } from '@/hooks/web/useVxeGrid' | ||
| 73 | +import { VxeGridInstance } from 'vxe-table' | ||
| 74 | +import { FormExpose } from '@/components/Form' | ||
| 20 | 75 | ||
| 21 | -// ========== CRUD 相关 ========== | ||
| 22 | -const loading = ref(false) // 遮罩层 | ||
| 23 | -const actionType = ref('') // 操作按钮的类型 | 76 | +const { t } = useI18n() // 国际化 |
| 77 | +const message = useMessage() // 消息弹窗 | ||
| 24 | const dialogVisible = ref(false) // 是否显示弹出层 | 78 | const dialogVisible = ref(false) // 是否显示弹出层 |
| 25 | const dialogTitle = ref('edit') // 弹出层标题 | 79 | const dialogTitle = ref('edit') // 弹出层标题 |
| 80 | +const actionType = ref('') // 操作按钮的类型 | ||
| 81 | +const actionLoading = ref(false) // 按钮Loading | ||
| 82 | +const xGrid = ref<VxeGridInstance>() // grid Ref | ||
| 26 | const formRef = ref<FormExpose>() // 表单 Ref | 83 | const formRef = ref<FormExpose>() // 表单 Ref |
| 84 | +const detailRef = ref() // 详情 Ref | ||
| 27 | 85 | ||
| 86 | +const { gridOptions } = useVxeGrid<ErrorCodeVO>({ | ||
| 87 | + allSchemas: allSchemas, | ||
| 88 | + getListApi: ErrorCodeApi.getErrorCodePageApi | ||
| 89 | +}) | ||
| 28 | // 设置标题 | 90 | // 设置标题 |
| 29 | const setDialogTile = (type: string) => { | 91 | const setDialogTile = (type: string) => { |
| 30 | dialogTitle.value = t('action.' + type) | 92 | dialogTitle.value = t('action.' + type) |
| @@ -39,147 +101,57 @@ const handleCreate = () => { | @@ -39,147 +101,57 @@ const handleCreate = () => { | ||
| 39 | unref(formRef)?.getElFormRef()?.resetFields() | 101 | unref(formRef)?.getElFormRef()?.resetFields() |
| 40 | } | 102 | } |
| 41 | 103 | ||
| 104 | +// 详情操作 | ||
| 105 | +const handleDetail = async (row: ErrorCodeVO) => { | ||
| 106 | + // 设置数据 | ||
| 107 | + detailRef.value = row | ||
| 108 | + setDialogTile('detail') | ||
| 109 | +} | ||
| 110 | + | ||
| 42 | // 修改操作 | 111 | // 修改操作 |
| 43 | -const handleUpdate = async (row: ErrorCodeVO) => { | 112 | +const handleUpdate = async (rowId: number) => { |
| 44 | setDialogTile('update') | 113 | setDialogTile('update') |
| 45 | // 设置数据 | 114 | // 设置数据 |
| 46 | - const res = await ErrorCodeApi.getErrorCodeApi(row.id) | 115 | + const res = await ErrorCodeApi.getErrorCodeApi(rowId) |
| 47 | unref(formRef)?.setValues(res) | 116 | unref(formRef)?.setValues(res) |
| 48 | } | 117 | } |
| 49 | 118 | ||
| 119 | +// 删除操作 | ||
| 120 | +const handleDelete = async (rowId: number) => { | ||
| 121 | + message | ||
| 122 | + .delConfirm() | ||
| 123 | + .then(async () => { | ||
| 124 | + await ErrorCodeApi.deleteErrorCodeApi(rowId) | ||
| 125 | + message.success(t('common.delSuccess')) | ||
| 126 | + }) | ||
| 127 | + .finally(() => { | ||
| 128 | + xGrid.value?.commitProxy('query') | ||
| 129 | + }) | ||
| 130 | +} | ||
| 131 | + | ||
| 50 | // 提交按钮 | 132 | // 提交按钮 |
| 51 | const submitForm = async () => { | 133 | const submitForm = async () => { |
| 52 | const elForm = unref(formRef)?.getElFormRef() | 134 | const elForm = unref(formRef)?.getElFormRef() |
| 53 | if (!elForm) return | 135 | if (!elForm) return |
| 54 | elForm.validate(async (valid) => { | 136 | elForm.validate(async (valid) => { |
| 55 | if (valid) { | 137 | if (valid) { |
| 56 | - loading.value = true | 138 | + actionLoading.value = true |
| 57 | // 提交请求 | 139 | // 提交请求 |
| 58 | try { | 140 | try { |
| 59 | const data = unref(formRef)?.formModel as ErrorCodeVO | 141 | const data = unref(formRef)?.formModel as ErrorCodeVO |
| 60 | if (actionType.value === 'create') { | 142 | if (actionType.value === 'create') { |
| 61 | await ErrorCodeApi.createErrorCodeApi(data) | 143 | await ErrorCodeApi.createErrorCodeApi(data) |
| 62 | - ElMessage.success(t('common.createSuccess')) | 144 | + message.success(t('common.createSuccess')) |
| 63 | } else { | 145 | } else { |
| 64 | await ErrorCodeApi.updateErrorCodeApi(data) | 146 | await ErrorCodeApi.updateErrorCodeApi(data) |
| 65 | - ElMessage.success(t('common.updateSuccess')) | 147 | + message.success(t('common.updateSuccess')) |
| 66 | } | 148 | } |
| 67 | - // 操作成功,重新加载列表 | ||
| 68 | dialogVisible.value = false | 149 | dialogVisible.value = false |
| 69 | - await getList() | ||
| 70 | } finally { | 150 | } finally { |
| 71 | - loading.value = false | 151 | + actionLoading.value = false |
| 152 | + xGrid.value?.commitProxy('query') | ||
| 72 | } | 153 | } |
| 73 | } | 154 | } |
| 74 | }) | 155 | }) |
| 75 | } | 156 | } |
| 76 | - | ||
| 77 | -// ========== 详情相关 ========== | ||
| 78 | -const detailRef = ref() // 详情 Ref | ||
| 79 | - | ||
| 80 | -// 详情操作 | ||
| 81 | -const handleDetail = async (row: ErrorCodeVO) => { | ||
| 82 | - // 设置数据 | ||
| 83 | - detailRef.value = row | ||
| 84 | - setDialogTile('detail') | ||
| 85 | -} | ||
| 86 | - | ||
| 87 | -// ========== 初始化 ========== | ||
| 88 | -getList() | ||
| 89 | </script> | 157 | </script> |
| 90 | - | ||
| 91 | -<template> | ||
| 92 | - <!-- 搜索工作区 --> | ||
| 93 | - <ContentWrap> | ||
| 94 | - <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" /> | ||
| 95 | - </ContentWrap> | ||
| 96 | - <ContentWrap> | ||
| 97 | - <!-- 操作工具栏 --> | ||
| 98 | - <div class="mb-10px"> | ||
| 99 | - <el-button v-hasPermi="['system:error-code:create']" type="primary" @click="handleCreate"> | ||
| 100 | - <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} | ||
| 101 | - </el-button> | ||
| 102 | - </div> | ||
| 103 | - <!-- 列表 --> | ||
| 104 | - <Table | ||
| 105 | - :columns="allSchemas.tableColumns" | ||
| 106 | - :selection="false" | ||
| 107 | - :data="tableObject.tableList" | ||
| 108 | - :loading="tableObject.loading" | ||
| 109 | - :pagination="{ | ||
| 110 | - total: tableObject.total | ||
| 111 | - }" | ||
| 112 | - v-model:pageSize="tableObject.pageSize" | ||
| 113 | - v-model:currentPage="tableObject.currentPage" | ||
| 114 | - @register="register" | ||
| 115 | - > | ||
| 116 | - <template #type="{ row }"> | ||
| 117 | - <DictTag :type="DICT_TYPE.SYSTEM_ERROR_CODE_TYPE" :value="row.type" /> | ||
| 118 | - </template> | ||
| 119 | - <template #createTime="{ row }"> | ||
| 120 | - <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 121 | - </template> | ||
| 122 | - <template #action="{ row }"> | ||
| 123 | - <el-button | ||
| 124 | - link | ||
| 125 | - type="primary" | ||
| 126 | - v-hasPermi="['system:error-code:update']" | ||
| 127 | - @click="handleUpdate(row)" | ||
| 128 | - > | ||
| 129 | - <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} | ||
| 130 | - </el-button> | ||
| 131 | - <el-button | ||
| 132 | - link | ||
| 133 | - type="primary" | ||
| 134 | - v-hasPermi="['system:error-code:update']" | ||
| 135 | - @click="handleDetail(row)" | ||
| 136 | - > | ||
| 137 | - <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} | ||
| 138 | - </el-button> | ||
| 139 | - <el-button | ||
| 140 | - link | ||
| 141 | - type="primary" | ||
| 142 | - v-hasPermi="['system:error-code:delete']" | ||
| 143 | - @click="delList(row.id, false)" | ||
| 144 | - > | ||
| 145 | - <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} | ||
| 146 | - </el-button> | ||
| 147 | - </template> | ||
| 148 | - </Table> | ||
| 149 | - </ContentWrap> | ||
| 150 | - | ||
| 151 | - <Dialog v-model="dialogVisible" :title="dialogTitle"> | ||
| 152 | - <!-- 对话框(添加 / 修改) --> | ||
| 153 | - <Form | ||
| 154 | - v-if="['create', 'update'].includes(actionType)" | ||
| 155 | - :schema="allSchemas.formSchema" | ||
| 156 | - :rules="rules" | ||
| 157 | - ref="formRef" | ||
| 158 | - /> | ||
| 159 | - <!-- 对话框(详情) --> | ||
| 160 | - <Descriptions | ||
| 161 | - v-if="actionType === 'detail'" | ||
| 162 | - :schema="allSchemas.detailSchema" | ||
| 163 | - :data="detailRef" | ||
| 164 | - > | ||
| 165 | - <template #type="{ row }"> | ||
| 166 | - <DictTag :type="DICT_TYPE.SYSTEM_ERROR_CODE_TYPE" :value="row.type" /> | ||
| 167 | - </template> | ||
| 168 | - <template #createTime="{ row }"> | ||
| 169 | - <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 170 | - </template> | ||
| 171 | - </Descriptions> | ||
| 172 | - <!-- 操作按钮 --> | ||
| 173 | - <template #footer> | ||
| 174 | - <el-button | ||
| 175 | - v-if="['create', 'update'].includes(actionType)" | ||
| 176 | - type="primary" | ||
| 177 | - :loading="loading" | ||
| 178 | - @click="submitForm" | ||
| 179 | - > | ||
| 180 | - {{ t('action.save') }} | ||
| 181 | - </el-button> | ||
| 182 | - <el-button @click="dialogVisible = false">{{ t('dialog.close') }}</el-button> | ||
| 183 | - </template> | ||
| 184 | - </Dialog> | ||
| 185 | -</template> |
yudao-ui-admin-vue3/src/views/system/menu/index.vue
| 1 | <template> | 1 | <template> |
| 2 | <ContentWrap> | 2 | <ContentWrap> |
| 3 | + <!-- 搜索工作栏 --> | ||
| 3 | <el-form :model="queryParams" ref="queryForm" :inline="true"> | 4 | <el-form :model="queryParams" ref="queryForm" :inline="true"> |
| 4 | <el-form-item label="菜单名称" prop="name"> | 5 | <el-form-item label="菜单名称" prop="name"> |
| 5 | <el-input v-model="queryParams.name" placeholder="请输入菜单名称" /> | 6 | <el-input v-model="queryParams.name" placeholder="请输入菜单名称" /> |
| @@ -15,17 +16,20 @@ | @@ -15,17 +16,20 @@ | ||
| 15 | </el-select> | 16 | </el-select> |
| 16 | </el-form-item> | 17 | </el-form-item> |
| 17 | <el-form-item> | 18 | <el-form-item> |
| 19 | + <!-- 操作:搜索 --> | ||
| 18 | <XButton | 20 | <XButton |
| 19 | type="primary" | 21 | type="primary" |
| 20 | preIcon="ep:search" | 22 | preIcon="ep:search" |
| 21 | :title="t('common.query')" | 23 | :title="t('common.query')" |
| 22 | @click="handleQuery()" | 24 | @click="handleQuery()" |
| 23 | /> | 25 | /> |
| 26 | + <!-- 操作:重置 --> | ||
| 24 | <XButton preIcon="ep:refresh-right" :title="t('common.reset')" @click="resetQuery()" /> | 27 | <XButton preIcon="ep:refresh-right" :title="t('common.reset')" @click="resetQuery()" /> |
| 25 | </el-form-item> | 28 | </el-form-item> |
| 26 | </el-form> | 29 | </el-form> |
| 27 | <vxe-toolbar> | 30 | <vxe-toolbar> |
| 28 | <template #buttons> | 31 | <template #buttons> |
| 32 | + <!-- 操作:新增 --> | ||
| 29 | <XButton | 33 | <XButton |
| 30 | type="primary" | 34 | type="primary" |
| 31 | preIcon="ep:zoom-in" | 35 | preIcon="ep:zoom-in" |
| @@ -37,6 +41,8 @@ | @@ -37,6 +41,8 @@ | ||
| 37 | <XButton title="关闭所有" @click="xTable?.clearTreeExpand()" /> | 41 | <XButton title="关闭所有" @click="xTable?.clearTreeExpand()" /> |
| 38 | </template> | 42 | </template> |
| 39 | </vxe-toolbar> | 43 | </vxe-toolbar> |
| 44 | + <!-- 列表 --> | ||
| 45 | + <!-- TODO 星语:是不是也搞成 grid 会好点,后续代码就统一走 grid 风格? --> | ||
| 40 | <vxe-table | 46 | <vxe-table |
| 41 | show-overflow | 47 | show-overflow |
| 42 | keep-source | 48 | keep-source |
| @@ -73,12 +79,14 @@ | @@ -73,12 +79,14 @@ | ||
| 73 | <vxe-column title="创建时间" field="createTime" formatter="formatDate" /> | 79 | <vxe-column title="创建时间" field="createTime" formatter="formatDate" /> |
| 74 | <vxe-column title="操作" width="200"> | 80 | <vxe-column title="操作" width="200"> |
| 75 | <template #default="{ row }"> | 81 | <template #default="{ row }"> |
| 82 | + <!-- 操作:修改 --> | ||
| 76 | <XTextButton | 83 | <XTextButton |
| 77 | preIcon="ep:edit" | 84 | preIcon="ep:edit" |
| 78 | :title="t('action.edit')" | 85 | :title="t('action.edit')" |
| 79 | v-hasPermi="['system:menu:update']" | 86 | v-hasPermi="['system:menu:update']" |
| 80 | @click="handleUpdate(row)" | 87 | @click="handleUpdate(row)" |
| 81 | /> | 88 | /> |
| 89 | + <!-- 操作:删除 --> | ||
| 82 | <XTextButton | 90 | <XTextButton |
| 83 | preIcon="ep:delete" | 91 | preIcon="ep:delete" |
| 84 | :title="t('action.del')" | 92 | :title="t('action.del')" |
| @@ -89,6 +97,7 @@ | @@ -89,6 +97,7 @@ | ||
| 89 | </vxe-column> | 97 | </vxe-column> |
| 90 | </vxe-table> | 98 | </vxe-table> |
| 91 | </ContentWrap> | 99 | </ContentWrap> |
| 100 | + <!-- 添加或修改菜单对话框 --> | ||
| 92 | <XModal v-model="dialogVisible" id="menuModel" :title="dialogTitle"> | 101 | <XModal v-model="dialogVisible" id="menuModel" :title="dialogTitle"> |
| 93 | <template #default> | 102 | <template #default> |
| 94 | <!-- 对话框(添加 / 修改) --> | 103 | <!-- 对话框(添加 / 修改) --> |
| @@ -107,6 +116,7 @@ | @@ -107,6 +116,7 @@ | ||
| 107 | v-model="menuForm.parentId" | 116 | v-model="menuForm.parentId" |
| 108 | :props="menuProps" | 117 | :props="menuProps" |
| 109 | :data="menuOptions" | 118 | :data="menuOptions" |
| 119 | + :default-expanded-keys="[0]" | ||
| 110 | check-strictly | 120 | check-strictly |
| 111 | /> | 121 | /> |
| 112 | </el-form-item> | 122 | </el-form-item> |
| @@ -226,7 +236,7 @@ | @@ -226,7 +236,7 @@ | ||
| 226 | </el-form> | 236 | </el-form> |
| 227 | </template> | 237 | </template> |
| 228 | <template #footer> | 238 | <template #footer> |
| 229 | - <!-- 操作按钮 --> | 239 | + <!-- 按钮:保存 --> |
| 230 | <XButton | 240 | <XButton |
| 231 | v-if="['create', 'update'].includes(actionType)" | 241 | v-if="['create', 'update'].includes(actionType)" |
| 232 | type="primary" | 242 | type="primary" |
| @@ -234,22 +244,17 @@ | @@ -234,22 +244,17 @@ | ||
| 234 | @click="submitForm" | 244 | @click="submitForm" |
| 235 | :title="t('action.save')" | 245 | :title="t('action.save')" |
| 236 | /> | 246 | /> |
| 247 | + <!-- 按钮:关闭 --> | ||
| 237 | <XButton :loading="actionLoading" @click="dialogVisible = false" :title="t('dialog.close')" /> | 248 | <XButton :loading="actionLoading" @click="dialogVisible = false" :title="t('dialog.close')" /> |
| 238 | </template> | 249 | </template> |
| 239 | </XModal> | 250 | </XModal> |
| 240 | </template> | 251 | </template> |
| 241 | <script setup lang="ts"> | 252 | <script setup lang="ts"> |
| 242 | -import * as MenuApi from '@/api/system/menu' | ||
| 243 | -import { MenuVO } from '@/api/system/menu/types' | 253 | +// 全局相关的 import |
| 254 | +import { onMounted, reactive, ref } from 'vue' | ||
| 244 | import { useI18n } from '@/hooks/web/useI18n' | 255 | import { useI18n } from '@/hooks/web/useI18n' |
| 245 | import { useMessage } from '@/hooks/web/useMessage' | 256 | import { useMessage } from '@/hooks/web/useMessage' |
| 246 | -import { IconSelect } from '@/components/Icon' | ||
| 247 | -import { Tooltip } from '@/components/Tooltip' | ||
| 248 | -import { required } from '@/utils/formRules.js' | ||
| 249 | -import { onMounted, reactive, ref } from 'vue' | ||
| 250 | -import { VxeTableInstance } from 'vxe-table' | ||
| 251 | -import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' | ||
| 252 | -import { SystemMenuTypeEnum, CommonStatusEnum } from '@/utils/constants' | 257 | +// TODO @星语:是不是 'element-plus' 和 '@/components/Tooltip' 和 '@/components/Icon' 全局直接引入 |
| 253 | import { | 258 | import { |
| 254 | ElRow, | 259 | ElRow, |
| 255 | ElCol, | 260 | ElCol, |
| @@ -263,17 +268,29 @@ import { | @@ -263,17 +268,29 @@ import { | ||
| 263 | ElRadioGroup, | 268 | ElRadioGroup, |
| 264 | ElRadioButton | 269 | ElRadioButton |
| 265 | } from 'element-plus' | 270 | } from 'element-plus' |
| 271 | +import { Tooltip } from '@/components/Tooltip' | ||
| 272 | +import { IconSelect } from '@/components/Icon' | ||
| 273 | +import { VxeTableInstance } from 'vxe-table' | ||
| 274 | +// 业务相关的 import | ||
| 275 | +import * as MenuApi from '@/api/system/menu' | ||
| 276 | +import { MenuVO } from '@/api/system/menu/types' | ||
| 277 | +import { required } from '@/utils/formRules.js' | ||
| 278 | +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' | ||
| 279 | +import { SystemMenuTypeEnum, CommonStatusEnum } from '@/utils/constants' | ||
| 266 | import { handleTree } from '@/utils/tree' | 280 | import { handleTree } from '@/utils/tree' |
| 281 | + | ||
| 267 | const { t } = useI18n() // 国际化 | 282 | const { t } = useI18n() // 国际化 |
| 268 | -const message = useMessage() | 283 | +const message = useMessage() // 消息弹窗 |
| 284 | +// 列表相关的变量 | ||
| 269 | const xTable = ref<VxeTableInstance>() | 285 | const xTable = ref<VxeTableInstance>() |
| 270 | const tableLoading = ref(false) | 286 | const tableLoading = ref(false) |
| 271 | const tableData = ref() | 287 | const tableData = ref() |
| 272 | -const actionLoading = ref(false) // 遮罩层 | ||
| 273 | -const actionType = ref('') // 操作按钮的类型 | 288 | +// 弹窗相关的变量 |
| 274 | const dialogVisible = ref(false) // 是否显示弹出层 | 289 | const dialogVisible = ref(false) // 是否显示弹出层 |
| 275 | const dialogTitle = ref('edit') // 弹出层标题 | 290 | const dialogTitle = ref('edit') // 弹出层标题 |
| 276 | -const statusOption = ref() // 状态选项 | 291 | +const actionType = ref('') // 操作按钮的类型 |
| 292 | +const actionLoading = ref(false) // 遮罩层 | ||
| 293 | +// 新增和修改的表单值 | ||
| 277 | const menuForm = ref<MenuVO>({ | 294 | const menuForm = ref<MenuVO>({ |
| 278 | id: 0, | 295 | id: 0, |
| 279 | name: '', | 296 | name: '', |
| @@ -289,12 +306,24 @@ const menuForm = ref<MenuVO>({ | @@ -289,12 +306,24 @@ const menuForm = ref<MenuVO>({ | ||
| 289 | keepAlive: true, | 306 | keepAlive: true, |
| 290 | createTime: '' | 307 | createTime: '' |
| 291 | }) | 308 | }) |
| 309 | +// 新增和修改的表单校验 | ||
| 310 | +const rules = reactive({ | ||
| 311 | + name: [required], | ||
| 312 | + sort: [required], | ||
| 313 | + path: [required], | ||
| 314 | + status: [required] | ||
| 315 | +}) | ||
| 316 | + | ||
| 317 | +// ========== 下拉框[上级菜单] ========== | ||
| 318 | +// 下拉框[上级菜单]的配置项目 | ||
| 319 | +// TODO @星语:menuProps 貌似也可以抽到全局? | ||
| 292 | const menuProps = { | 320 | const menuProps = { |
| 293 | checkStrictly: true, | 321 | checkStrictly: true, |
| 294 | children: 'children', | 322 | children: 'children', |
| 295 | label: 'name', | 323 | label: 'name', |
| 296 | value: 'id' | 324 | value: 'id' |
| 297 | } | 325 | } |
| 326 | +// TODO @星语:Tree 可以是全局的 | ||
| 298 | interface Tree { | 327 | interface Tree { |
| 299 | id: number | 328 | id: number |
| 300 | name: string | 329 | name: string |
| @@ -308,6 +337,7 @@ const getTree = async () => { | @@ -308,6 +337,7 @@ const getTree = async () => { | ||
| 308 | menu.children = handleTree(res) | 337 | menu.children = handleTree(res) |
| 309 | menuOptions.value.push(menu) | 338 | menuOptions.value.push(menu) |
| 310 | } | 339 | } |
| 340 | + | ||
| 311 | // ========== 查询 ========== | 341 | // ========== 查询 ========== |
| 312 | const queryParams = reactive({ | 342 | const queryParams = reactive({ |
| 313 | name: null, | 343 | name: null, |
| @@ -315,58 +345,47 @@ const queryParams = reactive({ | @@ -315,58 +345,47 @@ const queryParams = reactive({ | ||
| 315 | }) | 345 | }) |
| 316 | const getList = async () => { | 346 | const getList = async () => { |
| 317 | tableLoading.value = true | 347 | tableLoading.value = true |
| 318 | - statusOption.value = getIntDictOptions(DICT_TYPE.COMMON_STATUS) | ||
| 319 | const res = await MenuApi.getMenuListApi(queryParams) | 348 | const res = await MenuApi.getMenuListApi(queryParams) |
| 320 | tableData.value = res | 349 | tableData.value = res |
| 321 | tableLoading.value = false | 350 | tableLoading.value = false |
| 322 | } | 351 | } |
| 352 | + | ||
| 353 | +// 查询操作 | ||
| 354 | +const handleQuery = async () => { | ||
| 355 | + await getList() | ||
| 356 | +} | ||
| 357 | + | ||
| 358 | +// 重置操作 | ||
| 359 | +const resetQuery = async () => { | ||
| 360 | + queryParams.name = null | ||
| 361 | + queryParams.status = null | ||
| 362 | + await getList() | ||
| 363 | +} | ||
| 364 | + | ||
| 365 | +// ========== 新增/修改 ========== | ||
| 366 | + | ||
| 323 | // 设置标题 | 367 | // 设置标题 |
| 324 | const setDialogTile = (type: string) => { | 368 | const setDialogTile = (type: string) => { |
| 325 | dialogTitle.value = t('action.' + type) | 369 | dialogTitle.value = t('action.' + type) |
| 326 | actionType.value = type | 370 | actionType.value = type |
| 327 | dialogVisible.value = true | 371 | dialogVisible.value = true |
| 328 | } | 372 | } |
| 373 | + | ||
| 329 | // 新建操作 | 374 | // 新建操作 |
| 330 | const handleCreate = () => { | 375 | const handleCreate = () => { |
| 331 | setDialogTile('create') | 376 | setDialogTile('create') |
| 377 | + // TODO @星语:重置表单 | ||
| 332 | } | 378 | } |
| 379 | + | ||
| 333 | // 修改操作 | 380 | // 修改操作 |
| 334 | const handleUpdate = async (row: MenuVO) => { | 381 | const handleUpdate = async (row: MenuVO) => { |
| 382 | + setDialogTile('update') | ||
| 335 | // 设置数据 | 383 | // 设置数据 |
| 336 | const res = await MenuApi.getMenuApi(row.id) | 384 | const res = await MenuApi.getMenuApi(row.id) |
| 337 | - console.log(res) | ||
| 338 | menuForm.value = res | 385 | menuForm.value = res |
| 339 | - setDialogTile('update') | ||
| 340 | -} | ||
| 341 | -// 删除操作 | ||
| 342 | -const handleDelete = async (row: MenuVO) => { | ||
| 343 | - message.confirm(t('common.delDataMessage'), t('common.confirmTitle')).then(async () => { | ||
| 344 | - await MenuApi.deleteMenuApi(row.id) | ||
| 345 | - message.success(t('common.delSuccess')) | ||
| 346 | - await getList() | ||
| 347 | - }) | ||
| 348 | -} | ||
| 349 | -// 表单校验 | ||
| 350 | -const rules = reactive({ | ||
| 351 | - name: [required], | ||
| 352 | - sort: [required], | ||
| 353 | - path: [required], | ||
| 354 | - status: [required] | ||
| 355 | -}) | ||
| 356 | -// 查询操作 | ||
| 357 | -const handleQuery = async () => { | ||
| 358 | - await getList() | ||
| 359 | -} | ||
| 360 | -// 重置操作 | ||
| 361 | -const resetQuery = async () => { | ||
| 362 | - queryParams.name = null | ||
| 363 | - queryParams.status = null | ||
| 364 | - await getList() | ||
| 365 | -} | ||
| 366 | -// 保存操作 | ||
| 367 | -const isExternal = (path: string) => { | ||
| 368 | - return /^(https?:|mailto:|tel:)/.test(path) | ||
| 369 | } | 386 | } |
| 387 | + | ||
| 388 | +// 提交新增/修改的表单 | ||
| 370 | const submitForm = async () => { | 389 | const submitForm = async () => { |
| 371 | actionLoading.value = true | 390 | actionLoading.value = true |
| 372 | // 提交请求 | 391 | // 提交请求 |
| @@ -399,8 +418,26 @@ const submitForm = async () => { | @@ -399,8 +418,26 @@ const submitForm = async () => { | ||
| 399 | actionLoading.value = false | 418 | actionLoading.value = false |
| 400 | } | 419 | } |
| 401 | } | 420 | } |
| 421 | + | ||
| 422 | +// 判断 path 是不是外部的 HTTP 等链接 | ||
| 423 | +const isExternal = (path: string) => { | ||
| 424 | + return /^(https?:|mailto:|tel:)/.test(path) | ||
| 425 | +} | ||
| 426 | + | ||
| 427 | +// ========== 删除 ========== | ||
| 428 | +// 删除操作 | ||
| 429 | +const handleDelete = async (row: MenuVO) => { | ||
| 430 | + message.confirm(t('common.delDataMessage'), t('common.confirmTitle')).then(async () => { | ||
| 431 | + await MenuApi.deleteMenuApi(row.id) | ||
| 432 | + message.success(t('common.delSuccess')) | ||
| 433 | + await getList() | ||
| 434 | + }) | ||
| 435 | +} | ||
| 436 | + | ||
| 437 | +// ========== 初始化 ========== | ||
| 402 | onMounted(async () => { | 438 | onMounted(async () => { |
| 403 | await getList() | 439 | await getList() |
| 440 | + // TODO @星语:这个告警解决下;是不是改成新增和修改点击的时候,去加载下好一点哈? | ||
| 404 | getTree() | 441 | getTree() |
| 405 | }) | 442 | }) |
| 406 | </script> | 443 | </script> |
yudao-ui-admin-vue3/src/views/system/notice/index.vue
| 1 | +<template> | ||
| 2 | + <ContentWrap> | ||
| 3 | + <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | ||
| 4 | + <template #toolbar_buttons> | ||
| 5 | + <XButton | ||
| 6 | + type="primary" | ||
| 7 | + preIcon="ep:zoom-in" | ||
| 8 | + :title="t('action.add')" | ||
| 9 | + v-hasPermi="['system:notice:create']" | ||
| 10 | + @click="handleCreate()" | ||
| 11 | + /> | ||
| 12 | + </template> | ||
| 13 | + <template #actionbtns_default="{ row }"> | ||
| 14 | + <XTextButton | ||
| 15 | + preIcon="ep:edit" | ||
| 16 | + :title="t('action.edit')" | ||
| 17 | + v-hasPermi="['system:notice:update']" | ||
| 18 | + @click="handleUpdate(row.id)" | ||
| 19 | + /> | ||
| 20 | + <XTextButton | ||
| 21 | + preIcon="ep:view" | ||
| 22 | + :title="t('action.detail')" | ||
| 23 | + v-hasPermi="['system:notice:update']" | ||
| 24 | + @click="handleDetail(row)" | ||
| 25 | + /> | ||
| 26 | + <XTextButton | ||
| 27 | + preIcon="ep:delete" | ||
| 28 | + :title="t('action.del')" | ||
| 29 | + v-hasPermi="['system:notice:delete']" | ||
| 30 | + @click="handleDelete(row.id)" | ||
| 31 | + /> | ||
| 32 | + </template> | ||
| 33 | + </vxe-grid> | ||
| 34 | + </ContentWrap> | ||
| 35 | + <XModal id="noticeModel" v-model="dialogVisible" :title="dialogTitle"> | ||
| 36 | + <template #default> | ||
| 37 | + <!-- 对话框(添加 / 修改) --> | ||
| 38 | + <Form | ||
| 39 | + v-if="['create', 'update'].includes(actionType)" | ||
| 40 | + :schema="allSchemas.formSchema" | ||
| 41 | + :rules="rules" | ||
| 42 | + ref="formRef" | ||
| 43 | + /> | ||
| 44 | + <!-- 对话框(详情) --> | ||
| 45 | + <Descriptions | ||
| 46 | + v-if="actionType === 'detail'" | ||
| 47 | + :schema="allSchemas.detailSchema" | ||
| 48 | + :data="detailRef" | ||
| 49 | + /> | ||
| 50 | + </template> | ||
| 51 | + <!-- 操作按钮 --> | ||
| 52 | + <template #footer> | ||
| 53 | + <XButton | ||
| 54 | + v-if="['create', 'update'].includes(actionType)" | ||
| 55 | + type="primary" | ||
| 56 | + :title="t('action.save')" | ||
| 57 | + :loading="actionLoading" | ||
| 58 | + @click="submitForm" | ||
| 59 | + /> | ||
| 60 | + <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" /> | ||
| 61 | + </template> | ||
| 62 | + </XModal> | ||
| 63 | +</template> | ||
| 1 | <script setup lang="ts"> | 64 | <script setup lang="ts"> |
| 2 | import { ref, unref } from 'vue' | 65 | import { ref, unref } from 'vue' |
| 3 | -import dayjs from 'dayjs' | ||
| 4 | -import { ElMessage } from 'element-plus' | ||
| 5 | -import { DICT_TYPE } from '@/utils/dict' | ||
| 6 | -import { useTable } from '@/hooks/web/useTable' | 66 | +import * as NoticeApi from '@/api/system/notice' |
| 67 | +import { NoticeVO } from '@/api/system/notice/types' | ||
| 68 | +import { rules, allSchemas } from './notice.data' | ||
| 7 | import { useI18n } from '@/hooks/web/useI18n' | 69 | import { useI18n } from '@/hooks/web/useI18n' |
| 70 | +import { useMessage } from '@/hooks/web/useMessage' | ||
| 71 | +import { useVxeGrid } from '@/hooks/web/useVxeGrid' | ||
| 72 | +import { VxeGridInstance } from 'vxe-table' | ||
| 8 | import { FormExpose } from '@/components/Form' | 73 | import { FormExpose } from '@/components/Form' |
| 9 | -import type { NoticeVO } from '@/api/system/notice/types' | ||
| 10 | -import { rules, allSchemas } from './notice.data' | ||
| 11 | -import * as NoticeApi from '@/api/system/notice' | ||
| 12 | -const { t } = useI18n() // 国际化 | ||
| 13 | -// ========== 列表相关 ========== | ||
| 14 | -const { register, tableObject, methods } = useTable<NoticeVO>({ | ||
| 15 | - getListApi: NoticeApi.getNoticePageApi, | ||
| 16 | - delListApi: NoticeApi.deleteNoticeApi | ||
| 17 | -}) | ||
| 18 | -const { getList, setSearchParams, delList } = methods | ||
| 19 | 74 | ||
| 20 | -// ========== CRUD 相关 ========== | ||
| 21 | -const actionLoading = ref(false) // 遮罩层 | ||
| 22 | -const actionType = ref('') // 操作按钮的类型 | 75 | +const { t } = useI18n() // 国际化 |
| 76 | +const message = useMessage() // 消息弹窗 | ||
| 23 | const dialogVisible = ref(false) // 是否显示弹出层 | 77 | const dialogVisible = ref(false) // 是否显示弹出层 |
| 24 | const dialogTitle = ref('edit') // 弹出层标题 | 78 | const dialogTitle = ref('edit') // 弹出层标题 |
| 79 | +const actionType = ref('') // 操作按钮的类型 | ||
| 80 | +const actionLoading = ref(false) // 按钮Loading | ||
| 81 | +const xGrid = ref<VxeGridInstance>() // grid Ref | ||
| 25 | const formRef = ref<FormExpose>() // 表单 Ref | 82 | const formRef = ref<FormExpose>() // 表单 Ref |
| 83 | +const detailRef = ref() // 详情 Ref | ||
| 84 | + | ||
| 85 | +const { gridOptions } = useVxeGrid<NoticeVO>({ | ||
| 86 | + allSchemas: allSchemas, | ||
| 87 | + getListApi: NoticeApi.getNoticePageApi | ||
| 88 | +}) | ||
| 26 | 89 | ||
| 27 | // 设置标题 | 90 | // 设置标题 |
| 28 | const setDialogTile = (type: string) => { | 91 | const setDialogTile = (type: string) => { |
| @@ -39,13 +102,32 @@ const handleCreate = () => { | @@ -39,13 +102,32 @@ const handleCreate = () => { | ||
| 39 | } | 102 | } |
| 40 | 103 | ||
| 41 | // 修改操作 | 104 | // 修改操作 |
| 42 | -const handleUpdate = async (row: NoticeVO) => { | 105 | +const handleUpdate = async (rowId: number) => { |
| 43 | setDialogTile('update') | 106 | setDialogTile('update') |
| 44 | // 设置数据 | 107 | // 设置数据 |
| 45 | - const res = await NoticeApi.getNoticeApi(row.id) | 108 | + const res = await NoticeApi.getNoticeApi(rowId) |
| 46 | unref(formRef)?.setValues(res) | 109 | unref(formRef)?.setValues(res) |
| 47 | } | 110 | } |
| 48 | 111 | ||
| 112 | +// 详情操作 | ||
| 113 | +const handleDetail = (row: NoticeVO) => { | ||
| 114 | + setDialogTile('detail') | ||
| 115 | + detailRef.value = row | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | +// 删除操作 | ||
| 119 | +const handleDelete = async (rowId: number) => { | ||
| 120 | + message | ||
| 121 | + .delConfirm() | ||
| 122 | + .then(async () => { | ||
| 123 | + await NoticeApi.deleteNoticeApi(rowId) | ||
| 124 | + message.success(t('common.delSuccess')) | ||
| 125 | + }) | ||
| 126 | + .finally(() => { | ||
| 127 | + xGrid.value?.commitProxy('query') | ||
| 128 | + }) | ||
| 129 | +} | ||
| 130 | + | ||
| 49 | // 提交按钮 | 131 | // 提交按钮 |
| 50 | const submitForm = async () => { | 132 | const submitForm = async () => { |
| 51 | const elForm = unref(formRef)?.getElFormRef() | 133 | const elForm = unref(formRef)?.getElFormRef() |
| @@ -58,133 +140,17 @@ const submitForm = async () => { | @@ -58,133 +140,17 @@ const submitForm = async () => { | ||
| 58 | const data = unref(formRef)?.formModel as NoticeVO | 140 | const data = unref(formRef)?.formModel as NoticeVO |
| 59 | if (actionType.value === 'create') { | 141 | if (actionType.value === 'create') { |
| 60 | await NoticeApi.createNoticeApi(data) | 142 | await NoticeApi.createNoticeApi(data) |
| 61 | - ElMessage.success(t('common.createSuccess')) | 143 | + message.success(t('common.createSuccess')) |
| 62 | } else { | 144 | } else { |
| 63 | await NoticeApi.updateNoticeApi(data) | 145 | await NoticeApi.updateNoticeApi(data) |
| 64 | - ElMessage.success(t('common.updateSuccess')) | 146 | + message.success(t('common.updateSuccess')) |
| 65 | } | 147 | } |
| 66 | - // 操作成功,重新加载列表 | ||
| 67 | dialogVisible.value = false | 148 | dialogVisible.value = false |
| 68 | - await getList() | ||
| 69 | } finally { | 149 | } finally { |
| 70 | actionLoading.value = false | 150 | actionLoading.value = false |
| 151 | + xGrid.value?.commitProxy('query') | ||
| 71 | } | 152 | } |
| 72 | } | 153 | } |
| 73 | }) | 154 | }) |
| 74 | } | 155 | } |
| 75 | - | ||
| 76 | -// ========== 详情相关 ========== | ||
| 77 | -const detailRef = ref() // 详情 Ref | ||
| 78 | - | ||
| 79 | -// 详情操作 | ||
| 80 | -const handleDetail = async (row: NoticeVO) => { | ||
| 81 | - // 设置数据 | ||
| 82 | - detailRef.value = row | ||
| 83 | - setDialogTile('detail') | ||
| 84 | -} | ||
| 85 | - | ||
| 86 | -// ========== 初始化 ========== | ||
| 87 | -getList() | ||
| 88 | </script> | 156 | </script> |
| 89 | - | ||
| 90 | -<template> | ||
| 91 | - <!-- 搜索工作区 --> | ||
| 92 | - <ContentWrap> | ||
| 93 | - <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" /> | ||
| 94 | - </ContentWrap> | ||
| 95 | - <ContentWrap> | ||
| 96 | - <!-- 操作工具栏 --> | ||
| 97 | - <div class="mb-10px"> | ||
| 98 | - <el-button type="primary" v-hasPermi="['system:notice:create']" @click="handleCreate"> | ||
| 99 | - <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }} | ||
| 100 | - </el-button> | ||
| 101 | - </div> | ||
| 102 | - <!-- 列表 --> | ||
| 103 | - <Table | ||
| 104 | - :columns="allSchemas.tableColumns" | ||
| 105 | - :selection="false" | ||
| 106 | - :data="tableObject.tableList" | ||
| 107 | - :loading="tableObject.loading" | ||
| 108 | - :pagination="{ | ||
| 109 | - total: tableObject.total | ||
| 110 | - }" | ||
| 111 | - v-model:pageSize="tableObject.pageSize" | ||
| 112 | - v-model:currentPage="tableObject.currentPage" | ||
| 113 | - @register="register" | ||
| 114 | - > | ||
| 115 | - <template #type="{ row }"> | ||
| 116 | - <DictTag :type="DICT_TYPE.SYSTEM_NOTICE_TYPE" :value="row.type" /> | ||
| 117 | - </template> | ||
| 118 | - <template #status="{ row }"> | ||
| 119 | - <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" /> | ||
| 120 | - </template> | ||
| 121 | - <template #createTime="{ row }"> | ||
| 122 | - <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 123 | - </template> | ||
| 124 | - <template #action="{ row }"> | ||
| 125 | - <el-button | ||
| 126 | - link | ||
| 127 | - type="primary" | ||
| 128 | - v-hasPermi="['system:notice:update']" | ||
| 129 | - @click="handleUpdate(row)" | ||
| 130 | - > | ||
| 131 | - <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }} | ||
| 132 | - </el-button> | ||
| 133 | - <el-button | ||
| 134 | - link | ||
| 135 | - type="primary" | ||
| 136 | - v-hasPermi="['system:notice:update']" | ||
| 137 | - @click="handleDetail(row)" | ||
| 138 | - > | ||
| 139 | - <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }} | ||
| 140 | - </el-button> | ||
| 141 | - <el-button | ||
| 142 | - link | ||
| 143 | - type="primary" | ||
| 144 | - v-hasPermi="['system:notice:delete']" | ||
| 145 | - @click="delList(row.id, false)" | ||
| 146 | - > | ||
| 147 | - <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }} | ||
| 148 | - </el-button> | ||
| 149 | - </template> | ||
| 150 | - </Table> | ||
| 151 | - </ContentWrap> | ||
| 152 | - | ||
| 153 | - <Dialog v-model="dialogVisible" :title="dialogTitle" maxHeight="500px" width="50%"> | ||
| 154 | - <!-- 对话框(添加 / 修改) --> | ||
| 155 | - <Form | ||
| 156 | - v-if="['create', 'update'].includes(actionType)" | ||
| 157 | - :schema="allSchemas.formSchema" | ||
| 158 | - :rules="rules" | ||
| 159 | - ref="formRef" | ||
| 160 | - /> | ||
| 161 | - <!-- 对话框(详情) --> | ||
| 162 | - <Descriptions | ||
| 163 | - v-if="actionType === 'detail'" | ||
| 164 | - :schema="allSchemas.detailSchema" | ||
| 165 | - :data="detailRef" | ||
| 166 | - > | ||
| 167 | - <template #type="{ row }"> | ||
| 168 | - <DictTag :type="DICT_TYPE.SYSTEM_NOTICE_TYPE" :value="row.type" /> | ||
| 169 | - </template> | ||
| 170 | - <template #status="{ row }"> | ||
| 171 | - <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" /> | ||
| 172 | - </template> | ||
| 173 | - <template #createTime="{ row }"> | ||
| 174 | - <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 175 | - </template> | ||
| 176 | - </Descriptions> | ||
| 177 | - <!-- 操作按钮 --> | ||
| 178 | - <template #footer> | ||
| 179 | - <el-button | ||
| 180 | - v-if="['create', 'update'].includes(actionType)" | ||
| 181 | - type="primary" | ||
| 182 | - :loading="actionLoading" | ||
| 183 | - @click="submitForm" | ||
| 184 | - > | ||
| 185 | - {{ t('action.save') }} | ||
| 186 | - </el-button> | ||
| 187 | - <el-button @click="dialogVisible = false">{{ t('dialog.close') }}</el-button> | ||
| 188 | - </template> | ||
| 189 | - </Dialog> | ||
| 190 | -</template> |
yudao-ui-admin-vue3/src/views/system/notice/notice.data.ts
| @@ -2,7 +2,7 @@ import { reactive } from 'vue' | @@ -2,7 +2,7 @@ import { reactive } from 'vue' | ||
| 2 | import { useI18n } from '@/hooks/web/useI18n' | 2 | import { useI18n } from '@/hooks/web/useI18n' |
| 3 | import { required } from '@/utils/formRules' | 3 | import { required } from '@/utils/formRules' |
| 4 | import { DICT_TYPE } from '@/utils/dict' | 4 | import { DICT_TYPE } from '@/utils/dict' |
| 5 | -import { CrudSchema, useCrudSchemas } from '@/hooks/web/useCrudSchemas' | 5 | +import { VxeCrudSchema, useVxeCrudSchemas } from '@/hooks/web/useVxeCrudSchemas' |
| 6 | const { t } = useI18n() // 国际化 | 6 | const { t } = useI18n() // 国际化 |
| 7 | 7 | ||
| 8 | // 表单校验 | 8 | // 表单校验 |
| @@ -12,74 +12,47 @@ export const rules = reactive({ | @@ -12,74 +12,47 @@ export const rules = reactive({ | ||
| 12 | }) | 12 | }) |
| 13 | 13 | ||
| 14 | // CrudSchema | 14 | // CrudSchema |
| 15 | -const crudSchemas = reactive<CrudSchema[]>([ | ||
| 16 | - { | ||
| 17 | - label: t('common.index'), | ||
| 18 | - field: 'id', | ||
| 19 | - type: 'index', | ||
| 20 | - form: { | ||
| 21 | - show: false | 15 | +const crudSchemas = reactive<VxeCrudSchema>({ |
| 16 | + primaryKey: 'id', | ||
| 17 | + primaryType: 'seq', | ||
| 18 | + action: true, | ||
| 19 | + columns: [ | ||
| 20 | + { | ||
| 21 | + title: '公告标题', | ||
| 22 | + field: 'title', | ||
| 23 | + isSearch: true | ||
| 22 | }, | 24 | }, |
| 23 | - detail: { | ||
| 24 | - show: false | ||
| 25 | - } | ||
| 26 | - }, | ||
| 27 | - { | ||
| 28 | - label: '公告标题', | ||
| 29 | - field: 'title', | ||
| 30 | - search: { | ||
| 31 | - show: true | ||
| 32 | - } | ||
| 33 | - }, | ||
| 34 | - { | ||
| 35 | - label: '公告类型', | ||
| 36 | - field: 'type', | ||
| 37 | - dictType: DICT_TYPE.SYSTEM_NOTICE_TYPE, | ||
| 38 | - search: { | ||
| 39 | - show: true | ||
| 40 | - } | ||
| 41 | - }, | ||
| 42 | - { | ||
| 43 | - label: t('common.status'), | ||
| 44 | - field: 'status', | ||
| 45 | - dictType: DICT_TYPE.COMMON_STATUS, | ||
| 46 | - search: { | ||
| 47 | - show: true | 25 | + { |
| 26 | + title: '公告类型', | ||
| 27 | + field: 'type', | ||
| 28 | + dictType: DICT_TYPE.SYSTEM_NOTICE_TYPE, | ||
| 29 | + isSearch: true | ||
| 48 | }, | 30 | }, |
| 49 | - form: { | ||
| 50 | - component: 'RadioButton' | ||
| 51 | - } | ||
| 52 | - }, | ||
| 53 | - { | ||
| 54 | - label: '公告内容', | ||
| 55 | - field: 'content', | ||
| 56 | - form: { | ||
| 57 | - component: 'Editor', | ||
| 58 | - colProps: { | ||
| 59 | - span: 24 | ||
| 60 | - }, | ||
| 61 | - componentProps: { | ||
| 62 | - valueHtml: '' | 31 | + { |
| 32 | + title: t('common.status'), | ||
| 33 | + field: 'status', | ||
| 34 | + dictType: DICT_TYPE.COMMON_STATUS, | ||
| 35 | + isSearch: true | ||
| 36 | + }, | ||
| 37 | + { | ||
| 38 | + title: '公告内容', | ||
| 39 | + field: 'content', | ||
| 40 | + form: { | ||
| 41 | + component: 'Editor', | ||
| 42 | + colProps: { | ||
| 43 | + span: 24 | ||
| 44 | + }, | ||
| 45 | + componentProps: { | ||
| 46 | + valueHtml: '' | ||
| 47 | + } | ||
| 63 | } | 48 | } |
| 64 | - } | ||
| 65 | - }, | ||
| 66 | - { | ||
| 67 | - label: t('common.createTime'), | ||
| 68 | - field: 'createTime', | ||
| 69 | - form: { | ||
| 70 | - show: false | ||
| 71 | - } | ||
| 72 | - }, | ||
| 73 | - { | ||
| 74 | - label: t('table.action'), | ||
| 75 | - field: 'action', | ||
| 76 | - width: '240px', | ||
| 77 | - form: { | ||
| 78 | - show: false | ||
| 79 | }, | 49 | }, |
| 80 | - detail: { | ||
| 81 | - show: false | 50 | + { |
| 51 | + title: t('common.createTime'), | ||
| 52 | + field: 'createTime', | ||
| 53 | + formatter: 'formatDate', | ||
| 54 | + isForm: false | ||
| 82 | } | 55 | } |
| 83 | - } | ||
| 84 | -]) | ||
| 85 | -export const { allSchemas } = useCrudSchemas(crudSchemas) | 56 | + ] |
| 57 | +}) | ||
| 58 | +export const { allSchemas } = useVxeCrudSchemas(crudSchemas) |
yudao-ui-admin-vue3/src/views/system/post/index.vue
| 1 | <template> | 1 | <template> |
| 2 | <ContentWrap> | 2 | <ContentWrap> |
| 3 | + <!-- 列表 --> | ||
| 3 | <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> | 4 | <vxe-grid ref="xGrid" v-bind="gridOptions" class="xtable-scrollbar"> |
| 5 | + <!-- 操作:新增 --> | ||
| 4 | <template #toolbar_buttons> | 6 | <template #toolbar_buttons> |
| 5 | <XButton | 7 | <XButton |
| 6 | type="primary" | 8 | type="primary" |
| @@ -10,22 +12,22 @@ | @@ -10,22 +12,22 @@ | ||
| 10 | @click="handleCreate()" | 12 | @click="handleCreate()" |
| 11 | /> | 13 | /> |
| 12 | </template> | 14 | </template> |
| 13 | - <template #status_default="{ row }"> | ||
| 14 | - <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" /> | ||
| 15 | - </template> | ||
| 16 | - <template #action_default="{ row }"> | 15 | + <template #actionbtns_default="{ row }"> |
| 16 | + <!-- 操作:修改 --> | ||
| 17 | <XTextButton | 17 | <XTextButton |
| 18 | preIcon="ep:edit" | 18 | preIcon="ep:edit" |
| 19 | :title="t('action.edit')" | 19 | :title="t('action.edit')" |
| 20 | v-hasPermi="['system:post:update']" | 20 | v-hasPermi="['system:post:update']" |
| 21 | @click="handleUpdate(row.id)" | 21 | @click="handleUpdate(row.id)" |
| 22 | /> | 22 | /> |
| 23 | + <!-- 操作:详情 --> | ||
| 23 | <XTextButton | 24 | <XTextButton |
| 24 | preIcon="ep:view" | 25 | preIcon="ep:view" |
| 25 | :title="t('action.detail')" | 26 | :title="t('action.detail')" |
| 26 | v-hasPermi="['system:post:update']" | 27 | v-hasPermi="['system:post:update']" |
| 27 | @click="handleDetail(row)" | 28 | @click="handleDetail(row)" |
| 28 | /> | 29 | /> |
| 30 | + <!-- 操作:删除 --> | ||
| 29 | <XTextButton | 31 | <XTextButton |
| 30 | preIcon="ep:delete" | 32 | preIcon="ep:delete" |
| 31 | :title="t('action.del')" | 33 | :title="t('action.del')" |
| @@ -35,29 +37,25 @@ | @@ -35,29 +37,25 @@ | ||
| 35 | </template> | 37 | </template> |
| 36 | </vxe-grid> | 38 | </vxe-grid> |
| 37 | </ContentWrap> | 39 | </ContentWrap> |
| 40 | + <!-- 弹窗 --> | ||
| 38 | <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle"> | 41 | <XModal id="postModel" v-model="dialogVisible" :title="dialogTitle"> |
| 39 | <template #default> | 42 | <template #default> |
| 40 | - <!-- 对话框(添加 / 修改) --> | 43 | + <!-- 表单:添加/修改 --> |
| 41 | <Form | 44 | <Form |
| 42 | v-if="['create', 'update'].includes(actionType)" | 45 | v-if="['create', 'update'].includes(actionType)" |
| 43 | :schema="allSchemas.formSchema" | 46 | :schema="allSchemas.formSchema" |
| 44 | :rules="rules" | 47 | :rules="rules" |
| 45 | ref="formRef" | 48 | ref="formRef" |
| 46 | /> | 49 | /> |
| 50 | + <!-- 表单:详情 --> | ||
| 47 | <Descriptions | 51 | <Descriptions |
| 48 | v-if="actionType === 'detail'" | 52 | v-if="actionType === 'detail'" |
| 49 | :schema="allSchemas.detailSchema" | 53 | :schema="allSchemas.detailSchema" |
| 50 | :data="detailRef" | 54 | :data="detailRef" |
| 51 | - > | ||
| 52 | - <template #status="{ row }"> | ||
| 53 | - <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" /> | ||
| 54 | - </template> | ||
| 55 | - <template #createTime="{ row }"> | ||
| 56 | - <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span> | ||
| 57 | - </template> | ||
| 58 | - </Descriptions> | 55 | + /> |
| 59 | </template> | 56 | </template> |
| 60 | <template #footer> | 57 | <template #footer> |
| 58 | + <!-- 按钮:保存 --> | ||
| 61 | <XButton | 59 | <XButton |
| 62 | v-if="['create', 'update'].includes(actionType)" | 60 | v-if="['create', 'update'].includes(actionType)" |
| 63 | type="primary" | 61 | type="primary" |
| @@ -65,38 +63,40 @@ | @@ -65,38 +63,40 @@ | ||
| 65 | :loading="actionLoading" | 63 | :loading="actionLoading" |
| 66 | @click="submitForm" | 64 | @click="submitForm" |
| 67 | /> | 65 | /> |
| 66 | + <!-- 按钮:关闭 --> | ||
| 68 | <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" /> | 67 | <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" /> |
| 69 | </template> | 68 | </template> |
| 70 | </XModal> | 69 | </XModal> |
| 71 | </template> | 70 | </template> |
| 72 | <script setup lang="ts"> | 71 | <script setup lang="ts"> |
| 72 | +// 全局相关的 import | ||
| 73 | import { ref, unref } from 'vue' | 73 | import { ref, unref } from 'vue' |
| 74 | -import dayjs from 'dayjs' | ||
| 75 | -import { DICT_TYPE } from '@/utils/dict' | ||
| 76 | -import * as PostApi from '@/api/system/post' | ||
| 77 | -import { PostVO } from '@/api/system/post/types' | ||
| 78 | -import { rules, allSchemas } from './post.data' | ||
| 79 | import { useI18n } from '@/hooks/web/useI18n' | 74 | import { useI18n } from '@/hooks/web/useI18n' |
| 80 | import { useMessage } from '@/hooks/web/useMessage' | 75 | import { useMessage } from '@/hooks/web/useMessage' |
| 81 | import { useVxeGrid } from '@/hooks/web/useVxeGrid' | 76 | import { useVxeGrid } from '@/hooks/web/useVxeGrid' |
| 82 | import { VxeGridInstance } from 'vxe-table' | 77 | import { VxeGridInstance } from 'vxe-table' |
| 83 | import { FormExpose } from '@/components/Form' | 78 | import { FormExpose } from '@/components/Form' |
| 79 | +// 业务相关的 import | ||
| 80 | +import * as PostApi from '@/api/system/post' | ||
| 81 | +import { PostVO } from '@/api/system/post/types' | ||
| 82 | +import { rules, allSchemas } from './post.data' | ||
| 84 | 83 | ||
| 85 | const { t } = useI18n() // 国际化 | 84 | const { t } = useI18n() // 国际化 |
| 86 | const message = useMessage() // 消息弹窗 | 85 | const message = useMessage() // 消息弹窗 |
| 86 | +// 列表相关的变量 | ||
| 87 | +const xGrid = ref<VxeGridInstance>() // 列表 Grid Ref | ||
| 88 | +const { gridOptions } = useVxeGrid<PostVO>({ | ||
| 89 | + allSchemas: allSchemas, | ||
| 90 | + getListApi: PostApi.getPostPageApi | ||
| 91 | +}) | ||
| 92 | +// 弹窗相关的变量 | ||
| 87 | const dialogVisible = ref(false) // 是否显示弹出层 | 93 | const dialogVisible = ref(false) // 是否显示弹出层 |
| 88 | const dialogTitle = ref('edit') // 弹出层标题 | 94 | const dialogTitle = ref('edit') // 弹出层标题 |
| 89 | const actionType = ref('') // 操作按钮的类型 | 95 | const actionType = ref('') // 操作按钮的类型 |
| 90 | -const actionLoading = ref(false) // 按钮Loading | ||
| 91 | -const xGrid = ref<VxeGridInstance>() // grid Ref | 96 | +const actionLoading = ref(false) // 按钮 Loading |
| 92 | const formRef = ref<FormExpose>() // 表单 Ref | 97 | const formRef = ref<FormExpose>() // 表单 Ref |
| 93 | const detailRef = ref() // 详情 Ref | 98 | const detailRef = ref() // 详情 Ref |
| 94 | 99 | ||
| 95 | -const { gridOptions } = useVxeGrid<PostVO>({ | ||
| 96 | - allSchemas: allSchemas, | ||
| 97 | - getListApi: PostApi.getPostPageApi | ||
| 98 | -}) | ||
| 99 | - | ||
| 100 | // 设置标题 | 100 | // 设置标题 |
| 101 | const setDialogTile = (type: string) => { | 101 | const setDialogTile = (type: string) => { |
| 102 | dialogTitle.value = t('action.' + type) | 102 | dialogTitle.value = t('action.' + type) |
| @@ -111,12 +111,6 @@ const handleCreate = () => { | @@ -111,12 +111,6 @@ const handleCreate = () => { | ||
| 111 | unref(formRef)?.getElFormRef()?.resetFields() | 111 | unref(formRef)?.getElFormRef()?.resetFields() |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | -// 详情操作 | ||
| 115 | -const handleDetail = (row: PostVO) => { | ||
| 116 | - setDialogTile('detail') | ||
| 117 | - detailRef.value = row | ||
| 118 | -} | ||
| 119 | - | ||
| 120 | // 修改操作 | 114 | // 修改操作 |
| 121 | const handleUpdate = async (rowId: number) => { | 115 | const handleUpdate = async (rowId: number) => { |
| 122 | setDialogTile('update') | 116 | setDialogTile('update') |
| @@ -125,6 +119,13 @@ const handleUpdate = async (rowId: number) => { | @@ -125,6 +119,13 @@ const handleUpdate = async (rowId: number) => { | ||
| 125 | unref(formRef)?.setValues(res) | 119 | unref(formRef)?.setValues(res) |
| 126 | } | 120 | } |
| 127 | 121 | ||
| 122 | +// 详情操作 | ||
| 123 | +const handleDetail = (row: PostVO) => { | ||
| 124 | + setDialogTile('detail') | ||
| 125 | + // TODO @星语:要不读取下后端? | ||
| 126 | + detailRef.value = row | ||
| 127 | +} | ||
| 128 | + | ||
| 128 | // 删除操作 | 129 | // 删除操作 |
| 129 | const handleDelete = async (rowId: number) => { | 130 | const handleDelete = async (rowId: number) => { |
| 130 | message | 131 | message |
| @@ -134,14 +135,16 @@ const handleDelete = async (rowId: number) => { | @@ -134,14 +135,16 @@ const handleDelete = async (rowId: number) => { | ||
| 134 | message.success(t('common.delSuccess')) | 135 | message.success(t('common.delSuccess')) |
| 135 | }) | 136 | }) |
| 136 | .finally(() => { | 137 | .finally(() => { |
| 138 | + // 刷新列表 | ||
| 137 | xGrid.value?.commitProxy('query') | 139 | xGrid.value?.commitProxy('query') |
| 138 | }) | 140 | }) |
| 139 | } | 141 | } |
| 140 | 142 | ||
| 141 | -// 提交按钮 | 143 | +// 提交新增/修改的表单 |
| 142 | const submitForm = async () => { | 144 | const submitForm = async () => { |
| 143 | const elForm = unref(formRef)?.getElFormRef() | 145 | const elForm = unref(formRef)?.getElFormRef() |
| 144 | if (!elForm) return | 146 | if (!elForm) return |
| 147 | + // TODO @星语:这个告警,要不要解决下? | ||
| 145 | elForm.validate(async (valid) => { | 148 | elForm.validate(async (valid) => { |
| 146 | if (valid) { | 149 | if (valid) { |
| 147 | actionLoading.value = true | 150 | actionLoading.value = true |
| @@ -158,6 +161,7 @@ const submitForm = async () => { | @@ -158,6 +161,7 @@ const submitForm = async () => { | ||
| 158 | dialogVisible.value = false | 161 | dialogVisible.value = false |
| 159 | } finally { | 162 | } finally { |
| 160 | actionLoading.value = false | 163 | actionLoading.value = false |
| 164 | + // 刷新列表 | ||
| 161 | xGrid.value?.commitProxy('query') | 165 | xGrid.value?.commitProxy('query') |
| 162 | } | 166 | } |
| 163 | } | 167 | } |
yudao-ui-admin-vue3/src/views/system/post/post.data.ts
| @@ -13,79 +13,42 @@ export const rules = reactive({ | @@ -13,79 +13,42 @@ export const rules = reactive({ | ||
| 13 | }) | 13 | }) |
| 14 | 14 | ||
| 15 | // CrudSchema | 15 | // CrudSchema |
| 16 | -const crudSchemas = reactive<VxeCrudSchema[]>([ | ||
| 17 | - { | ||
| 18 | - title: t('common.index'), | ||
| 19 | - field: 'id', | ||
| 20 | - type: 'seq', | ||
| 21 | - form: { | ||
| 22 | - show: false | 16 | +const crudSchemas = reactive<VxeCrudSchema>({ |
| 17 | + primaryKey: 'id', | ||
| 18 | + primaryType: 'seq', | ||
| 19 | + action: true, | ||
| 20 | + columns: [ | ||
| 21 | + { | ||
| 22 | + title: '岗位名称', | ||
| 23 | + field: 'name', | ||
| 24 | + isSearch: true | ||
| 23 | }, | 25 | }, |
| 24 | - detail: { | ||
| 25 | - show: false | ||
| 26 | - } | ||
| 27 | - }, | ||
| 28 | - { | ||
| 29 | - title: '岗位名称', | ||
| 30 | - field: 'name', | ||
| 31 | - search: { | ||
| 32 | - show: true | ||
| 33 | - } | ||
| 34 | - }, | ||
| 35 | - { | ||
| 36 | - title: '岗位编码', | ||
| 37 | - field: 'code', | ||
| 38 | - search: { | ||
| 39 | - show: true | ||
| 40 | - } | ||
| 41 | - }, | ||
| 42 | - { | ||
| 43 | - title: '岗位顺序', | ||
| 44 | - field: 'sort' | ||
| 45 | - }, | ||
| 46 | - { | ||
| 47 | - title: t('common.status'), | ||
| 48 | - field: 'status', | ||
| 49 | - dictType: DICT_TYPE.COMMON_STATUS, | ||
| 50 | - table: { | ||
| 51 | - slots: { | ||
| 52 | - default: 'status_default' | ||
| 53 | - } | 26 | + { |
| 27 | + title: '岗位编码', | ||
| 28 | + field: 'code', | ||
| 29 | + isSearch: true | ||
| 54 | }, | 30 | }, |
| 55 | - search: { | ||
| 56 | - show: true | ||
| 57 | - } | ||
| 58 | - }, | ||
| 59 | - { | ||
| 60 | - title: '备注', | ||
| 61 | - field: 'remark', | ||
| 62 | - table: { | ||
| 63 | - show: false | ||
| 64 | - } | ||
| 65 | - }, | ||
| 66 | - { | ||
| 67 | - title: t('common.createTime'), | ||
| 68 | - field: 'createTime', | ||
| 69 | - formatter: 'formatDate', | ||
| 70 | - form: { | ||
| 71 | - show: false | ||
| 72 | - } | ||
| 73 | - }, | ||
| 74 | - { | ||
| 75 | - title: t('table.action'), | ||
| 76 | - field: 'action', | ||
| 77 | - table: { | ||
| 78 | - width: '240px', | ||
| 79 | - slots: { | ||
| 80 | - default: 'action_default' | ||
| 81 | - } | 31 | + { |
| 32 | + title: '岗位顺序', | ||
| 33 | + field: 'sort' | ||
| 82 | }, | 34 | }, |
| 83 | - form: { | ||
| 84 | - show: false | 35 | + { |
| 36 | + title: t('common.status'), | ||
| 37 | + field: 'status', | ||
| 38 | + dictType: DICT_TYPE.COMMON_STATUS, | ||
| 39 | + isSearch: true | ||
| 85 | }, | 40 | }, |
| 86 | - detail: { | ||
| 87 | - show: false | 41 | + { |
| 42 | + title: '备注', | ||
| 43 | + field: 'remark', | ||
| 44 | + isTable: false | ||
| 45 | + }, | ||
| 46 | + { | ||
| 47 | + title: t('common.createTime'), | ||
| 48 | + field: 'createTime', | ||
| 49 | + formatter: 'formatDate', | ||
| 50 | + isForm: false | ||
| 88 | } | 51 | } |
| 89 | - } | ||
| 90 | -]) | 52 | + ] |
| 53 | +}) | ||
| 91 | export const { allSchemas } = useVxeCrudSchemas(crudSchemas) | 54 | export const { allSchemas } = useVxeCrudSchemas(crudSchemas) |