Merge branch 'dev_20241202_xukangle' into develop
Showing
23 changed files
with
4043 additions
and
845 deletions
| ... | @@ -3,7 +3,7 @@ VITE_APP_TITLE = 数据资产管理系统 | ... | @@ -3,7 +3,7 @@ VITE_APP_TITLE = 数据资产管理系统 |
| 3 | # 接口域名 | 3 | # 接口域名 |
| 4 | # VITE_API_BASEURL = https://www.zgsjzc.com/api | 4 | # VITE_API_BASEURL = https://www.zgsjzc.com/api |
| 5 | # VITE_API_BASEURL = https://swzl-test.csbr.cn/api | 5 | # VITE_API_BASEURL = https://swzl-test.csbr.cn/api |
| 6 | # VITE_API_BASEURL = http://10.4.82.30:8052/ | 6 | # VITE_API_BASEURL = http://localhost:9000 |
| 7 | VITE_API_BASEURL = http://10.4.82.1:28052/ | 7 | VITE_API_BASEURL = http://10.4.82.1:28052/ |
| 8 | # 平台用户 接口请地址 | 8 | # 平台用户 接口请地址 |
| 9 | VITE_APP_USER_API_BASEURL = gateway-server/user | 9 | VITE_APP_USER_API_BASEURL = gateway-server/user |
| ... | @@ -24,10 +24,10 @@ VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service | ... | @@ -24,10 +24,10 @@ VITE_APP_PLAN_BASEURL = ms-daop-jgjf-data-plan-service |
| 24 | #数据质量接口地址 | 24 | #数据质量接口地址 |
| 25 | VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service | 25 | VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service |
| 26 | 26 | ||
| 27 | #数据盘点接口地址 | 27 | #数据盘点接口地址ms-daop-zcgl-data-inventory |
| 28 | # VITE_APP_CHECK_BASEURL = /mock | ||
| 28 | VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory | 29 | VITE_APP_CHECK_BASEURL = ms-daop-zcgl-data-inventory |
| 29 | 30 | ||
| 30 | |||
| 31 | #门户接口 | 31 | #门户接口 |
| 32 | VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal | 32 | VITE_API_PORTALURL = https://swzl-test.zgsjzc.com/portal |
| 33 | 33 | ... | ... |
| ... | @@ -54,7 +54,6 @@ declare module '@vue/runtime-core' { | ... | @@ -54,7 +54,6 @@ declare module '@vue/runtime-core' { |
| 54 | Table_tools: typeof import('./src/components/Tools/table_tools.vue')['default'] | 54 | Table_tools: typeof import('./src/components/Tools/table_tools.vue')['default'] |
| 55 | Table_v2: typeof import('./src/components/Table/table_v2.vue')['default'] | 55 | Table_v2: typeof import('./src/components/Table/table_v2.vue')['default'] |
| 56 | Tabs: typeof import('./src/components/Tabs/index.vue')['default'] | 56 | Tabs: typeof import('./src/components/Tabs/index.vue')['default'] |
| 57 | TemplateItem: typeof import('./src/components/TemplateItem/index.vue')['default'] | ||
| 58 | Toolbar: typeof import('./src/components/LineageGraph/toolbar.vue')['default'] | 57 | Toolbar: typeof import('./src/components/LineageGraph/toolbar.vue')['default'] |
| 59 | Topbar: typeof import('./src/components/LineageGraph/topbar.vue')['default'] | 58 | Topbar: typeof import('./src/components/LineageGraph/topbar.vue')['default'] |
| 60 | Transfer: typeof import('./src/components/Transfer/index.vue')['default'] | 59 | Transfer: typeof import('./src/components/Transfer/index.vue')['default'] | ... | ... |
| ... | @@ -35,7 +35,6 @@ | ... | @@ -35,7 +35,6 @@ |
| 35 | "lodash-es": "^4.17.21", | 35 | "lodash-es": "^4.17.21", |
| 36 | "md5": "^2.3.0", | 36 | "md5": "^2.3.0", |
| 37 | "mitt": "^3.0.0", | 37 | "mitt": "^3.0.0", |
| 38 | "mockjs": "^1.1.0", | ||
| 39 | "moment": "^2.29.4", | 38 | "moment": "^2.29.4", |
| 40 | "nprogress": "^0.2.0", | 39 | "nprogress": "^0.2.0", |
| 41 | "path-browserify": "^1.0.1", | 40 | "path-browserify": "^1.0.1", |
| ... | @@ -67,6 +66,7 @@ | ... | @@ -67,6 +66,7 @@ |
| 67 | "fs-extra": "^11.1.1", | 66 | "fs-extra": "^11.1.1", |
| 68 | "http-server": "^14.1.1", | 67 | "http-server": "^14.1.1", |
| 69 | "lint-staged": "^13.2.2", | 68 | "lint-staged": "^13.2.2", |
| 69 | "mockjs": "^1.1.0", | ||
| 70 | "npm-run-all": "^4.1.5", | 70 | "npm-run-all": "^4.1.5", |
| 71 | "plop": "^3.1.2", | 71 | "plop": "^3.1.2", |
| 72 | "postcss-html": "^1.5.0", | 72 | "postcss-html": "^1.5.0", | ... | ... |
| ... | @@ -13,22 +13,22 @@ importers: | ... | @@ -13,22 +13,22 @@ importers: |
| 13 | version: 4.8.24 | 13 | version: 4.8.24 |
| 14 | '@antv/s2': | 14 | '@antv/s2': |
| 15 | specifier: ^1.48.0 | 15 | specifier: ^1.48.0 |
| 16 | version: 1.56.0(@antv/g-base@0.4.7) | 16 | version: 1.56.0(@antv/g-base@0.5.16) |
| 17 | '@antv/s2-vue': | 17 | '@antv/s2-vue': |
| 18 | specifier: ^1.5.0 | 18 | specifier: ^1.5.0 |
| 19 | version: 1.7.1(@antv/s2@1.56.0)(ant-design-vue@3.2.20)(vue@3.5.13) | 19 | version: 1.7.1(@antv/s2@1.56.0(@antv/g-base@0.5.16))(ant-design-vue@3.2.20(vue@3.5.13(typescript@5.7.2)))(vue@3.5.13(typescript@5.7.2)) |
| 20 | '@vueuse/core': | 20 | '@vueuse/core': |
| 21 | specifier: ^10.1.0 | 21 | specifier: ^10.1.0 |
| 22 | version: 10.11.1(vue@3.5.13) | 22 | version: 10.11.1(vue@3.5.13(typescript@5.7.2)) |
| 23 | '@vueuse/integrations': | 23 | '@vueuse/integrations': |
| 24 | specifier: ^10.1.0 | 24 | specifier: ^10.1.0 |
| 25 | version: 10.11.1(axios@1.7.7)(nprogress@0.2.0)(sortablejs@1.15.4)(vue@3.5.13) | 25 | version: 10.11.1(async-validator@4.2.5)(axios@1.7.7)(change-case@4.1.2)(nprogress@0.2.0)(sortablejs@1.15.4)(vue@3.5.13(typescript@5.7.2)) |
| 26 | '@wangeditor/editor': | 26 | '@wangeditor/editor': |
| 27 | specifier: ^5.1.23 | 27 | specifier: ^5.1.23 |
| 28 | version: 5.1.23 | 28 | version: 5.1.23 |
| 29 | '@wangeditor/editor-for-vue': | 29 | '@wangeditor/editor-for-vue': |
| 30 | specifier: ^5.1.12 | 30 | specifier: ^5.1.12 |
| 31 | version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13) | 31 | version: 5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13(typescript@5.7.2)) |
| 32 | axios: | 32 | axios: |
| 33 | specifier: ^1.4.0 | 33 | specifier: ^1.4.0 |
| 34 | version: 1.7.7 | 34 | version: 1.7.7 |
| ... | @@ -43,7 +43,7 @@ importers: | ... | @@ -43,7 +43,7 @@ importers: |
| 43 | version: 5.5.1 | 43 | version: 5.5.1 |
| 44 | element-plus: | 44 | element-plus: |
| 45 | specifier: ^2.5.2 | 45 | specifier: ^2.5.2 |
| 46 | version: 2.8.8(vue@3.5.13) | 46 | version: 2.8.8(vue@3.5.13(typescript@5.7.2)) |
| 47 | eruda: | 47 | eruda: |
| 48 | specifier: ^3.0.0 | 48 | specifier: ^3.0.0 |
| 49 | version: 3.4.1 | 49 | version: 3.4.1 |
| ... | @@ -68,9 +68,6 @@ importers: | ... | @@ -68,9 +68,6 @@ importers: |
| 68 | mitt: | 68 | mitt: |
| 69 | specifier: ^3.0.0 | 69 | specifier: ^3.0.0 |
| 70 | version: 3.0.1 | 70 | version: 3.0.1 |
| 71 | mockjs: | ||
| 72 | specifier: ^1.1.0 | ||
| 73 | version: 1.1.0 | ||
| 74 | moment: | 71 | moment: |
| 75 | specifier: ^2.29.4 | 72 | specifier: ^2.29.4 |
| 76 | version: 2.30.1 | 73 | version: 2.30.1 |
| ... | @@ -85,7 +82,7 @@ importers: | ... | @@ -85,7 +82,7 @@ importers: |
| 85 | version: 6.3.0 | 82 | version: 6.3.0 |
| 86 | pinia: | 83 | pinia: |
| 87 | specifier: ^2.0.35 | 84 | specifier: ^2.0.35 |
| 88 | version: 2.2.6(typescript@5.7.2)(vue@3.5.13) | 85 | version: 2.2.6(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)) |
| 89 | pinyin-pro: | 86 | pinyin-pro: |
| 90 | specifier: ^3.24.2 | 87 | specifier: ^3.24.2 |
| 91 | version: 3.26.0 | 88 | version: 3.26.0 |
| ... | @@ -97,13 +94,13 @@ importers: | ... | @@ -97,13 +94,13 @@ importers: |
| 97 | version: 1.15.4 | 94 | version: 1.15.4 |
| 98 | vant: | 95 | vant: |
| 99 | specifier: ^4.9.8 | 96 | specifier: ^4.9.8 |
| 100 | version: 4.9.9(vue@3.5.13) | 97 | version: 4.9.9(vue@3.5.13(typescript@5.7.2)) |
| 101 | vue: | 98 | vue: |
| 102 | specifier: ^3.2.47 | 99 | specifier: ^3.2.47 |
| 103 | version: 3.5.13(typescript@5.7.2) | 100 | version: 3.5.13(typescript@5.7.2) |
| 104 | vue-router: | 101 | vue-router: |
| 105 | specifier: ^4.1.6 | 102 | specifier: ^4.1.6 |
| 106 | version: 4.4.5(vue@3.5.13) | 103 | version: 4.4.5(vue@3.5.13(typescript@5.7.2)) |
| 107 | xlsx: | 104 | xlsx: |
| 108 | specifier: ^0.18.5 | 105 | specifier: ^0.18.5 |
| 109 | version: 0.18.5 | 106 | version: 0.18.5 |
| ... | @@ -119,7 +116,7 @@ importers: | ... | @@ -119,7 +116,7 @@ importers: |
| 119 | version: 1.2.1 | 116 | version: 1.2.1 |
| 120 | '@iconify/vue': | 117 | '@iconify/vue': |
| 121 | specifier: ^4.1.1 | 118 | specifier: ^4.1.1 |
| 122 | version: 4.1.2(vue@3.5.13) | 119 | version: 4.1.2(vue@3.5.13(typescript@5.7.2)) |
| 123 | '@types/md5': | 120 | '@types/md5': |
| 124 | specifier: ^2.3.2 | 121 | specifier: ^2.3.2 |
| 125 | version: 2.3.5 | 122 | version: 2.3.5 |
| ... | @@ -137,13 +134,13 @@ importers: | ... | @@ -137,13 +134,13 @@ importers: |
| 137 | version: 1.2.1 | 134 | version: 1.2.1 |
| 138 | '@vitejs/plugin-vue': | 135 | '@vitejs/plugin-vue': |
| 139 | specifier: ^4.2.1 | 136 | specifier: ^4.2.1 |
| 140 | version: 4.6.2(vite@4.5.5)(vue@3.5.13) | 137 | version: 4.6.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.7.2)) |
| 141 | '@vitejs/plugin-vue-jsx': | 138 | '@vitejs/plugin-vue-jsx': |
| 142 | specifier: ^3.0.1 | 139 | specifier: ^3.0.1 |
| 143 | version: 3.1.0(vite@4.5.5)(vue@3.5.13) | 140 | version: 3.1.0(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.7.2)) |
| 144 | autoprefixer: | 141 | autoprefixer: |
| 145 | specifier: ^10.4.14 | 142 | specifier: ^10.4.14 |
| 146 | version: 10.4.20(postcss@8.4.49) | 143 | version: 10.4.20(postcss@5.2.18) |
| 147 | eslint: | 144 | eslint: |
| 148 | specifier: ^8.39.0 | 145 | specifier: ^8.39.0 |
| 149 | version: 8.57.1 | 146 | version: 8.57.1 |
| ... | @@ -159,6 +156,9 @@ importers: | ... | @@ -159,6 +156,9 @@ importers: |
| 159 | lint-staged: | 156 | lint-staged: |
| 160 | specifier: ^13.2.2 | 157 | specifier: ^13.2.2 |
| 161 | version: 13.3.0 | 158 | version: 13.3.0 |
| 159 | mockjs: | ||
| 160 | specifier: ^1.1.0 | ||
| 161 | version: 1.1.0 | ||
| 162 | npm-run-all: | 162 | npm-run-all: |
| 163 | specifier: ^4.1.5 | 163 | specifier: ^4.1.5 |
| 164 | version: 4.1.5 | 164 | version: 4.1.5 |
| ... | @@ -179,19 +179,19 @@ importers: | ... | @@ -179,19 +179,19 @@ importers: |
| 179 | version: 15.11.0(typescript@5.7.2) | 179 | version: 15.11.0(typescript@5.7.2) |
| 180 | stylelint-config-standard: | 180 | stylelint-config-standard: |
| 181 | specifier: ^33.0.0 | 181 | specifier: ^33.0.0 |
| 182 | version: 33.0.0(stylelint@15.11.0) | 182 | version: 33.0.0(stylelint@15.11.0(typescript@5.7.2)) |
| 183 | stylelint-config-standard-scss: | 183 | stylelint-config-standard-scss: |
| 184 | specifier: ^9.0.0 | 184 | specifier: ^9.0.0 |
| 185 | version: 9.0.0(postcss@8.4.49)(stylelint@15.11.0) | 185 | version: 9.0.0(postcss@5.2.18)(stylelint@15.11.0(typescript@5.7.2)) |
| 186 | stylelint-config-standard-vue: | 186 | stylelint-config-standard-vue: |
| 187 | specifier: ^1.0.0 | 187 | specifier: ^1.0.0 |
| 188 | version: 1.0.0(postcss-html@1.7.0)(stylelint@15.11.0) | 188 | version: 1.0.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)) |
| 189 | stylelint-scss: | 189 | stylelint-scss: |
| 190 | specifier: ^5.0.0 | 190 | specifier: ^5.0.0 |
| 191 | version: 5.3.2(stylelint@15.11.0) | 191 | version: 5.3.2(stylelint@15.11.0(typescript@5.7.2)) |
| 192 | stylelint-stylistic: | 192 | stylelint-stylistic: |
| 193 | specifier: ^0.4.0 | 193 | specifier: ^0.4.0 |
| 194 | version: 0.4.5(stylelint@15.11.0) | 194 | version: 0.4.5(stylelint@15.11.0(typescript@5.7.2)) |
| 195 | svgo: | 195 | svgo: |
| 196 | specifier: ^3.0.2 | 196 | specifier: ^3.0.2 |
| 197 | version: 3.3.2 | 197 | version: 3.3.2 |
| ... | @@ -203,40 +203,40 @@ importers: | ... | @@ -203,40 +203,40 @@ importers: |
| 203 | version: 5.7.2 | 203 | version: 5.7.2 |
| 204 | unplugin-auto-import: | 204 | unplugin-auto-import: |
| 205 | specifier: ^0.15.3 | 205 | specifier: ^0.15.3 |
| 206 | version: 0.15.3(@vueuse/core@10.11.1) | 206 | version: 0.15.3(@vueuse/core@10.11.1(vue@3.5.13(typescript@5.7.2)))(rollup@3.29.5) |
| 207 | unplugin-vue-components: | 207 | unplugin-vue-components: |
| 208 | specifier: ^0.24.1 | 208 | specifier: ^0.24.1 |
| 209 | version: 0.24.1(vue@3.5.13) | 209 | version: 0.24.1(@babel/parser@7.26.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.7.2)) |
| 210 | unplugin-vue-setup-extend-plus: | 210 | unplugin-vue-setup-extend-plus: |
| 211 | specifier: ^1.0.0 | 211 | specifier: ^1.0.0 |
| 212 | version: 1.0.1 | 212 | version: 1.0.1 |
| 213 | vite: | 213 | vite: |
| 214 | specifier: ^4.3.3 | 214 | specifier: ^4.3.3 |
| 215 | version: 4.5.5(sass@1.81.0)(terser@5.36.0) | 215 | version: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 216 | vite-plugin-banner: | 216 | vite-plugin-banner: |
| 217 | specifier: ^0.7.0 | 217 | specifier: ^0.7.0 |
| 218 | version: 0.7.1 | 218 | version: 0.7.1 |
| 219 | vite-plugin-compression: | 219 | vite-plugin-compression: |
| 220 | specifier: ^0.5.1 | 220 | specifier: ^0.5.1 |
| 221 | version: 0.5.1(vite@4.5.5) | 221 | version: 0.5.1(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)) |
| 222 | vite-plugin-mock: | 222 | vite-plugin-mock: |
| 223 | specifier: ^2.9.8 | 223 | specifier: ^2.9.8 |
| 224 | version: 2.9.8(mockjs@1.1.0)(vite@4.5.5) | 224 | version: 2.9.8(mockjs@1.1.0)(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)) |
| 225 | vite-plugin-pages: | 225 | vite-plugin-pages: |
| 226 | specifier: ^0.29.0 | 226 | specifier: ^0.29.0 |
| 227 | version: 0.29.1(vite@4.5.5) | 227 | version: 0.29.1(@vue/compiler-sfc@3.5.13)(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)) |
| 228 | vite-plugin-spritesmith: | 228 | vite-plugin-spritesmith: |
| 229 | specifier: ^0.1.1 | 229 | specifier: ^0.1.1 |
| 230 | version: 0.1.1 | 230 | version: 0.1.1 |
| 231 | vite-plugin-svg-icons: | 231 | vite-plugin-svg-icons: |
| 232 | specifier: ^2.0.1 | 232 | specifier: ^2.0.1 |
| 233 | version: 2.0.1(vite@4.5.5) | 233 | version: 2.0.1(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)) |
| 234 | vite-plugin-vue-inspector: | 234 | vite-plugin-vue-inspector: |
| 235 | specifier: ^3.4.1 | 235 | specifier: ^3.4.1 |
| 236 | version: 3.7.2(vite@4.5.5) | 236 | version: 3.7.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)) |
| 237 | vite-plugin-vue-meta-layouts: | 237 | vite-plugin-vue-meta-layouts: |
| 238 | specifier: ^0.2.2 | 238 | specifier: ^0.2.2 |
| 239 | version: 0.2.2(vite@4.5.5)(vue-router@4.4.5) | 239 | version: 0.2.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue-router@4.4.5(vue@3.5.13(typescript@5.7.2))) |
| 240 | vue-tsc: | 240 | vue-tsc: |
| 241 | specifier: ^1.6.2 | 241 | specifier: ^1.6.2 |
| 242 | version: 1.8.27(typescript@5.7.2) | 242 | version: 1.8.27(typescript@5.7.2) |
| ... | @@ -294,9 +294,6 @@ packages: | ... | @@ -294,9 +294,6 @@ packages: |
| 294 | '@antv/event-emitter@0.1.3': | 294 | '@antv/event-emitter@0.1.3': |
| 295 | resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} | 295 | resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} |
| 296 | 296 | ||
| 297 | '@antv/g-base@0.4.7': | ||
| 298 | resolution: {integrity: sha512-wKSpS3/M1slU92iOgi2QV4MCd82J1d2PyPcQArqSFRUZU0KnVMIl95v79dG0Be4YvFaZ3bVrT6Ns1Czr8oplhA==} | ||
| 299 | |||
| 300 | '@antv/g-base@0.5.16': | 297 | '@antv/g-base@0.5.16': |
| 301 | resolution: {integrity: sha512-jP06wggTubDPHXoKwFg3/f1lyxBX9ywwN3E/HG74Nd7DXqOXQis8tsIWW+O6dS/h9vyuXLd1/wDWkMMm3ZzXdg==} | 298 | resolution: {integrity: sha512-jP06wggTubDPHXoKwFg3/f1lyxBX9ywwN3E/HG74Nd7DXqOXQis8tsIWW+O6dS/h9vyuXLd1/wDWkMMm3ZzXdg==} |
| 302 | 299 | ||
| ... | @@ -895,9 +892,6 @@ packages: | ... | @@ -895,9 +892,6 @@ packages: |
| 895 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} | 892 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} |
| 896 | engines: {node: '>=10.13.0'} | 893 | engines: {node: '>=10.13.0'} |
| 897 | 894 | ||
| 898 | '@types/d3-timer@1.0.12': | ||
| 899 | resolution: {integrity: sha512-Tv9tkA4y3UvGQnrHyYAQhf5x/297FuYwotS4UW2TpwLblvRahbyL8r9HFYTJLPfPRqS63hwlqRItjKGmKtJxNg==} | ||
| 900 | |||
| 901 | '@types/d3-timer@2.0.3': | 895 | '@types/d3-timer@2.0.3': |
| 902 | resolution: {integrity: sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==} | 896 | resolution: {integrity: sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==} |
| 903 | 897 | ||
| ... | @@ -5476,26 +5470,26 @@ snapshots: | ... | @@ -5476,26 +5470,26 @@ snapshots: |
| 5476 | 5470 | ||
| 5477 | '@ant-design/icons-svg@4.4.2': {} | 5471 | '@ant-design/icons-svg@4.4.2': {} |
| 5478 | 5472 | ||
| 5479 | '@ant-design/icons-vue@6.1.0(vue@3.5.13)': | 5473 | '@ant-design/icons-vue@6.1.0(vue@3.5.13(typescript@5.7.2))': |
| 5480 | dependencies: | 5474 | dependencies: |
| 5481 | '@ant-design/colors': 6.0.0 | 5475 | '@ant-design/colors': 6.0.0 |
| 5482 | '@ant-design/icons-svg': 4.4.2 | 5476 | '@ant-design/icons-svg': 4.4.2 |
| 5483 | vue: 3.5.13(typescript@5.7.2) | 5477 | vue: 3.5.13(typescript@5.7.2) |
| 5484 | 5478 | ||
| 5485 | '@antfu/eslint-config-basic@0.38.6(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2)': | 5479 | '@antfu/eslint-config-basic@0.38.6(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': |
| 5486 | dependencies: | 5480 | dependencies: |
| 5487 | eslint: 8.57.1 | 5481 | eslint: 8.57.1 |
| 5488 | eslint-plugin-antfu: 0.38.6(eslint@8.57.1)(typescript@5.7.2) | 5482 | eslint-plugin-antfu: 0.38.6(eslint@8.57.1)(typescript@5.7.2) |
| 5489 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) | 5483 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) |
| 5490 | eslint-plugin-html: 7.1.0 | 5484 | eslint-plugin-html: 7.1.0 |
| 5491 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) | 5485 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) |
| 5492 | eslint-plugin-jsonc: 2.18.2(eslint@8.57.1) | 5486 | eslint-plugin-jsonc: 2.18.2(eslint@8.57.1) |
| 5493 | eslint-plugin-markdown: 3.0.1(eslint@8.57.1) | 5487 | eslint-plugin-markdown: 3.0.1(eslint@8.57.1) |
| 5494 | eslint-plugin-n: 15.7.0(eslint@8.57.1) | 5488 | eslint-plugin-n: 15.7.0(eslint@8.57.1) |
| 5495 | eslint-plugin-no-only-tests: 3.3.0 | 5489 | eslint-plugin-no-only-tests: 3.3.0 |
| 5496 | eslint-plugin-promise: 6.6.0(eslint@8.57.1) | 5490 | eslint-plugin-promise: 6.6.0(eslint@8.57.1) |
| 5497 | eslint-plugin-unicorn: 46.0.1(eslint@8.57.1) | 5491 | eslint-plugin-unicorn: 46.0.1(eslint@8.57.1) |
| 5498 | eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.1) | 5492 | eslint-plugin-unused-imports: 2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) |
| 5499 | eslint-plugin-yml: 1.15.0(eslint@8.57.1) | 5493 | eslint-plugin-yml: 1.15.0(eslint@8.57.1) |
| 5500 | jsonc-eslint-parser: 2.4.0 | 5494 | jsonc-eslint-parser: 2.4.0 |
| 5501 | yaml-eslint-parser: 1.2.3 | 5495 | yaml-eslint-parser: 1.2.3 |
| ... | @@ -5510,11 +5504,11 @@ snapshots: | ... | @@ -5510,11 +5504,11 @@ snapshots: |
| 5510 | 5504 | ||
| 5511 | '@antfu/eslint-config-ts@0.38.6(eslint@8.57.1)(typescript@5.7.2)': | 5505 | '@antfu/eslint-config-ts@0.38.6(eslint@8.57.1)(typescript@5.7.2)': |
| 5512 | dependencies: | 5506 | dependencies: |
| 5513 | '@antfu/eslint-config-basic': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5507 | '@antfu/eslint-config-basic': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5514 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5508 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5515 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | 5509 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) |
| 5516 | eslint: 8.57.1 | 5510 | eslint: 8.57.1 |
| 5517 | eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5511 | eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5518 | typescript: 5.7.2 | 5512 | typescript: 5.7.2 |
| 5519 | transitivePeerDependencies: | 5513 | transitivePeerDependencies: |
| 5520 | - '@eslint/json' | 5514 | - '@eslint/json' |
| ... | @@ -5523,9 +5517,9 @@ snapshots: | ... | @@ -5523,9 +5517,9 @@ snapshots: |
| 5523 | - jest | 5517 | - jest |
| 5524 | - supports-color | 5518 | - supports-color |
| 5525 | 5519 | ||
| 5526 | '@antfu/eslint-config-vue@0.38.6(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2)': | 5520 | '@antfu/eslint-config-vue@0.38.6(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': |
| 5527 | dependencies: | 5521 | dependencies: |
| 5528 | '@antfu/eslint-config-basic': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5522 | '@antfu/eslint-config-basic': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5529 | '@antfu/eslint-config-ts': 0.38.6(eslint@8.57.1)(typescript@5.7.2) | 5523 | '@antfu/eslint-config-ts': 0.38.6(eslint@8.57.1)(typescript@5.7.2) |
| 5530 | eslint: 8.57.1 | 5524 | eslint: 8.57.1 |
| 5531 | eslint-plugin-vue: 9.31.0(eslint@8.57.1) | 5525 | eslint-plugin-vue: 9.31.0(eslint@8.57.1) |
| ... | @@ -5542,13 +5536,13 @@ snapshots: | ... | @@ -5542,13 +5536,13 @@ snapshots: |
| 5542 | 5536 | ||
| 5543 | '@antfu/eslint-config@0.38.6(eslint@8.57.1)(typescript@5.7.2)': | 5537 | '@antfu/eslint-config@0.38.6(eslint@8.57.1)(typescript@5.7.2)': |
| 5544 | dependencies: | 5538 | dependencies: |
| 5545 | '@antfu/eslint-config-vue': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0)(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5539 | '@antfu/eslint-config-vue': 0.38.6(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5546 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | 5540 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) |
| 5547 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | 5541 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) |
| 5548 | eslint: 8.57.1 | 5542 | eslint: 8.57.1 |
| 5549 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) | 5543 | eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) |
| 5550 | eslint-plugin-html: 7.1.0 | 5544 | eslint-plugin-html: 7.1.0 |
| 5551 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) | 5545 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1) |
| 5552 | eslint-plugin-jsonc: 2.18.2(eslint@8.57.1) | 5546 | eslint-plugin-jsonc: 2.18.2(eslint@8.57.1) |
| 5553 | eslint-plugin-n: 15.7.0(eslint@8.57.1) | 5547 | eslint-plugin-n: 15.7.0(eslint@8.57.1) |
| 5554 | eslint-plugin-promise: 6.6.0(eslint@8.57.1) | 5548 | eslint-plugin-promise: 6.6.0(eslint@8.57.1) |
| ... | @@ -5578,19 +5572,6 @@ snapshots: | ... | @@ -5578,19 +5572,6 @@ snapshots: |
| 5578 | 5572 | ||
| 5579 | '@antv/event-emitter@0.1.3': {} | 5573 | '@antv/event-emitter@0.1.3': {} |
| 5580 | 5574 | ||
| 5581 | '@antv/g-base@0.4.7': | ||
| 5582 | dependencies: | ||
| 5583 | '@antv/event-emitter': 0.1.3 | ||
| 5584 | '@antv/g-math': 0.1.9 | ||
| 5585 | '@antv/matrix-util': 3.1.0-beta.3 | ||
| 5586 | '@antv/path-util': 2.0.15 | ||
| 5587 | '@antv/util': 2.0.17 | ||
| 5588 | '@types/d3-timer': 1.0.12 | ||
| 5589 | d3-ease: 1.0.7 | ||
| 5590 | d3-interpolate: 1.4.0 | ||
| 5591 | d3-timer: 1.0.10 | ||
| 5592 | detect-browser: 5.3.0 | ||
| 5593 | |||
| 5594 | '@antv/g-base@0.5.16': | 5575 | '@antv/g-base@0.5.16': |
| 5595 | dependencies: | 5576 | dependencies: |
| 5596 | '@antv/event-emitter': 0.1.3 | 5577 | '@antv/event-emitter': 0.1.3 |
| ... | @@ -5615,10 +5596,10 @@ snapshots: | ... | @@ -5615,10 +5596,10 @@ snapshots: |
| 5615 | gl-matrix: 3.4.3 | 5596 | gl-matrix: 3.4.3 |
| 5616 | tslib: 2.8.1 | 5597 | tslib: 2.8.1 |
| 5617 | 5598 | ||
| 5618 | '@antv/g-gesture@1.0.1(@antv/g-base@0.4.7)': | 5599 | '@antv/g-gesture@1.0.1(@antv/g-base@0.5.16)': |
| 5619 | dependencies: | 5600 | dependencies: |
| 5620 | '@antv/event-emitter': 0.1.3 | 5601 | '@antv/event-emitter': 0.1.3 |
| 5621 | '@antv/g-base': 0.4.7 | 5602 | '@antv/g-base': 0.5.16 |
| 5622 | d3-ease: 1.0.7 | 5603 | d3-ease: 1.0.7 |
| 5623 | 5604 | ||
| 5624 | '@antv/g-math@0.1.9': | 5605 | '@antv/g-math@0.1.9': |
| ... | @@ -5757,21 +5738,21 @@ snapshots: | ... | @@ -5757,21 +5738,21 @@ snapshots: |
| 5757 | '@antv/util': 2.0.17 | 5738 | '@antv/util': 2.0.17 |
| 5758 | tslib: 2.8.1 | 5739 | tslib: 2.8.1 |
| 5759 | 5740 | ||
| 5760 | '@antv/s2-vue@1.7.1(@antv/s2@1.56.0)(ant-design-vue@3.2.20)(vue@3.5.13)': | 5741 | '@antv/s2-vue@1.7.1(@antv/s2@1.56.0(@antv/g-base@0.5.16))(ant-design-vue@3.2.20(vue@3.5.13(typescript@5.7.2)))(vue@3.5.13(typescript@5.7.2))': |
| 5761 | dependencies: | 5742 | dependencies: |
| 5762 | '@antv/s2': 1.56.0(@antv/g-base@0.4.7) | 5743 | '@antv/s2': 1.56.0(@antv/g-base@0.5.16) |
| 5763 | '@vueuse/core': 10.11.1(vue@3.5.13) | 5744 | '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.2)) |
| 5764 | ant-design-vue: 3.2.20(vue@3.5.13) | 5745 | ant-design-vue: 3.2.20(vue@3.5.13(typescript@5.7.2)) |
| 5765 | lodash: 4.17.21 | 5746 | lodash: 4.17.21 |
| 5766 | vue: 3.5.13(typescript@5.7.2) | 5747 | vue: 3.5.13(typescript@5.7.2) |
| 5767 | transitivePeerDependencies: | 5748 | transitivePeerDependencies: |
| 5768 | - '@vue/composition-api' | 5749 | - '@vue/composition-api' |
| 5769 | 5750 | ||
| 5770 | '@antv/s2@1.56.0(@antv/g-base@0.4.7)': | 5751 | '@antv/s2@1.56.0(@antv/g-base@0.5.16)': |
| 5771 | dependencies: | 5752 | dependencies: |
| 5772 | '@antv/event-emitter': 0.1.3 | 5753 | '@antv/event-emitter': 0.1.3 |
| 5773 | '@antv/g-canvas': 0.5.17 | 5754 | '@antv/g-canvas': 0.5.17 |
| 5774 | '@antv/g-gesture': 1.0.1(@antv/g-base@0.4.7) | 5755 | '@antv/g-gesture': 1.0.1(@antv/g-base@0.5.16) |
| 5775 | d3-interpolate: 1.4.0 | 5756 | d3-interpolate: 1.4.0 |
| 5776 | d3-timer: 1.0.10 | 5757 | d3-timer: 1.0.10 |
| 5777 | decimal.js: 10.4.3 | 5758 | decimal.js: 10.4.3 |
| ... | @@ -5995,7 +5976,7 @@ snapshots: | ... | @@ -5995,7 +5976,7 @@ snapshots: |
| 5995 | 5976 | ||
| 5996 | '@csstools/css-tokenizer@2.4.1': {} | 5977 | '@csstools/css-tokenizer@2.4.1': {} |
| 5997 | 5978 | ||
| 5998 | '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1)(@csstools/css-tokenizer@2.4.1)': | 5979 | '@csstools/media-query-list-parser@2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1)': |
| 5999 | dependencies: | 5980 | dependencies: |
| 6000 | '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) | 5981 | '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) |
| 6001 | '@csstools/css-tokenizer': 2.4.1 | 5982 | '@csstools/css-tokenizer': 2.4.1 |
| ... | @@ -6006,7 +5987,7 @@ snapshots: | ... | @@ -6006,7 +5987,7 @@ snapshots: |
| 6006 | 5987 | ||
| 6007 | '@ctrl/tinycolor@3.6.1': {} | 5988 | '@ctrl/tinycolor@3.6.1': {} |
| 6008 | 5989 | ||
| 6009 | '@element-plus/icons-vue@2.3.1(vue@3.5.13)': | 5990 | '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@5.7.2))': |
| 6010 | dependencies: | 5991 | dependencies: |
| 6011 | vue: 3.5.13(typescript@5.7.2) | 5992 | vue: 3.5.13(typescript@5.7.2) |
| 6012 | 5993 | ||
| ... | @@ -6131,7 +6112,7 @@ snapshots: | ... | @@ -6131,7 +6112,7 @@ snapshots: |
| 6131 | 6112 | ||
| 6132 | '@iconify/types@2.0.0': {} | 6113 | '@iconify/types@2.0.0': {} |
| 6133 | 6114 | ||
| 6134 | '@iconify/vue@4.1.2(vue@3.5.13)': | 6115 | '@iconify/vue@4.1.2(vue@3.5.13(typescript@5.7.2))': |
| 6135 | dependencies: | 6116 | dependencies: |
| 6136 | '@iconify/types': 2.0.0 | 6117 | '@iconify/types': 2.0.0 |
| 6137 | vue: 3.5.13(typescript@5.7.2) | 6118 | vue: 3.5.13(typescript@5.7.2) |
| ... | @@ -6244,11 +6225,13 @@ snapshots: | ... | @@ -6244,11 +6225,13 @@ snapshots: |
| 6244 | dependencies: | 6225 | dependencies: |
| 6245 | '@babel/runtime': 7.26.0 | 6226 | '@babel/runtime': 7.26.0 |
| 6246 | 6227 | ||
| 6247 | '@rollup/pluginutils@5.1.3': | 6228 | '@rollup/pluginutils@5.1.3(rollup@3.29.5)': |
| 6248 | dependencies: | 6229 | dependencies: |
| 6249 | '@types/estree': 1.0.6 | 6230 | '@types/estree': 1.0.6 |
| 6250 | estree-walker: 2.0.2 | 6231 | estree-walker: 2.0.2 |
| 6251 | picomatch: 4.0.2 | 6232 | picomatch: 4.0.2 |
| 6233 | optionalDependencies: | ||
| 6234 | rollup: 3.29.5 | ||
| 6252 | 6235 | ||
| 6253 | '@rtsao/scc@1.1.0': {} | 6236 | '@rtsao/scc@1.1.0': {} |
| 6254 | 6237 | ||
| ... | @@ -6263,8 +6246,6 @@ snapshots: | ... | @@ -6263,8 +6246,6 @@ snapshots: |
| 6263 | 6246 | ||
| 6264 | '@trysound/sax@0.2.0': {} | 6247 | '@trysound/sax@0.2.0': {} |
| 6265 | 6248 | ||
| 6266 | '@types/d3-timer@1.0.12': {} | ||
| 6267 | |||
| 6268 | '@types/d3-timer@2.0.3': {} | 6249 | '@types/d3-timer@2.0.3': {} |
| 6269 | 6250 | ||
| 6270 | '@types/debug@4.1.12': | 6251 | '@types/debug@4.1.12': |
| ... | @@ -6337,7 +6318,7 @@ snapshots: | ... | @@ -6337,7 +6318,7 @@ snapshots: |
| 6337 | 6318 | ||
| 6338 | '@types/web-bluetooth@0.0.20': {} | 6319 | '@types/web-bluetooth@0.0.20': {} |
| 6339 | 6320 | ||
| 6340 | '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2)': | 6321 | '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': |
| 6341 | dependencies: | 6322 | dependencies: |
| 6342 | '@eslint-community/regexpp': 4.12.1 | 6323 | '@eslint-community/regexpp': 4.12.1 |
| 6343 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | 6324 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) |
| ... | @@ -6351,6 +6332,7 @@ snapshots: | ... | @@ -6351,6 +6332,7 @@ snapshots: |
| 6351 | natural-compare-lite: 1.4.0 | 6332 | natural-compare-lite: 1.4.0 |
| 6352 | semver: 7.6.3 | 6333 | semver: 7.6.3 |
| 6353 | tsutils: 3.21.0(typescript@5.7.2) | 6334 | tsutils: 3.21.0(typescript@5.7.2) |
| 6335 | optionalDependencies: | ||
| 6354 | typescript: 5.7.2 | 6336 | typescript: 5.7.2 |
| 6355 | transitivePeerDependencies: | 6337 | transitivePeerDependencies: |
| 6356 | - supports-color | 6338 | - supports-color |
| ... | @@ -6362,6 +6344,7 @@ snapshots: | ... | @@ -6362,6 +6344,7 @@ snapshots: |
| 6362 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2) | 6344 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.7.2) |
| 6363 | debug: 4.3.7 | 6345 | debug: 4.3.7 |
| 6364 | eslint: 8.57.1 | 6346 | eslint: 8.57.1 |
| 6347 | optionalDependencies: | ||
| 6365 | typescript: 5.7.2 | 6348 | typescript: 5.7.2 |
| 6366 | transitivePeerDependencies: | 6349 | transitivePeerDependencies: |
| 6367 | - supports-color | 6350 | - supports-color |
| ... | @@ -6378,6 +6361,7 @@ snapshots: | ... | @@ -6378,6 +6361,7 @@ snapshots: |
| 6378 | debug: 4.3.7 | 6361 | debug: 4.3.7 |
| 6379 | eslint: 8.57.1 | 6362 | eslint: 8.57.1 |
| 6380 | tsutils: 3.21.0(typescript@5.7.2) | 6363 | tsutils: 3.21.0(typescript@5.7.2) |
| 6364 | optionalDependencies: | ||
| 6381 | typescript: 5.7.2 | 6365 | typescript: 5.7.2 |
| 6382 | transitivePeerDependencies: | 6366 | transitivePeerDependencies: |
| 6383 | - supports-color | 6367 | - supports-color |
| ... | @@ -6393,6 +6377,7 @@ snapshots: | ... | @@ -6393,6 +6377,7 @@ snapshots: |
| 6393 | is-glob: 4.0.3 | 6377 | is-glob: 4.0.3 |
| 6394 | semver: 7.6.3 | 6378 | semver: 7.6.3 |
| 6395 | tsutils: 3.21.0(typescript@5.7.2) | 6379 | tsutils: 3.21.0(typescript@5.7.2) |
| 6380 | optionalDependencies: | ||
| 6396 | typescript: 5.7.2 | 6381 | typescript: 5.7.2 |
| 6397 | transitivePeerDependencies: | 6382 | transitivePeerDependencies: |
| 6398 | - supports-color | 6383 | - supports-color |
| ... | @@ -6452,23 +6437,23 @@ snapshots: | ... | @@ -6452,23 +6437,23 @@ snapshots: |
| 6452 | 6437 | ||
| 6453 | '@vant/popperjs@1.3.0': {} | 6438 | '@vant/popperjs@1.3.0': {} |
| 6454 | 6439 | ||
| 6455 | '@vant/use@1.6.0(vue@3.5.13)': | 6440 | '@vant/use@1.6.0(vue@3.5.13(typescript@5.7.2))': |
| 6456 | dependencies: | 6441 | dependencies: |
| 6457 | vue: 3.5.13(typescript@5.7.2) | 6442 | vue: 3.5.13(typescript@5.7.2) |
| 6458 | 6443 | ||
| 6459 | '@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.5)(vue@3.5.13)': | 6444 | '@vitejs/plugin-vue-jsx@3.1.0(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.7.2))': |
| 6460 | dependencies: | 6445 | dependencies: |
| 6461 | '@babel/core': 7.26.0 | 6446 | '@babel/core': 7.26.0 |
| 6462 | '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) | 6447 | '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) |
| 6463 | '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) | 6448 | '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) |
| 6464 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 6449 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 6465 | vue: 3.5.13(typescript@5.7.2) | 6450 | vue: 3.5.13(typescript@5.7.2) |
| 6466 | transitivePeerDependencies: | 6451 | transitivePeerDependencies: |
| 6467 | - supports-color | 6452 | - supports-color |
| 6468 | 6453 | ||
| 6469 | '@vitejs/plugin-vue@4.6.2(vite@4.5.5)(vue@3.5.13)': | 6454 | '@vitejs/plugin-vue@4.6.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue@3.5.13(typescript@5.7.2))': |
| 6470 | dependencies: | 6455 | dependencies: |
| 6471 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 6456 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 6472 | vue: 3.5.13(typescript@5.7.2) | 6457 | vue: 3.5.13(typescript@5.7.2) |
| 6473 | 6458 | ||
| 6474 | '@volar/language-core@1.11.1': | 6459 | '@volar/language-core@1.11.1': |
| ... | @@ -6488,7 +6473,6 @@ snapshots: | ... | @@ -6488,7 +6473,6 @@ snapshots: |
| 6488 | 6473 | ||
| 6489 | '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': | 6474 | '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': |
| 6490 | dependencies: | 6475 | dependencies: |
| 6491 | '@babel/core': 7.26.0 | ||
| 6492 | '@babel/helper-module-imports': 7.25.9 | 6476 | '@babel/helper-module-imports': 7.25.9 |
| 6493 | '@babel/helper-plugin-utils': 7.25.9 | 6477 | '@babel/helper-plugin-utils': 7.25.9 |
| 6494 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) | 6478 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) |
| ... | @@ -6499,6 +6483,8 @@ snapshots: | ... | @@ -6499,6 +6483,8 @@ snapshots: |
| 6499 | '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) | 6483 | '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) |
| 6500 | html-tags: 3.3.1 | 6484 | html-tags: 3.3.1 |
| 6501 | svg-tags: 1.0.0 | 6485 | svg-tags: 1.0.0 |
| 6486 | optionalDependencies: | ||
| 6487 | '@babel/core': 7.26.0 | ||
| 6502 | transitivePeerDependencies: | 6488 | transitivePeerDependencies: |
| 6503 | - supports-color | 6489 | - supports-color |
| 6504 | 6490 | ||
| ... | @@ -6555,8 +6541,9 @@ snapshots: | ... | @@ -6555,8 +6541,9 @@ snapshots: |
| 6555 | minimatch: 9.0.5 | 6541 | minimatch: 9.0.5 |
| 6556 | muggle-string: 0.3.1 | 6542 | muggle-string: 0.3.1 |
| 6557 | path-browserify: 1.0.1 | 6543 | path-browserify: 1.0.1 |
| 6558 | typescript: 5.7.2 | ||
| 6559 | vue-template-compiler: 2.7.16 | 6544 | vue-template-compiler: 2.7.16 |
| 6545 | optionalDependencies: | ||
| 6546 | typescript: 5.7.2 | ||
| 6560 | 6547 | ||
| 6561 | '@vue/reactivity@3.5.13': | 6548 | '@vue/reactivity@3.5.13': |
| 6562 | dependencies: | 6549 | dependencies: |
| ... | @@ -6574,7 +6561,7 @@ snapshots: | ... | @@ -6574,7 +6561,7 @@ snapshots: |
| 6574 | '@vue/shared': 3.5.13 | 6561 | '@vue/shared': 3.5.13 |
| 6575 | csstype: 3.1.3 | 6562 | csstype: 3.1.3 |
| 6576 | 6563 | ||
| 6577 | '@vue/server-renderer@3.5.13(vue@3.5.13)': | 6564 | '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.2))': |
| 6578 | dependencies: | 6565 | dependencies: |
| 6579 | '@vue/compiler-ssr': 3.5.13 | 6566 | '@vue/compiler-ssr': 3.5.13 |
| 6580 | '@vue/shared': 3.5.13 | 6567 | '@vue/shared': 3.5.13 |
| ... | @@ -6582,34 +6569,37 @@ snapshots: | ... | @@ -6582,34 +6569,37 @@ snapshots: |
| 6582 | 6569 | ||
| 6583 | '@vue/shared@3.5.13': {} | 6570 | '@vue/shared@3.5.13': {} |
| 6584 | 6571 | ||
| 6585 | '@vueuse/core@10.11.1(vue@3.5.13)': | 6572 | '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.7.2))': |
| 6586 | dependencies: | 6573 | dependencies: |
| 6587 | '@types/web-bluetooth': 0.0.20 | 6574 | '@types/web-bluetooth': 0.0.20 |
| 6588 | '@vueuse/metadata': 10.11.1 | 6575 | '@vueuse/metadata': 10.11.1 |
| 6589 | '@vueuse/shared': 10.11.1(vue@3.5.13) | 6576 | '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.7.2)) |
| 6590 | vue-demi: 0.14.10(vue@3.5.13) | 6577 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) |
| 6591 | transitivePeerDependencies: | 6578 | transitivePeerDependencies: |
| 6592 | - '@vue/composition-api' | 6579 | - '@vue/composition-api' |
| 6593 | - vue | 6580 | - vue |
| 6594 | 6581 | ||
| 6595 | '@vueuse/core@9.13.0(vue@3.5.13)': | 6582 | '@vueuse/core@9.13.0(vue@3.5.13(typescript@5.7.2))': |
| 6596 | dependencies: | 6583 | dependencies: |
| 6597 | '@types/web-bluetooth': 0.0.16 | 6584 | '@types/web-bluetooth': 0.0.16 |
| 6598 | '@vueuse/metadata': 9.13.0 | 6585 | '@vueuse/metadata': 9.13.0 |
| 6599 | '@vueuse/shared': 9.13.0(vue@3.5.13) | 6586 | '@vueuse/shared': 9.13.0(vue@3.5.13(typescript@5.7.2)) |
| 6600 | vue-demi: 0.14.10(vue@3.5.13) | 6587 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) |
| 6601 | transitivePeerDependencies: | 6588 | transitivePeerDependencies: |
| 6602 | - '@vue/composition-api' | 6589 | - '@vue/composition-api' |
| 6603 | - vue | 6590 | - vue |
| 6604 | 6591 | ||
| 6605 | '@vueuse/integrations@10.11.1(axios@1.7.7)(nprogress@0.2.0)(sortablejs@1.15.4)(vue@3.5.13)': | 6592 | '@vueuse/integrations@10.11.1(async-validator@4.2.5)(axios@1.7.7)(change-case@4.1.2)(nprogress@0.2.0)(sortablejs@1.15.4)(vue@3.5.13(typescript@5.7.2))': |
| 6606 | dependencies: | 6593 | dependencies: |
| 6607 | '@vueuse/core': 10.11.1(vue@3.5.13) | 6594 | '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.2)) |
| 6608 | '@vueuse/shared': 10.11.1(vue@3.5.13) | 6595 | '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.7.2)) |
| 6596 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) | ||
| 6597 | optionalDependencies: | ||
| 6598 | async-validator: 4.2.5 | ||
| 6609 | axios: 1.7.7 | 6599 | axios: 1.7.7 |
| 6600 | change-case: 4.1.2 | ||
| 6610 | nprogress: 0.2.0 | 6601 | nprogress: 0.2.0 |
| 6611 | sortablejs: 1.15.4 | 6602 | sortablejs: 1.15.4 |
| 6612 | vue-demi: 0.14.10(vue@3.5.13) | ||
| 6613 | transitivePeerDependencies: | 6603 | transitivePeerDependencies: |
| 6614 | - '@vue/composition-api' | 6604 | - '@vue/composition-api' |
| 6615 | - vue | 6605 | - vue |
| ... | @@ -6618,23 +6608,23 @@ snapshots: | ... | @@ -6618,23 +6608,23 @@ snapshots: |
| 6618 | 6608 | ||
| 6619 | '@vueuse/metadata@9.13.0': {} | 6609 | '@vueuse/metadata@9.13.0': {} |
| 6620 | 6610 | ||
| 6621 | '@vueuse/shared@10.11.1(vue@3.5.13)': | 6611 | '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.7.2))': |
| 6622 | dependencies: | 6612 | dependencies: |
| 6623 | vue-demi: 0.14.10(vue@3.5.13) | 6613 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) |
| 6624 | transitivePeerDependencies: | 6614 | transitivePeerDependencies: |
| 6625 | - '@vue/composition-api' | 6615 | - '@vue/composition-api' |
| 6626 | - vue | 6616 | - vue |
| 6627 | 6617 | ||
| 6628 | '@vueuse/shared@9.13.0(vue@3.5.13)': | 6618 | '@vueuse/shared@9.13.0(vue@3.5.13(typescript@5.7.2))': |
| 6629 | dependencies: | 6619 | dependencies: |
| 6630 | vue-demi: 0.14.10(vue@3.5.13) | 6620 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) |
| 6631 | transitivePeerDependencies: | 6621 | transitivePeerDependencies: |
| 6632 | - '@vue/composition-api' | 6622 | - '@vue/composition-api' |
| 6633 | - vue | 6623 | - vue |
| 6634 | 6624 | ||
| 6635 | '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': | 6625 | '@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6636 | dependencies: | 6626 | dependencies: |
| 6637 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6627 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6638 | dom7: 3.0.0 | 6628 | dom7: 3.0.0 |
| 6639 | is-url: 1.2.4 | 6629 | is-url: 1.2.4 |
| 6640 | lodash.throttle: 4.1.1 | 6630 | lodash.throttle: 4.1.1 |
| ... | @@ -6642,15 +6632,15 @@ snapshots: | ... | @@ -6642,15 +6632,15 @@ snapshots: |
| 6642 | slate: 0.72.8 | 6632 | slate: 0.72.8 |
| 6643 | snabbdom: 3.6.2 | 6633 | snabbdom: 3.6.2 |
| 6644 | 6634 | ||
| 6645 | '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': | 6635 | '@wangeditor/code-highlight@1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6646 | dependencies: | 6636 | dependencies: |
| 6647 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6637 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6648 | dom7: 3.0.0 | 6638 | dom7: 3.0.0 |
| 6649 | prismjs: 1.29.0 | 6639 | prismjs: 1.29.0 |
| 6650 | slate: 0.72.8 | 6640 | slate: 0.72.8 |
| 6651 | snabbdom: 3.6.2 | 6641 | snabbdom: 3.6.2 |
| 6652 | 6642 | ||
| 6653 | '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': | 6643 | '@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6654 | dependencies: | 6644 | dependencies: |
| 6655 | '@types/event-emitter': 0.3.5 | 6645 | '@types/event-emitter': 0.3.5 |
| 6656 | '@uppy/core': 2.3.4 | 6646 | '@uppy/core': 2.3.4 |
| ... | @@ -6673,7 +6663,7 @@ snapshots: | ... | @@ -6673,7 +6663,7 @@ snapshots: |
| 6673 | slate-history: 0.66.0(slate@0.72.8) | 6663 | slate-history: 0.66.0(slate@0.72.8) |
| 6674 | snabbdom: 3.6.2 | 6664 | snabbdom: 3.6.2 |
| 6675 | 6665 | ||
| 6676 | '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13)': | 6666 | '@wangeditor/editor-for-vue@5.1.12(@wangeditor/editor@5.1.23)(vue@3.5.13(typescript@5.7.2))': |
| 6677 | dependencies: | 6667 | dependencies: |
| 6678 | '@wangeditor/editor': 5.1.23 | 6668 | '@wangeditor/editor': 5.1.23 |
| 6679 | vue: 3.5.13(typescript@5.7.2) | 6669 | vue: 3.5.13(typescript@5.7.2) |
| ... | @@ -6682,13 +6672,13 @@ snapshots: | ... | @@ -6682,13 +6672,13 @@ snapshots: |
| 6682 | dependencies: | 6672 | dependencies: |
| 6683 | '@uppy/core': 2.3.4 | 6673 | '@uppy/core': 2.3.4 |
| 6684 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) | 6674 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) |
| 6685 | '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6675 | '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6686 | '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) | 6676 | '@wangeditor/code-highlight': 1.0.3(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) |
| 6687 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6677 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6688 | '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) | 6678 | '@wangeditor/list-module': 1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2) |
| 6689 | '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6679 | '@wangeditor/table-module': 1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6690 | '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) | 6680 | '@wangeditor/upload-image-module': 1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2) |
| 6691 | '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6681 | '@wangeditor/video-module': 1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6692 | dom7: 3.0.0 | 6682 | dom7: 3.0.0 |
| 6693 | is-hotkey: 0.2.0 | 6683 | is-hotkey: 0.2.0 |
| 6694 | lodash.camelcase: 4.3.0 | 6684 | lodash.camelcase: 4.3.0 |
| ... | @@ -6702,16 +6692,16 @@ snapshots: | ... | @@ -6702,16 +6692,16 @@ snapshots: |
| 6702 | slate: 0.72.8 | 6692 | slate: 0.72.8 |
| 6703 | snabbdom: 3.6.2 | 6693 | snabbdom: 3.6.2 |
| 6704 | 6694 | ||
| 6705 | '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19)(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': | 6695 | '@wangeditor/list-module@1.0.5(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6706 | dependencies: | 6696 | dependencies: |
| 6707 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6697 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6708 | dom7: 3.0.0 | 6698 | dom7: 3.0.0 |
| 6709 | slate: 0.72.8 | 6699 | slate: 0.72.8 |
| 6710 | snabbdom: 3.6.2 | 6700 | snabbdom: 3.6.2 |
| 6711 | 6701 | ||
| 6712 | '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': | 6702 | '@wangeditor/table-module@1.1.4(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6713 | dependencies: | 6703 | dependencies: |
| 6714 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6704 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6715 | dom7: 3.0.0 | 6705 | dom7: 3.0.0 |
| 6716 | lodash.isequal: 4.5.0 | 6706 | lodash.isequal: 4.5.0 |
| 6717 | lodash.throttle: 4.1.1 | 6707 | lodash.throttle: 4.1.1 |
| ... | @@ -6719,22 +6709,22 @@ snapshots: | ... | @@ -6719,22 +6709,22 @@ snapshots: |
| 6719 | slate: 0.72.8 | 6709 | slate: 0.72.8 |
| 6720 | snabbdom: 3.6.2 | 6710 | snabbdom: 3.6.2 |
| 6721 | 6711 | ||
| 6722 | '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/basic-modules@1.1.7)(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2)': | 6712 | '@wangeditor/upload-image-module@1.0.2(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/basic-modules@1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.foreach@4.5.0)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6723 | dependencies: | 6713 | dependencies: |
| 6724 | '@uppy/core': 2.3.4 | 6714 | '@uppy/core': 2.3.4 |
| 6725 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) | 6715 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) |
| 6726 | '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19)(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6716 | '@wangeditor/basic-modules': 1.1.7(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(lodash.throttle@4.1.1)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6727 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6717 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6728 | dom7: 3.0.0 | 6718 | dom7: 3.0.0 |
| 6729 | lodash.foreach: 4.5.0 | 6719 | lodash.foreach: 4.5.0 |
| 6730 | slate: 0.72.8 | 6720 | slate: 0.72.8 |
| 6731 | snabbdom: 3.6.2 | 6721 | snabbdom: 3.6.2 |
| 6732 | 6722 | ||
| 6733 | '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(@wangeditor/core@1.1.19)(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': | 6723 | '@wangeditor/video-module@1.1.4(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(@wangeditor/core@1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2))(dom7@3.0.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2)': |
| 6734 | dependencies: | 6724 | dependencies: |
| 6735 | '@uppy/core': 2.3.4 | 6725 | '@uppy/core': 2.3.4 |
| 6736 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) | 6726 | '@uppy/xhr-upload': 2.1.3(@uppy/core@2.3.4) |
| 6737 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3)(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) | 6727 | '@wangeditor/core': 1.1.19(@uppy/core@2.3.4)(@uppy/xhr-upload@2.1.3(@uppy/core@2.3.4))(dom7@3.0.0)(is-hotkey@0.2.0)(lodash.camelcase@4.3.0)(lodash.clonedeep@4.5.0)(lodash.debounce@4.0.8)(lodash.foreach@4.5.0)(lodash.isequal@4.5.0)(lodash.throttle@4.1.1)(lodash.toarray@4.4.0)(nanoid@3.3.7)(slate@0.72.8)(snabbdom@3.6.2) |
| 6738 | dom7: 3.0.0 | 6728 | dom7: 3.0.0 |
| 6739 | nanoid: 3.3.7 | 6729 | nanoid: 3.3.7 |
| 6740 | slate: 0.72.8 | 6730 | slate: 0.72.8 |
| ... | @@ -6798,10 +6788,10 @@ snapshots: | ... | @@ -6798,10 +6788,10 @@ snapshots: |
| 6798 | 6788 | ||
| 6799 | ansi-styles@6.2.1: {} | 6789 | ansi-styles@6.2.1: {} |
| 6800 | 6790 | ||
| 6801 | ant-design-vue@3.2.20(vue@3.5.13): | 6791 | ant-design-vue@3.2.20(vue@3.5.13(typescript@5.7.2)): |
| 6802 | dependencies: | 6792 | dependencies: |
| 6803 | '@ant-design/colors': 6.0.0 | 6793 | '@ant-design/colors': 6.0.0 |
| 6804 | '@ant-design/icons-vue': 6.1.0(vue@3.5.13) | 6794 | '@ant-design/icons-vue': 6.1.0(vue@3.5.13(typescript@5.7.2)) |
| 6805 | '@babel/runtime': 7.26.0 | 6795 | '@babel/runtime': 7.26.0 |
| 6806 | '@ctrl/tinycolor': 3.6.1 | 6796 | '@ctrl/tinycolor': 3.6.1 |
| 6807 | '@simonwep/pickr': 1.8.2 | 6797 | '@simonwep/pickr': 1.8.2 |
| ... | @@ -6816,7 +6806,7 @@ snapshots: | ... | @@ -6816,7 +6806,7 @@ snapshots: |
| 6816 | scroll-into-view-if-needed: 2.2.31 | 6806 | scroll-into-view-if-needed: 2.2.31 |
| 6817 | shallow-equal: 1.2.1 | 6807 | shallow-equal: 1.2.1 |
| 6818 | vue: 3.5.13(typescript@5.7.2) | 6808 | vue: 3.5.13(typescript@5.7.2) |
| 6819 | vue-types: 3.0.2(vue@3.5.13) | 6809 | vue-types: 3.0.2(vue@3.5.13(typescript@5.7.2)) |
| 6820 | warning: 4.0.3 | 6810 | warning: 4.0.3 |
| 6821 | 6811 | ||
| 6822 | anymatch@3.1.3: | 6812 | anymatch@3.1.3: |
| ... | @@ -6914,14 +6904,14 @@ snapshots: | ... | @@ -6914,14 +6904,14 @@ snapshots: |
| 6914 | 6904 | ||
| 6915 | atob@2.1.2: {} | 6905 | atob@2.1.2: {} |
| 6916 | 6906 | ||
| 6917 | autoprefixer@10.4.20(postcss@8.4.49): | 6907 | autoprefixer@10.4.20(postcss@5.2.18): |
| 6918 | dependencies: | 6908 | dependencies: |
| 6919 | browserslist: 4.24.2 | 6909 | browserslist: 4.24.2 |
| 6920 | caniuse-lite: 1.0.30001684 | 6910 | caniuse-lite: 1.0.30001684 |
| 6921 | fraction.js: 4.3.7 | 6911 | fraction.js: 4.3.7 |
| 6922 | normalize-range: 0.1.2 | 6912 | normalize-range: 0.1.2 |
| 6923 | picocolors: 1.1.1 | 6913 | picocolors: 1.1.1 |
| 6924 | postcss: 8.4.49 | 6914 | postcss: 5.2.18 |
| 6925 | postcss-value-parser: 4.2.0 | 6915 | postcss-value-parser: 4.2.0 |
| 6926 | 6916 | ||
| 6927 | available-typed-arrays@1.0.7: | 6917 | available-typed-arrays@1.0.7: |
| ... | @@ -7304,6 +7294,7 @@ snapshots: | ... | @@ -7304,6 +7294,7 @@ snapshots: |
| 7304 | js-yaml: 4.1.0 | 7294 | js-yaml: 4.1.0 |
| 7305 | parse-json: 5.2.0 | 7295 | parse-json: 5.2.0 |
| 7306 | path-type: 4.0.0 | 7296 | path-type: 4.0.0 |
| 7297 | optionalDependencies: | ||
| 7307 | typescript: 5.7.2 | 7298 | typescript: 5.7.2 |
| 7308 | 7299 | ||
| 7309 | crc-32@1.2.2: {} | 7300 | crc-32@1.2.2: {} |
| ... | @@ -7643,15 +7634,15 @@ snapshots: | ... | @@ -7643,15 +7634,15 @@ snapshots: |
| 7643 | 7634 | ||
| 7644 | electron-to-chromium@1.5.64: {} | 7635 | electron-to-chromium@1.5.64: {} |
| 7645 | 7636 | ||
| 7646 | element-plus@2.8.8(vue@3.5.13): | 7637 | element-plus@2.8.8(vue@3.5.13(typescript@5.7.2)): |
| 7647 | dependencies: | 7638 | dependencies: |
| 7648 | '@ctrl/tinycolor': 3.6.1 | 7639 | '@ctrl/tinycolor': 3.6.1 |
| 7649 | '@element-plus/icons-vue': 2.3.1(vue@3.5.13) | 7640 | '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@5.7.2)) |
| 7650 | '@floating-ui/dom': 1.6.12 | 7641 | '@floating-ui/dom': 1.6.12 |
| 7651 | '@popperjs/core': '@sxzz/popperjs-es@2.11.7' | 7642 | '@popperjs/core': '@sxzz/popperjs-es@2.11.7' |
| 7652 | '@types/lodash': 4.17.13 | 7643 | '@types/lodash': 4.17.13 |
| 7653 | '@types/lodash-es': 4.17.12 | 7644 | '@types/lodash-es': 4.17.12 |
| 7654 | '@vueuse/core': 9.13.0(vue@3.5.13) | 7645 | '@vueuse/core': 9.13.0(vue@3.5.13(typescript@5.7.2)) |
| 7655 | async-validator: 4.2.5 | 7646 | async-validator: 4.2.5 |
| 7656 | dayjs: 1.11.13 | 7647 | dayjs: 1.11.13 |
| 7657 | escape-html: 1.0.3 | 7648 | escape-html: 1.0.3 |
| ... | @@ -7932,10 +7923,11 @@ snapshots: | ... | @@ -7932,10 +7923,11 @@ snapshots: |
| 7932 | esquery: 1.6.0 | 7923 | esquery: 1.6.0 |
| 7933 | jsonc-eslint-parser: 2.4.0 | 7924 | jsonc-eslint-parser: 2.4.0 |
| 7934 | 7925 | ||
| 7935 | eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): | 7926 | eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): |
| 7936 | dependencies: | 7927 | dependencies: |
| 7937 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | ||
| 7938 | debug: 3.2.7 | 7928 | debug: 3.2.7 |
| 7929 | optionalDependencies: | ||
| 7930 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | ||
| 7939 | eslint: 8.57.1 | 7931 | eslint: 8.57.1 |
| 7940 | eslint-import-resolver-node: 0.3.9 | 7932 | eslint-import-resolver-node: 0.3.9 |
| 7941 | transitivePeerDependencies: | 7933 | transitivePeerDependencies: |
| ... | @@ -7965,10 +7957,9 @@ snapshots: | ... | @@ -7965,10 +7957,9 @@ snapshots: |
| 7965 | dependencies: | 7957 | dependencies: |
| 7966 | htmlparser2: 8.0.2 | 7958 | htmlparser2: 8.0.2 |
| 7967 | 7959 | ||
| 7968 | eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1): | 7960 | eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1): |
| 7969 | dependencies: | 7961 | dependencies: |
| 7970 | '@rtsao/scc': 1.1.0 | 7962 | '@rtsao/scc': 1.1.0 |
| 7971 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | ||
| 7972 | array-includes: 3.1.8 | 7963 | array-includes: 3.1.8 |
| 7973 | array.prototype.findlastindex: 1.2.5 | 7964 | array.prototype.findlastindex: 1.2.5 |
| 7974 | array.prototype.flat: 1.3.2 | 7965 | array.prototype.flat: 1.3.2 |
| ... | @@ -7977,7 +7968,7 @@ snapshots: | ... | @@ -7977,7 +7968,7 @@ snapshots: |
| 7977 | doctrine: 2.1.0 | 7968 | doctrine: 2.1.0 |
| 7978 | eslint: 8.57.1 | 7969 | eslint: 8.57.1 |
| 7979 | eslint-import-resolver-node: 0.3.9 | 7970 | eslint-import-resolver-node: 0.3.9 |
| 7980 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) | 7971 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) |
| 7981 | hasown: 2.0.2 | 7972 | hasown: 2.0.2 |
| 7982 | is-core-module: 2.15.1 | 7973 | is-core-module: 2.15.1 |
| 7983 | is-glob: 4.0.3 | 7974 | is-glob: 4.0.3 |
| ... | @@ -7988,16 +7979,19 @@ snapshots: | ... | @@ -7988,16 +7979,19 @@ snapshots: |
| 7988 | semver: 6.3.1 | 7979 | semver: 6.3.1 |
| 7989 | string.prototype.trimend: 1.0.8 | 7980 | string.prototype.trimend: 1.0.8 |
| 7990 | tsconfig-paths: 3.15.0 | 7981 | tsconfig-paths: 3.15.0 |
| 7982 | optionalDependencies: | ||
| 7983 | '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | ||
| 7991 | transitivePeerDependencies: | 7984 | transitivePeerDependencies: |
| 7992 | - eslint-import-resolver-typescript | 7985 | - eslint-import-resolver-typescript |
| 7993 | - eslint-import-resolver-webpack | 7986 | - eslint-import-resolver-webpack |
| 7994 | - supports-color | 7987 | - supports-color |
| 7995 | 7988 | ||
| 7996 | eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.1)(typescript@5.7.2): | 7989 | eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2): |
| 7997 | dependencies: | 7990 | dependencies: |
| 7998 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | ||
| 7999 | '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) | 7991 | '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.7.2) |
| 8000 | eslint: 8.57.1 | 7992 | eslint: 8.57.1 |
| 7993 | optionalDependencies: | ||
| 7994 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) | ||
| 8001 | transitivePeerDependencies: | 7995 | transitivePeerDependencies: |
| 8002 | - supports-color | 7996 | - supports-color |
| 8003 | - typescript | 7997 | - typescript |
| ... | @@ -8061,11 +8055,12 @@ snapshots: | ... | @@ -8061,11 +8055,12 @@ snapshots: |
| 8061 | semver: 7.6.3 | 8055 | semver: 7.6.3 |
| 8062 | strip-indent: 3.0.0 | 8056 | strip-indent: 3.0.0 |
| 8063 | 8057 | ||
| 8064 | eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint@8.57.1): | 8058 | eslint-plugin-unused-imports@2.0.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1): |
| 8065 | dependencies: | 8059 | dependencies: |
| 8066 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.7.2) | ||
| 8067 | eslint: 8.57.1 | 8060 | eslint: 8.57.1 |
| 8068 | eslint-rule-composer: 0.3.0 | 8061 | eslint-rule-composer: 0.3.0 |
| 8062 | optionalDependencies: | ||
| 8063 | '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) | ||
| 8069 | 8064 | ||
| 8070 | eslint-plugin-vue@9.31.0(eslint@8.57.1): | 8065 | eslint-plugin-vue@9.31.0(eslint@8.57.1): |
| 8071 | dependencies: | 8066 | dependencies: |
| ... | @@ -9842,12 +9837,13 @@ snapshots: | ... | @@ -9842,12 +9837,13 @@ snapshots: |
| 9842 | 9837 | ||
| 9843 | pify@3.0.0: {} | 9838 | pify@3.0.0: {} |
| 9844 | 9839 | ||
| 9845 | pinia@2.2.6(typescript@5.7.2)(vue@3.5.13): | 9840 | pinia@2.2.6(typescript@5.7.2)(vue@3.5.13(typescript@5.7.2)): |
| 9846 | dependencies: | 9841 | dependencies: |
| 9847 | '@vue/devtools-api': 6.6.4 | 9842 | '@vue/devtools-api': 6.6.4 |
| 9848 | typescript: 5.7.2 | ||
| 9849 | vue: 3.5.13(typescript@5.7.2) | 9843 | vue: 3.5.13(typescript@5.7.2) |
| 9850 | vue-demi: 0.14.10(vue@3.5.13) | 9844 | vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.2)) |
| 9845 | optionalDependencies: | ||
| 9846 | typescript: 5.7.2 | ||
| 9851 | 9847 | ||
| 9852 | pinyin-pro@3.26.0: {} | 9848 | pinyin-pro@3.26.0: {} |
| 9853 | 9849 | ||
| ... | @@ -9916,9 +9912,9 @@ snapshots: | ... | @@ -9916,9 +9912,9 @@ snapshots: |
| 9916 | dependencies: | 9912 | dependencies: |
| 9917 | postcss: 8.4.49 | 9913 | postcss: 8.4.49 |
| 9918 | 9914 | ||
| 9919 | postcss-scss@4.0.9(postcss@8.4.49): | 9915 | postcss-scss@4.0.9(postcss@5.2.18): |
| 9920 | dependencies: | 9916 | dependencies: |
| 9921 | postcss: 8.4.49 | 9917 | postcss: 5.2.18 |
| 9922 | 9918 | ||
| 9923 | postcss-selector-parser@6.1.2: | 9919 | postcss-selector-parser@6.1.2: |
| 9924 | dependencies: | 9920 | dependencies: |
| ... | @@ -10579,56 +10575,58 @@ snapshots: | ... | @@ -10579,56 +10575,58 @@ snapshots: |
| 10579 | 10575 | ||
| 10580 | style-search@0.1.0: {} | 10576 | style-search@0.1.0: {} |
| 10581 | 10577 | ||
| 10582 | stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@15.11.0): | 10578 | stylelint-config-html@1.1.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)): |
| 10583 | dependencies: | 10579 | dependencies: |
| 10584 | postcss-html: 1.7.0 | 10580 | postcss-html: 1.7.0 |
| 10585 | stylelint: 15.11.0(typescript@5.7.2) | 10581 | stylelint: 15.11.0(typescript@5.7.2) |
| 10586 | 10582 | ||
| 10587 | stylelint-config-recommended-scss@11.0.0(postcss@8.4.49)(stylelint@15.11.0): | 10583 | stylelint-config-recommended-scss@11.0.0(postcss@5.2.18)(stylelint@15.11.0(typescript@5.7.2)): |
| 10588 | dependencies: | 10584 | dependencies: |
| 10589 | postcss: 8.4.49 | 10585 | postcss-scss: 4.0.9(postcss@5.2.18) |
| 10590 | postcss-scss: 4.0.9(postcss@8.4.49) | ||
| 10591 | stylelint: 15.11.0(typescript@5.7.2) | 10586 | stylelint: 15.11.0(typescript@5.7.2) |
| 10592 | stylelint-config-recommended: 12.0.0(stylelint@15.11.0) | 10587 | stylelint-config-recommended: 12.0.0(stylelint@15.11.0(typescript@5.7.2)) |
| 10593 | stylelint-scss: 4.7.0(stylelint@15.11.0) | 10588 | stylelint-scss: 4.7.0(stylelint@15.11.0(typescript@5.7.2)) |
| 10589 | optionalDependencies: | ||
| 10590 | postcss: 5.2.18 | ||
| 10594 | 10591 | ||
| 10595 | stylelint-config-recommended-vue@1.5.0(postcss-html@1.7.0)(stylelint@15.11.0): | 10592 | stylelint-config-recommended-vue@1.5.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)): |
| 10596 | dependencies: | 10593 | dependencies: |
| 10597 | postcss-html: 1.7.0 | 10594 | postcss-html: 1.7.0 |
| 10598 | semver: 7.6.3 | 10595 | semver: 7.6.3 |
| 10599 | stylelint: 15.11.0(typescript@5.7.2) | 10596 | stylelint: 15.11.0(typescript@5.7.2) |
| 10600 | stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@15.11.0) | 10597 | stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)) |
| 10601 | stylelint-config-recommended: 14.0.1(stylelint@15.11.0) | 10598 | stylelint-config-recommended: 14.0.1(stylelint@15.11.0(typescript@5.7.2)) |
| 10602 | 10599 | ||
| 10603 | stylelint-config-recommended@12.0.0(stylelint@15.11.0): | 10600 | stylelint-config-recommended@12.0.0(stylelint@15.11.0(typescript@5.7.2)): |
| 10604 | dependencies: | 10601 | dependencies: |
| 10605 | stylelint: 15.11.0(typescript@5.7.2) | 10602 | stylelint: 15.11.0(typescript@5.7.2) |
| 10606 | 10603 | ||
| 10607 | stylelint-config-recommended@14.0.1(stylelint@15.11.0): | 10604 | stylelint-config-recommended@14.0.1(stylelint@15.11.0(typescript@5.7.2)): |
| 10608 | dependencies: | 10605 | dependencies: |
| 10609 | stylelint: 15.11.0(typescript@5.7.2) | 10606 | stylelint: 15.11.0(typescript@5.7.2) |
| 10610 | 10607 | ||
| 10611 | stylelint-config-standard-scss@9.0.0(postcss@8.4.49)(stylelint@15.11.0): | 10608 | stylelint-config-standard-scss@9.0.0(postcss@5.2.18)(stylelint@15.11.0(typescript@5.7.2)): |
| 10612 | dependencies: | 10609 | dependencies: |
| 10613 | postcss: 8.4.49 | ||
| 10614 | stylelint: 15.11.0(typescript@5.7.2) | 10610 | stylelint: 15.11.0(typescript@5.7.2) |
| 10615 | stylelint-config-recommended-scss: 11.0.0(postcss@8.4.49)(stylelint@15.11.0) | 10611 | stylelint-config-recommended-scss: 11.0.0(postcss@5.2.18)(stylelint@15.11.0(typescript@5.7.2)) |
| 10616 | stylelint-config-standard: 33.0.0(stylelint@15.11.0) | 10612 | stylelint-config-standard: 33.0.0(stylelint@15.11.0(typescript@5.7.2)) |
| 10613 | optionalDependencies: | ||
| 10614 | postcss: 5.2.18 | ||
| 10617 | 10615 | ||
| 10618 | stylelint-config-standard-vue@1.0.0(postcss-html@1.7.0)(stylelint@15.11.0): | 10616 | stylelint-config-standard-vue@1.0.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)): |
| 10619 | dependencies: | 10617 | dependencies: |
| 10620 | postcss-html: 1.7.0 | 10618 | postcss-html: 1.7.0 |
| 10621 | stylelint: 15.11.0(typescript@5.7.2) | 10619 | stylelint: 15.11.0(typescript@5.7.2) |
| 10622 | stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@15.11.0) | 10620 | stylelint-config-html: 1.1.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)) |
| 10623 | stylelint-config-recommended-vue: 1.5.0(postcss-html@1.7.0)(stylelint@15.11.0) | 10621 | stylelint-config-recommended-vue: 1.5.0(postcss-html@1.7.0)(stylelint@15.11.0(typescript@5.7.2)) |
| 10624 | stylelint-config-standard: 33.0.0(stylelint@15.11.0) | 10622 | stylelint-config-standard: 33.0.0(stylelint@15.11.0(typescript@5.7.2)) |
| 10625 | 10623 | ||
| 10626 | stylelint-config-standard@33.0.0(stylelint@15.11.0): | 10624 | stylelint-config-standard@33.0.0(stylelint@15.11.0(typescript@5.7.2)): |
| 10627 | dependencies: | 10625 | dependencies: |
| 10628 | stylelint: 15.11.0(typescript@5.7.2) | 10626 | stylelint: 15.11.0(typescript@5.7.2) |
| 10629 | stylelint-config-recommended: 12.0.0(stylelint@15.11.0) | 10627 | stylelint-config-recommended: 12.0.0(stylelint@15.11.0(typescript@5.7.2)) |
| 10630 | 10628 | ||
| 10631 | stylelint-scss@4.7.0(stylelint@15.11.0): | 10629 | stylelint-scss@4.7.0(stylelint@15.11.0(typescript@5.7.2)): |
| 10632 | dependencies: | 10630 | dependencies: |
| 10633 | postcss-media-query-parser: 0.2.3 | 10631 | postcss-media-query-parser: 0.2.3 |
| 10634 | postcss-resolve-nested-selector: 0.1.6 | 10632 | postcss-resolve-nested-selector: 0.1.6 |
| ... | @@ -10636,7 +10634,7 @@ snapshots: | ... | @@ -10636,7 +10634,7 @@ snapshots: |
| 10636 | postcss-value-parser: 4.2.0 | 10634 | postcss-value-parser: 4.2.0 |
| 10637 | stylelint: 15.11.0(typescript@5.7.2) | 10635 | stylelint: 15.11.0(typescript@5.7.2) |
| 10638 | 10636 | ||
| 10639 | stylelint-scss@5.3.2(stylelint@15.11.0): | 10637 | stylelint-scss@5.3.2(stylelint@15.11.0(typescript@5.7.2)): |
| 10640 | dependencies: | 10638 | dependencies: |
| 10641 | known-css-properties: 0.29.0 | 10639 | known-css-properties: 0.29.0 |
| 10642 | postcss-media-query-parser: 0.2.3 | 10640 | postcss-media-query-parser: 0.2.3 |
| ... | @@ -10645,7 +10643,7 @@ snapshots: | ... | @@ -10645,7 +10643,7 @@ snapshots: |
| 10645 | postcss-value-parser: 4.2.0 | 10643 | postcss-value-parser: 4.2.0 |
| 10646 | stylelint: 15.11.0(typescript@5.7.2) | 10644 | stylelint: 15.11.0(typescript@5.7.2) |
| 10647 | 10645 | ||
| 10648 | stylelint-stylistic@0.4.5(stylelint@15.11.0): | 10646 | stylelint-stylistic@0.4.5(stylelint@15.11.0(typescript@5.7.2)): |
| 10649 | dependencies: | 10647 | dependencies: |
| 10650 | is-plain-object: 5.0.0 | 10648 | is-plain-object: 5.0.0 |
| 10651 | postcss: 8.4.49 | 10649 | postcss: 8.4.49 |
| ... | @@ -10658,7 +10656,7 @@ snapshots: | ... | @@ -10658,7 +10656,7 @@ snapshots: |
| 10658 | dependencies: | 10656 | dependencies: |
| 10659 | '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) | 10657 | '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) |
| 10660 | '@csstools/css-tokenizer': 2.4.1 | 10658 | '@csstools/css-tokenizer': 2.4.1 |
| 10661 | '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1)(@csstools/css-tokenizer@2.4.1) | 10659 | '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) |
| 10662 | '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) | 10660 | '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) |
| 10663 | balanced-match: 2.0.0 | 10661 | balanced-match: 2.0.0 |
| 10664 | colord: 2.9.3 | 10662 | colord: 2.9.3 |
| ... | @@ -10955,9 +10953,9 @@ snapshots: | ... | @@ -10955,9 +10953,9 @@ snapshots: |
| 10955 | 10953 | ||
| 10956 | undici-types@6.19.8: {} | 10954 | undici-types@6.19.8: {} |
| 10957 | 10955 | ||
| 10958 | unimport@3.13.3: | 10956 | unimport@3.13.3(rollup@3.29.5): |
| 10959 | dependencies: | 10957 | dependencies: |
| 10960 | '@rollup/pluginutils': 5.1.3 | 10958 | '@rollup/pluginutils': 5.1.3(rollup@3.29.5) |
| 10961 | acorn: 8.14.0 | 10959 | acorn: 8.14.0 |
| 10962 | escape-string-regexp: 5.0.0 | 10960 | escape-string-regexp: 5.0.0 |
| 10963 | estree-walker: 3.0.3 | 10961 | estree-walker: 3.0.3 |
| ... | @@ -10994,23 +10992,24 @@ snapshots: | ... | @@ -10994,23 +10992,24 @@ snapshots: |
| 10994 | 10992 | ||
| 10995 | unpipe@1.0.0: {} | 10993 | unpipe@1.0.0: {} |
| 10996 | 10994 | ||
| 10997 | unplugin-auto-import@0.15.3(@vueuse/core@10.11.1): | 10995 | unplugin-auto-import@0.15.3(@vueuse/core@10.11.1(vue@3.5.13(typescript@5.7.2)))(rollup@3.29.5): |
| 10998 | dependencies: | 10996 | dependencies: |
| 10999 | '@antfu/utils': 0.7.10 | 10997 | '@antfu/utils': 0.7.10 |
| 11000 | '@rollup/pluginutils': 5.1.3 | 10998 | '@rollup/pluginutils': 5.1.3(rollup@3.29.5) |
| 11001 | '@vueuse/core': 10.11.1(vue@3.5.13) | ||
| 11002 | local-pkg: 0.4.3 | 10999 | local-pkg: 0.4.3 |
| 11003 | magic-string: 0.30.13 | 11000 | magic-string: 0.30.13 |
| 11004 | minimatch: 9.0.5 | 11001 | minimatch: 9.0.5 |
| 11005 | unimport: 3.13.3 | 11002 | unimport: 3.13.3(rollup@3.29.5) |
| 11006 | unplugin: 1.16.0 | 11003 | unplugin: 1.16.0 |
| 11004 | optionalDependencies: | ||
| 11005 | '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.2)) | ||
| 11007 | transitivePeerDependencies: | 11006 | transitivePeerDependencies: |
| 11008 | - rollup | 11007 | - rollup |
| 11009 | 11008 | ||
| 11010 | unplugin-vue-components@0.24.1(vue@3.5.13): | 11009 | unplugin-vue-components@0.24.1(@babel/parser@7.26.2)(rollup@3.29.5)(vue@3.5.13(typescript@5.7.2)): |
| 11011 | dependencies: | 11010 | dependencies: |
| 11012 | '@antfu/utils': 0.7.10 | 11011 | '@antfu/utils': 0.7.10 |
| 11013 | '@rollup/pluginutils': 5.1.3 | 11012 | '@rollup/pluginutils': 5.1.3(rollup@3.29.5) |
| 11014 | chokidar: 3.6.0 | 11013 | chokidar: 3.6.0 |
| 11015 | debug: 4.3.7 | 11014 | debug: 4.3.7 |
| 11016 | fast-glob: 3.3.2 | 11015 | fast-glob: 3.3.2 |
| ... | @@ -11020,6 +11019,8 @@ snapshots: | ... | @@ -11020,6 +11019,8 @@ snapshots: |
| 11020 | resolve: 1.22.8 | 11019 | resolve: 1.22.8 |
| 11021 | unplugin: 1.16.0 | 11020 | unplugin: 1.16.0 |
| 11022 | vue: 3.5.13(typescript@5.7.2) | 11021 | vue: 3.5.13(typescript@5.7.2) |
| 11022 | optionalDependencies: | ||
| 11023 | '@babel/parser': 7.26.2 | ||
| 11023 | transitivePeerDependencies: | 11024 | transitivePeerDependencies: |
| 11024 | - rollup | 11025 | - rollup |
| 11025 | - supports-color | 11026 | - supports-color |
| ... | @@ -11081,10 +11082,10 @@ snapshots: | ... | @@ -11081,10 +11082,10 @@ snapshots: |
| 11081 | spdx-correct: 3.2.0 | 11082 | spdx-correct: 3.2.0 |
| 11082 | spdx-expression-parse: 3.0.1 | 11083 | spdx-expression-parse: 3.0.1 |
| 11083 | 11084 | ||
| 11084 | vant@4.9.9(vue@3.5.13): | 11085 | vant@4.9.9(vue@3.5.13(typescript@5.7.2)): |
| 11085 | dependencies: | 11086 | dependencies: |
| 11086 | '@vant/popperjs': 1.3.0 | 11087 | '@vant/popperjs': 1.3.0 |
| 11087 | '@vant/use': 1.6.0(vue@3.5.13) | 11088 | '@vant/use': 1.6.0(vue@3.5.13(typescript@5.7.2)) |
| 11088 | '@vue/shared': 3.5.13 | 11089 | '@vue/shared': 3.5.13 |
| 11089 | vue: 3.5.13(typescript@5.7.2) | 11090 | vue: 3.5.13(typescript@5.7.2) |
| 11090 | 11091 | ||
| ... | @@ -11111,16 +11112,16 @@ snapshots: | ... | @@ -11111,16 +11112,16 @@ snapshots: |
| 11111 | 11112 | ||
| 11112 | vite-plugin-banner@0.7.1: {} | 11113 | vite-plugin-banner@0.7.1: {} |
| 11113 | 11114 | ||
| 11114 | vite-plugin-compression@0.5.1(vite@4.5.5): | 11115 | vite-plugin-compression@0.5.1(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)): |
| 11115 | dependencies: | 11116 | dependencies: |
| 11116 | chalk: 4.1.2 | 11117 | chalk: 4.1.2 |
| 11117 | debug: 4.3.7 | 11118 | debug: 4.3.7 |
| 11118 | fs-extra: 10.1.0 | 11119 | fs-extra: 10.1.0 |
| 11119 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11120 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11120 | transitivePeerDependencies: | 11121 | transitivePeerDependencies: |
| 11121 | - supports-color | 11122 | - supports-color |
| 11122 | 11123 | ||
| 11123 | vite-plugin-mock@2.9.8(mockjs@1.1.0)(vite@4.5.5): | 11124 | vite-plugin-mock@2.9.8(mockjs@1.1.0)(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)): |
| 11124 | dependencies: | 11125 | dependencies: |
| 11125 | '@types/mockjs': 1.0.10 | 11126 | '@types/mockjs': 1.0.10 |
| 11126 | chalk: 4.1.2 | 11127 | chalk: 4.1.2 |
| ... | @@ -11131,11 +11132,11 @@ snapshots: | ... | @@ -11131,11 +11132,11 @@ snapshots: |
| 11131 | fast-glob: 3.3.2 | 11132 | fast-glob: 3.3.2 |
| 11132 | mockjs: 1.1.0 | 11133 | mockjs: 1.1.0 |
| 11133 | path-to-regexp: 6.3.0 | 11134 | path-to-regexp: 6.3.0 |
| 11134 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11135 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11135 | transitivePeerDependencies: | 11136 | transitivePeerDependencies: |
| 11136 | - supports-color | 11137 | - supports-color |
| 11137 | 11138 | ||
| 11138 | vite-plugin-pages@0.29.1(vite@4.5.5): | 11139 | vite-plugin-pages@0.29.1(@vue/compiler-sfc@3.5.13)(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)): |
| 11139 | dependencies: | 11140 | dependencies: |
| 11140 | '@types/debug': 4.1.12 | 11141 | '@types/debug': 4.1.12 |
| 11141 | debug: 4.3.7 | 11142 | debug: 4.3.7 |
| ... | @@ -11145,8 +11146,10 @@ snapshots: | ... | @@ -11145,8 +11146,10 @@ snapshots: |
| 11145 | json5: 2.2.3 | 11146 | json5: 2.2.3 |
| 11146 | local-pkg: 0.4.3 | 11147 | local-pkg: 0.4.3 |
| 11147 | picocolors: 1.1.1 | 11148 | picocolors: 1.1.1 |
| 11148 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11149 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11149 | yaml: 2.6.1 | 11150 | yaml: 2.6.1 |
| 11151 | optionalDependencies: | ||
| 11152 | '@vue/compiler-sfc': 3.5.13 | ||
| 11150 | transitivePeerDependencies: | 11153 | transitivePeerDependencies: |
| 11151 | - supports-color | 11154 | - supports-color |
| 11152 | 11155 | ||
| ... | @@ -11159,7 +11162,7 @@ snapshots: | ... | @@ -11159,7 +11162,7 @@ snapshots: |
| 11159 | spritesheet-templates: 10.5.2 | 11162 | spritesheet-templates: 10.5.2 |
| 11160 | spritesmith: 3.5.1 | 11163 | spritesmith: 3.5.1 |
| 11161 | 11164 | ||
| 11162 | vite-plugin-svg-icons@2.0.1(vite@4.5.5): | 11165 | vite-plugin-svg-icons@2.0.1(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)): |
| 11163 | dependencies: | 11166 | dependencies: |
| 11164 | '@types/svgo': 2.6.4 | 11167 | '@types/svgo': 2.6.4 |
| 11165 | cors: 2.8.5 | 11168 | cors: 2.8.5 |
| ... | @@ -11169,11 +11172,11 @@ snapshots: | ... | @@ -11169,11 +11172,11 @@ snapshots: |
| 11169 | pathe: 0.2.0 | 11172 | pathe: 0.2.0 |
| 11170 | svg-baker: 1.7.0 | 11173 | svg-baker: 1.7.0 |
| 11171 | svgo: 2.8.0 | 11174 | svgo: 2.8.0 |
| 11172 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11175 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11173 | transitivePeerDependencies: | 11176 | transitivePeerDependencies: |
| 11174 | - supports-color | 11177 | - supports-color |
| 11175 | 11178 | ||
| 11176 | vite-plugin-vue-inspector@3.7.2(vite@4.5.5): | 11179 | vite-plugin-vue-inspector@3.7.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0)): |
| 11177 | dependencies: | 11180 | dependencies: |
| 11178 | '@babel/core': 7.26.0 | 11181 | '@babel/core': 7.26.0 |
| 11179 | '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) | 11182 | '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) |
| ... | @@ -11184,27 +11187,28 @@ snapshots: | ... | @@ -11184,27 +11187,28 @@ snapshots: |
| 11184 | '@vue/compiler-dom': 3.5.13 | 11187 | '@vue/compiler-dom': 3.5.13 |
| 11185 | kolorist: 1.8.0 | 11188 | kolorist: 1.8.0 |
| 11186 | magic-string: 0.30.13 | 11189 | magic-string: 0.30.13 |
| 11187 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11190 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11188 | transitivePeerDependencies: | 11191 | transitivePeerDependencies: |
| 11189 | - supports-color | 11192 | - supports-color |
| 11190 | 11193 | ||
| 11191 | vite-plugin-vue-meta-layouts@0.2.2(vite@4.5.5)(vue-router@4.4.5): | 11194 | vite-plugin-vue-meta-layouts@0.2.2(vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0))(vue-router@4.4.5(vue@3.5.13(typescript@5.7.2))): |
| 11192 | dependencies: | 11195 | dependencies: |
| 11193 | local-pkg: 0.4.3 | 11196 | local-pkg: 0.4.3 |
| 11194 | vite: 4.5.5(sass@1.81.0)(terser@5.36.0) | 11197 | vite: 4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0) |
| 11195 | vue-router: 4.4.5(vue@3.5.13) | 11198 | vue-router: 4.4.5(vue@3.5.13(typescript@5.7.2)) |
| 11196 | 11199 | ||
| 11197 | vite@4.5.5(sass@1.81.0)(terser@5.36.0): | 11200 | vite@4.5.5(@types/node@22.9.3)(sass@1.81.0)(terser@5.36.0): |
| 11198 | dependencies: | 11201 | dependencies: |
| 11199 | esbuild: 0.18.20 | 11202 | esbuild: 0.18.20 |
| 11200 | postcss: 8.4.49 | 11203 | postcss: 8.4.49 |
| 11201 | rollup: 3.29.5 | 11204 | rollup: 3.29.5 |
| 11202 | sass: 1.81.0 | ||
| 11203 | terser: 5.36.0 | ||
| 11204 | optionalDependencies: | 11205 | optionalDependencies: |
| 11206 | '@types/node': 22.9.3 | ||
| 11205 | fsevents: 2.3.3 | 11207 | fsevents: 2.3.3 |
| 11208 | sass: 1.81.0 | ||
| 11209 | terser: 5.36.0 | ||
| 11206 | 11210 | ||
| 11207 | vue-demi@0.14.10(vue@3.5.13): | 11211 | vue-demi@0.14.10(vue@3.5.13(typescript@5.7.2)): |
| 11208 | dependencies: | 11212 | dependencies: |
| 11209 | vue: 3.5.13(typescript@5.7.2) | 11213 | vue: 3.5.13(typescript@5.7.2) |
| 11210 | 11214 | ||
| ... | @@ -11221,7 +11225,7 @@ snapshots: | ... | @@ -11221,7 +11225,7 @@ snapshots: |
| 11221 | transitivePeerDependencies: | 11225 | transitivePeerDependencies: |
| 11222 | - supports-color | 11226 | - supports-color |
| 11223 | 11227 | ||
| 11224 | vue-router@4.4.5(vue@3.5.13): | 11228 | vue-router@4.4.5(vue@3.5.13(typescript@5.7.2)): |
| 11225 | dependencies: | 11229 | dependencies: |
| 11226 | '@vue/devtools-api': 6.6.4 | 11230 | '@vue/devtools-api': 6.6.4 |
| 11227 | vue: 3.5.13(typescript@5.7.2) | 11231 | vue: 3.5.13(typescript@5.7.2) |
| ... | @@ -11238,7 +11242,7 @@ snapshots: | ... | @@ -11238,7 +11242,7 @@ snapshots: |
| 11238 | semver: 7.6.3 | 11242 | semver: 7.6.3 |
| 11239 | typescript: 5.7.2 | 11243 | typescript: 5.7.2 |
| 11240 | 11244 | ||
| 11241 | vue-types@3.0.2(vue@3.5.13): | 11245 | vue-types@3.0.2(vue@3.5.13(typescript@5.7.2)): |
| 11242 | dependencies: | 11246 | dependencies: |
| 11243 | is-plain-object: 3.0.1 | 11247 | is-plain-object: 3.0.1 |
| 11244 | vue: 3.5.13(typescript@5.7.2) | 11248 | vue: 3.5.13(typescript@5.7.2) |
| ... | @@ -11248,8 +11252,9 @@ snapshots: | ... | @@ -11248,8 +11252,9 @@ snapshots: |
| 11248 | '@vue/compiler-dom': 3.5.13 | 11252 | '@vue/compiler-dom': 3.5.13 |
| 11249 | '@vue/compiler-sfc': 3.5.13 | 11253 | '@vue/compiler-sfc': 3.5.13 |
| 11250 | '@vue/runtime-dom': 3.5.13 | 11254 | '@vue/runtime-dom': 3.5.13 |
| 11251 | '@vue/server-renderer': 3.5.13(vue@3.5.13) | 11255 | '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.2)) |
| 11252 | '@vue/shared': 3.5.13 | 11256 | '@vue/shared': 3.5.13 |
| 11257 | optionalDependencies: | ||
| 11253 | typescript: 5.7.2 | 11258 | typescript: 5.7.2 |
| 11254 | 11259 | ||
| 11255 | warning@4.0.3: | 11260 | warning@4.0.3: | ... | ... |
| ... | @@ -129,3 +129,100 @@ export const getGradeTreeList = () => request({ | ... | @@ -129,3 +129,100 @@ export const getGradeTreeList = () => request({ |
| 129 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/grade/tree-list`, | 129 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/grade/tree-list`, |
| 130 | method: 'post', | 130 | method: 'post', |
| 131 | }) | 131 | }) |
| 132 | |||
| 133 | /** | ||
| 134 | * 分类树形列表 | ||
| 135 | * @param {Object} | ||
| 136 | * @path /classify/tree-list | ||
| 137 | * */ | ||
| 138 | export const getClassifyTreeList = (data) => request({ | ||
| 139 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/classify/tree-list`, | ||
| 140 | method: 'post', | ||
| 141 | data | ||
| 142 | }) | ||
| 143 | |||
| 144 | /** | ||
| 145 | * 分类新增 | ||
| 146 | * @param {Object} | ||
| 147 | * @path /classify/save | ||
| 148 | * */ | ||
| 149 | |||
| 150 | export const saveClassify = (data) => request({ | ||
| 151 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/classify/save`, | ||
| 152 | method: 'post', | ||
| 153 | data | ||
| 154 | }) | ||
| 155 | |||
| 156 | /** | ||
| 157 | * 分类更新 | ||
| 158 | * @param {Object} | ||
| 159 | * @path /classify/update | ||
| 160 | */ | ||
| 161 | |||
| 162 | export const updateClassify = (data) => request({ | ||
| 163 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/classify/update`, | ||
| 164 | method: 'post', | ||
| 165 | data | ||
| 166 | }) | ||
| 167 | |||
| 168 | /**删除分类 | ||
| 169 | * @param {Object} | ||
| 170 | * @path /classify/delete | ||
| 171 | */ | ||
| 172 | export const deleteClassify = (data) => request({ | ||
| 173 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/classify/delete?guid=${data.guid}`, | ||
| 174 | method: 'delete', | ||
| 175 | }) | ||
| 176 | |||
| 177 | |||
| 178 | /** ---------------分类分级模板------------------------ */ | ||
| 179 | |||
| 180 | /** | ||
| 181 | * 分类分级模板新增 | ||
| 182 | * @param {Object} | ||
| 183 | * @path /cg-template/save | ||
| 184 | */ | ||
| 185 | |||
| 186 | export const saveCgTemplate = (data) => request({ | ||
| 187 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-template/save`, | ||
| 188 | method: 'post', | ||
| 189 | data | ||
| 190 | }) | ||
| 191 | |||
| 192 | /** | ||
| 193 | * 分类分级模板左侧树形列表 | ||
| 194 | * @param {Object} | ||
| 195 | * @path /cg-template-classify/tree-list | ||
| 196 | */ | ||
| 197 | export const getCgTemplateClassifyTreeList = (data) => request({ | ||
| 198 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-template-classify/tree-list`, | ||
| 199 | method: 'post', | ||
| 200 | data | ||
| 201 | }) | ||
| 202 | |||
| 203 | |||
| 204 | /**-------------------------分类分级目录--------------------------------- */ | ||
| 205 | |||
| 206 | /** | ||
| 207 | * 分类分级目录树形列表 | ||
| 208 | * @param {Object} | ||
| 209 | * @path /cg-dir/tree-list | ||
| 210 | */ | ||
| 211 | |||
| 212 | export const getCgDirTreeList = (data) => request({ | ||
| 213 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-dir/tree-list`, | ||
| 214 | method: 'post', | ||
| 215 | data | ||
| 216 | }) | ||
| 217 | |||
| 218 | /** | ||
| 219 | * 分类分级目录-分页 | ||
| 220 | * @param {Object} | ||
| 221 | * @path /cg-dir/field/page-list | ||
| 222 | */ | ||
| 223 | |||
| 224 | export const getCgDirFieldPageList = (data) => request({ | ||
| 225 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-dir/field/page-list`, | ||
| 226 | method: 'post', | ||
| 227 | data | ||
| 228 | }) | ... | ... |
src/api/modules/dataLabel.ts
0 → 100644
| 1 | import request from "@/utils/request"; | ||
| 2 | |||
| 3 | /** | ||
| 4 | * 远程获取标签 | ||
| 5 | * @param {Object} | ||
| 6 | * @path /cg-label/label-serach | ||
| 7 | * @method get | ||
| 8 | * @des query查询 label | ||
| 9 | */ | ||
| 10 | |||
| 11 | export const getLabelList = (data) => request({ | ||
| 12 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-label/label-serach?label=${data.label}`, | ||
| 13 | method: 'get', | ||
| 14 | }) | ||
| 15 | |||
| 16 | |||
| 17 | /** | ||
| 18 | * 分类分级树形目录 | ||
| 19 | * @param {no params} | ||
| 20 | * @path /classify-grade/tree-list | ||
| 21 | * @method post | ||
| 22 | */ | ||
| 23 | |||
| 24 | export const getClassifyGradeTreeList = () => request({ | ||
| 25 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/classify-grade/tree-list`, | ||
| 26 | method: 'post', | ||
| 27 | }) | ||
| 28 | |||
| 29 | /** | ||
| 30 | * @des 新增标签规则 | ||
| 31 | * @param {Object} | ||
| 32 | * @path /cg-label/save | ||
| 33 | */ | ||
| 34 | |||
| 35 | export const saveLabel = (data) => request({ | ||
| 36 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-label/save`, | ||
| 37 | method: 'post', | ||
| 38 | data | ||
| 39 | }) | ||
| 40 | |||
| 41 | |||
| 42 | /** | ||
| 43 | * @des 获取标签页规则列表 | ||
| 44 | * @param {Object} | ||
| 45 | * @path /cg-label/page-list | ||
| 46 | */ | ||
| 47 | |||
| 48 | export const getLabelPageList = (data) => request({ | ||
| 49 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-label/page-list`, | ||
| 50 | method: 'post', | ||
| 51 | data | ||
| 52 | }) | ||
| 53 | |||
| 54 | /** | ||
| 55 | * @des 删除标签规则 | ||
| 56 | * @param {Array} | ||
| 57 | * @path /cg-label/delete | ||
| 58 | */ | ||
| 59 | |||
| 60 | export const deleteLabel = (data) => request({ | ||
| 61 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-label/delete`, | ||
| 62 | method: 'delete', | ||
| 63 | data | ||
| 64 | }) | ||
| 65 | |||
| 66 | /** | ||
| 67 | * @des 标签规则修改 | ||
| 68 | * @param {Object} | ||
| 69 | * @path /cg-label/update | ||
| 70 | */ | ||
| 71 | |||
| 72 | export const updateLabel = (data) => request({ | ||
| 73 | url: `${import.meta.env.VITE_APP_CHECK_BASEURL}/cg-label/update`, | ||
| 74 | method: 'post', | ||
| 75 | data | ||
| 76 | }) |
| ... | @@ -14,6 +14,8 @@ const props = defineProps({ | ... | @@ -14,6 +14,8 @@ const props = defineProps({ |
| 14 | }, | 14 | }, |
| 15 | }); | 15 | }); |
| 16 | 16 | ||
| 17 | const dialogRef = ref(); | ||
| 18 | |||
| 17 | const dialogInfo = computed(() => { | 19 | const dialogInfo = computed(() => { |
| 18 | return { | 20 | return { |
| 19 | visible: props.dialogConfigInfo.visible, | 21 | visible: props.dialogConfigInfo.visible, |
| ... | @@ -49,10 +51,16 @@ const formDialogRadioGroupChange = (val, row, item) => { | ... | @@ -49,10 +51,16 @@ const formDialogRadioGroupChange = (val, row, item) => { |
| 49 | const formDialogSelectChange = (val, item, row) => { | 51 | const formDialogSelectChange = (val, item, row) => { |
| 50 | emits('formDialogSelectChange', val, row, item); | 52 | emits('formDialogSelectChange', val, row, item); |
| 51 | } | 53 | } |
| 54 | defineExpose({ | ||
| 55 | dialogRef, | ||
| 56 | }); | ||
| 52 | 57 | ||
| 53 | </script> | 58 | </script> |
| 54 | 59 | ||
| 55 | <template> | 60 | <template> |
| 56 | <Dialog :dialogInfo="dialogInfo" @btnClick="formDialogBtnClick" @radioGroupChange="formDialogRadioGroupChange" | 61 | <Dialog ref="dialogRef" :dialogInfo="dialogInfo" @btnClick="formDialogBtnClick" |
| 57 | @select-change="formDialogSelectChange" /> | 62 | @radioGroupChange="formDialogRadioGroupChange" @select-change="formDialogSelectChange"> |
| 63 | <!-- 默认插槽内容 --> | ||
| 64 | <slot></slot> | ||
| 65 | </Dialog> | ||
| 58 | </template> | 66 | </template> | ... | ... |
| ... | @@ -80,7 +80,7 @@ const showClose = computed(() => { | ... | @@ -80,7 +80,7 @@ const showClose = computed(() => { |
| 80 | const dialogModal = computed(() => { | 80 | const dialogModal = computed(() => { |
| 81 | return props.dialogInfo.modal ?? true; | 81 | return props.dialogInfo.modal ?? true; |
| 82 | }); | 82 | }); |
| 83 | const btnLoading = computed(()=>{ | 83 | const btnLoading = computed(() => { |
| 84 | return props.dialogInfo.btnLoading ?? false; | 84 | return props.dialogInfo.btnLoading ?? false; |
| 85 | }) | 85 | }) |
| 86 | const modalClose = computed(() => { | 86 | const modalClose = computed(() => { |
| ... | @@ -495,8 +495,8 @@ const uploadSelectChange = (val) => { | ... | @@ -495,8 +495,8 @@ const uploadSelectChange = (val) => { |
| 495 | const scheduleChange = (val, rowValue) => { | 495 | const scheduleChange = (val, rowValue) => { |
| 496 | emits("scheduleChange", val, rowValue); | 496 | emits("scheduleChange", val, rowValue); |
| 497 | }; | 497 | }; |
| 498 | const treeSelectNodeChange = (node, item)=>{ | 498 | const treeSelectNodeChange = (node, item, nodeObj) => { |
| 499 | emits("treeSelectNodeChange",node, item) | 499 | emits("treeSelectNodeChange", node, item, nodeObj); |
| 500 | } | 500 | } |
| 501 | const setTreeChecked = (checkedKeys, leafOnly: boolean = false) => { | 501 | const setTreeChecked = (checkedKeys, leafOnly: boolean = false) => { |
| 502 | nextTick(() => { | 502 | nextTick(() => { |
| ... | @@ -522,7 +522,7 @@ watch( | ... | @@ -522,7 +522,7 @@ watch( |
| 522 | ); | 522 | ); |
| 523 | 523 | ||
| 524 | const getDialogConRef = (refName) => { | 524 | const getDialogConRef = (refName) => { |
| 525 | if(refName == 'formTableRef'){ | 525 | if (refName == 'formTableRef') { |
| 526 | const dtf = formTableRef.value?.[0] || formTableRef.value | 526 | const dtf = formTableRef.value?.[0] || formTableRef.value |
| 527 | return dtf?.tableRef | 527 | return dtf?.tableRef |
| 528 | } | 528 | } |
| ... | @@ -538,86 +538,44 @@ defineExpose({ | ... | @@ -538,86 +538,44 @@ defineExpose({ |
| 538 | </script> | 538 | </script> |
| 539 | 539 | ||
| 540 | <template> | 540 | <template> |
| 541 | <el-dialog | 541 | <el-dialog v-model="dialogVisible" :title="dialogTitle" :width="dialogSize" :show-close="showClose" |
| 542 | v-model="dialogVisible" | 542 | :modal="dialogModal" :close-on-click-modal="modalClose" :modal-class="dialogModalClass" destroy-on-close |
| 543 | :title="dialogTitle" | 543 | align-center :before-close="beforeClose" @close="dialogClose"> |
| 544 | :width="dialogSize" | ||
| 545 | :show-close="showClose" | ||
| 546 | :modal="dialogModal" | ||
| 547 | :close-on-click-modal="modalClose" | ||
| 548 | :modal-class="dialogModalClass" | ||
| 549 | destroy-on-close | ||
| 550 | align-center | ||
| 551 | :before-close="beforeClose" | ||
| 552 | @close="dialogClose" | ||
| 553 | > | ||
| 554 | <template v-if="headerSearchInputVisible" #header="{ titleId, titleClass }"> | 544 | <template v-if="headerSearchInputVisible" #header="{ titleId, titleClass }"> |
| 555 | <span :id="titleId" :class="titleClass">{{ dialogTitle }}</span> | 545 | <span :id="titleId" :class="titleClass">{{ dialogTitle }}</span> |
| 556 | <el-input | 546 | <el-input class="header_search_input" v-model.trim="headerSearchInputValue" |
| 557 | class="header_search_input" | 547 | :placeholder="headerSearchInputPlaceholder" :prefix-icon="Search" @change="headerSearchInputChanged" |
| 558 | v-model.trim="headerSearchInputValue" | 548 | clearable /> |
| 559 | :placeholder="headerSearchInputPlaceholder" | ||
| 560 | :prefix-icon="Search" | ||
| 561 | @change="headerSearchInputChanged" | ||
| 562 | clearable | ||
| 563 | /> | ||
| 564 | </template> | 549 | </template> |
| 565 | <div | 550 | <div class="dialog_content" :class="[dialogDirection]" :style="{ height: dialogHeight }" |
| 566 | class="dialog_content" | 551 | @keydown.tab.prevent="handleKeyDown"> |
| 567 | :class="[dialogDirection]" | 552 | <div class="dialog_panel" :class="[con.col, { grid: con.type == 'grid' }]" :style="con.style" |
| 568 | :style="{ height: dialogHeight }" | 553 | v-for="con in contents"> |
| 569 | @keydown.tab.prevent="handleKeyDown" | ||
| 570 | > | ||
| 571 | <div | ||
| 572 | class="dialog_panel" | ||
| 573 | :class="[con.col, { grid: con.type == 'grid' }]" | ||
| 574 | :style="con.style" | ||
| 575 | v-for="con in contents" | ||
| 576 | > | ||
| 577 | <div class="panel_header" v-if="con.title"> | 554 | <div class="panel_header" v-if="con.title"> |
| 578 | <span class="title_text" :class="{ required_mark: con.type.indexOf('form-') > -1 }">{{ | 555 | <span class="title_text" :class="{ required_mark: con.type.indexOf('form-') > -1 }">{{ |
| 579 | con.title | 556 | con.title |
| 580 | }}</span> | 557 | }}</span> |
| 581 | </div> | 558 | </div> |
| 582 | <div | 559 | <div class="panel_content" :class="[con.col, { full: !con.title }]" v-if="con.type"> |
| 583 | class="panel_content" | ||
| 584 | :class="[con.col, { full: !con.title }]" | ||
| 585 | v-if="con.type" | ||
| 586 | > | ||
| 587 | <template v-if="con.type.indexOf('table') > -1"> | 560 | <template v-if="con.type.indexOf('table') > -1"> |
| 588 | <div | 561 | <div class="panel_title table_panel_title" :class="[con.tools.posit]" v-if="con.tools"> |
| 589 | class="panel_title table_panel_title" | ||
| 590 | :class="[con.tools.posit]" | ||
| 591 | v-if="con.tools" | ||
| 592 | > | ||
| 593 | <div class="title_text"> | 562 | <div class="title_text"> |
| 594 | <span>{{ con.tools.title }}</span> | 563 | <span>{{ con.tools.title }}</span> |
| 595 | <span class="tips_text">{{ con.tools.tips }}</span> | 564 | <span class="tips_text">{{ con.tools.tips }}</span> |
| 596 | </div> | 565 | </div> |
| 597 | <div class="table_tool"> | 566 | <div class="table_tool"> |
| 598 | <span v-for="bar in con.tools.btns"> | 567 | <span v-for="bar in con.tools.btns"> |
| 599 | <span | 568 | <span class="tool_btn" v-if="con.tools.type == 'text_btn'" :class="[bar.type]" |
| 600 | class="tool_btn" | 569 | @click="btnClick(bar, null)" v-preReClick> |
| 601 | v-if="con.tools.type == 'text_btn'" | ||
| 602 | :class="[bar.type]" | ||
| 603 | @click="btnClick(bar, null)" | ||
| 604 | v-preReClick | ||
| 605 | > | ||
| 606 | <el-icon v-if="bar.icon && bar.icon == 'CirclePlus'"> | 570 | <el-icon v-if="bar.icon && bar.icon == 'CirclePlus'"> |
| 607 | <CirclePlus /> | 571 | <CirclePlus /> |
| 608 | </el-icon> | 572 | </el-icon> |
| 609 | <span>{{ bar.label }}</span> | 573 | <span>{{ bar.label }}</span> |
| 610 | </span> | 574 | </span> |
| 611 | <template v-else> | 575 | <template v-else> |
| 612 | <el-popover | 576 | <el-popover v-if="bar.popover" :visible="bar.popover.visible" :title="bar.popover.title" |
| 613 | v-if="bar.popover" | 577 | :content="bar.popover.content" placement="bottom-start" :width="bar.popover.width ?? 200" |
| 614 | :visible="bar.popover.visible" | 578 | trigger="click"> |
| 615 | :title="bar.popover.title" | ||
| 616 | :content="bar.popover.content" | ||
| 617 | placement="bottom-start" | ||
| 618 | :width="bar.popover.width ?? 200" | ||
| 619 | trigger="click" | ||
| 620 | > | ||
| 621 | <template #reference> | 579 | <template #reference> |
| 622 | <el-button :type="bar.type" @click="btnClick(bar, con.type)" v-preReClick>{{ bar.label | 580 | <el-button :type="bar.type" @click="btnClick(bar, con.type)" v-preReClick>{{ bar.label |
| 623 | }}</el-button> | 581 | }}</el-button> |
| ... | @@ -629,75 +587,43 @@ defineExpose({ | ... | @@ -629,75 +587,43 @@ defineExpose({ |
| 629 | </span> | 587 | </span> |
| 630 | </div> | 588 | </div> |
| 631 | </div> | 589 | </div> |
| 632 | <div | 590 | <div class="panel_body" :class="[ |
| 633 | class="panel_body" | 591 | con.tools && con.tools.posit, |
| 634 | :class="[ | 592 | con.tableInfo.col, |
| 635 | con.tools && con.tools.posit, | 593 | { full: !con.tools }, |
| 636 | con.tableInfo.col, | 594 | ]"> |
| 637 | { full: !con.tools }, | ||
| 638 | ]" | ||
| 639 | > | ||
| 640 | <div class="table_panel_wrap" :class="[con.tableInfo.col]"> | 595 | <div class="table_panel_wrap" :class="[con.tableInfo.col]"> |
| 641 | <Table | 596 | <Table ref="formTableRef" :tableInfo="con.tableInfo" @tableSelectChange="tableSelectChange" |
| 642 | ref="formTableRef" | 597 | @table-checkbox-select-change="tableCheckboxSelectChange" @table-checkbox-all-select-change="tableCheckboxAllSelectChange |
| 643 | :tableInfo="con.tableInfo" | 598 | " @tableBtnClick="tableBtnClick" @tableSelectionChange="tableSelectionChange" |
| 644 | @tableSelectChange="tableSelectChange" | 599 | @tablePageChange="tablePageChange" /> |
| 645 | @table-checkbox-select-change="tableCheckboxSelectChange" | ||
| 646 | @table-checkbox-all-select-change=" | ||
| 647 | tableCheckboxAllSelectChange | ||
| 648 | " | ||
| 649 | @tableBtnClick="tableBtnClick" | ||
| 650 | @tableSelectionChange="tableSelectionChange" | ||
| 651 | @tablePageChange="tablePageChange" | ||
| 652 | /> | ||
| 653 | </div> | 600 | </div> |
| 654 | <PageNav | 601 | <PageNav v-if=" |
| 655 | v-if=" | 602 | !con.tableInfo.showPage && |
| 656 | !con.tableInfo.showPage && | 603 | con.tableInfo.pageCount !== undefined |
| 657 | con.tableInfo.pageCount !== undefined | 604 | " class="footer_page" :pageInfo="{ type: 'count', rows: con.tableInfo.pageCount }" /> |
| 658 | " | ||
| 659 | class="footer_page" | ||
| 660 | :pageInfo="{ type: 'count', rows: con.tableInfo.pageCount }" | ||
| 661 | /> | ||
| 662 | </div> | 605 | </div> |
| 663 | </template> | 606 | </template> |
| 664 | <template v-else-if="con.type.indexOf('tree') > -1"> | 607 | <template v-else-if="con.type.indexOf('tree') > -1"> |
| 665 | <div class="list_tree" v-if="con.type.indexOf('list-tree') > -1"> | 608 | <div class="list_tree" v-if="con.type.indexOf('list-tree') > -1"> |
| 666 | <ListPanel | 609 | <ListPanel ref="formListRef" :listInfo="con.formListTree.listInfo" @itemClick="listItemClick" /> |
| 667 | ref="formListRef" | 610 | <Tree ref="formTreeRef" :treeInfo="con.formListTree.treeInfo" @nodeCheck="treeNodeCheck" |
| 668 | :listInfo="con.formListTree.listInfo" | 611 | @nodeClick="treeNodeClick" /> |
| 669 | @itemClick="listItemClick" | ||
| 670 | /> | ||
| 671 | <Tree | ||
| 672 | ref="formTreeRef" | ||
| 673 | :treeInfo="con.formListTree.treeInfo" | ||
| 674 | @nodeCheck="treeNodeCheck" | ||
| 675 | @nodeClick="treeNodeClick" | ||
| 676 | /> | ||
| 677 | </div> | 612 | </div> |
| 678 | <Tree | 613 | <Tree v-else ref="formTreeRef" :treeInfo="con.treeInfo" @nodeCheck="treeNodeCheck" |
| 679 | v-else | 614 | @nodeClick="treeNodeClick" /> |
| 680 | ref="formTreeRef" | ||
| 681 | :treeInfo="con.treeInfo" | ||
| 682 | @nodeCheck="treeNodeCheck" | ||
| 683 | @nodeClick="treeNodeClick" | ||
| 684 | /> | ||
| 685 | </template> | 615 | </template> |
| 686 | <template v-else-if="con.type.indexOf('tags') > -1"> | 616 | <template v-else-if="con.type.indexOf('tags') > -1"> |
| 687 | <!-- 修改此处时须测试数据目录对不对。--> | 617 | <!-- 修改此处时须测试数据目录对不对。--> |
| 688 | <div ref="formTagsRef" class="tags_panel_wrap"> | 618 | <div ref="formTagsRef" class="tags_panel_wrap"> |
| 689 | <div class="panel_tool"> | 619 | <div class="panel_tool"> |
| 690 | <span>已选 ({{ con.tagInfo.data.length }})</span> | 620 | <span>已选 ({{ con.tagInfo.data.length }})</span> |
| 691 | <span v-for=" btn in con.tools.btns " class="text_btn" @click="btnClick(btn, null)" v-preReClick>{{ | 621 | <span v-for=" btn in con.tools.btns " class="text_btn" @click="btnClick(btn, null)" v-preReClick>{{ |
| 692 | btn.label | 622 | btn.label |
| 693 | }}</span> | 623 | }}</span> |
| 694 | </div> | 624 | </div> |
| 695 | <div class="tags_list_panel"> | 625 | <div class="tags_list_panel"> |
| 696 | <div | 626 | <div class="tag_item" v-for="(tag, t) in con.tagInfo.data" :key="tag.guid"> |
| 697 | class="tag_item" | ||
| 698 | v-for="(tag, t) in con.tagInfo.data" | ||
| 699 | :key="tag.guid" | ||
| 700 | > | ||
| 701 | <span class="tag"> | 627 | <span class="tag"> |
| 702 | <span>{{ | 628 | <span>{{ |
| 703 | con.tagInfo.labelFields | 629 | con.tagInfo.labelFields |
| ... | @@ -713,81 +639,45 @@ defineExpose({ | ... | @@ -713,81 +639,45 @@ defineExpose({ |
| 713 | </div> | 639 | </div> |
| 714 | </template> | 640 | </template> |
| 715 | <template v-else-if="con.type.indexOf('tabs') > -1"> | 641 | <template v-else-if="con.type.indexOf('tabs') > -1"> |
| 716 | <Tabs | 642 | <Tabs ref="formTabsRef" :tabsInfo="con.tabsInfo" @tabChange="tabChange" /> |
| 717 | ref="formTabsRef" | ||
| 718 | :tabsInfo="con.tabsInfo" | ||
| 719 | @tabChange="tabChange" | ||
| 720 | /> | ||
| 721 | </template> | 643 | </template> |
| 722 | <template v-else-if="con.type.indexOf('grid') > -1"> | 644 | <template v-else-if="con.type.indexOf('grid') > -1"> |
| 723 | <DialogGrid | 645 | <DialogGrid :gridInfo="con.gridInfo" @listSearch="listSearch" @itemClick="listItemClick" |
| 724 | :gridInfo="con.gridInfo" | 646 | @tableBtnClick="tableBtnClick" /> |
| 725 | @listSearch="listSearch" | ||
| 726 | @itemClick="listItemClick" | ||
| 727 | @tableBtnClick="tableBtnClick" | ||
| 728 | /> | ||
| 729 | </template> | 647 | </template> |
| 730 | <template v-else-if="con.type.indexOf('transfer') > -1"> | 648 | <template v-else-if="con.type.indexOf('transfer') > -1"> |
| 731 | <Transfer | 649 | <Transfer :transferInfo="con.transferInfo" @btnClick="transferBtnClick" @toolBtnClick="transferToolBtnClick" |
| 732 | :transferInfo="con.transferInfo" | 650 | @tableSelectionChange="transferTableSelectionChange" @tableDataFilter="transferTableDataFilter" /> |
| 733 | @btnClick="transferBtnClick" | ||
| 734 | @toolBtnClick="transferToolBtnClick" | ||
| 735 | @tableSelectionChange="transferTableSelectionChange" | ||
| 736 | @tableDataFilter="transferTableDataFilter" | ||
| 737 | /> | ||
| 738 | </template> | 651 | </template> |
| 739 | <template v-else-if="con.type.indexOf('list') > -1"> | 652 | <template v-else-if="con.type.indexOf('list') > -1"> |
| 740 | <ListPanel | 653 | <ListPanel class="list_unit" ref="formListRef" :listInfo="con.listInfo" @itemClick="listItemClick" /> |
| 741 | class="list_unit" | ||
| 742 | ref="formListRef" | ||
| 743 | :listInfo="con.listInfo" | ||
| 744 | @itemClick="listItemClick" | ||
| 745 | /> | ||
| 746 | </template> | 654 | </template> |
| 747 | <template v-else-if="con.type.indexOf('textare') > -1"> | 655 | <template v-else-if="con.type.indexOf('textare') > -1"> |
| 748 | <div class="textare_panel"> | 656 | <div class="textare_panel"> |
| 749 | <el-input | 657 | <el-input v-model.trim="textareVal" :rows="con.rows ?? 4" type="textarea" :placeholder="con.placeholder" |
| 750 | v-model.trim="textareVal" | 658 | :disabled="con.disabled" :readonly="con.readonly" resize="none" :maxlength="con.maxlength ?? 500" |
| 751 | :rows="con.rows ?? 4" | 659 | show-word-limit /> |
| 752 | type="textarea" | ||
| 753 | :placeholder="con.placeholder" | ||
| 754 | :disabled="con.disabled" | ||
| 755 | :readonly="con.readonly" | ||
| 756 | resize="none" | ||
| 757 | :maxlength="con.maxlength ?? 500" | ||
| 758 | show-word-limit | ||
| 759 | /> | ||
| 760 | </div> | 660 | </div> |
| 761 | </template> | 661 | </template> |
| 762 | <template v-else-if="con.type.indexOf('upload') > -1"> | 662 | <template v-else-if="con.type.indexOf('upload') > -1"> |
| 763 | <UploadFiles | 663 | <UploadFiles ref="formUploadRef" :upload-info="con.uploadInfo" @onUpload="onUpload" |
| 764 | ref="formUploadRef" | 664 | @beforeUPload="beforeUPload" @uploadFile="uploadFile" @uploadBtnClick="uploadBtnClick" |
| 765 | :upload-info="con.uploadInfo" | 665 | @cascaderChange="cascaderChange" @selectChange="uploadSelectChange" /> |
| 766 | @onUpload="onUpload" | ||
| 767 | @beforeUPload="beforeUPload" | ||
| 768 | @uploadFile="uploadFile" | ||
| 769 | @uploadBtnClick="uploadBtnClick" | ||
| 770 | @cascaderChange="cascaderChange" | ||
| 771 | @selectChange="uploadSelectChange" | ||
| 772 | /> | ||
| 773 | </template> | 666 | </template> |
| 774 | <template v-else> | 667 | <template v-else> |
| 775 | <div v-if="con.formInfo.tools"> | 668 | <div v-if="con.formInfo.tools"> |
| 776 | <div | 669 | <div class="tips_msg_box" :class="[con.formInfo.tools.tips.type]" v-if="con.formInfo.tools.tips"> |
| 777 | class="tips_msg_box" | ||
| 778 | :class="[con.formInfo.tools.tips.type]" | ||
| 779 | v-if="con.formInfo.tools.tips" | ||
| 780 | > | ||
| 781 | <el-icon> | 670 | <el-icon> |
| 782 | <WarningFilled /> | 671 | <WarningFilled /> |
| 783 | </el-icon> | 672 | </el-icon> |
| 784 | <span>{{ con.formInfo.tools.tips.msg }}</span> | 673 | <span>{{ con.formInfo.tools.tips.msg }}</span> |
| 785 | </div> | 674 | </div> |
| 786 | </div> | 675 | </div> |
| 787 | <Form ref="dialogFormRef" :itemList="con.formInfo.items" :formId="con.formInfo.id" :rules="con.formInfo.rules" | 676 | <Form ref="dialogFormRef" :itemList="con.formInfo.items" :formId="con.formInfo.id" |
| 788 | :col="con.formInfo.col" :readonly="con.formInfo.readonly" @radioGroupChange="radioGroupChange" | 677 | :rules="con.formInfo.rules" :col="con.formInfo.col" :readonly="con.formInfo.readonly" |
| 789 | @selectChange="formSelectChange" @toolBtnClick="formToolBtnClick" @checkboxChange="checkboxChange" | 678 | @radioGroupChange="radioGroupChange" @selectChange="formSelectChange" @toolBtnClick="formToolBtnClick" |
| 790 | @switchChange="switchChange" @btnClick="btnClick" @treeSelectLoad="treeSelectLoad" @treeSelectNodeChange="treeSelectNodeChange" | 679 | @checkboxChange="checkboxChange" @switchChange="switchChange" @btnClick="btnClick" |
| 680 | @treeSelectLoad="treeSelectLoad" @treeSelectNodeChange="treeSelectNodeChange" | ||
| 791 | @scheduleChange="scheduleChange" @inputChange="formInputChange" /> | 681 | @scheduleChange="scheduleChange" @inputChange="formInputChange" /> |
| 792 | <template v-if="con.note"> | 682 | <template v-if="con.note"> |
| 793 | <div class="sql-note">{{ con.note }}</div> | 683 | <div class="sql-note">{{ con.note }}</div> |
| ... | @@ -799,30 +689,19 @@ defineExpose({ | ... | @@ -799,30 +689,19 @@ defineExpose({ |
| 799 | <template #footer v-if="footer.visible ?? true"> | 689 | <template #footer v-if="footer.visible ?? true"> |
| 800 | <div class="dialog-footer" :class="{ between: footer.textBtns }"> | 690 | <div class="dialog-footer" :class="{ between: footer.textBtns }"> |
| 801 | <div v-if="footer.textBtns"> | 691 | <div v-if="footer.textBtns"> |
| 802 | <span | 692 | <span class="text_btn" v-for="btn in footer.textBtns" :disabled="btn.disabled ?? false" |
| 803 | class="text_btn" | 693 | @click="btnClick(btn, null)" v-preReClick>{{ btn.label }}</span> |
| 804 | v-for="btn in footer.textBtns" | ||
| 805 | :disabled="btn.disabled ?? false" | ||
| 806 | @click="btnClick(btn, null)" | ||
| 807 | v-preReClick | ||
| 808 | >{{ btn.label }}</span | ||
| 809 | > | ||
| 810 | </div> | 694 | </div> |
| 811 | <div> | 695 | <div> |
| 812 | <template v-for="btn in footer.btns"> | 696 | <template v-for="btn in footer.btns"> |
| 813 | <el-button | 697 | <el-button v-if="btn.visible ?? true" :type="btn.type" :disabled="btn.disabled ?? false" |
| 814 | v-if="btn.visible ?? true" | 698 | :loading="btn.loading ?? btnLoading" @click="btnClick(btn, null)" v-preReClick>{{ btn.label }}</el-button> |
| 815 | :type="btn.type" | ||
| 816 | :disabled="btn.disabled ?? false" | ||
| 817 | :loading="btn.loading ?? btnLoading" | ||
| 818 | @click="btnClick(btn, null)" | ||
| 819 | v-preReClick | ||
| 820 | >{{ btn.label }}</el-button | ||
| 821 | > | ||
| 822 | </template> | 699 | </template> |
| 823 | </div> | 700 | </div> |
| 824 | </div> | 701 | </div> |
| 825 | </template> | 702 | </template> |
| 703 | <!-- 默认插槽内容 --> | ||
| 704 | <slot></slot> | ||
| 826 | </el-dialog> | 705 | </el-dialog> |
| 827 | </template> | 706 | </template> |
| 828 | 707 | ||
| ... | @@ -1042,7 +921,7 @@ defineExpose({ | ... | @@ -1042,7 +921,7 @@ defineExpose({ |
| 1042 | width: 100%; | 921 | width: 100%; |
| 1043 | position: relative; | 922 | position: relative; |
| 1044 | 923 | ||
| 1045 | & > span { | 924 | &>span { |
| 1046 | max-width: calc(100% - 20px); | 925 | max-width: calc(100% - 20px); |
| 1047 | overflow: hidden; | 926 | overflow: hidden; |
| 1048 | text-overflow: ellipsis; | 927 | text-overflow: ellipsis; | ... | ... |
| ... | @@ -99,7 +99,7 @@ const onClickOutside = (e: any) => { | ... | @@ -99,7 +99,7 @@ const onClickOutside = (e: any) => { |
| 99 | }; | 99 | }; |
| 100 | 100 | ||
| 101 | const getDrawerConRef = (refName) => { | 101 | const getDrawerConRef = (refName) => { |
| 102 | if(refName == 'drawerTableRef'){ | 102 | if (refName == 'drawerTableRef') { |
| 103 | const dtf = drawerTableRef.value[0] || drawerTableRef.value | 103 | const dtf = drawerTableRef.value[0] || drawerTableRef.value |
| 104 | return dtf?.tableRef | 104 | return dtf?.tableRef |
| 105 | } | 105 | } |
| ... | @@ -228,90 +228,45 @@ const drawerClose = () => { | ... | @@ -228,90 +228,45 @@ const drawerClose = () => { |
| 228 | </script> | 228 | </script> |
| 229 | 229 | ||
| 230 | <template> | 230 | <template> |
| 231 | <el-drawer | 231 | <el-drawer v-model="drawerVisible" :direction="drawerDirection" :size="drawerSize" :modal="drawerModal" |
| 232 | v-model="drawerVisible" | 232 | :close-on-click-modal="modalClose" :close-on-press-escape="modalClose" :modal-class="drawerModalClass" |
| 233 | :direction="drawerDirection" | 233 | destroy-on-close :z-index="props.drawerInfo.zIndex ?? null" @close="drawerClose"> |
| 234 | :size="drawerSize" | ||
| 235 | :modal="drawerModal" | ||
| 236 | :close-on-click-modal="modalClose" | ||
| 237 | :close-on-press-escape="modalClose" | ||
| 238 | :modal-class="drawerModalClass" | ||
| 239 | destroy-on-close | ||
| 240 | :z-index="props.drawerInfo.zIndex ?? null" | ||
| 241 | @close="drawerClose" | ||
| 242 | > | ||
| 243 | <template #header> | 234 | <template #header> |
| 244 | <span class="title">{{ drawerTitle }}</span> | 235 | <span class="title">{{ drawerTitle }}</span> |
| 245 | </template> | 236 | </template> |
| 246 | <template #default> | 237 | <template #default> |
| 247 | <div class="drawer-body-loading" v-if="drawerInfo.loading ?? false" v-loading="drawerInfo.loading ?? false"></div> | 238 | <div class="drawer-body-loading" v-if="drawerInfo.loading ?? false" v-loading="drawerInfo.loading ?? false"></div> |
| 248 | <div | 239 | <div v-else class="drawer_panel" :class="[con.col]" :style="con.style" v-for="con in contents"> |
| 249 | v-else | ||
| 250 | class="drawer_panel" | ||
| 251 | :class="[con.col]" | ||
| 252 | :style="con.style" | ||
| 253 | v-for="con in contents" | ||
| 254 | > | ||
| 255 | <div class="panel_title" v-if="con.title">{{ con.title }}</div> | 240 | <div class="panel_title" v-if="con.title">{{ con.title }}</div> |
| 256 | <template v-if="con.type && con.type.indexOf('table') > -1"> | 241 | <template v-if="con.type && con.type.indexOf('table') > -1"> |
| 257 | <div | 242 | <div class="table_tool" :class="[con.tableTool.col]" v-if="con.tableTool && (con.tableTool.visible ?? true)"> |
| 258 | class="table_tool" | ||
| 259 | :class="[con.tableTool.col]" | ||
| 260 | v-if="con.tableTool && (con.tableTool.visible ?? true)" | ||
| 261 | > | ||
| 262 | <template v-for="bar in con.tableTool.btns"> | 243 | <template v-for="bar in con.tableTool.btns"> |
| 263 | <el-popover | 244 | <el-popover v-if="bar.popover" :visible="bar.popover.visible" :title="bar.popover.title" |
| 264 | v-if="bar.popover" | 245 | :popper-class="bar.popover.class ?? ''" placement="bottom-start" :width="bar.popover.width ?? 200" |
| 265 | :visible="bar.popover.visible" | 246 | trigger="click"> |
| 266 | :title="bar.popover.title" | ||
| 267 | :popper-class="bar.popover.class ?? ''" | ||
| 268 | placement="bottom-start" | ||
| 269 | :width="bar.popover.width ?? 200" | ||
| 270 | trigger="click" | ||
| 271 | > | ||
| 272 | <template #reference> | 247 | <template #reference> |
| 273 | <el-button | 248 | <el-button :type="bar.type" @click="toolBtnClick(bar, con.type)" v-click-outside="onClickOutside" |
| 274 | :type="bar.type" | 249 | v-preReClick>{{ bar.label }}</el-button> |
| 275 | @click="toolBtnClick(bar, con.type)" | ||
| 276 | v-click-outside="onClickOutside" | ||
| 277 | v-preReClick | ||
| 278 | >{{ bar.label }}</el-button | ||
| 279 | > | ||
| 280 | </template> | 250 | </template> |
| 281 | <template #default> | 251 | <template #default> |
| 282 | <span v-html="bar.popover.content"></span> | 252 | <span v-html="bar.popover.content"></span> |
| 283 | </template> | 253 | </template> |
| 284 | </el-popover> | 254 | </el-popover> |
| 285 | <el-button | 255 | <el-button :type="bar.type" :plain="bar.plain" v-else @click="toolBtnClick(bar, 'table')" v-preReClick>{{ |
| 286 | :type="bar.type" | 256 | bar.label |
| 287 | :plain="bar.plain" | 257 | }}</el-button> |
| 288 | v-else | ||
| 289 | @click="toolBtnClick(bar, 'table')" | ||
| 290 | v-preReClick | ||
| 291 | >{{ bar.label }}</el-button | ||
| 292 | > | ||
| 293 | </template> | 258 | </template> |
| 294 | </div> | 259 | </div> |
| 295 | <div class="table_panel_wrap" :style="con.tableInfo.style"> | 260 | <div class="table_panel_wrap" :style="con.tableInfo.style"> |
| 296 | <Table | 261 | <Table ref="drawerTableRef" :class="[con.tableInfo.col]" :tableInfo="con.tableInfo" |
| 297 | ref="drawerTableRef" | 262 | @tableSelectChange="tableSelectChange" @tableBtnClick="tableBtnClick" |
| 298 | :class="[con.tableInfo.col]" | 263 | @tableSelectionChange="tableSelectionChange" @tableInputChange="tableInputChange" |
| 299 | :tableInfo="con.tableInfo" | 264 | @tablePageChange="tablePageChange" /> |
| 300 | @tableSelectChange="tableSelectChange" | ||
| 301 | @tableBtnClick="tableBtnClick" | ||
| 302 | @tableSelectionChange="tableSelectionChange" | ||
| 303 | @tableInputChange="tableInputChange" | ||
| 304 | @tablePageChange="tablePageChange" | ||
| 305 | /> | ||
| 306 | </div> | 265 | </div> |
| 307 | </template> | 266 | </template> |
| 308 | <template v-else-if="con.type && con.type.indexOf('tree') > -1"> | 267 | <template v-else-if="con.type && con.type.indexOf('tree') > -1"> |
| 309 | <div class="list_tree" v-if="con.type.indexOf('list') > -1"> | 268 | <div class="list_tree" v-if="con.type.indexOf('list') > -1"> |
| 310 | <ListPanel | 269 | <ListPanel ref="formListRef" :listInfo="con.listInfo" @itemClick="listItemClick" /> |
| 311 | ref="formListRef" | ||
| 312 | :listInfo="con.listInfo" | ||
| 313 | @itemClick="listItemClick" | ||
| 314 | /> | ||
| 315 | <Tree ref="formTreeRef" :treeInfo="con.treeInfo" /> | 270 | <Tree ref="formTreeRef" :treeInfo="con.treeInfo" /> |
| 316 | </div> | 271 | </div> |
| 317 | <Tree ref="formTreeRef" :treeInfo="con.treeInfo" v-else /> | 272 | <Tree ref="formTreeRef" :treeInfo="con.treeInfo" v-else /> |
| ... | @@ -329,23 +284,12 @@ const drawerClose = () => { | ... | @@ -329,23 +284,12 @@ const drawerClose = () => { |
| 329 | </template> | 284 | </template> |
| 330 | <template v-else-if="con.type && con.type.indexOf('upload') > -1"> | 285 | <template v-else-if="con.type && con.type.indexOf('upload') > -1"> |
| 331 | <div class="upload_tool"> | 286 | <div class="upload_tool"> |
| 332 | <UploadFiles | 287 | <UploadFiles ref="uploadRef" :upload-info="con.uploadInfo" @onUpload="onUpload" @beforeUPload="beforeUPload" |
| 333 | ref="uploadRef" | 288 | @uploadFile="uploadFile" @uploadBtnClick="uploadBtnClick" /> |
| 334 | :upload-info="con.uploadInfo" | ||
| 335 | @onUpload="onUpload" | ||
| 336 | @beforeUPload="beforeUPload" | ||
| 337 | @uploadFile="uploadFile" | ||
| 338 | @uploadBtnClick="uploadBtnClick" | ||
| 339 | /> | ||
| 340 | <div class="tool_btns" v-if="con.tools && con.tools.visible"> | 289 | <div class="tool_btns" v-if="con.tools && con.tools.visible"> |
| 341 | <template v-for="btn in con.tools.btns"> | 290 | <template v-for="btn in con.tools.btns"> |
| 342 | <el-button | 291 | <el-button v-if="btn.visible ?? true" :type="btn.type" :plain="btn.plain" |
| 343 | v-if="btn.visible ?? true" | 292 | @click="toolBtnClick(btn, 'table')" v-preReClick> |
| 344 | :type="btn.type" | ||
| 345 | :plain="btn.plain" | ||
| 346 | @click="toolBtnClick(btn, 'table')" | ||
| 347 | v-preReClick | ||
| 348 | > | ||
| 349 | <el-icon v-if="btn.icon && btn.icon == 'Upload'"> | 293 | <el-icon v-if="btn.icon && btn.icon == 'Upload'"> |
| 350 | <Upload /> | 294 | <Upload /> |
| 351 | </el-icon> | 295 | </el-icon> |
| ... | @@ -357,49 +301,28 @@ const drawerClose = () => { | ... | @@ -357,49 +301,28 @@ const drawerClose = () => { |
| 357 | </template> | 301 | </template> |
| 358 | </div> | 302 | </div> |
| 359 | </div> | 303 | </div> |
| 360 | <div | 304 | <div class="upload_table_panel_wrap" v-if="con.tableInfo && Object.keys(con.tableInfo).length"> |
| 361 | class="upload_table_panel_wrap" | 305 | <Table ref="drawerTableRef" :class="[con.tableInfo.col]" :tableInfo="con.tableInfo" |
| 362 | v-if="con.tableInfo && Object.keys(con.tableInfo).length" | 306 | @tableSelectChange="tableSelectChange" @tableBtnClick="tableBtnClick" |
| 363 | > | 307 | @tableSelectionChange="tableSelectionChange" @tableInputChange="tableInputChange" |
| 364 | <Table | 308 | @tablePageChange="tablePageChange" /> |
| 365 | ref="drawerTableRef" | ||
| 366 | :class="[con.tableInfo.col]" | ||
| 367 | :tableInfo="con.tableInfo" | ||
| 368 | @tableSelectChange="tableSelectChange" | ||
| 369 | @tableBtnClick="tableBtnClick" | ||
| 370 | @tableSelectionChange="tableSelectionChange" | ||
| 371 | @tableInputChange="tableInputChange" | ||
| 372 | @tablePageChange="tablePageChange" | ||
| 373 | /> | ||
| 374 | </div> | 309 | </div> |
| 375 | </template> | 310 | </template> |
| 376 | <template v-else> | 311 | <template v-else> |
| 377 | <Form | 312 | <Form ref="drawerFormRef" :itemList="con.formInfo.items" :formId="con.formInfo.id" :rules="con.formInfo.rules" |
| 378 | ref="drawerFormRef" | 313 | :col="con.formInfo.col" :readonly="con.formInfo.readonly" @radioGroupChange="radioGroupChange" |
| 379 | :itemList="con.formInfo.items" | 314 | @selectChange="formSelectChange" @btnClick="formBtnClick"> |
| 380 | :formId="con.formInfo.id" | 315 | </Form> |
| 381 | :rules="con.formInfo.rules" | 316 | <!-- 插槽内容 --> |
| 382 | :col="con.formInfo.col" | 317 | <slot></slot> |
| 383 | :readonly="con.formInfo.readonly" | ||
| 384 | @radioGroupChange="radioGroupChange" | ||
| 385 | @selectChange="formSelectChange" | ||
| 386 | @btnClick="formBtnClick" | ||
| 387 | /> | ||
| 388 | </template> | 318 | </template> |
| 389 | </div> | 319 | </div> |
| 390 | </template> | 320 | </template> |
| 391 | <template #footer v-if="footer.visible ?? true"> | 321 | <template #footer v-if="footer.visible ?? true"> |
| 392 | <div style="flex: auto"> | 322 | <div style="flex: auto"> |
| 393 | <template v-for="btn in footer.btns"> | 323 | <template v-for="btn in footer.btns"> |
| 394 | <el-button | 324 | <el-button v-if="btn.visible ?? true" :type="btn.type" :disabled="btn.disabled ?? false" |
| 395 | v-if="btn.visible ?? true" | 325 | @click="btnClick(btn, null)" v-preReClick :loading="btn.loading ?? false">{{ btn.label }}</el-button> |
| 396 | :type="btn.type" | ||
| 397 | :disabled="btn.disabled ?? false" | ||
| 398 | @click="btnClick(btn, null)" | ||
| 399 | v-preReClick | ||
| 400 | :loading="btn.loading ?? false" | ||
| 401 | >{{ btn.label }}</el-button | ||
| 402 | > | ||
| 403 | </template> | 326 | </template> |
| 404 | </div> | 327 | </div> |
| 405 | </template> | 328 | </template> | ... | ... |
This diff could not be displayed because it is too large.
src/mock/data_inventory.ts
0 → 100644
| 1 | import type { MockMethod } from 'vite-plugin-mock' | ||
| 2 | import Mock from 'mockjs' | ||
| 3 | |||
| 4 | |||
| 5 | export const confirmDelivery = { | ||
| 6 | url: '/mock/youthBoost/admin/shipment', | ||
| 7 | method: 'post', | ||
| 8 | response: ({body}:{body:any}) => { | ||
| 9 | |||
| 10 | return { | ||
| 11 | code: 200, | ||
| 12 | message: '成功', | ||
| 13 | data: [] | ||
| 14 | } | ||
| 15 | } | ||
| 16 | } | ||
| 17 | |||
| 18 | |||
| 19 | export default [confirmDelivery] as MockMethod[] |
| 1 | // import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' | ||
| 2 | |||
| 3 | // const mocks: any[] = [] | ||
| 4 | // const mockContext = import.meta.glob('./mock/*.ts', { eager: true }) | ||
| 5 | // Object.keys(mockContext).forEach((v) => { | ||
| 6 | // mocks.push(...(mockContext[v] as any).default) | ||
| 7 | // }) | ||
| 8 | |||
| 9 | // export function setupProdMockServer() { | ||
| 10 | // createProdMockServer(mocks) | ||
| 11 | // } | ||
| 12 | |||
| 1 | import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' | 13 | import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer' |
| 14 | import dataInventory from './mock/data_inventory' | ||
| 2 | 15 | ||
| 3 | const mocks: any[] = [] | ||
| 4 | const mockContext = import.meta.glob('./mock/*.ts', { eager: true }) | ||
| 5 | Object.keys(mockContext).forEach((v) => { | ||
| 6 | mocks.push(...(mockContext[v] as any).default) | ||
| 7 | }) | ||
| 8 | 16 | ||
| 9 | export function setupProdMockServer() { | 17 | export function setupProdMockServer() { |
| 10 | createProdMockServer(mocks) | 18 | createProdMockServer([...dataInventory,]) |
| 11 | } | 19 | } | ... | ... |
| ... | @@ -89,7 +89,17 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -89,7 +89,17 @@ const routes: RouteRecordRaw[] = [ |
| 89 | name: 'templateConfig', | 89 | name: 'templateConfig', |
| 90 | component: () => import('@/views/data_inventory/templateConfig.vue'), | 90 | component: () => import('@/views/data_inventory/templateConfig.vue'), |
| 91 | meta: { | 91 | meta: { |
| 92 | title: '分类分级模板', | 92 | title: '分类分级标准', |
| 93 | breadcrumb: false, | ||
| 94 | cache: true | ||
| 95 | }, | ||
| 96 | }, | ||
| 97 | { | ||
| 98 | path: 'data-label', | ||
| 99 | name: 'dataLabel', | ||
| 100 | component: () => import('@/views/data_inventory/dataLabel.vue'), | ||
| 101 | meta: { | ||
| 102 | title: '标签管理', | ||
| 93 | breadcrumb: false, | 103 | breadcrumb: false, |
| 94 | cache: true | 104 | cache: true |
| 95 | }, | 105 | }, |
| ... | @@ -109,7 +119,7 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -109,7 +119,7 @@ const routes: RouteRecordRaw[] = [ |
| 109 | }, | 119 | }, |
| 110 | beforeEnter: (to, from) => { | 120 | beforeEnter: (to, from) => { |
| 111 | if (to.query.classStandardName) { | 121 | if (to.query.classStandardName) { |
| 112 | to.meta.title = `编辑-${to.query.classStandardName}`; | 122 | to.meta.title = `编辑-${to.query.classStandardName}`; |
| 113 | } | 123 | } |
| 114 | } | 124 | } |
| 115 | }, | 125 | }, |
| ... | @@ -165,6 +175,47 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -165,6 +175,47 @@ const routes: RouteRecordRaw[] = [ |
| 165 | } | 175 | } |
| 166 | } | 176 | } |
| 167 | }, | 177 | }, |
| 178 | { | ||
| 179 | path: 'classificationTemplate-edit', | ||
| 180 | name: 'classificationTemplateEdit', | ||
| 181 | component: () => import('@/views/data_inventory/classificationTemplateEdit.vue'), | ||
| 182 | meta: { | ||
| 183 | title: '编辑-', | ||
| 184 | sidebar: false, | ||
| 185 | breadcrumb: false, | ||
| 186 | cache: true, | ||
| 187 | reuse: true, | ||
| 188 | editPage: true, | ||
| 189 | activeMenu: '/data-inventory/classify-grade-manage/template-config' | ||
| 190 | }, | ||
| 191 | beforeEnter: (to, from) => { | ||
| 192 | if (to.query.classClassifyGradName) { | ||
| 193 | to.meta.title = `编辑-${to.query.classClassifyGradName}`; | ||
| 194 | } | ||
| 195 | } | ||
| 196 | }, | ||
| 197 | |||
| 198 | ], | ||
| 199 | }, | ||
| 200 | { | ||
| 201 | path: '/data-inventory/classify-grade-catalogue', | ||
| 202 | component: Layout, | ||
| 203 | meta: { | ||
| 204 | title: '分类分级目录', | ||
| 205 | icon: 'sidebar-videos', | ||
| 206 | }, | ||
| 207 | children: [ | ||
| 208 | { | ||
| 209 | path: '', | ||
| 210 | name: 'classifyGradeCatalogue', | ||
| 211 | component: () => import('@/views/data_inventory/classifyGradeCatalogue.vue'), | ||
| 212 | meta: { | ||
| 213 | title: '分类分级目录', | ||
| 214 | sidebar: false, | ||
| 215 | breadcrumb: false, | ||
| 216 | cache: true | ||
| 217 | }, | ||
| 218 | }, | ||
| 168 | ], | 219 | ], |
| 169 | } | 220 | } |
| 170 | ] | 221 | ] | ... | ... |
| ... | @@ -484,7 +484,7 @@ export const tagType = (row, type) => { | ... | @@ -484,7 +484,7 @@ export const tagType = (row, type) => { |
| 484 | } | 484 | } |
| 485 | } else if (type == 'state') { | 485 | } else if (type == 'state') { |
| 486 | switch (row[type]) { | 486 | switch (row[type]) { |
| 487 | case 'N': | 487 | case 'N': |
| 488 | state = 'warning'; | 488 | state = 'warning'; |
| 489 | break; | 489 | break; |
| 490 | case "Y": | 490 | case "Y": |
| ... | @@ -552,6 +552,18 @@ export const tagType = (row, type) => { | ... | @@ -552,6 +552,18 @@ export const tagType = (row, type) => { |
| 552 | state = 'danger'//发布中 | 552 | state = 'danger'//发布中 |
| 553 | break; | 553 | break; |
| 554 | } | 554 | } |
| 555 | }else if (type == 'status'){ | ||
| 556 | switch (row[type]) { | ||
| 557 | case 'Y': | ||
| 558 | state = 'success'; | ||
| 559 | break; | ||
| 560 | case 'S': | ||
| 561 | state = 'info'; | ||
| 562 | break; | ||
| 563 | default: | ||
| 564 | state = 'info'; | ||
| 565 | break; | ||
| 566 | } | ||
| 555 | } | 567 | } |
| 556 | return state; | 568 | return state; |
| 557 | } | 569 | } | ... | ... |
| ... | @@ -9,6 +9,8 @@ import { useValidator } from '@/hooks/useValidator'; | ... | @@ -9,6 +9,8 @@ import { useValidator } from '@/hooks/useValidator'; |
| 9 | import { TableColumnWidth } from '@/utils/enum'; | 9 | import { TableColumnWidth } from '@/utils/enum'; |
| 10 | import G6 from '@antv/g6'; | 10 | import G6 from '@antv/g6'; |
| 11 | import { IGroup, ModelConfig } from '@antv/g6'; | 11 | import { IGroup, ModelConfig } from '@antv/g6'; |
| 12 | import { getClassifyGradList, getClassifyTreeList, getGradeList, saveClassify, updateClassify, deleteClassify } from "@/api/modules/dataInventory"; | ||
| 13 | |||
| 12 | 14 | ||
| 13 | const { required, orderNum } = useValidator(); | 15 | const { required, orderNum } = useValidator(); |
| 14 | const { proxy } = getCurrentInstance() as any; | 16 | const { proxy } = getCurrentInstance() as any; |
| ... | @@ -18,51 +20,67 @@ const fullPath = route.query.fullPath; | ... | @@ -18,51 +20,67 @@ const fullPath = route.query.fullPath; |
| 18 | const userStore = useUserStore(); | 20 | const userStore = useUserStore(); |
| 19 | 21 | ||
| 20 | const fullscreenLoading = ref(false); | 22 | const fullscreenLoading = ref(false); |
| 21 | |||
| 22 | const formRef = ref(); | 23 | const formRef = ref(); |
| 24 | |||
| 23 | const classStandardFormItems = ref([{ | 25 | const classStandardFormItems = ref([{ |
| 24 | label: '分类名称', | 26 | label: '分类名称', |
| 25 | type: 'input', | 27 | type: 'input', |
| 26 | maxlength: 50, | 28 | maxlength: 50, |
| 27 | placeholder: '请输入', | 29 | placeholder: '请输入', |
| 28 | field: 'classStandardName', | 30 | field: 'classStandardName', |
| 29 | default: '', | 31 | default: router.currentRoute.value.query.classStandardName, |
| 30 | clearable: true, | 32 | clearable: true, |
| 31 | disabled: true, | 33 | disabled: true, |
| 32 | required: true | 34 | required: true |
| 33 | }, { | 35 | }, { |
| 34 | label: '分级标准', | 36 | label: '分级标准', |
| 35 | type: 'select', | 37 | type: 'input', |
| 36 | placeholder: '请选择', | 38 | placeholder: '请选择', |
| 37 | field: 'gradeStandard', | 39 | field: 'gradeStandard', |
| 38 | default: 1, | 40 | default: '', |
| 39 | options: [], //TODO | ||
| 40 | required: true, | 41 | required: true, |
| 41 | filterable: true, | 42 | filterable: true, |
| 42 | clearable: true, | 43 | clearable: true, |
| 43 | disabled: true, | 44 | disabled: true, |
| 44 | visible: true, | 45 | visible: true, |
| 45 | }]); | 46 | }]); |
| 46 | const currTableInfo = ref({}); | 47 | |
| 48 | // 定义层级映射1->一级,2->二级,3->三级,4->四级 | ||
| 49 | const levelMap = { | ||
| 50 | 1: '一级', | ||
| 51 | 2: '二级', | ||
| 52 | 3: '三级', | ||
| 53 | 4: '四级', | ||
| 54 | } | ||
| 55 | const currTableInfo = ref<any>({}); | ||
| 56 | |||
| 47 | const tableInfo = ref({ | 57 | const tableInfo = ref({ |
| 48 | id: "data-class-standard-table", | 58 | id: "data-class-standard-table", |
| 49 | multiple: false, | 59 | multiple: false, |
| 50 | fields: [ | 60 | fields: [ |
| 51 | { label: "序号", type: "index", width: 56, align: "center" }, | 61 | { label: "序号", type: "index", width: 56, align: "center" }, |
| 52 | { label: "分类", field: "className", width: 160, type: 'expand' }, | 62 | { label: "分类", field: "classifyName", width: 160, type: 'expand' }, |
| 53 | { label: "层级", field: "levelName", width: 120 }, | 63 | { |
| 54 | { label: "状态", field: "state", type: "tag", width: 120, align: "center" }, | 64 | label: "层级", field: "level", width: 120, getName: (scope) => { |
| 55 | { label: "定义说明", field: "description", width: TableColumnWidth.DESCRIPTION }, | 65 | let level = scope.row.level; |
| 56 | { label: "最低安全级别参考", field: "minLevel", width: 140 }, | 66 | return levelMap[level]; |
| 67 | } | ||
| 68 | }, | ||
| 69 | { | ||
| 70 | label: "状态", field: "status", type: "tag", width: 120, align: "center", getName: (scope) => { | ||
| 71 | let status = scope.row.status; | ||
| 72 | return status == 'Y' ? '有效' : '停用'; | ||
| 73 | } | ||
| 74 | }, | ||
| 75 | { label: "定义说明", width: 360, field: "description", }, | ||
| 76 | { | ||
| 77 | label: "最低安全级别参考", field: "name", width: 140, | ||
| 78 | }, | ||
| 57 | { label: "修改人", field: "updateUserName", width: 140 }, | 79 | { label: "修改人", field: "updateUserName", width: 140 }, |
| 58 | { label: "更新时间", field: "updateTime", width: 180 }, | 80 | { label: "更新时间", field: "updateTime", width: 180 }, |
| 59 | ], | 81 | ], |
| 60 | data: [{ | 82 | data: [], |
| 61 | guid: '1', | 83 | rowKey: 'guid', |
| 62 | children: [{ | ||
| 63 | guid: '1-1' | ||
| 64 | }] | ||
| 65 | }], | ||
| 66 | showPage: false, | 84 | showPage: false, |
| 67 | actionInfo: { | 85 | actionInfo: { |
| 68 | label: "操作", | 86 | label: "操作", |
| ... | @@ -71,6 +89,8 @@ const tableInfo = ref({ | ... | @@ -71,6 +89,8 @@ const tableInfo = ref({ |
| 71 | btns: [ | 89 | btns: [ |
| 72 | { | 90 | { |
| 73 | label: "编辑", value: "edit", click: (scope) => { | 91 | label: "编辑", value: "edit", click: (scope) => { |
| 92 | console.log(scope); | ||
| 93 | selectParentEdit(scope.row.guid); | ||
| 74 | currTableInfo.value = scope.row; | 94 | currTableInfo.value = scope.row; |
| 75 | drawerInfo.value.visible = true; | 95 | drawerInfo.value.visible = true; |
| 76 | drawerInfo.value.header.title = '编辑分类'; | 96 | drawerInfo.value.header.title = '编辑分类'; |
| ... | @@ -81,15 +101,16 @@ const tableInfo = ref({ | ... | @@ -81,15 +101,16 @@ const tableInfo = ref({ |
| 81 | }, | 101 | }, |
| 82 | { | 102 | { |
| 83 | label: "删除", value: "delete", click: (scope) => { | 103 | label: "删除", value: "delete", click: (scope) => { |
| 104 | console.log(scope); | ||
| 84 | proxy.$openMessageBox("此操作将永久删除该分类, 是否继续", () => { | 105 | proxy.$openMessageBox("此操作将永久删除该分类, 是否继续", () => { |
| 85 | // deleteBizTerm([scope.row.guid]).then((res: any) => { | 106 | deleteClassify({ guid: scope.row.guid }).then((res: any) => { |
| 86 | // if (res.code == proxy.$passCode) { | 107 | if (res.code == proxy.$passCode) { |
| 87 | // getTableData(); | 108 | getTreeListData(); |
| 88 | // proxy.$ElMessage.success('该分类删除成功'); | 109 | proxy.$ElMessage.success('该分类删除成功'); |
| 89 | // } else { | 110 | } else { |
| 90 | // proxy.$ElMessage.error(res.msg); | 111 | proxy.$ElMessage.error(res.msg); |
| 91 | // } | 112 | } |
| 92 | // }); | 113 | }); |
| 93 | }) | 114 | }) |
| 94 | } | 115 | } |
| 95 | }, | 116 | }, |
| ... | @@ -103,7 +124,7 @@ const classEditFormItems = ref([{ | ... | @@ -103,7 +124,7 @@ const classEditFormItems = ref([{ |
| 103 | type: 'input', | 124 | type: 'input', |
| 104 | maxlength: 50, | 125 | maxlength: 50, |
| 105 | placeholder: '请输入', | 126 | placeholder: '请输入', |
| 106 | field: 'classStandardName', | 127 | field: 'classifyName', |
| 107 | default: '', | 128 | default: '', |
| 108 | clearable: true, | 129 | clearable: true, |
| 109 | required: true | 130 | required: true |
| ... | @@ -127,7 +148,7 @@ const classEditFormItems = ref([{ | ... | @@ -127,7 +148,7 @@ const classEditFormItems = ref([{ |
| 127 | checkStrictly: true, | 148 | checkStrictly: true, |
| 128 | lazy: false, | 149 | lazy: false, |
| 129 | props: { | 150 | props: { |
| 130 | label: "className", | 151 | label: "classifyName", |
| 131 | value: "guid", | 152 | value: "guid", |
| 132 | }, | 153 | }, |
| 133 | block: true, | 154 | block: true, |
| ... | @@ -138,9 +159,13 @@ const classEditFormItems = ref([{ | ... | @@ -138,9 +159,13 @@ const classEditFormItems = ref([{ |
| 138 | label: '最低安全级别参考', | 159 | label: '最低安全级别参考', |
| 139 | type: 'select', | 160 | type: 'select', |
| 140 | placeholder: '请选择', | 161 | placeholder: '请选择', |
| 141 | field: 'lowerLevel', | 162 | field: 'gradeGuid', |
| 142 | default: 1, | 163 | default: 1, |
| 143 | options: [], //TODO | 164 | options: [], //TODO |
| 165 | props: { | ||
| 166 | label: "name", | ||
| 167 | value: "guid", | ||
| 168 | }, | ||
| 144 | required: false, | 169 | required: false, |
| 145 | filterable: true, | 170 | filterable: true, |
| 146 | clearable: true, | 171 | clearable: true, |
| ... | @@ -148,12 +173,12 @@ const classEditFormItems = ref([{ | ... | @@ -148,12 +173,12 @@ const classEditFormItems = ref([{ |
| 148 | }, { | 173 | }, { |
| 149 | label: '业务状态', | 174 | label: '业务状态', |
| 150 | type: 'switch', | 175 | type: 'switch', |
| 151 | field: 'state', | 176 | field: 'status', |
| 152 | default: 'Y', | 177 | default: 'Y', |
| 153 | activeText: "有效", | 178 | activeText: "有效", |
| 154 | inactiveText: "停用", | 179 | inactiveText: "停用", |
| 155 | activeValue: 'Y', | 180 | activeValue: 'Y', |
| 156 | inactiveValue: 'N' | 181 | inactiveValue: 'S' |
| 157 | }, { | 182 | }, { |
| 158 | label: '定义说明', | 183 | label: '定义说明', |
| 159 | type: 'textarea', | 184 | type: 'textarea', |
| ... | @@ -165,11 +190,41 @@ const classEditFormItems = ref([{ | ... | @@ -165,11 +190,41 @@ const classEditFormItems = ref([{ |
| 165 | block: true | 190 | block: true |
| 166 | }]); | 191 | }]); |
| 167 | 192 | ||
| 193 | const validateUniqueClassifyName = (rule, value, callback) => { | ||
| 194 | console.log('validateUniqueClassifyName', value); | ||
| 195 | // 递归遍历treeListData,判断是否有重复的分类名称 | ||
| 196 | // 检查空值情况 | ||
| 197 | if (!value) { | ||
| 198 | callback(new Error('请填写分类名称')); | ||
| 199 | return; | ||
| 200 | } | ||
| 201 | |||
| 202 | // 递归检查函数 | ||
| 203 | const isExist = (data, value) => { | ||
| 204 | return data.some(item => { | ||
| 205 | if (item.classifyName === value) { | ||
| 206 | return true; | ||
| 207 | } | ||
| 208 | return item.children && isExist(item.children, value); | ||
| 209 | }); | ||
| 210 | }; | ||
| 211 | |||
| 212 | // 检查是否存在 | ||
| 213 | if (isExist(treeListData.value, value)) { | ||
| 214 | callback(new Error('分类名称已存在,请填写其他名称')); | ||
| 215 | } else { | ||
| 216 | callback(); // 校验通过 | ||
| 217 | } | ||
| 218 | } | ||
| 219 | |||
| 220 | |||
| 168 | const classEditFormRules = ref({ | 221 | const classEditFormRules = ref({ |
| 169 | classStandardName: [required('请填写分类名称')], //TODO,要自己判断分类名称是否重复。规则是什么呢。 | 222 | classifyName: [{ required: true, message: '请填写分类名称', trigger: 'blur' }, |
| 170 | orderNum: [orderNum()] | 223 | { validator: validateUniqueClassifyName, trigger: 'blur' }], |
| 224 | orderNum: [orderNum()], | ||
| 171 | }); | 225 | }); |
| 172 | 226 | ||
| 227 | |||
| 173 | /** 新增分类的form */ | 228 | /** 新增分类的form */ |
| 174 | const classEditFormInfo = ref({ | 229 | const classEditFormInfo = ref({ |
| 175 | type: "form", | 230 | type: "form", |
| ... | @@ -203,11 +258,129 @@ const drawerInfo = ref({ | ... | @@ -203,11 +258,129 @@ const drawerInfo = ref({ |
| 203 | } | 258 | } |
| 204 | }) | 259 | }) |
| 205 | 260 | ||
| 206 | const drawerBtnClick = (btn, info) => { | 261 | const drawerBtnClick = async (btn, info) => { |
| 207 | if (btn.value == 'cancel') { | 262 | if (btn.value == 'cancel') { |
| 208 | drawerInfo.value.visible = false; | 263 | drawerInfo.value.visible = false; |
| 209 | } else { | 264 | } else { |
| 265 | if (drawerInfo.value.header.title == '添加分类') { | ||
| 266 | const params = { | ||
| 267 | ...info, | ||
| 268 | classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 269 | } | ||
| 270 | const res: any = await saveClassify(params); | ||
| 271 | if (res.code == proxy.$passCode) { | ||
| 272 | proxy.$ElMessage.success('添加成功!'); | ||
| 273 | drawerInfo.value.visible = false; | ||
| 274 | getTreeListData(); | ||
| 275 | } else { | ||
| 276 | proxy.$ElMessage.error(res.msg); | ||
| 277 | } | ||
| 278 | } else { | ||
| 279 | // 编辑分类 | ||
| 280 | const params = { | ||
| 281 | ...info, | ||
| 282 | classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 283 | guid: currTableInfo.value.guid | ||
| 284 | } | ||
| 285 | const res: any = await updateClassify(params); | ||
| 286 | if (res.code == proxy.$passCode) { | ||
| 287 | proxy.$ElMessage.success('修改成功!'); | ||
| 288 | drawerInfo.value.visible = false; | ||
| 289 | getTreeListData(); | ||
| 290 | } else { | ||
| 291 | proxy.$ElMessage.error(res.msg); | ||
| 292 | } | ||
| 293 | } | ||
| 294 | } | ||
| 295 | } | ||
| 296 | const refGradePageParams = ref({ | ||
| 297 | pageIndex: 1, | ||
| 298 | pageSize: -1, | ||
| 299 | type: "G" | ||
| 300 | }); | ||
| 301 | const classifyGradListData = ref([]); | ||
| 302 | |||
| 303 | // 获取分级列表 | ||
| 304 | const getClassifyGradListData = async () => { | ||
| 305 | const res: any = await getClassifyGradList(refGradePageParams.value); | ||
| 306 | if (res.code == proxy.$passCode) { | ||
| 307 | classifyGradListData.value = res.data.records || []; | ||
| 308 | const gradeName = findStandardName(router.currentRoute.value.query.refGradeGuid as any); | ||
| 309 | classStandardFormItems.value[1].default = gradeName; | ||
| 310 | } else { | ||
| 311 | proxy.$ElMessage.error(res.msg); | ||
| 312 | } | ||
| 313 | } | ||
| 314 | const findStandardName = (guid: string) => { | ||
| 315 | const item: any = classifyGradListData.value.find((item: any) => item.guid == guid); | ||
| 316 | return item ? item.name : ''; | ||
| 317 | } | ||
| 318 | |||
| 319 | // 获取分类树形列表 | ||
| 320 | const treeListParams = ref({ | ||
| 321 | pageIndex: 1, | ||
| 322 | pageSize: -1, | ||
| 323 | classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 324 | }); | ||
| 325 | const treeListData = ref([]); | ||
| 326 | const getTreeListData = async () => { | ||
| 327 | const res: any = await getClassifyTreeList(treeListParams.value); | ||
| 328 | if (res.code == proxy.$passCode) { | ||
| 329 | treeListData.value = res.data || []; | ||
| 330 | tableInfo.value.data = treeListData.value; | ||
| 331 | classEditFormItems.value[2].options = treeListData.value; | ||
| 332 | shapeTreeListData.value = treeListData.value; | ||
| 333 | } else { | ||
| 334 | proxy.$ElMessage.error(res.msg); | ||
| 335 | } | ||
| 336 | } | ||
| 337 | // 这里有个需求就是编辑时,不能选择自己和自己的子类children作为上级分类,每条数据加上disabled属性true or false | ||
| 338 | const selectParentEdit = (guid: string) => { | ||
| 339 | const cloneData = JSON.parse(JSON.stringify(treeListData.value)); // 深拷贝数据,避免直接修改原始数据 | ||
| 340 | const disableNodeAndChildren = (node: any, disabled: boolean) => { | ||
| 341 | node.disabled = disabled; | ||
| 342 | if (node.children && node.children.length > 0) { | ||
| 343 | node.children.forEach((child: any) => disableNodeAndChildren(child, disabled)); | ||
| 344 | } | ||
| 345 | }; | ||
| 346 | const updateDisabledStatus = (nodes: any[], guid: string) => { | ||
| 347 | nodes.forEach((node) => { | ||
| 348 | if (node.guid === guid) { | ||
| 349 | // 禁用当前节点及其所有子节点 | ||
| 350 | disableNodeAndChildren(node, true); | ||
| 351 | } else { | ||
| 352 | // 其他节点保持启用状态 | ||
| 353 | node.disabled = false; | ||
| 354 | if (node.children && node.children.length > 0) { | ||
| 355 | updateDisabledStatus(node.children, guid); | ||
| 356 | } | ||
| 357 | } | ||
| 358 | }); | ||
| 359 | }; | ||
| 360 | updateDisabledStatus(cloneData, guid); | ||
| 361 | classEditFormItems.value[2].options = cloneData; // 更新选项 | ||
| 362 | }; | ||
| 210 | 363 | ||
| 364 | |||
| 365 | // 获取最低安全级别参考 // 获取分级列表 | ||
| 366 | const gradeTablelist = ref<any>([]); | ||
| 367 | const getGradeListData = async () => { | ||
| 368 | console.log(shapeMain.value, shapeMain.value.clientWidth, shapeMain.value.clientHeight); | ||
| 369 | const params = { | ||
| 370 | pageIndex: 1, | ||
| 371 | pageSize: -1, | ||
| 372 | classifyGradeGuid: router.currentRoute.value.query.refGradeGuid, | ||
| 373 | } | ||
| 374 | const res: any = await getGradeList(params); | ||
| 375 | if (res.code == proxy.$passCode) { | ||
| 376 | gradeTablelist.value = res.data.records; | ||
| 377 | console.log('gradeTablelist', gradeTablelist.value); | ||
| 378 | for (let i = 0; i < gradeTablelist.value.length; i++) { | ||
| 379 | gradeTablelist.value[i].name = gradeTablelist.value[i].dataGrade + '级'; | ||
| 380 | } | ||
| 381 | classEditFormItems.value[3].options = gradeTablelist.value; | ||
| 382 | } else { | ||
| 383 | proxy.$ElMessage.error(res.msg); | ||
| 211 | } | 384 | } |
| 212 | } | 385 | } |
| 213 | 386 | ||
| ... | @@ -215,7 +388,7 @@ const newCreateClass = () => { | ... | @@ -215,7 +388,7 @@ const newCreateClass = () => { |
| 215 | drawerInfo.value.visible = true; | 388 | drawerInfo.value.visible = true; |
| 216 | drawerInfo.value.header.title = '添加分类'; | 389 | drawerInfo.value.header.title = '添加分类'; |
| 217 | classEditFormItems.value.forEach(item => { | 390 | classEditFormItems.value.forEach(item => { |
| 218 | if (item.field == 'state') { | 391 | if (item.field == 'status') { |
| 219 | item.default = 'Y'; | 392 | item.default = 'Y'; |
| 220 | } else { | 393 | } else { |
| 221 | item.default = ''; | 394 | item.default = ''; |
| ... | @@ -228,8 +401,7 @@ const importClass = () => { | ... | @@ -228,8 +401,7 @@ const importClass = () => { |
| 228 | 401 | ||
| 229 | } | 402 | } |
| 230 | 403 | ||
| 231 | const dataShowMethod = ref('shape'); | 404 | const dataShowMethod = ref('table'); |
| 232 | |||
| 233 | /** 切换是图形展示,还是表格展示。 */ | 405 | /** 切换是图形展示,还是表格展示。 */ |
| 234 | const changeShowMethod = () => { | 406 | const changeShowMethod = () => { |
| 235 | dataShowMethod.value = dataShowMethod.value == 'table' ? 'shape' : 'table'; | 407 | dataShowMethod.value = dataShowMethod.value == 'table' ? 'shape' : 'table'; |
| ... | @@ -246,12 +418,10 @@ const cancel = () => { | ... | @@ -246,12 +418,10 @@ const cancel = () => { |
| 246 | }); | 418 | }); |
| 247 | } | 419 | } |
| 248 | 420 | ||
| 249 | const save = () => { | ||
| 250 | 421 | ||
| 251 | } | 422 | // const graph = ref(); |
| 252 | |||
| 253 | const graph = ref(); | ||
| 254 | const shapeMain = ref(); | 423 | const shapeMain = ref(); |
| 424 | const shapeTreeListData = ref<any>(); | ||
| 255 | 425 | ||
| 256 | var COLLAPSE_ICON = function COLLAPSE_ICON(x, y, r) { | 426 | var COLLAPSE_ICON = function COLLAPSE_ICON(x, y, r) { |
| 257 | return [['M', x, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x + 2, y], ['L', x + 2 * r - 2, y]]; | 427 | return [['M', x, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x + 2, y], ['L', x + 2 * r - 2, y]]; |
| ... | @@ -260,15 +430,19 @@ var EXPAND_ICON = function EXPAND_ICON(x, y, r) { | ... | @@ -260,15 +430,19 @@ var EXPAND_ICON = function EXPAND_ICON(x, y, r) { |
| 260 | return [['M', x, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x + 2, y], ['L', x + 2 * r - 2, y], ['M', x + r, y - r + 2], ['L', x + r, y + r - 2]]; | 430 | return [['M', x, y], ['a', r, r, 0, 1, 0, r * 2, 0], ['a', r, r, 0, 1, 0, -r * 2, 0], ['M', x + 2, y], ['L', x + 2 * r - 2, y], ['M', x + r, y - r + 2], ['L', x + r, y + r - 2]]; |
| 261 | }; | 431 | }; |
| 262 | 432 | ||
| 433 | |||
| 263 | G6.registerNode('tree-node', { | 434 | G6.registerNode('tree-node', { |
| 264 | drawShape: function drawShape(cfg: ModelConfig, group: IGroup) { | 435 | drawShape: function drawShape(cfg: ModelConfig, group: IGroup) { |
| 436 | if (!cfg || typeof cfg.classifyName !== 'string') { | ||
| 437 | throw new Error('Invalid cfg or cfg.classifyName'); | ||
| 438 | } | ||
| 265 | var rect = group.addShape('rect', { | 439 | var rect = group.addShape('rect', { |
| 266 | attrs: { | 440 | attrs: { |
| 267 | fill: '#F6FDFD', | 441 | fill: '#F6FDFD', |
| 268 | stroke: '#D1E7E8' | 442 | stroke: '#D1E7E8' |
| 269 | } | 443 | } |
| 270 | }); | 444 | }); |
| 271 | var content = cfg.name.replace(/(.{19})/g, '$1\n'); | 445 | var content = cfg.classifyName.replace(/(.{18})/g, '$1\n'); |
| 272 | var text = group.addShape('text', { | 446 | var text = group.addShape('text', { |
| 273 | attrs: { | 447 | attrs: { |
| 274 | text: content, | 448 | text: content, |
| ... | @@ -282,7 +456,7 @@ G6.registerNode('tree-node', { | ... | @@ -282,7 +456,7 @@ G6.registerNode('tree-node', { |
| 282 | } | 456 | } |
| 283 | }); | 457 | }); |
| 284 | var bbox = text.getBBox(); | 458 | var bbox = text.getBBox(); |
| 285 | var hasChildren = cfg.children && cfg.children.length > 0; | 459 | var hasChildren = Array.isArray(cfg.children) && cfg.children.length > 0; |
| 286 | if (hasChildren) { | 460 | if (hasChildren) { |
| 287 | group.addShape('circle', { | 461 | group.addShape('circle', { |
| 288 | attrs: { | 462 | attrs: { |
| ... | @@ -329,10 +503,13 @@ G6.registerNode('tree-node', { | ... | @@ -329,10 +503,13 @@ G6.registerNode('tree-node', { |
| 329 | return rect; | 503 | return rect; |
| 330 | } | 504 | } |
| 331 | }, 'single-shape'); | 505 | }, 'single-shape'); |
| 506 | let graph = '' as any; | ||
| 507 | const showNodeDetails = ref(false); // 控制弹窗显示 | ||
| 508 | const nodeDetails = ref<any>(); // 存储节点详情 | ||
| 509 | const popupPosition = ref({ top: 0, left: 0 }); // 弹窗位置 | ||
| 332 | 510 | ||
| 333 | onMounted(() => { | 511 | const initGraph = () => { |
| 334 | 512 | graph = new G6.TreeGraph({ | |
| 335 | graph.value = new G6.TreeGraph({ | ||
| 336 | container: shapeMain.value, | 513 | container: shapeMain.value, |
| 337 | width: shapeMain.value.clientWidth, | 514 | width: shapeMain.value.clientWidth, |
| 338 | height: shapeMain.value.clientHeight, | 515 | height: shapeMain.value.clientHeight, |
| ... | @@ -390,28 +567,26 @@ onMounted(() => { | ... | @@ -390,28 +567,26 @@ onMounted(() => { |
| 390 | } | 567 | } |
| 391 | } | 568 | } |
| 392 | }); | 569 | }); |
| 393 | graph.value.data({ | 570 | graph.data(shapeTreeListData.value[0]); |
| 394 | guid: 1, | 571 | graph.on('node:mouseenter', (e) => { |
| 395 | name: '工业数据', | 572 | const nodeItem = e.item; // 获取鼠标进入的节点元素对象 |
| 396 | children: [{ | 573 | const nodeModel = nodeItem.getModel(); |
| 397 | guid: '1-1', | 574 | // 更新弹窗位置和显示节点详情 |
| 398 | name: '原材料', | 575 | nodeDetails.value = nodeModel; |
| 399 | children: [{ | 576 | showNodeDetails.value = true; |
| 400 | guid: '1-1-1', | 577 | const { clientX, clientY } = e; |
| 401 | name: '用户数据分类有带你长' | 578 | // 设置弹窗位置为鼠标下方 |
| 402 | }] | 579 | popupPosition.value = { |
| 403 | }, { | 580 | top: clientY - 100, // 弹窗距离鼠标的Y位置 |
| 404 | guid: '1-2', | 581 | left: clientX - 80 // 弹窗距离鼠标的X位置 |
| 405 | name: '装备制造' | 582 | }; |
| 406 | }] | ||
| 407 | }); | 583 | }); |
| 408 | graph.value.on('node:mouseenter', (e) => { | 584 | graph.on('node:mouseleave', () => { |
| 409 | const nodeItem = e.item // 获取鼠标进入的节点元素对象 | 585 | showNodeDetails.value = false; |
| 410 | console.log('鼠标移入', nodeItem._cfg) | 586 | }); |
| 411 | }) | 587 | graph.render(); |
| 412 | graph.value.render(); | 588 | graph.fitView(); |
| 413 | graph.value.fitView(); | 589 | graph.on('node:click', (evt: any) => { |
| 414 | graph.value.on('node:click', (evt: any) => { | ||
| 415 | evt.preventDefault(); | 590 | evt.preventDefault(); |
| 416 | evt.stopPropagation(); | 591 | evt.stopPropagation(); |
| 417 | const { item, target } = evt; | 592 | const { item, target } = evt; |
| ... | @@ -419,6 +594,100 @@ onMounted(() => { | ... | @@ -419,6 +594,100 @@ onMounted(() => { |
| 419 | if (!currentAnchor) return; | 594 | if (!currentAnchor) return; |
| 420 | // 设置一个全局属性,指定点击的是哪个图形元素 | 595 | // 设置一个全局属性,指定点击的是哪个图形元素 |
| 421 | }); | 596 | }); |
| 597 | } | ||
| 598 | |||
| 599 | // 监听展示模式的变化 | ||
| 600 | watch(dataShowMethod, (newMode) => { | ||
| 601 | if (newMode === 'shape' && !graph) { | ||
| 602 | // 当切换到 'shape' 且图形未初始化时,初始化图形 | ||
| 603 | nextTick(() => { | ||
| 604 | initGraph(); | ||
| 605 | }); | ||
| 606 | } else if (newMode === 'table' && graph) { | ||
| 607 | // 切换到表格时销毁图形实例 | ||
| 608 | graph.destroy(); | ||
| 609 | graph = '' as any; | ||
| 610 | } | ||
| 611 | }); | ||
| 612 | |||
| 613 | onMounted(() => { | ||
| 614 | getClassifyGradListData(); | ||
| 615 | getTreeListData(); | ||
| 616 | getGradeListData(); | ||
| 617 | |||
| 618 | // graph.value = new G6.TreeGraph({ | ||
| 619 | // container: shapeMain.value, | ||
| 620 | // width: shapeMain.value.clientWidth, | ||
| 621 | // height: shapeMain.value.clientHeight, | ||
| 622 | // minZoom: 1.4, | ||
| 623 | // maxZoom: 1.4, | ||
| 624 | // modes: { | ||
| 625 | // default: [{ | ||
| 626 | // type: 'collapse-expand', | ||
| 627 | // onChange: function onChange(item, collapsed, event) { | ||
| 628 | // var data = item.get('model'); | ||
| 629 | // var icon = item.get('group').findByClassName('collapse-icon'); | ||
| 630 | // if (collapsed) { | ||
| 631 | // icon.attr('symbol', EXPAND_ICON); | ||
| 632 | // } else { | ||
| 633 | // icon.attr('symbol', COLLAPSE_ICON); | ||
| 634 | // } | ||
| 635 | // data.collapsed = collapsed; | ||
| 636 | // return true; | ||
| 637 | // } | ||
| 638 | // }, 'drag-canvas', 'zoom-canvas'] | ||
| 639 | // }, | ||
| 640 | // defaultNode: { | ||
| 641 | // type: 'tree-node', | ||
| 642 | // anchorPoints: [[0, 0.5], [1, 0.5]] | ||
| 643 | // }, | ||
| 644 | // defaultEdge: { | ||
| 645 | // type: 'polyline', | ||
| 646 | // style: { | ||
| 647 | // stroke: '#4FA1A4', | ||
| 648 | // endArrow: { | ||
| 649 | // fill: '#4FA1A4', | ||
| 650 | // stroke: '#4FA1A4', | ||
| 651 | // path: 'M -2,0 L 2,2 L 2,-2 Z', | ||
| 652 | // d: -2, | ||
| 653 | // } | ||
| 654 | // } | ||
| 655 | // }, | ||
| 656 | // layout: { | ||
| 657 | // type: 'compactBox', | ||
| 658 | // direction: 'LR', | ||
| 659 | // getId: function getId(d) { | ||
| 660 | // return d.id; | ||
| 661 | // }, | ||
| 662 | // getHeight: function getHeight() { | ||
| 663 | // return 16; | ||
| 664 | // }, | ||
| 665 | // getWidth: function getWidth() { | ||
| 666 | // return 16; | ||
| 667 | // }, | ||
| 668 | // getVGap: function getVGap() { | ||
| 669 | // return 20; | ||
| 670 | // }, | ||
| 671 | // getHGap: function getHGap() { | ||
| 672 | // return 80; | ||
| 673 | // } | ||
| 674 | // } | ||
| 675 | // }); | ||
| 676 | // graph.value.data(tempData.value); | ||
| 677 | // graph.value.on('node:mouseenter', (e) => { | ||
| 678 | // const nodeItem = e.item // 获取鼠标进入的节点元素对象 | ||
| 679 | // console.log('鼠标移入', nodeItem._cfg) | ||
| 680 | // }) | ||
| 681 | // graph.value.render(); | ||
| 682 | // graph.value.fitView(); | ||
| 683 | // graph.value.on('node:click', (evt: any) => { | ||
| 684 | // evt.preventDefault(); | ||
| 685 | // evt.stopPropagation(); | ||
| 686 | // const { item, target } = evt; | ||
| 687 | // const currentAnchor = target.get('name'); | ||
| 688 | // if (!currentAnchor) return; | ||
| 689 | // // 设置一个全局属性,指定点击的是哪个图形元素 | ||
| 690 | // }); | ||
| 422 | }) | 691 | }) |
| 423 | 692 | ||
| 424 | </script> | 693 | </script> |
| ... | @@ -438,11 +707,28 @@ onMounted(() => { | ... | @@ -438,11 +707,28 @@ onMounted(() => { |
| 438 | </div> | 707 | </div> |
| 439 | <Table v-show="dataShowMethod == 'table'" :tableInfo="tableInfo" /> | 708 | <Table v-show="dataShowMethod == 'table'" :tableInfo="tableInfo" /> |
| 440 | <div ref="shapeMain" class="shape-main" v-show="dataShowMethod != 'table'"></div> | 709 | <div ref="shapeMain" class="shape-main" v-show="dataShowMethod != 'table'"></div> |
| 710 | <div v-if="showNodeDetails" class="node-details-popup" | ||
| 711 | :style="{ top: popupPosition.top + 'px', left: popupPosition.left + 'px' }"> | ||
| 712 | <div class="pop-content"> | ||
| 713 | <div class="top-area"> | ||
| 714 | <span>{{ nodeDetails.classifyName }}</span> | ||
| 715 | <span class="tip">{{ nodeDetails.status === 'Y' ? '有效' : '无效' }}</span> | ||
| 716 | </div> | ||
| 717 | <div class="middle-top-area"> | ||
| 718 | {{ nodeDetails.description }} | ||
| 719 | </div> | ||
| 720 | <div class="middle-bottom-area"> | ||
| 721 | <span>最低安全级别</span> <span>{{ nodeDetails.name }}</span> | ||
| 722 | </div> | ||
| 723 | <div class="bottom-area"> | ||
| 724 | <span>创建时间</span> <span>{{ nodeDetails.createTime }}</span> | ||
| 725 | </div> | ||
| 726 | </div> | ||
| 727 | </div> | ||
| 441 | </ContentWrap> | 728 | </ContentWrap> |
| 442 | </div> | 729 | </div> |
| 443 | <div class="bottom_tool_wrap"> | 730 | <div class="bottom_tool_wrap"> |
| 444 | <el-button @click="cancel">取消</el-button> | 731 | <el-button @click="cancel">取消</el-button> |
| 445 | <!-- <el-button type="primary" @click="save">保存</el-button> !--> | ||
| 446 | </div> | 732 | </div> |
| 447 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" /> | 733 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" /> |
| 448 | </div> | 734 | </div> |
| ... | @@ -495,4 +781,63 @@ onMounted(() => { | ... | @@ -495,4 +781,63 @@ onMounted(() => { |
| 495 | .table_panel { | 781 | .table_panel { |
| 496 | height: calc(100% - 58px) !important; | 782 | height: calc(100% - 58px) !important; |
| 497 | } | 783 | } |
| 784 | |||
| 785 | .node-details-popup { | ||
| 786 | position: absolute; | ||
| 787 | padding: 12px; | ||
| 788 | background-color: #fff; | ||
| 789 | border: 1px solid #ddd; | ||
| 790 | box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); | ||
| 791 | z-index: 9999; | ||
| 792 | border-radius: 4px; | ||
| 793 | width: 264px; | ||
| 794 | height: 152px; | ||
| 795 | |||
| 796 | .pop-content { | ||
| 797 | display: flex; | ||
| 798 | flex-direction: column; | ||
| 799 | justify-content: space-between; | ||
| 800 | height: 100%; | ||
| 801 | |||
| 802 | .top-area { | ||
| 803 | display: flex; | ||
| 804 | justify-content: space-between; | ||
| 805 | font-size: 16px; | ||
| 806 | font-weight: bold; | ||
| 807 | color: #212121; | ||
| 808 | |||
| 809 | .tip { | ||
| 810 | background: #F2FFF5; | ||
| 811 | border: 1px solid rgba(220, 250, 228, 1); | ||
| 812 | color: #1BA854; | ||
| 813 | border-radius: 2px; | ||
| 814 | font-size: 12px; | ||
| 815 | text-align: center; | ||
| 816 | line-height: 18px; | ||
| 817 | font-weight: 400; | ||
| 818 | padding: 1px 8px; | ||
| 819 | } | ||
| 820 | } | ||
| 821 | |||
| 822 | |||
| 823 | .middle-top-area { | ||
| 824 | font-size: 14px; | ||
| 825 | color: #666; | ||
| 826 | } | ||
| 827 | |||
| 828 | .middle-bottom-area { | ||
| 829 | display: flex; | ||
| 830 | justify-content: space-between; | ||
| 831 | font-size: 14px; | ||
| 832 | color: #666; | ||
| 833 | } | ||
| 834 | |||
| 835 | .bottom-area { | ||
| 836 | display: flex; | ||
| 837 | justify-content: space-between; | ||
| 838 | font-size: 14px; | ||
| 839 | color: #666; | ||
| 840 | } | ||
| 841 | } | ||
| 842 | } | ||
| 498 | </style> | 843 | </style> | ... | ... |
| 1 | <route lang="yaml"> | ||
| 2 | name: classificationTemplateEdit //新增分级分类模板 | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="classificationTemplateEdit"> | ||
| 6 | import { CirclePlus, Delete } from "@element-plus/icons-vue"; | ||
| 7 | import TableTools from '@/components/Tools/table_tools.vue'; | ||
| 8 | import { getCgTemplateClassifyTreeList } from '@/api/modules/dataInventory'; | ||
| 9 | |||
| 10 | const currentPath = ref<string[]>(['全部', '个人信息', '个人自然信息', '个人基本概况信息']); | ||
| 11 | |||
| 12 | const tempData = [ | ||
| 13 | { | ||
| 14 | guid: '1', | ||
| 15 | standardName: '个人信息', | ||
| 16 | status: 'published', | ||
| 17 | children: [ | ||
| 18 | { | ||
| 19 | guid: '1-1', | ||
| 20 | standardName: '个人自然信息', | ||
| 21 | status: 'published', | ||
| 22 | children: [ | ||
| 23 | { | ||
| 24 | guid: '1-1-1', | ||
| 25 | standardName: '个人基本概况信息', | ||
| 26 | status: 'published', | ||
| 27 | }, | ||
| 28 | { | ||
| 29 | guid: '1-1-2', | ||
| 30 | standardName: '个人财产信息', | ||
| 31 | status: 'published', | ||
| 32 | }, | ||
| 33 | { | ||
| 34 | guid: '1-1-3', | ||
| 35 | standardName: '个人健康信息', | ||
| 36 | status: 'published', | ||
| 37 | }, | ||
| 38 | ] | ||
| 39 | }, | ||
| 40 | ] | ||
| 41 | }, | ||
| 42 | ]; | ||
| 43 | const { proxy } = getCurrentInstance() as any; | ||
| 44 | const cgTemplateClassifyTreeList = ref(); | ||
| 45 | |||
| 46 | const getCgTemplateClassifyTreeListData = async () => { | ||
| 47 | const params = { | ||
| 48 | pageIndex: 1, | ||
| 49 | pageSize: -1, | ||
| 50 | templateGuid: '1', | ||
| 51 | } | ||
| 52 | const res: any = await getCgTemplateClassifyTreeList(params); | ||
| 53 | if (res.code == proxy.$passCode) { | ||
| 54 | cgTemplateClassifyTreeList.value = res.data; | ||
| 55 | } else { | ||
| 56 | proxy.$ElMessage.error(res.msg); | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | // 左侧tree-list | ||
| 61 | const treeInfo = ref({ | ||
| 62 | id: "data-pickup-tree", | ||
| 63 | filter: true, | ||
| 64 | editTreeItem: true, | ||
| 65 | queryValue: "", | ||
| 66 | className: 'tree-list', | ||
| 67 | queryPlaceholder: "输入标准集名称搜索", | ||
| 68 | props: { | ||
| 69 | label: "standardName", | ||
| 70 | value: "guid", | ||
| 71 | }, | ||
| 72 | nodeKey: 'guid', | ||
| 73 | expandedKey: ['0'], | ||
| 74 | currentNodeKey: '', | ||
| 75 | expandOnNodeClick: false, | ||
| 76 | data: tempData, | ||
| 77 | loading: false | ||
| 78 | }); | ||
| 79 | |||
| 80 | // 弹窗配置 | ||
| 81 | const formItems: any = ref([ | ||
| 82 | { | ||
| 83 | label: '标准集名称', | ||
| 84 | type: 'input', | ||
| 85 | maxlength: 50, | ||
| 86 | placeholder: '请输入', | ||
| 87 | field: 'standardName', | ||
| 88 | clearable: true, | ||
| 89 | required: true | ||
| 90 | }, { | ||
| 91 | label: '标准集编号', | ||
| 92 | type: 'input', | ||
| 93 | placeholder: '', | ||
| 94 | field: 'standardCode', | ||
| 95 | required: true, | ||
| 96 | disabled: true | ||
| 97 | }, { | ||
| 98 | label: "上级标准集", | ||
| 99 | type: 'tree-select', | ||
| 100 | placeholder: '请选择', | ||
| 101 | field: 'parentGuid', | ||
| 102 | default: '', | ||
| 103 | checkStrictly: true, | ||
| 104 | lazy: false, | ||
| 105 | clearable: true, | ||
| 106 | options: [], | ||
| 107 | props: { | ||
| 108 | label: 'standardName', | ||
| 109 | value: 'guid', | ||
| 110 | children: 'children', | ||
| 111 | isLeaf: 'isLeaf' | ||
| 112 | }, | ||
| 113 | expandKeys: [], | ||
| 114 | filterable: true, | ||
| 115 | required: false | ||
| 116 | }, { | ||
| 117 | label: '排序', | ||
| 118 | type: 'input', | ||
| 119 | placeholder: '请输入', | ||
| 120 | field: 'orderNum', | ||
| 121 | maxlength: 6, | ||
| 122 | required: true, | ||
| 123 | clearable: true, | ||
| 124 | }, { | ||
| 125 | label: '描述', | ||
| 126 | type: 'textarea', | ||
| 127 | placeholder: '请输入', | ||
| 128 | field: 'description', | ||
| 129 | clearable: true, | ||
| 130 | required: false, | ||
| 131 | block: true | ||
| 132 | }, | ||
| 133 | ]) | ||
| 134 | const formRules: any = ref({ | ||
| 135 | standardName: [ | ||
| 136 | { | ||
| 137 | required: true, | ||
| 138 | message: '请输入标准集名称', | ||
| 139 | trigger: 'blur' | ||
| 140 | }, | ||
| 141 | { | ||
| 142 | max: 50, | ||
| 143 | message: '长度在 50 个字符以内', | ||
| 144 | trigger: 'blur' | ||
| 145 | }, | ||
| 146 | ], | ||
| 147 | orderNum: [{ | ||
| 148 | validator: (rule: any, value: any, callback: any) => { | ||
| 149 | if (value === 0) { | ||
| 150 | callback(); | ||
| 151 | return; | ||
| 152 | } | ||
| 153 | if (!value) { | ||
| 154 | callback(new Error('请填写排序')); | ||
| 155 | return; | ||
| 156 | } | ||
| 157 | const r = /(^[0-9]([0-9]*)$|^[0-9]$)/; // 正整数(可以以0打头) | ||
| 158 | if (value && !r.test(value)) { | ||
| 159 | callback(new Error('请填写大于或等于零整数')); | ||
| 160 | return; | ||
| 161 | } | ||
| 162 | callback(); | ||
| 163 | }, | ||
| 164 | trigger: "blur", | ||
| 165 | }], | ||
| 166 | }) | ||
| 167 | const formInfo = ref({ | ||
| 168 | type: "form", | ||
| 169 | title: "", | ||
| 170 | formInfo: { | ||
| 171 | id: "add-set-standard-form", | ||
| 172 | items: formItems.value, | ||
| 173 | rules: formRules.value | ||
| 174 | }, | ||
| 175 | }) | ||
| 176 | const standardSetDialogInfo: any = ref({ | ||
| 177 | visible: false, | ||
| 178 | size: 700, | ||
| 179 | direction: "column", | ||
| 180 | header: { | ||
| 181 | title: "新建", | ||
| 182 | }, | ||
| 183 | type: '', | ||
| 184 | contents: [formInfo.value], | ||
| 185 | footer: { | ||
| 186 | visible: true, | ||
| 187 | btns: [ | ||
| 188 | { type: "default", label: "取消", value: "cancel" }, | ||
| 189 | { type: "primary", label: "确定", value: "submit" }, | ||
| 190 | ], | ||
| 191 | }, | ||
| 192 | }) | ||
| 193 | |||
| 194 | const addStandardSet = () => { | ||
| 195 | standardSetDialogInfo.value.visible = true; | ||
| 196 | console.log('addStandardSet'); | ||
| 197 | } | ||
| 198 | |||
| 199 | const standardSetDialogBtnClick = (btn: any, info: any) => { | ||
| 200 | console.log('standardSetDialogBtnClick', btn, info); | ||
| 201 | if (btn.value === 'submit') { | ||
| 202 | standardSetDialogInfo.value.visible = false; | ||
| 203 | } | ||
| 204 | if (btn.value === 'cancel') { | ||
| 205 | standardSetDialogInfo.value.visible = false; | ||
| 206 | } | ||
| 207 | } | ||
| 208 | |||
| 209 | // 右侧上方搜索tab配置 | ||
| 210 | const searchItemList = ref([ | ||
| 211 | { | ||
| 212 | label: '', | ||
| 213 | field: 'parentGuid', | ||
| 214 | type: 'tree-select', | ||
| 215 | placeholder: '请选择目录', | ||
| 216 | default: '', | ||
| 217 | options: tempData, | ||
| 218 | showAllLevels: false, | ||
| 219 | checkStrictly: true, | ||
| 220 | lazy: false, | ||
| 221 | props: { | ||
| 222 | label: "standardName", | ||
| 223 | value: "guid", | ||
| 224 | }, | ||
| 225 | block: true, | ||
| 226 | filterable: true, | ||
| 227 | clearable: true, | ||
| 228 | required: false | ||
| 229 | }, | ||
| 230 | { | ||
| 231 | type: 'input', | ||
| 232 | label: '', | ||
| 233 | field: 'name', | ||
| 234 | default: '', | ||
| 235 | maxlength: 50, | ||
| 236 | placeholder: '分级', | ||
| 237 | clearable: true | ||
| 238 | }, { | ||
| 239 | type: 'input', | ||
| 240 | maxlength: 50, | ||
| 241 | label: '', | ||
| 242 | field: 'standardCode', | ||
| 243 | default: '', | ||
| 244 | placeholder: '规则', | ||
| 245 | clearable: true | ||
| 246 | }, { | ||
| 247 | type: 'select', | ||
| 248 | label: '', | ||
| 249 | field: 'approveState', | ||
| 250 | default: '', | ||
| 251 | placeholder: '状态', | ||
| 252 | options: [ | ||
| 253 | { label: '草稿中', value: 'N' }, | ||
| 254 | { label: '审批中', value: 'A' }, | ||
| 255 | { label: '已通过', value: 'Y' }, | ||
| 256 | { label: '已驳回', value: 'R' }, | ||
| 257 | { label: '已撤销', value: 'C' }, | ||
| 258 | ], | ||
| 259 | clearable: true | ||
| 260 | } | ||
| 261 | ]) | ||
| 262 | const searchParams = ref({}) | ||
| 263 | const toSearch = (val: any, clear: boolean = false) => { | ||
| 264 | if (clear) { | ||
| 265 | searchItemList.value.map(item => item.default = '') | ||
| 266 | searchParams.value = {} | ||
| 267 | } | ||
| 268 | |||
| 269 | if (Object.keys(val).length) { | ||
| 270 | searchParams.value = { ...val } | ||
| 271 | } | ||
| 272 | // let params: any = { ...searchParams.value } | ||
| 273 | // params.pageIndex = page.value.curr; | ||
| 274 | // params.pageSize = page.value.limit; | ||
| 275 | // //params.standardSetGuid = standardSetGuid.value; | ||
| 276 | // params.standardSetLevelCode = standardSetLevelCode.value; | ||
| 277 | // return getTableData(params); | ||
| 278 | }; | ||
| 279 | const treeSelectNodeChange = (node: any) => { | ||
| 280 | console.log('treeSelectNodeChange', node); | ||
| 281 | const { guid, standardName } = node | ||
| 282 | treeInfo.value.currentNodeKey = guid; | ||
| 283 | console.log('nodeClick', guid, standardName); | ||
| 284 | |||
| 285 | // 递归tempData找到所有祖先元素的standardName,存入currentPath中 | ||
| 286 | const path = findPath(tempData, guid); | ||
| 287 | if (path) { | ||
| 288 | currentPath.value = path; | ||
| 289 | console.log('找到路径:', path); | ||
| 290 | } else { | ||
| 291 | console.error('未找到路径'); | ||
| 292 | } | ||
| 293 | } | ||
| 294 | |||
| 295 | // btns-area | ||
| 296 | const checked1 = ref(false); | ||
| 297 | |||
| 298 | |||
| 299 | //下方表格配置 | ||
| 300 | const tableDataList = ref([{ | ||
| 301 | fieldStandardCode: '个人基本概况信息', | ||
| 302 | chName: '个人自然信息', | ||
| 303 | enName: '个人信息', | ||
| 304 | dataTypeValue: '规则', | ||
| 305 | approveState: 'Y', | ||
| 306 | }, { | ||
| 307 | fieldStandardCode: '个人财产信息', | ||
| 308 | chName: '个人自然信息', | ||
| 309 | enName: '个人信息', | ||
| 310 | dataTypeValue: '规则', | ||
| 311 | approveState: 'Y', | ||
| 312 | }, { | ||
| 313 | fieldStandardCode: '个人健康信息', | ||
| 314 | chName: '个人自然信息', | ||
| 315 | enName: '个人信息', | ||
| 316 | dataTypeValue: '规则', | ||
| 317 | approveState: 'Y', | ||
| 318 | }]); | ||
| 319 | const tableInfo = ref({ | ||
| 320 | id: "role-manage-table", | ||
| 321 | multiple: true, | ||
| 322 | fixedSelection: true, | ||
| 323 | fields: [ | ||
| 324 | { label: "序号", type: "index", width: 56, align: "center" }, | ||
| 325 | { label: "标签", field: "fieldStandardCode", width: 140 }, | ||
| 326 | { label: "分类", field: "chName", width: 120 }, | ||
| 327 | { label: "分级", field: "enName", width: 120 }, | ||
| 328 | { label: "规则", field: "dataTypeValue", width: 100 }, | ||
| 329 | { label: "状态", field: "approveState", type: 'tag', width: 96, align: 'center' }, | ||
| 330 | ], | ||
| 331 | data: tableDataList.value, | ||
| 332 | page: { | ||
| 333 | type: "normal", | ||
| 334 | rows: 0, | ||
| 335 | // ...page.value, | ||
| 336 | }, | ||
| 337 | actionInfo: { | ||
| 338 | label: "操作", | ||
| 339 | type: "btn", | ||
| 340 | width: 300, | ||
| 341 | fixed: 'right', | ||
| 342 | btns: [ | ||
| 343 | { | ||
| 344 | label: "编辑", value: "edit", click: (scope) => { | ||
| 345 | console.log('编辑', scope); | ||
| 346 | drawerInfo.value.visible = true | ||
| 347 | } | ||
| 348 | }, | ||
| 349 | |||
| 350 | { | ||
| 351 | label: "复制", value: "copy", click: (scope) => { | ||
| 352 | console.log('复制', scope); | ||
| 353 | } | ||
| 354 | }, | ||
| 355 | { | ||
| 356 | label: "删除 ", value: "delete", click: (scope) => { | ||
| 357 | console.log('删除', scope); | ||
| 358 | } | ||
| 359 | }, | ||
| 360 | ] | ||
| 361 | |||
| 362 | }, | ||
| 363 | loading: false | ||
| 364 | }); | ||
| 365 | |||
| 366 | |||
| 367 | const nodeClick = (data: any) => { | ||
| 368 | const { guid, standardName } = data | ||
| 369 | console.log('nodeClick', guid, standardName); | ||
| 370 | searchItemList.value[0].default = standardName; | ||
| 371 | // 递归tempData找到所有祖先元素的standardName,存入currentPath中 | ||
| 372 | const path = findPath(tempData, guid); | ||
| 373 | if (path) { | ||
| 374 | currentPath.value = path; | ||
| 375 | console.log('找到路径:', path); | ||
| 376 | } else { | ||
| 377 | console.error('未找到路径'); | ||
| 378 | } | ||
| 379 | |||
| 380 | } | ||
| 381 | const findPath = (data: any[], targetGuid: string, path: string[] = []) => { | ||
| 382 | for (const item of data) { | ||
| 383 | path.push(item.standardName); // 添加当前节点名称 | ||
| 384 | if (item.guid === targetGuid) { | ||
| 385 | return path; // 找到目标节点,返回路径 | ||
| 386 | } | ||
| 387 | if (item.children && item.children.length > 0) { | ||
| 388 | const result = findPath(item.children, targetGuid, path); | ||
| 389 | if (result) return result; // 子节点找到目标节点,返回路径 | ||
| 390 | } | ||
| 391 | path.pop(); // 回溯,移除当前节点 | ||
| 392 | } | ||
| 393 | return null; // 未找到目标节点 | ||
| 394 | }; | ||
| 395 | |||
| 396 | |||
| 397 | const classEditFormItems = ref([{ | ||
| 398 | label: '标签名称', | ||
| 399 | type: 'input', | ||
| 400 | maxlength: 50, | ||
| 401 | placeholder: '请输入', | ||
| 402 | field: 'classifyName', | ||
| 403 | default: '', | ||
| 404 | clearable: true, | ||
| 405 | required: true, | ||
| 406 | block: true | ||
| 407 | }, { | ||
| 408 | label: '分类', | ||
| 409 | type: 'input', | ||
| 410 | placeholder: '请输入', | ||
| 411 | field: 'orderNum', | ||
| 412 | maxlength: 6, | ||
| 413 | regexp: /\D/g, | ||
| 414 | required: true, | ||
| 415 | clearable: true, | ||
| 416 | }, { | ||
| 417 | label: '分级', | ||
| 418 | field: 'parentGuid', | ||
| 419 | type: 'tree-select', | ||
| 420 | placeholder: '请选择', | ||
| 421 | default: '', | ||
| 422 | options: tableInfo.value.data, | ||
| 423 | showAllLevels: false, | ||
| 424 | checkStrictly: true, | ||
| 425 | lazy: false, | ||
| 426 | props: { | ||
| 427 | label: "classifyName", | ||
| 428 | value: "guid", | ||
| 429 | }, | ||
| 430 | filterable: true, | ||
| 431 | clearable: true, | ||
| 432 | required: false | ||
| 433 | }, | ||
| 434 | { | ||
| 435 | label: ' ', | ||
| 436 | type: 'label', | ||
| 437 | field: 'description', | ||
| 438 | default: '规则配置', | ||
| 439 | block: true, | ||
| 440 | col: 'title-label' | ||
| 441 | }, | ||
| 442 | { | ||
| 443 | label: '精确匹配', | ||
| 444 | type: 'textarea', | ||
| 445 | placeholder: '请输入', | ||
| 446 | field: 'description', | ||
| 447 | default: '', | ||
| 448 | clearable: true, | ||
| 449 | required: false, | ||
| 450 | |||
| 451 | }, | ||
| 452 | { | ||
| 453 | label: '', | ||
| 454 | type: 'textarea', | ||
| 455 | placeholder: '请输入', | ||
| 456 | field: 'description', | ||
| 457 | default: '', | ||
| 458 | clearable: true, | ||
| 459 | required: false, | ||
| 460 | }, | ||
| 461 | { | ||
| 462 | type: 'formAndSelect', | ||
| 463 | visible: false, | ||
| 464 | children: [ | ||
| 465 | { | ||
| 466 | label: '模糊匹配', | ||
| 467 | type: 'select', | ||
| 468 | placeholder: '请选择', | ||
| 469 | field: 'gradeGuid', | ||
| 470 | default: '', | ||
| 471 | options: [], //TODO | ||
| 472 | props: { | ||
| 473 | label: 'name', | ||
| 474 | value: 'guid' | ||
| 475 | }, | ||
| 476 | required: true, | ||
| 477 | filterable: true, | ||
| 478 | clearable: true, | ||
| 479 | visible: true, | ||
| 480 | showDeleteButton: false | ||
| 481 | |||
| 482 | }, | ||
| 483 | { | ||
| 484 | label: '', | ||
| 485 | type: 'input', | ||
| 486 | maxlength: 50, | ||
| 487 | placeholder: '请输入', | ||
| 488 | field: 'classifyName', | ||
| 489 | default: '', | ||
| 490 | clearable: true, | ||
| 491 | required: true, | ||
| 492 | showDeleteButton: false | ||
| 493 | }, | ||
| 494 | ], | ||
| 495 | extraIcon: { | ||
| 496 | icon: Delete, | ||
| 497 | click: () => { | ||
| 498 | console.log('click'); | ||
| 499 | } | ||
| 500 | } | ||
| 501 | }, | ||
| 502 | |||
| 503 | |||
| 504 | ]); | ||
| 505 | const classEditFormRules = ref({ | ||
| 506 | classifyName: [{ required: true, message: '请填写分类名称', trigger: 'blur' }], | ||
| 507 | }); | ||
| 508 | /** 新增分类的form */ | ||
| 509 | const classEditFormInfo = ref({ | ||
| 510 | type: "form", | ||
| 511 | title: "", | ||
| 512 | col: "span", | ||
| 513 | formInfo: { | ||
| 514 | id: "add-class-form", | ||
| 515 | readonly: false, | ||
| 516 | items: classEditFormItems.value, | ||
| 517 | rules: classEditFormRules.value, | ||
| 518 | }, | ||
| 519 | }); | ||
| 520 | /** 新增编辑分类。 */ | ||
| 521 | const drawerInfo = ref({ | ||
| 522 | visible: false, | ||
| 523 | direction: 'rtl', | ||
| 524 | size: 600, | ||
| 525 | header: { | ||
| 526 | title: '添加分类', | ||
| 527 | }, | ||
| 528 | type: '', | ||
| 529 | container: { | ||
| 530 | contents: [classEditFormInfo.value], | ||
| 531 | }, | ||
| 532 | footer: { | ||
| 533 | btns: [ | ||
| 534 | { type: 'default', label: '取消', value: 'cancel' }, | ||
| 535 | { type: 'primary', label: '确定', value: 'save', loading: false }, | ||
| 536 | ] | ||
| 537 | } | ||
| 538 | }) | ||
| 539 | const drawerBtnClick = async (btn, info) => { | ||
| 540 | if (btn.value == 'cancel') { | ||
| 541 | drawerInfo.value.visible = false; | ||
| 542 | } else { | ||
| 543 | // if (drawerInfo.value.header.title == '添加分类') { | ||
| 544 | // const params = { | ||
| 545 | // ...info, | ||
| 546 | // classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 547 | // } | ||
| 548 | // const res: any = await saveClassify(params); | ||
| 549 | // if (res.code == proxy.$passCode) { | ||
| 550 | // proxy.$ElMessage.success('添加成功!'); | ||
| 551 | // drawerInfo.value.visible = false; | ||
| 552 | // getTreeListData(); | ||
| 553 | // } else { | ||
| 554 | // proxy.$ElMessage.error(res.msg); | ||
| 555 | // } | ||
| 556 | // } else { | ||
| 557 | // // 编辑分类 | ||
| 558 | // const params = { | ||
| 559 | // ...info, | ||
| 560 | // classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 561 | // guid: currTableInfo.value.guid | ||
| 562 | // } | ||
| 563 | // const res: any = await updateClassify(params); | ||
| 564 | // if (res.code == proxy.$passCode) { | ||
| 565 | // proxy.$ElMessage.success('修改成功!'); | ||
| 566 | // drawerInfo.value.visible = false; | ||
| 567 | // getTreeListData(); | ||
| 568 | // } else { | ||
| 569 | // proxy.$ElMessage.error(res.msg); | ||
| 570 | // } | ||
| 571 | // } | ||
| 572 | console.log('aaa') | ||
| 573 | } | ||
| 574 | } | ||
| 575 | |||
| 576 | const handleTreeItemMenuClick = (data: any, type) => { | ||
| 577 | console.log('handleTreeItemMenuClick', data, type); | ||
| 578 | } | ||
| 579 | const getItemStyle = (status: string) => { | ||
| 580 | const styles: { [key: string]: any } = { | ||
| 581 | published: { | ||
| 582 | color: '#1BA854', | ||
| 583 | background: '#F2FFF5', | ||
| 584 | border: '1px solid rgba(109, 209, 142, 1)', | ||
| 585 | }, | ||
| 586 | running: { | ||
| 587 | color: '#FF991C', | ||
| 588 | background: '#FFFBF2', | ||
| 589 | border: '1px solid rgba(255, 203, 120, 1)', | ||
| 590 | }, | ||
| 591 | pending: { | ||
| 592 | border: '1px solid rgba(217, 217, 217, 1)', | ||
| 593 | color: '#404040', | ||
| 594 | background: '#F5F5F5', | ||
| 595 | }, | ||
| 596 | }; | ||
| 597 | |||
| 598 | return styles[status] || {}; // 如果状态没有对应的样式,则返回空对象 | ||
| 599 | } | ||
| 600 | |||
| 601 | const temp = ref(''); | ||
| 602 | |||
| 603 | // 模拟表单行数据 | ||
| 604 | const formRows = ref([ | ||
| 605 | { selectValue: '', inputValue: '' }, // 初始行 | ||
| 606 | ]); | ||
| 607 | |||
| 608 | // 当前悬停的行索引 | ||
| 609 | const hoveredRowIndex = ref<number | null>(null); | ||
| 610 | |||
| 611 | // 鼠标移入事件 | ||
| 612 | const handleMouseEnter = (index: number) => { | ||
| 613 | hoveredRowIndex.value = index; | ||
| 614 | }; | ||
| 615 | |||
| 616 | // 鼠标移出事件 | ||
| 617 | const handleMouseLeave = () => { | ||
| 618 | hoveredRowIndex.value = null; | ||
| 619 | }; | ||
| 620 | |||
| 621 | // 新增行 | ||
| 622 | const addRow = () => { | ||
| 623 | formRows.value.push({ selectValue: '', inputValue: '' }); | ||
| 624 | }; | ||
| 625 | |||
| 626 | // 删除行 | ||
| 627 | const deleteRow = (index: number) => { | ||
| 628 | formRows.value.splice(index, 1); | ||
| 629 | }; | ||
| 630 | |||
| 631 | </script> | ||
| 632 | |||
| 633 | <template> | ||
| 634 | <div class="classification-template-content"> | ||
| 635 | <div class="top-area"> | ||
| 636 | <div class="top-title"> | ||
| 637 | <div class="left"> | ||
| 638 | <div class="top-des">医疗数据分类分级模板</div> | ||
| 639 | <div class="top-status" :style="getItemStyle('published')">待确认</div> | ||
| 640 | </div> | ||
| 641 | <div class="right"> | ||
| 642 | <div class="right-one">模型确认人:---</div> | ||
| 643 | <div class="right-two">模型确认时间:---</div> | ||
| 644 | </div> | ||
| 645 | </div> | ||
| 646 | <div class="middle-area"> | ||
| 647 | <span>医疗行业分类</span> | ||
| 648 | <span>五级</span> | ||
| 649 | <span>v5</span> | ||
| 650 | |||
| 651 | </div> | ||
| 652 | <div class="bottom-area"> | ||
| 653 | 适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康管理部门、公共卫生服务机构、相关专项业务服务机构、相关信息技术服务机构等开展医疗健康数据分类分级。适用于各级医疗机构、卫生健康。 | ||
| 654 | </div> | ||
| 655 | </div> | ||
| 656 | <div class="container_wrap full flex"> | ||
| 657 | <div class="aside_wrap"> | ||
| 658 | <div class="aside_title">分类分级目录</div> | ||
| 659 | <el-icon class="icon-add" color="#4fa1a4" @click="addStandardSet()"> | ||
| 660 | <CirclePlus /> | ||
| 661 | </el-icon> | ||
| 662 | <Tree :treeInfo="treeInfo" @nodeClick="nodeClick" @itemMenuClick="handleTreeItemMenuClick" /> | ||
| 663 | </div> | ||
| 664 | <div class="main_wrap"> | ||
| 665 | <div class="path"> | ||
| 666 | <span v-for="(item, index) in currentPath" :key="index" class="path-item"> | ||
| 667 | <span :class="{ 'bold': index === currentPath.length - 1 }">{{ item }}</span> | ||
| 668 | <span v-if="index < currentPath.length - 1">/</span> | ||
| 669 | </span> | ||
| 670 | </div> | ||
| 671 | <TableTools :searchItems="searchItemList" :init="false" :searchId="'files-standard-search'" @search="toSearch" | ||
| 672 | @treeSelectNodeChange="treeSelectNodeChange" /> | ||
| 673 | <div class="btns-area"> | ||
| 674 | <div class="left-btns"> | ||
| 675 | <el-button type="primary" @click="addStandardSet">新增标准</el-button> | ||
| 676 | <el-button>批量移动</el-button> | ||
| 677 | <el-button>批量删除</el-button> | ||
| 678 | </div> | ||
| 679 | <div class="right-btns"> | ||
| 680 | <el-checkbox v-model="checked1" label="仅看未分类分级" size="large" /> | ||
| 681 | </div> | ||
| 682 | </div> | ||
| 683 | <div class="table_panel_wrap"> | ||
| 684 | <Table :tableInfo="tableInfo" /> | ||
| 685 | </div> | ||
| 686 | </div> | ||
| 687 | <Dialog :dialogInfo="standardSetDialogInfo" @btnClick="standardSetDialogBtnClick" /> | ||
| 688 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" class="v-drawer"> | ||
| 689 | <!-- 传递到 Form 组件中的默认插槽 --> | ||
| 690 | <template v-slot:default> | ||
| 691 | <div class="title-label">模糊匹配</div> | ||
| 692 | <!-- 渲染行 --> | ||
| 693 | <div v-for="(row, index) in formRows" :key="index" class="match-content-wrapper"> | ||
| 694 | <div class="match-content" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave()"> | ||
| 695 | <el-select v-model="row.selectValue" class="v-select" placeholder="请选择" /> | ||
| 696 | <el-input v-model="row.inputValue" class="v-input" laceholder="请输入匹配值" /> | ||
| 697 | |||
| 698 | <!-- 删除按钮 --> | ||
| 699 | <el-button v-if="hoveredRowIndex === index" class="extra-icon" :icon="Delete" @click="deleteRow(index)" | ||
| 700 | circle style="margin-left: 8px;" /> | ||
| 701 | </div> | ||
| 702 | </div> | ||
| 703 | |||
| 704 | <!-- 新增按钮 --> | ||
| 705 | <div class="add-Icon" @click="addRow"> | ||
| 706 | <el-icon class="icon-add" color="#4fa1a4" :size="30"> | ||
| 707 | <CirclePlus /> | ||
| 708 | </el-icon> | ||
| 709 | <span class="word-des">模糊匹配规则</span> | ||
| 710 | </div> | ||
| 711 | </template> | ||
| 712 | </Drawer> | ||
| 713 | </div> | ||
| 714 | </div> | ||
| 715 | |||
| 716 | </template> | ||
| 717 | |||
| 718 | |||
| 719 | <style lang="scss" scoped> | ||
| 720 | .classification-template-content { | ||
| 721 | width: 100%; | ||
| 722 | height: 100%; | ||
| 723 | display: flex; | ||
| 724 | flex-direction: column; | ||
| 725 | |||
| 726 | .top-area { | ||
| 727 | width: 100%; | ||
| 728 | height: 134px; | ||
| 729 | padding: 16px; | ||
| 730 | border-bottom: 1px solid #D9D9D9; | ||
| 731 | |||
| 732 | .top-title { | ||
| 733 | display: flex; | ||
| 734 | justify-content: space-between; | ||
| 735 | |||
| 736 | .left { | ||
| 737 | display: flex; | ||
| 738 | align-items: center; | ||
| 739 | |||
| 740 | .top-des { | ||
| 741 | font-size: 16px; | ||
| 742 | color: #212121; | ||
| 743 | line-height: 24px; | ||
| 744 | font-weight: 600; | ||
| 745 | } | ||
| 746 | |||
| 747 | .top-status { | ||
| 748 | margin-left: 16px; | ||
| 749 | border-radius: 2px; | ||
| 750 | font-size: 12px; | ||
| 751 | text-align: center; | ||
| 752 | line-height: 18px; | ||
| 753 | font-weight: 400; | ||
| 754 | padding: 1px 8px; | ||
| 755 | } | ||
| 756 | |||
| 757 | } | ||
| 758 | |||
| 759 | .right { | ||
| 760 | display: flex; | ||
| 761 | align-items: center; | ||
| 762 | |||
| 763 | .right-one, | ||
| 764 | .right-two { | ||
| 765 | display: inline-block; | ||
| 766 | font-size: 14px; | ||
| 767 | color: #666666; | ||
| 768 | line-height: 21px; | ||
| 769 | } | ||
| 770 | |||
| 771 | .right-one { | ||
| 772 | margin-right: 24px; | ||
| 773 | } | ||
| 774 | } | ||
| 775 | } | ||
| 776 | |||
| 777 | .middle-area { | ||
| 778 | margin-top: 9px; | ||
| 779 | display: flex; | ||
| 780 | /* 左对齐 */ | ||
| 781 | justify-content: flex-start; | ||
| 782 | |||
| 783 | span { | ||
| 784 | background: #F5F5F5; | ||
| 785 | border: 1px solid rgba(217, 217, 217, 1); | ||
| 786 | border-radius: 2px; | ||
| 787 | display: inline-block; | ||
| 788 | padding: 1px 8px; | ||
| 789 | margin-right: 8px; | ||
| 790 | |||
| 791 | font-size: 12px; | ||
| 792 | color: #404040; | ||
| 793 | text-align: center; | ||
| 794 | line-height: 18px; | ||
| 795 | font-weight: 400; | ||
| 796 | } | ||
| 797 | } | ||
| 798 | |||
| 799 | .bottom-area { | ||
| 800 | margin-top: 9px; | ||
| 801 | font-size: 14px; | ||
| 802 | color: #666666; | ||
| 803 | font-weight: 400; | ||
| 804 | } | ||
| 805 | } | ||
| 806 | |||
| 807 | .container_wrap { | ||
| 808 | padding: 0; | ||
| 809 | display: flex; | ||
| 810 | justify-content: space-between; | ||
| 811 | |||
| 812 | .aside_wrap { | ||
| 813 | width: 199px; | ||
| 814 | border-right: 1px solid #d9d9d9; | ||
| 815 | box-shadow: none; | ||
| 816 | |||
| 817 | .aside_title { | ||
| 818 | width: calc(100% - 32px); | ||
| 819 | display: inline-block; | ||
| 820 | } | ||
| 821 | |||
| 822 | .icon-add.el-icon { | ||
| 823 | width: 24px; | ||
| 824 | height: 24px; | ||
| 825 | vertical-align: middle; | ||
| 826 | cursor: pointer; | ||
| 827 | |||
| 828 | svg { | ||
| 829 | width: 24px; | ||
| 830 | height: 24px; | ||
| 831 | } | ||
| 832 | } | ||
| 833 | |||
| 834 | .tree_panel { | ||
| 835 | height: 100%; | ||
| 836 | padding-top: 0; | ||
| 837 | |||
| 838 | :deep(.el-tree) { | ||
| 839 | margin: 0; | ||
| 840 | height: calc(100% - 68px); | ||
| 841 | overflow: hidden auto; | ||
| 842 | } | ||
| 843 | } | ||
| 844 | |||
| 845 | } | ||
| 846 | |||
| 847 | .main_wrap { | ||
| 848 | padding: 11px 16px 0 16px; | ||
| 849 | |||
| 850 | .path-item { | ||
| 851 | font-weight: normal; | ||
| 852 | } | ||
| 853 | |||
| 854 | .bold { | ||
| 855 | color: #212121; | ||
| 856 | font-weight: 400; | ||
| 857 | } | ||
| 858 | |||
| 859 | .btns-area { | ||
| 860 | display: flex; | ||
| 861 | justify-content: space-between; | ||
| 862 | |||
| 863 | .left-btns { | ||
| 864 | display: flex; | ||
| 865 | align-items: center; | ||
| 866 | } | ||
| 867 | |||
| 868 | .right-btns { | ||
| 869 | display: flex; | ||
| 870 | align-items: center; | ||
| 871 | |||
| 872 | .el-checkbox { | ||
| 873 | margin-right: 8px; | ||
| 874 | } | ||
| 875 | } | ||
| 876 | } | ||
| 877 | |||
| 878 | .table_panel_wrap { | ||
| 879 | width: 100%; | ||
| 880 | height: calc(100% - 113px); | ||
| 881 | min-height: 210px; | ||
| 882 | overflow: visible; | ||
| 883 | } | ||
| 884 | } | ||
| 885 | } | ||
| 886 | |||
| 887 | // :deep(.v-drawer) { | ||
| 888 | // .el-drawer__body { | ||
| 889 | // .title-label { | ||
| 890 | // font-size: 16px; | ||
| 891 | // color: #212121; | ||
| 892 | // line-height: 24px; | ||
| 893 | // font-weight: 600; | ||
| 894 | // } | ||
| 895 | // } | ||
| 896 | // } | ||
| 897 | |||
| 898 | .match-content-wrapper { | ||
| 899 | width: 100%; | ||
| 900 | |||
| 901 | .match-content { | ||
| 902 | display: flex; | ||
| 903 | align-items: center; | ||
| 904 | margin-top: 8px; | ||
| 905 | |||
| 906 | .v-select { | ||
| 907 | margin-right: 8px; | ||
| 908 | width: 50%; | ||
| 909 | } | ||
| 910 | |||
| 911 | .v-input { | ||
| 912 | width: calc(50% - 50px); | ||
| 913 | } | ||
| 914 | |||
| 915 | .extra-icon { | ||
| 916 | transition: opacity 1s; | ||
| 917 | } | ||
| 918 | } | ||
| 919 | } | ||
| 920 | |||
| 921 | :deep(.add-Icon) { | ||
| 922 | display: flex; | ||
| 923 | align-items: center; | ||
| 924 | margin-top: 13px; | ||
| 925 | |||
| 926 | .el-icon svg { | ||
| 927 | height: 19px; | ||
| 928 | width: 19px; | ||
| 929 | } | ||
| 930 | |||
| 931 | .word-des { | ||
| 932 | color: #4fa1a4 | ||
| 933 | } | ||
| 934 | } | ||
| 935 | } | ||
| 936 | </style> |
| ... | @@ -237,7 +237,7 @@ const newCreateGradeFormItems = ref([{ | ... | @@ -237,7 +237,7 @@ const newCreateGradeFormItems = ref([{ |
| 237 | { | 237 | { |
| 238 | label: '分级描述', | 238 | label: '分级描述', |
| 239 | type: 'textarea', | 239 | type: 'textarea', |
| 240 | maxlength: 50, | 240 | maxlength: 500, |
| 241 | placeholder: '分类分级的描述说明', | 241 | placeholder: '分类分级的描述说明', |
| 242 | field: 'gradeDesc', | 242 | field: 'gradeDesc', |
| 243 | default: '', | 243 | default: '', | ... | ... |
| 1 | <route lang="yaml"> | ||
| 2 | name: classifyGradeCatalogue //新增分级分类模板 | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="classifyGradeCatalogue"> | ||
| 6 | import { CirclePlus, Delete, Warning } from "@element-plus/icons-vue"; | ||
| 7 | import TableTools from '@/components/Tools/table_tools.vue'; | ||
| 8 | import { getCgDirTreeList, getCgDirFieldPageList } from '@/api/modules/dataInventory'; | ||
| 9 | |||
| 10 | const currentPath = ref<string[]>(['全部', '个人信息', '个人自然信息', '个人基本概况信息']); | ||
| 11 | |||
| 12 | const tempData = [ | ||
| 13 | { | ||
| 14 | guid: '1', | ||
| 15 | standardName: '个人信息', | ||
| 16 | status: 'published', | ||
| 17 | children: [ | ||
| 18 | { | ||
| 19 | guid: '1-1', | ||
| 20 | standardName: '个人自然信息', | ||
| 21 | status: 'published', | ||
| 22 | children: [ | ||
| 23 | { | ||
| 24 | guid: '1-1-1', | ||
| 25 | standardName: '个人基本概况信息', | ||
| 26 | status: 'published', | ||
| 27 | }, | ||
| 28 | { | ||
| 29 | guid: '1-1-2', | ||
| 30 | standardName: '个人财产信息', | ||
| 31 | status: 'published', | ||
| 32 | }, | ||
| 33 | { | ||
| 34 | guid: '1-1-3', | ||
| 35 | standardName: '个人健康信息', | ||
| 36 | status: 'published', | ||
| 37 | }, | ||
| 38 | ] | ||
| 39 | }, | ||
| 40 | ] | ||
| 41 | }, | ||
| 42 | ]; | ||
| 43 | const { proxy } = getCurrentInstance() as any; | ||
| 44 | |||
| 45 | // 分级分类树形列表 | ||
| 46 | const CgDirTreeList = ref(); | ||
| 47 | const getCgDirTreeData = async () => { | ||
| 48 | const params = { | ||
| 49 | classifyName: '', | ||
| 50 | } | ||
| 51 | const res: any = await getCgDirTreeList(params); | ||
| 52 | if (res.code == proxy.$passCode) { | ||
| 53 | CgDirTreeList.value = res.data; | ||
| 54 | } else { | ||
| 55 | proxy.$ElMessage.error(res.msg); | ||
| 56 | } | ||
| 57 | } | ||
| 58 | // 分页列表 | ||
| 59 | const CgDirFieldPageList = ref(); | ||
| 60 | const getCgDirFieldPage = async (params = {}) => { | ||
| 61 | // 在这里你可以根据需要扩展或修改 params | ||
| 62 | const defaultParams = { | ||
| 63 | pageIndex: 1, | ||
| 64 | pageSize: 10, | ||
| 65 | dirGuid: '', | ||
| 66 | label: '', | ||
| 67 | fieldName: '', | ||
| 68 | classifyName: '', | ||
| 69 | gradeDetailName: '', | ||
| 70 | tableName: '', | ||
| 71 | database: '', | ||
| 72 | dirGuids: [], | ||
| 73 | }; | ||
| 74 | const finalParams = { ...defaultParams, ...params }; | ||
| 75 | const res: any = await getCgDirFieldPageList(finalParams); | ||
| 76 | if (res.code == proxy.$passCode) { | ||
| 77 | CgDirFieldPageList.value = res.data; | ||
| 78 | } else { | ||
| 79 | proxy.$ElMessage.error(res.msg); | ||
| 80 | } | ||
| 81 | }; | ||
| 82 | |||
| 83 | onMounted(() => { | ||
| 84 | getCgDirTreeData(); | ||
| 85 | getCgDirFieldPage(); | ||
| 86 | }) | ||
| 87 | |||
| 88 | // 左侧tree-list | ||
| 89 | const treeInfo = ref({ | ||
| 90 | id: "data-pickup-tree", | ||
| 91 | filter: true, | ||
| 92 | editTreeItem: true, | ||
| 93 | queryValue: "", | ||
| 94 | className: 'tree-list', | ||
| 95 | queryPlaceholder: "输入标准集名称搜索", | ||
| 96 | props: { | ||
| 97 | label: "standardName", | ||
| 98 | value: "guid", | ||
| 99 | }, | ||
| 100 | nodeKey: 'guid', | ||
| 101 | expandedKey: ['0'], | ||
| 102 | currentNodeKey: '', | ||
| 103 | expandOnNodeClick: false, | ||
| 104 | data: tempData, | ||
| 105 | loading: false | ||
| 106 | }); | ||
| 107 | |||
| 108 | // 弹窗配置 | ||
| 109 | const formItems: any = ref([ | ||
| 110 | { | ||
| 111 | label: '标准集名称', | ||
| 112 | type: 'input', | ||
| 113 | maxlength: 50, | ||
| 114 | placeholder: '请输入', | ||
| 115 | field: 'standardName', | ||
| 116 | clearable: true, | ||
| 117 | required: true | ||
| 118 | }, { | ||
| 119 | label: '标准集编号', | ||
| 120 | type: 'input', | ||
| 121 | placeholder: '', | ||
| 122 | field: 'standardCode', | ||
| 123 | required: true, | ||
| 124 | disabled: true | ||
| 125 | }, { | ||
| 126 | label: "上级标准集", | ||
| 127 | type: 'tree-select', | ||
| 128 | placeholder: '请选择', | ||
| 129 | field: 'parentGuid', | ||
| 130 | default: '', | ||
| 131 | checkStrictly: true, | ||
| 132 | lazy: false, | ||
| 133 | clearable: true, | ||
| 134 | options: [], | ||
| 135 | props: { | ||
| 136 | label: 'standardName', | ||
| 137 | value: 'guid', | ||
| 138 | children: 'children', | ||
| 139 | isLeaf: 'isLeaf' | ||
| 140 | }, | ||
| 141 | expandKeys: [], | ||
| 142 | filterable: true, | ||
| 143 | required: false | ||
| 144 | }, { | ||
| 145 | label: '排序', | ||
| 146 | type: 'input', | ||
| 147 | placeholder: '请输入', | ||
| 148 | field: 'orderNum', | ||
| 149 | maxlength: 6, | ||
| 150 | required: true, | ||
| 151 | clearable: true, | ||
| 152 | }, { | ||
| 153 | label: '描述', | ||
| 154 | type: 'textarea', | ||
| 155 | placeholder: '请输入', | ||
| 156 | field: 'description', | ||
| 157 | clearable: true, | ||
| 158 | required: false, | ||
| 159 | block: true | ||
| 160 | }, | ||
| 161 | ]) | ||
| 162 | const formRules: any = ref({ | ||
| 163 | standardName: [ | ||
| 164 | { | ||
| 165 | required: true, | ||
| 166 | message: '请输入标准集名称', | ||
| 167 | trigger: 'blur' | ||
| 168 | }, | ||
| 169 | { | ||
| 170 | max: 50, | ||
| 171 | message: '长度在 50 个字符以内', | ||
| 172 | trigger: 'blur' | ||
| 173 | }, | ||
| 174 | ], | ||
| 175 | orderNum: [{ | ||
| 176 | validator: (rule: any, value: any, callback: any) => { | ||
| 177 | if (value === 0) { | ||
| 178 | callback(); | ||
| 179 | return; | ||
| 180 | } | ||
| 181 | if (!value) { | ||
| 182 | callback(new Error('请填写排序')); | ||
| 183 | return; | ||
| 184 | } | ||
| 185 | const r = /(^[0-9]([0-9]*)$|^[0-9]$)/; // 正整数(可以以0打头) | ||
| 186 | if (value && !r.test(value)) { | ||
| 187 | callback(new Error('请填写大于或等于零整数')); | ||
| 188 | return; | ||
| 189 | } | ||
| 190 | callback(); | ||
| 191 | }, | ||
| 192 | trigger: "blur", | ||
| 193 | }], | ||
| 194 | }) | ||
| 195 | const formInfo = ref({ | ||
| 196 | type: "form", | ||
| 197 | title: "", | ||
| 198 | formInfo: { | ||
| 199 | id: "add-set-standard-form", | ||
| 200 | items: formItems.value, | ||
| 201 | rules: formRules.value | ||
| 202 | }, | ||
| 203 | }) | ||
| 204 | const standardSetDialogInfo: any = ref({ | ||
| 205 | visible: false, | ||
| 206 | size: 700, | ||
| 207 | direction: "column", | ||
| 208 | header: { | ||
| 209 | title: "新建", | ||
| 210 | }, | ||
| 211 | type: '', | ||
| 212 | contents: [formInfo.value], | ||
| 213 | footer: { | ||
| 214 | visible: true, | ||
| 215 | btns: [ | ||
| 216 | { type: "default", label: "取消", value: "cancel" }, | ||
| 217 | { type: "primary", label: "确定", value: "submit" }, | ||
| 218 | ], | ||
| 219 | }, | ||
| 220 | }) | ||
| 221 | |||
| 222 | const addStandardSet = () => { | ||
| 223 | standardSetDialogInfo.value.visible = true; | ||
| 224 | console.log('addStandardSet'); | ||
| 225 | } | ||
| 226 | |||
| 227 | const standardSetDialogBtnClick = (btn: any, info: any) => { | ||
| 228 | console.log('standardSetDialogBtnClick', btn, info); | ||
| 229 | if (btn.value === 'submit') { | ||
| 230 | standardSetDialogInfo.value.visible = false; | ||
| 231 | } | ||
| 232 | if (btn.value === 'cancel') { | ||
| 233 | standardSetDialogInfo.value.visible = false; | ||
| 234 | } | ||
| 235 | } | ||
| 236 | |||
| 237 | // 右侧上方搜索tab配置 | ||
| 238 | const searchItemList = ref([ | ||
| 239 | { | ||
| 240 | label: '标签', | ||
| 241 | type: 'select', | ||
| 242 | maxlength: 19, | ||
| 243 | placeholder: '选择标签', | ||
| 244 | field: 'labelName', | ||
| 245 | default: '', | ||
| 246 | options: [], | ||
| 247 | props: { | ||
| 248 | label: 'name', | ||
| 249 | value: 'guid', | ||
| 250 | }, | ||
| 251 | clearable: true, | ||
| 252 | }, | ||
| 253 | { | ||
| 254 | label: '字段名', | ||
| 255 | type: 'select', | ||
| 256 | maxlength: 19, | ||
| 257 | placeholder: '选择字段名', | ||
| 258 | field: 'fieldName', | ||
| 259 | default: '', | ||
| 260 | options: [], | ||
| 261 | props: { | ||
| 262 | label: 'name', | ||
| 263 | value: 'guid', | ||
| 264 | }, | ||
| 265 | clearable: true, | ||
| 266 | }, | ||
| 267 | { | ||
| 268 | label: '分类', | ||
| 269 | type: 'select', | ||
| 270 | maxlength: 19, | ||
| 271 | placeholder: '选择分类', | ||
| 272 | field: 'classifyName', | ||
| 273 | default: '', | ||
| 274 | options: [], | ||
| 275 | props: { | ||
| 276 | label: 'name', | ||
| 277 | value: 'guid', | ||
| 278 | }, | ||
| 279 | clearable: true, | ||
| 280 | }, { | ||
| 281 | label: '分级', | ||
| 282 | type: 'select', | ||
| 283 | maxlength: 19, | ||
| 284 | placeholder: '选择分级', | ||
| 285 | field: 'levelName', | ||
| 286 | default: '', | ||
| 287 | options: [], | ||
| 288 | props: { | ||
| 289 | label: 'name', | ||
| 290 | value: 'guid', | ||
| 291 | }, | ||
| 292 | clearable: true, | ||
| 293 | }, { | ||
| 294 | label: '数据库名', | ||
| 295 | type: 'select', | ||
| 296 | maxlength: 19, | ||
| 297 | placeholder: '选择数据库名', | ||
| 298 | field: 'databaseName', | ||
| 299 | default: '', | ||
| 300 | options: [], | ||
| 301 | props: { | ||
| 302 | label: 'name', | ||
| 303 | value: 'guid', | ||
| 304 | }, | ||
| 305 | clearable: true, | ||
| 306 | }, | ||
| 307 | { | ||
| 308 | label: '表名', | ||
| 309 | type: 'select', | ||
| 310 | maxlength: 19, | ||
| 311 | placeholder: '选择表名', | ||
| 312 | field: 'tableName', | ||
| 313 | default: '', | ||
| 314 | options: [], | ||
| 315 | props: { | ||
| 316 | label: 'name', | ||
| 317 | value: 'guid', | ||
| 318 | }, | ||
| 319 | clearable: true, | ||
| 320 | } | ||
| 321 | ]) | ||
| 322 | const searchParams = ref({}) | ||
| 323 | const toSearch = (val: any, clear: boolean = false) => { | ||
| 324 | if (clear) { | ||
| 325 | searchItemList.value.map(item => item.default = '') | ||
| 326 | searchParams.value = {} | ||
| 327 | } | ||
| 328 | |||
| 329 | if (Object.keys(val).length) { | ||
| 330 | searchParams.value = { ...val } | ||
| 331 | } | ||
| 332 | // let params: any = { ...searchParams.value } | ||
| 333 | // params.pageIndex = page.value.curr; | ||
| 334 | // params.pageSize = page.value.limit; | ||
| 335 | // //params.standardSetGuid = standardSetGuid.value; | ||
| 336 | // params.standardSetLevelCode = standardSetLevelCode.value; | ||
| 337 | // return getTableData(params); | ||
| 338 | }; | ||
| 339 | const treeSelectNodeChange = (node: any) => { | ||
| 340 | console.log('treeSelectNodeChange', node); | ||
| 341 | const { guid, standardName } = node | ||
| 342 | treeInfo.value.currentNodeKey = guid; | ||
| 343 | console.log('nodeClick', guid, standardName); | ||
| 344 | |||
| 345 | // 递归tempData找到所有祖先元素的standardName,存入currentPath中 | ||
| 346 | const path = findPath(tempData, guid); | ||
| 347 | if (path) { | ||
| 348 | currentPath.value = path; | ||
| 349 | console.log('找到路径:', path); | ||
| 350 | } else { | ||
| 351 | console.error('未找到路径'); | ||
| 352 | } | ||
| 353 | } | ||
| 354 | |||
| 355 | // btns-area | ||
| 356 | const checked1 = ref(false); | ||
| 357 | |||
| 358 | |||
| 359 | //下方表格配置 | ||
| 360 | const tableDataList = ref([{ | ||
| 361 | fieldStandardCode: '个人基本概况信息', | ||
| 362 | chName: '个人自然信息', | ||
| 363 | enName: '个人信息', | ||
| 364 | dataTypeValue: '规则', | ||
| 365 | approveState: 'Y', | ||
| 366 | }, { | ||
| 367 | fieldStandardCode: '个人财产信息', | ||
| 368 | chName: '个人自然信息', | ||
| 369 | enName: '个人信息', | ||
| 370 | dataTypeValue: '规则', | ||
| 371 | approveState: 'Y', | ||
| 372 | }, { | ||
| 373 | fieldStandardCode: '个人健康信息', | ||
| 374 | chName: '个人自然信息', | ||
| 375 | enName: '个人信息', | ||
| 376 | dataTypeValue: '规则', | ||
| 377 | approveState: 'Y', | ||
| 378 | }]); | ||
| 379 | const tableInfo = ref({ | ||
| 380 | id: "role-manage-table", | ||
| 381 | multiple: true, | ||
| 382 | fixedSelection: true, | ||
| 383 | fields: [ | ||
| 384 | { label: "序号", type: "index", width: 56, align: "center" }, | ||
| 385 | { label: "字段名", field: "fieldName", width: 140 }, | ||
| 386 | { label: "分类", field: "classifyName", width: 180 }, | ||
| 387 | { label: "分级", field: "enName", width: 120 }, | ||
| 388 | { label: "标签", field: "labelName", width: 140 }, | ||
| 389 | { label: "规则", field: "rulesName", width: 180 }, | ||
| 390 | { label: "表名", field: "tableName", width: 120, align: 'center' }, | ||
| 391 | { label: "表中文名", field: "tableCHName", width: 120, align: 'center' }, | ||
| 392 | { label: "数据库名", field: "databaseName", width: 120, align: 'center' }, | ||
| 393 | { label: "数据类型", field: "databaseCHName", width: 120, align: 'center' }, | ||
| 394 | |||
| 395 | ], | ||
| 396 | data: tableDataList.value, | ||
| 397 | page: { | ||
| 398 | type: "normal", | ||
| 399 | rows: 0, | ||
| 400 | // ...page.value, | ||
| 401 | }, | ||
| 402 | actionInfo: { | ||
| 403 | label: "操作", | ||
| 404 | type: "btn", | ||
| 405 | width: 300, | ||
| 406 | fixed: 'right', | ||
| 407 | btns: [ | ||
| 408 | { | ||
| 409 | label: "编辑", value: "edit", click: (scope) => { | ||
| 410 | console.log('编辑', scope); | ||
| 411 | drawerInfo.value.visible = true | ||
| 412 | } | ||
| 413 | }, | ||
| 414 | |||
| 415 | { | ||
| 416 | label: "复制", value: "copy", click: (scope) => { | ||
| 417 | console.log('复制', scope); | ||
| 418 | } | ||
| 419 | }, | ||
| 420 | { | ||
| 421 | label: "删除 ", value: "delete", click: (scope) => { | ||
| 422 | console.log('删除', scope); | ||
| 423 | } | ||
| 424 | }, | ||
| 425 | ] | ||
| 426 | |||
| 427 | }, | ||
| 428 | loading: false | ||
| 429 | }); | ||
| 430 | |||
| 431 | |||
| 432 | const nodeClick = (data: any) => { | ||
| 433 | const { guid, standardName } = data | ||
| 434 | console.log('nodeClick', guid, standardName); | ||
| 435 | searchItemList.value[0].default = standardName; | ||
| 436 | // 递归tempData找到所有祖先元素的standardName,存入currentPath中 | ||
| 437 | const path = findPath(tempData, guid); | ||
| 438 | if (path) { | ||
| 439 | currentPath.value = path; | ||
| 440 | console.log('找到路径:', path); | ||
| 441 | } else { | ||
| 442 | console.error('未找到路径'); | ||
| 443 | } | ||
| 444 | |||
| 445 | } | ||
| 446 | const findPath = (data: any[], targetGuid: string, path: string[] = []) => { | ||
| 447 | for (const item of data) { | ||
| 448 | path.push(item.standardName); // 添加当前节点名称 | ||
| 449 | if (item.guid === targetGuid) { | ||
| 450 | return path; // 找到目标节点,返回路径 | ||
| 451 | } | ||
| 452 | if (item.children && item.children.length > 0) { | ||
| 453 | const result = findPath(item.children, targetGuid, path); | ||
| 454 | if (result) return result; // 子节点找到目标节点,返回路径 | ||
| 455 | } | ||
| 456 | path.pop(); // 回溯,移除当前节点 | ||
| 457 | } | ||
| 458 | return null; // 未找到目标节点 | ||
| 459 | }; | ||
| 460 | |||
| 461 | |||
| 462 | const classEditFormItems = ref([{ | ||
| 463 | label: '已选字段', | ||
| 464 | type: 'input', | ||
| 465 | maxlength: 50, | ||
| 466 | placeholder: '请输入', | ||
| 467 | field: 'classifyName', | ||
| 468 | default: '', | ||
| 469 | clearable: true, | ||
| 470 | required: true, | ||
| 471 | block: true | ||
| 472 | }, { | ||
| 473 | label: '长度', | ||
| 474 | type: 'input', | ||
| 475 | placeholder: '请选择', | ||
| 476 | field: 'orderNum', | ||
| 477 | maxlength: 6, | ||
| 478 | regexp: /\D/g, | ||
| 479 | required: true, | ||
| 480 | clearable: true, | ||
| 481 | }, | ||
| 482 | { | ||
| 483 | label: '', | ||
| 484 | type: 'input', | ||
| 485 | placeholder: '请输入', | ||
| 486 | field: 'orderNum', | ||
| 487 | maxlength: 6, | ||
| 488 | regexp: /\D/g, | ||
| 489 | required: true, | ||
| 490 | clearable: true, | ||
| 491 | col: 'numberClass', | ||
| 492 | }, | ||
| 493 | { | ||
| 494 | label: '精度', | ||
| 495 | type: 'input', | ||
| 496 | placeholder: '请选择', | ||
| 497 | field: 'orderNum', | ||
| 498 | maxlength: 6, | ||
| 499 | regexp: /\D/g, | ||
| 500 | required: true, | ||
| 501 | clearable: true, | ||
| 502 | }, | ||
| 503 | { | ||
| 504 | label: '', | ||
| 505 | type: 'input', | ||
| 506 | placeholder: '请输入', | ||
| 507 | field: 'orderNum', | ||
| 508 | maxlength: 6, | ||
| 509 | regexp: /\D/g, | ||
| 510 | required: true, | ||
| 511 | clearable: true, | ||
| 512 | col: 'numberClass', | ||
| 513 | }, { | ||
| 514 | label: '关联字典', | ||
| 515 | field: 'parentGuid', | ||
| 516 | type: 'select', | ||
| 517 | placeholder: '请选择', | ||
| 518 | default: '', | ||
| 519 | options: [], | ||
| 520 | props: { | ||
| 521 | label: "classifyName", | ||
| 522 | value: "guid", | ||
| 523 | }, | ||
| 524 | filterable: true, | ||
| 525 | clearable: true, | ||
| 526 | required: false | ||
| 527 | }, | ||
| 528 | { | ||
| 529 | label: '字段取值范围', | ||
| 530 | type: 'input-group', | ||
| 531 | placeholder: '请输入', | ||
| 532 | field: 'numberAround', | ||
| 533 | default: '', | ||
| 534 | children: [ | ||
| 535 | { | ||
| 536 | type: 'input', | ||
| 537 | placeholder: '请输入', | ||
| 538 | field: 'numberStart', | ||
| 539 | default: '', | ||
| 540 | clearable: true, | ||
| 541 | required: true, | ||
| 542 | }, | ||
| 543 | { | ||
| 544 | type: 'input', | ||
| 545 | placeholder: '请输入', | ||
| 546 | field: 'numberEnd', | ||
| 547 | default: '', | ||
| 548 | clearable: true, | ||
| 549 | required: true, | ||
| 550 | }, | ||
| 551 | ], | ||
| 552 | col: 'col2', | ||
| 553 | clearable: true, | ||
| 554 | }, | ||
| 555 | { | ||
| 556 | label: '数据是否唯一', | ||
| 557 | type: "radio-group", | ||
| 558 | field: "radioField", | ||
| 559 | disabled: false, | ||
| 560 | options: [ | ||
| 561 | { label: "选项一", value: "option1", disabled: false }, | ||
| 562 | { label: "选项二", value: "option2", disabled: false }, | ||
| 563 | ], | ||
| 564 | }, | ||
| 565 | { | ||
| 566 | label: '是否必填', | ||
| 567 | type: "radio-group", | ||
| 568 | field: "radioField", | ||
| 569 | disabled: false, | ||
| 570 | options: [ | ||
| 571 | { label: "选项一", value: "option1", disabled: false }, | ||
| 572 | { label: "选项二", value: "option2", disabled: false }, | ||
| 573 | ], | ||
| 574 | } | ||
| 575 | ]); | ||
| 576 | const classEditFormRules = ref({ | ||
| 577 | classifyName: [{ required: true, message: '请填写分类名称', trigger: 'blur' }], | ||
| 578 | }); | ||
| 579 | /** 新增分类的form */ | ||
| 580 | const classEditFormInfo = ref({ | ||
| 581 | type: "form", | ||
| 582 | title: "", | ||
| 583 | col: "span", | ||
| 584 | formInfo: { | ||
| 585 | id: "add-class-form", | ||
| 586 | readonly: false, | ||
| 587 | items: classEditFormItems.value, | ||
| 588 | rules: classEditFormRules.value, | ||
| 589 | }, | ||
| 590 | }); | ||
| 591 | /** 新增编辑分类。 */ | ||
| 592 | const drawerInfo = ref({ | ||
| 593 | visible: false, | ||
| 594 | direction: 'rtl', | ||
| 595 | size: 600, | ||
| 596 | header: { | ||
| 597 | title: '批量配置业务规则', | ||
| 598 | }, | ||
| 599 | type: '', | ||
| 600 | container: { | ||
| 601 | contents: [classEditFormInfo.value], | ||
| 602 | }, | ||
| 603 | footer: { | ||
| 604 | btns: [ | ||
| 605 | { type: 'default', label: '取消', value: 'cancel' }, | ||
| 606 | { type: 'primary', label: '确定', value: 'save', loading: false }, | ||
| 607 | ] | ||
| 608 | } | ||
| 609 | }) | ||
| 610 | const drawerBtnClick = async (btn, info) => { | ||
| 611 | if (btn.value == 'cancel') { | ||
| 612 | drawerInfo.value.visible = false; | ||
| 613 | } else { | ||
| 614 | // if (drawerInfo.value.header.title == '添加分类') { | ||
| 615 | // const params = { | ||
| 616 | // ...info, | ||
| 617 | // classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 618 | // } | ||
| 619 | // const res: any = await saveClassify(params); | ||
| 620 | // if (res.code == proxy.$passCode) { | ||
| 621 | // proxy.$ElMessage.success('添加成功!'); | ||
| 622 | // drawerInfo.value.visible = false; | ||
| 623 | // getTreeListData(); | ||
| 624 | // } else { | ||
| 625 | // proxy.$ElMessage.error(res.msg); | ||
| 626 | // } | ||
| 627 | // } else { | ||
| 628 | // // 编辑分类 | ||
| 629 | // const params = { | ||
| 630 | // ...info, | ||
| 631 | // classifyGradeGuid: router.currentRoute.value.query.guid, | ||
| 632 | // guid: currTableInfo.value.guid | ||
| 633 | // } | ||
| 634 | // const res: any = await updateClassify(params); | ||
| 635 | // if (res.code == proxy.$passCode) { | ||
| 636 | // proxy.$ElMessage.success('修改成功!'); | ||
| 637 | // drawerInfo.value.visible = false; | ||
| 638 | // getTreeListData(); | ||
| 639 | // } else { | ||
| 640 | // proxy.$ElMessage.error(res.msg); | ||
| 641 | // } | ||
| 642 | // } | ||
| 643 | console.log('aaa') | ||
| 644 | } | ||
| 645 | } | ||
| 646 | |||
| 647 | const handleTreeItemMenuClick = (data: any, type) => { | ||
| 648 | console.log('handleTreeItemMenuClick', data, type); | ||
| 649 | } | ||
| 650 | const getItemStyle = (status: string) => { | ||
| 651 | const styles: { [key: string]: any } = { | ||
| 652 | published: { | ||
| 653 | color: '#1BA854', | ||
| 654 | background: '#F2FFF5', | ||
| 655 | border: '1px solid rgba(109, 209, 142, 1)', | ||
| 656 | }, | ||
| 657 | running: { | ||
| 658 | color: '#FF991C', | ||
| 659 | background: '#FFFBF2', | ||
| 660 | border: '1px solid rgba(255, 203, 120, 1)', | ||
| 661 | }, | ||
| 662 | pending: { | ||
| 663 | border: '1px solid rgba(217, 217, 217, 1)', | ||
| 664 | color: '#404040', | ||
| 665 | background: '#F5F5F5', | ||
| 666 | }, | ||
| 667 | }; | ||
| 668 | |||
| 669 | return styles[status] || {}; // 如果状态没有对应的样式,则返回空对象 | ||
| 670 | } | ||
| 671 | |||
| 672 | |||
| 673 | const activeName = ref('first'); | ||
| 674 | const handleClick = (tab: any) => { | ||
| 675 | console.log(tab.props.name); | ||
| 676 | activeName.value = tab.props.name; | ||
| 677 | } | ||
| 678 | |||
| 679 | const handleSubjectTableCommand = (command: string) => { | ||
| 680 | console.log('handleSubjectTableCommand', command); | ||
| 681 | } | ||
| 682 | |||
| 683 | // 文字提示区域 | ||
| 684 | const isShowClassifyTip = ref(true); | ||
| 685 | const isShowDatabaseTip = ref(true); | ||
| 686 | const addIsShowClassifyTip = () => { | ||
| 687 | isShowClassifyTip.value = false; | ||
| 688 | } | ||
| 689 | |||
| 690 | const addIsShowDatabaseTip = () => { | ||
| 691 | isShowDatabaseTip.value = false; | ||
| 692 | } | ||
| 693 | |||
| 694 | </script> | ||
| 695 | |||
| 696 | <template> | ||
| 697 | <div class="classification-template-content"> | ||
| 698 | <div class="v-table-tools"> | ||
| 699 | <TableTools :searchItems="searchItemList" :init="false" :searchId="'files-standard-search'" @search="toSearch" | ||
| 700 | @treeSelectNodeChange="treeSelectNodeChange" /> | ||
| 701 | </div> | ||
| 702 | <div class="container_wrap full flex"> | ||
| 703 | <div class="aside_wrap"> | ||
| 704 | <el-tabs v-model="activeName" class="v-tabs" @tab-click="handleClick"> | ||
| 705 | <el-tab-pane label="分类分级目录" name="first"> | ||
| 706 | <Tree :treeInfo="treeInfo" @nodeClick="nodeClick" @itemMenuClick="handleTreeItemMenuClick" /> | ||
| 707 | </el-tab-pane> | ||
| 708 | <el-tab-pane label="数据库目录" name="second">Config</el-tab-pane> | ||
| 709 | </el-tabs> | ||
| 710 | </div> | ||
| 711 | <div class="main_wrap" v-if="activeName === 'first'"> | ||
| 712 | <div class="top-tool-tip" v-if="isShowClassifyTip"> | ||
| 713 | <div class="des"> | ||
| 714 | <div class="v-icon"> | ||
| 715 | <el-icon> | ||
| 716 | <Warning /> | ||
| 717 | </el-icon> | ||
| 718 | </div> | ||
| 719 | 目录内容为最新的已确认的分类分级任务。 | ||
| 720 | </div> | ||
| 721 | <el-button type="success" link @click="addIsShowClassifyTip"> | ||
| 722 | 不再提醒 | ||
| 723 | </el-button> | ||
| 724 | </div> | ||
| 725 | <div class="path"> | ||
| 726 | <span v-for="(item, index) in currentPath" :key="index" class="path-item"> | ||
| 727 | <span :class="{ 'bold': index === currentPath.length - 1 }">{{ item }}</span> | ||
| 728 | <span v-if="index < currentPath.length - 1">/</span> | ||
| 729 | </span> | ||
| 730 | </div> | ||
| 731 | <div class="btns-area"> | ||
| 732 | <div class="left-btns"> | ||
| 733 | <el-button type="primary" @click="addStandardSet">查看已生产报告</el-button> | ||
| 734 | <el-button>导出</el-button> | ||
| 735 | <el-button>批量配置业务规则</el-button> | ||
| 736 | </div> | ||
| 737 | </div> | ||
| 738 | <div class="table_panel_wrap"> | ||
| 739 | <Table :tableInfo="tableInfo" /> | ||
| 740 | </div> | ||
| 741 | </div> | ||
| 742 | |||
| 743 | <div class="main_wrap" v-if="activeName === 'second'"> | ||
| 744 | <div class="top-tool-tip" v-if="isShowDatabaseTip"> | ||
| 745 | <div class="des"> | ||
| 746 | <div class="v-icon"> | ||
| 747 | <el-icon> | ||
| 748 | <Warning /> | ||
| 749 | </el-icon> | ||
| 750 | </div> | ||
| 751 | 数据库目录可新建表,可设置业务规则,自动生成质检规则。 | ||
| 752 | </div> | ||
| 753 | <el-button type="success" link @click="addIsShowDatabaseTip"> | ||
| 754 | 不再提醒 | ||
| 755 | </el-button> | ||
| 756 | </div> | ||
| 757 | <div>全部</div> | ||
| 758 | <div class="btns-area"> | ||
| 759 | <div class="left-btns"> | ||
| 760 | <div class="dropdown_btn"> | ||
| 761 | <el-dropdown popper-class="table-create-menu" @command="handleSubjectTableCommand" | ||
| 762 | placement="bottom-start" trigger="click"> | ||
| 763 | <span class="el-dropdown-link"> | ||
| 764 | <el-button type="primary">新建主题表</el-button> | ||
| 765 | </span> | ||
| 766 | <template #dropdown> | ||
| 767 | <el-dropdown-menu> | ||
| 768 | <el-dropdown-item command="manualCreate"> | ||
| 769 | <el-icon style="width: 24px;height: 24px;"> | ||
| 770 | <svg-icon style="width: 24px;height: 24px;" name="table-create-manual" /> | ||
| 771 | </el-icon> | ||
| 772 | <div class="item-content"> | ||
| 773 | <span class="item-content-title">根据文件新建</span> | ||
| 774 | <span class="item-content-desc">根据文件新建数据库表</span> | ||
| 775 | </div> | ||
| 776 | </el-dropdown-item> | ||
| 777 | <el-dropdown-item command="existingCreate"> | ||
| 778 | <el-icon style="width: 24px;height: 24px;"> | ||
| 779 | <svg-icon style="width: 24px;height: 24px;" name="table-create-exist" /> | ||
| 780 | </el-icon> | ||
| 781 | <div class="item-content"> | ||
| 782 | <span class="item-content-title">已有表新建</span> | ||
| 783 | <span class="item-content-desc">根据已有表或视图新建表</span> | ||
| 784 | </div> | ||
| 785 | </el-dropdown-item> | ||
| 786 | </el-dropdown-menu> | ||
| 787 | </template> | ||
| 788 | </el-dropdown> | ||
| 789 | </div> | ||
| 790 | <el-button>导出</el-button> | ||
| 791 | <el-button>查看已生产报告</el-button> | ||
| 792 | <el-button>查看质量规则</el-button> | ||
| 793 | </div> | ||
| 794 | <div class="right-btns"> | ||
| 795 | <el-checkbox v-model="checked1" label="仅看规划数据资产表" size="large" /> | ||
| 796 | </div> | ||
| 797 | </div> | ||
| 798 | <div class="table_panel_wrap_database"> | ||
| 799 | <Table :tableInfo="tableInfo" /> | ||
| 800 | </div> | ||
| 801 | </div> | ||
| 802 | |||
| 803 | <Dialog :dialogInfo="standardSetDialogInfo" @btnClick="standardSetDialogBtnClick" /> | ||
| 804 | <Drawer :drawerInfo="drawerInfo" @drawerBtnClick="drawerBtnClick" class="v-drawer" /> | ||
| 805 | |||
| 806 | </div> | ||
| 807 | </div> | ||
| 808 | |||
| 809 | </template> | ||
| 810 | |||
| 811 | |||
| 812 | <style lang="scss" scoped> | ||
| 813 | .classification-template-content { | ||
| 814 | width: 100%; | ||
| 815 | height: 100%; | ||
| 816 | display: flex; | ||
| 817 | flex-direction: column; | ||
| 818 | |||
| 819 | .v-table-tools { | ||
| 820 | padding: 8px 12px; | ||
| 821 | } | ||
| 822 | |||
| 823 | .container_wrap { | ||
| 824 | padding: 0; | ||
| 825 | display: flex; | ||
| 826 | justify-content: space-between; | ||
| 827 | |||
| 828 | .aside_wrap { | ||
| 829 | width: 199px; | ||
| 830 | border-right: 1px solid #d9d9d9; | ||
| 831 | box-shadow: none; | ||
| 832 | |||
| 833 | :deep(.v-tabs) { | ||
| 834 | .el-tabs__item { | ||
| 835 | padding: 0 10px; | ||
| 836 | } | ||
| 837 | } | ||
| 838 | |||
| 839 | .tree_panel { | ||
| 840 | height: 100%; | ||
| 841 | padding-top: 0; | ||
| 842 | |||
| 843 | :deep(.el-tree) { | ||
| 844 | margin: 0; | ||
| 845 | height: calc(100% - 68px); | ||
| 846 | overflow: hidden auto; | ||
| 847 | } | ||
| 848 | } | ||
| 849 | |||
| 850 | } | ||
| 851 | |||
| 852 | .main_wrap { | ||
| 853 | padding: 11px 16px 0 16px; | ||
| 854 | |||
| 855 | .top-tool-tip { | ||
| 856 | display: flex; | ||
| 857 | justify-content: space-between; | ||
| 858 | height: 40px; | ||
| 859 | align-items: center; | ||
| 860 | background: #EFFBFC; | ||
| 861 | border: 1px solid rgba(195, 219, 219, 1); | ||
| 862 | border-radius: 2px; | ||
| 863 | padding: 0 16px; | ||
| 864 | margin-bottom: 12px; | ||
| 865 | |||
| 866 | .des { | ||
| 867 | display: flex; | ||
| 868 | align-items: center; | ||
| 869 | font-size: 14px; | ||
| 870 | color: #212121; | ||
| 871 | line-height: 21px; | ||
| 872 | font-weight: 400; | ||
| 873 | |||
| 874 | .v-icon { | ||
| 875 | display: flex; | ||
| 876 | align-items: center; | ||
| 877 | margin-right: 8px; | ||
| 878 | color: #4FA1A4; | ||
| 879 | } | ||
| 880 | } | ||
| 881 | } | ||
| 882 | |||
| 883 | .path-item { | ||
| 884 | font-weight: normal; | ||
| 885 | } | ||
| 886 | |||
| 887 | .bold { | ||
| 888 | color: #212121; | ||
| 889 | font-weight: 400; | ||
| 890 | } | ||
| 891 | |||
| 892 | .btns-area { | ||
| 893 | display: flex; | ||
| 894 | justify-content: space-between; | ||
| 895 | height: 40px; | ||
| 896 | |||
| 897 | .left-btns { | ||
| 898 | display: flex; | ||
| 899 | align-items: center; | ||
| 900 | |||
| 901 | .dropdown_btn { | ||
| 902 | margin-right: 8px; | ||
| 903 | } | ||
| 904 | } | ||
| 905 | |||
| 906 | .right-btns { | ||
| 907 | display: flex; | ||
| 908 | align-items: center; | ||
| 909 | |||
| 910 | .el-checkbox { | ||
| 911 | margin-right: 8px; | ||
| 912 | } | ||
| 913 | } | ||
| 914 | } | ||
| 915 | |||
| 916 | .table_panel_wrap { | ||
| 917 | width: 100%; | ||
| 918 | height: calc(100% - 113px); | ||
| 919 | min-height: 210px; | ||
| 920 | overflow: visible; | ||
| 921 | } | ||
| 922 | |||
| 923 | .table_panel_wrap_database { | ||
| 924 | width: 100%; | ||
| 925 | height: calc(100% - 113px); | ||
| 926 | min-height: 210px; | ||
| 927 | overflow: visible; | ||
| 928 | } | ||
| 929 | } | ||
| 930 | } | ||
| 931 | |||
| 932 | .match-content-wrapper { | ||
| 933 | width: 100%; | ||
| 934 | |||
| 935 | .match-content { | ||
| 936 | display: flex; | ||
| 937 | align-items: center; | ||
| 938 | margin-top: 8px; | ||
| 939 | |||
| 940 | .v-select { | ||
| 941 | margin-right: 8px; | ||
| 942 | width: 50%; | ||
| 943 | } | ||
| 944 | |||
| 945 | .v-input { | ||
| 946 | width: calc(50% - 50px); | ||
| 947 | } | ||
| 948 | |||
| 949 | .extra-icon { | ||
| 950 | transition: opacity 1s; | ||
| 951 | } | ||
| 952 | } | ||
| 953 | } | ||
| 954 | |||
| 955 | :deep(.v-drawer) { | ||
| 956 | .numberClass { | ||
| 957 | margin-top: 12px; | ||
| 958 | } | ||
| 959 | } | ||
| 960 | } | ||
| 961 | </style> |
src/views/data_inventory/dataLabel.vue
0 → 100644
| 1 | <route lang="yaml"> | ||
| 2 | name: dataLabel //标签管理 | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="dataLabel"> | ||
| 6 | import TableTools from '@/components/Tools/table_tools.vue'; | ||
| 7 | import { getGradeList } from "@/api/modules/dataInventory"; | ||
| 8 | import { getLabelList, getClassifyGradeTreeList, saveLabel, getLabelPageList, deleteLabel, updateLabel } from "@/api/modules/dataLabel"; | ||
| 9 | import { CirclePlus, Delete } from "@element-plus/icons-vue"; | ||
| 10 | import { el, tr } from 'element-plus/es/locale'; | ||
| 11 | |||
| 12 | const { proxy } = getCurrentInstance() as any; | ||
| 13 | const dialogLabelFormRef = ref(); | ||
| 14 | |||
| 15 | // 原始数据存储 | ||
| 16 | const classGradeTreeData: any = ref([]); | ||
| 17 | const expandedKey: any = ref([]) | ||
| 18 | // 分类guid | ||
| 19 | const classifyGuid = ref('') | ||
| 20 | // 分类明细guid | ||
| 21 | const classifyDetailGuid = ref('') | ||
| 22 | |||
| 23 | const getClassifyGradeTree = async () => { | ||
| 24 | treeInfo.value.loading = true; | ||
| 25 | const res: any = await getClassifyGradeTreeList(); | ||
| 26 | if (res.code == proxy.$passCode) { | ||
| 27 | |||
| 28 | const transformedData = transformData(res.data); | ||
| 29 | classGradeTreeData.value = transformedData || []; | ||
| 30 | treeInfo.value.data = classGradeTreeData.value; | ||
| 31 | // 默认展开第一级 | ||
| 32 | expandedKey.value = classGradeTreeData.value[0].guid; | ||
| 33 | treeInfo.value.expandedKey.push(classGradeTreeData.value[0].guid); | ||
| 34 | // 寻找第一children中guid | ||
| 35 | if (classGradeTreeData.value[0].children) { | ||
| 36 | treeInfo.value.currentNodeKey = classGradeTreeData.value[0].children[0].guid; | ||
| 37 | // 分类明细guid | ||
| 38 | classifyDetailGuid.value = classGradeTreeData.value[0].children[0].guid; | ||
| 39 | } | ||
| 40 | // 分别赋值 分类guid | ||
| 41 | classifyGuid.value = classGradeTreeData.value[0].guid; | ||
| 42 | newCreateGradeFormItems.value[1].options = transformDataForTree(transformedData) | ||
| 43 | treeInfo.value.loading = false; | ||
| 44 | } else { | ||
| 45 | proxy.$ElMessage.error(res.msg); | ||
| 46 | } | ||
| 47 | } | ||
| 48 | // 数据转换函数 | ||
| 49 | const transformData = (data: any[]) => { | ||
| 50 | return data?.map(({ name, classifyRSTreeVOS, ...rest }) => ({ | ||
| 51 | ...rest, | ||
| 52 | classifyName: name, | ||
| 53 | children: classifyRSTreeVOS, | ||
| 54 | })); | ||
| 55 | }; | ||
| 56 | |||
| 57 | // 我需要给树形组件传递的数据,只能选择末级节点。所以要给非末级节点添加一个disabled属性 | ||
| 58 | // 通过深拷贝的方式,避免污染原始数据 | ||
| 59 | const transformDataForTree = (data: any[]) => { | ||
| 60 | const cloneData = JSON.parse(JSON.stringify(data)); | ||
| 61 | const traverse = (data: any[]) => { | ||
| 62 | data.forEach((item) => { | ||
| 63 | if (item.children) { | ||
| 64 | item.disabled = true; | ||
| 65 | traverse(item.children); | ||
| 66 | } | ||
| 67 | }); | ||
| 68 | }; | ||
| 69 | traverse(cloneData); | ||
| 70 | return cloneData; | ||
| 71 | }; | ||
| 72 | |||
| 73 | // 获取标签规则列表 | ||
| 74 | const labelPageList = ref<any>() | ||
| 75 | |||
| 76 | const getLabelPageData = async () => { | ||
| 77 | tableInfo.value.loading = true; | ||
| 78 | const params = { | ||
| 79 | pageIndex: page.value.curr, | ||
| 80 | pageSize: page.value.limit, | ||
| 81 | classifyGuid: classifyGuid.value, | ||
| 82 | detailGuid: classifyDetailGuid.value | ||
| 83 | } | ||
| 84 | const res: any = await getLabelPageList(params); | ||
| 85 | if (res.code == proxy.$passCode) { | ||
| 86 | labelPageList.value = res.data.records; | ||
| 87 | tableInfo.value.page.rows = res.data.totalRows; | ||
| 88 | tableInfo.value.page.limit = res.data.pageSize | ||
| 89 | tableInfo.value.page.curr = res.data.pageIndex | ||
| 90 | tableInfo.value.data = labelPageList.value; | ||
| 91 | tableInfo.value.loading = false; | ||
| 92 | } else { | ||
| 93 | proxy.$ElMessage.error(res.msg); | ||
| 94 | } | ||
| 95 | } | ||
| 96 | |||
| 97 | // 下拉标签 | ||
| 98 | const LabelListData = ref<any>([]); | ||
| 99 | const getLabelListData = async () => { | ||
| 100 | const res: any = await getLabelList({ label: '' }); | ||
| 101 | if (res.code == proxy.$passCode) { | ||
| 102 | LabelListData.value = res.data; | ||
| 103 | const data = res.data | ||
| 104 | data.map(item => { | ||
| 105 | item.label = item.label | ||
| 106 | item.value = item.guid | ||
| 107 | }) | ||
| 108 | classSearchItemList.value[0].options = data; | ||
| 109 | } else { | ||
| 110 | proxy.$ElMessage.error(res.msg); | ||
| 111 | } | ||
| 112 | } | ||
| 113 | |||
| 114 | onMounted(async () => { | ||
| 115 | await getClassifyGradeTree(); | ||
| 116 | await getLabelPageData(); | ||
| 117 | await getLabelListData(); | ||
| 118 | }); | ||
| 119 | |||
| 120 | // 左侧tree-list | ||
| 121 | const treeInfo = ref<any>({ | ||
| 122 | id: "data-pickup-tree", | ||
| 123 | filter: true, | ||
| 124 | queryValue: "", | ||
| 125 | className: 'tree-list', | ||
| 126 | queryPlaceholder: "输入标准集名称搜索", | ||
| 127 | props: { | ||
| 128 | label: "classifyName", | ||
| 129 | value: "guid", | ||
| 130 | }, | ||
| 131 | nodeKey: 'guid', | ||
| 132 | expandedKey: [], | ||
| 133 | currentNodeKey: '', | ||
| 134 | expandOnNodeClick: false, | ||
| 135 | data: [], | ||
| 136 | loading: false | ||
| 137 | }); | ||
| 138 | // 点击树节点修改分类guid 和 分类明细guid | ||
| 139 | const nodeClick = (data: any) => { | ||
| 140 | console.log('nodeClick', data); | ||
| 141 | // 分类guid | ||
| 142 | if (Object.keys(data).includes("type")) { | ||
| 143 | classifyGuid.value = data.guid; | ||
| 144 | classifyDetailGuid.value = ''; | ||
| 145 | getLabelPageData(); | ||
| 146 | return; | ||
| 147 | } | ||
| 148 | classifyGuid.value = data.classifyGradeGuid; | ||
| 149 | // 分类明细guid | ||
| 150 | classifyDetailGuid.value = data.guid; | ||
| 151 | getLabelPageData(); | ||
| 152 | } | ||
| 153 | const handleTreeItemMenuClick = (data: any, type) => { | ||
| 154 | console.log('handleTreeItemMenuClick', data, type); | ||
| 155 | } | ||
| 156 | |||
| 157 | |||
| 158 | |||
| 159 | // 右侧表格配置 | ||
| 160 | const tableDataList = ref([]); | ||
| 161 | // 删除标签guids | ||
| 162 | const deleteLabelGuids = ref<any>([]); | ||
| 163 | |||
| 164 | // 保存编辑的guid | ||
| 165 | const editLabelRow = ref<any>(''); | ||
| 166 | const page = ref({ | ||
| 167 | limit: 10, | ||
| 168 | curr: 1, | ||
| 169 | sizes: [ | ||
| 170 | { label: "10", value: 10 }, | ||
| 171 | { label: "20", value: 20 }, | ||
| 172 | { label: "100", value: 100 }, | ||
| 173 | { label: "150", value: 150 }, | ||
| 174 | { label: "200", value: 200 }, | ||
| 175 | ], | ||
| 176 | }); | ||
| 177 | const tableInfo = ref({ | ||
| 178 | id: "role-manage-table", | ||
| 179 | multiple: true, | ||
| 180 | fixedSelection: true, | ||
| 181 | fields: [ | ||
| 182 | { label: "序号", type: "index", width: 56, align: "center" }, | ||
| 183 | { label: "标签名", field: "label", type: 'text_btn', class: 'drawer-detail-cell', width: 120, value: 'detail', columClass: 'text_btn' }, | ||
| 184 | { label: "分类", field: "classifyDetailName", width: 140 }, | ||
| 185 | { label: "分级", field: "gradeDetailName", width: 140 }, | ||
| 186 | { | ||
| 187 | label: '状态', field: 'bizState', type: 'switch', activeText: '启用', inactiveText: '停用', activeValue: 'Y', inactiveValue: 'N', switchWidth: 56, width: 100, align: 'center' | ||
| 188 | }, | ||
| 189 | { label: "修改人", field: "updateUserName", width: 140 }, | ||
| 190 | { label: "更新时间", field: "updateTime", width: 180 }, | ||
| 191 | ], | ||
| 192 | data: tableDataList.value, | ||
| 193 | page: { | ||
| 194 | type: "normal", | ||
| 195 | rows: 0, | ||
| 196 | ...page.value, | ||
| 197 | }, | ||
| 198 | actionInfo: { | ||
| 199 | label: "操作", | ||
| 200 | type: "btn", | ||
| 201 | width: 300, | ||
| 202 | fixed: 'right', | ||
| 203 | btns: [ | ||
| 204 | { | ||
| 205 | label: "编辑", value: "edit", click: async (scope) => { | ||
| 206 | console.log('编辑', scope); | ||
| 207 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = false; | ||
| 208 | newCreateGradeStandardDialogInfo.value.title = '编辑标签'; | ||
| 209 | await getGradeListData(scope.row.gradeGuid); | ||
| 210 | // 遍历classGradeTreeData 找到对应的guid item的refGradeGuid | ||
| 211 | classGradeTreeData.value.forEach((element: any) => { | ||
| 212 | if (element.guid === scope.row.classifyGuid) { | ||
| 213 | tempRefGradeGuid.value = element.refGradeGuid; | ||
| 214 | } | ||
| 215 | }); | ||
| 216 | editLabelRow.value = scope.row; | ||
| 217 | // formItems进行回显,加上disabled: true 不能修改 | ||
| 218 | newCreateGradeFormItems.value.forEach(item => { | ||
| 219 | item.default = scope.row[item.field]; | ||
| 220 | item.disabled = false; | ||
| 221 | }); | ||
| 222 | if (scope.row.vagueMatchRule) { | ||
| 223 | // formRows进行回显 | ||
| 224 | formRows.value = scope.row.vagueMatchRule.map((item) => ({ | ||
| 225 | matchValue: item.matchValue, | ||
| 226 | position: item.position, | ||
| 227 | name: item.name, | ||
| 228 | disabled: false | ||
| 229 | })); | ||
| 230 | } else { | ||
| 231 | formRows.value = [{ matchValue: '', position: '', name: '', disabled: false }]; | ||
| 232 | } | ||
| 233 | newCreateGradeStandardDialogInfo.value.visible = true; | ||
| 234 | } | ||
| 235 | }, | ||
| 236 | { | ||
| 237 | label: "删除 ", value: "delete", click: (scope) => { | ||
| 238 | console.log('删除', scope); | ||
| 239 | deleteLabelGuids.value = []; // 重置数组 | ||
| 240 | deleteLabelGuids.value.push(scope.row.guid); | ||
| 241 | batchRemobe(); | ||
| 242 | getLabelListData(); | ||
| 243 | } | ||
| 244 | }, | ||
| 245 | ] | ||
| 246 | }, | ||
| 247 | loading: false | ||
| 248 | }); | ||
| 249 | |||
| 250 | // 批量删除 | ||
| 251 | const batchRemobe = async () => { | ||
| 252 | // 批量删除,增加confirm确认弹窗 | ||
| 253 | if (deleteLabelGuids.value.length == 0) { | ||
| 254 | proxy.$ElMessage({ | ||
| 255 | type: 'warning', | ||
| 256 | message: '请选择要删除的数据' | ||
| 257 | }) | ||
| 258 | return; | ||
| 259 | } | ||
| 260 | |||
| 261 | // confirm弹窗 | ||
| 262 | proxy.$confirm('是否删除选中数据?', '提示', { | ||
| 263 | confirmButtonText: '确定', | ||
| 264 | cancelButtonText: '取消', | ||
| 265 | type: 'warning' | ||
| 266 | }).then(async () => { | ||
| 267 | const res: any = await deleteLabel(deleteLabelGuids.value); | ||
| 268 | if (res.code == proxy.$passCode) { | ||
| 269 | proxy.$ElMessage({ | ||
| 270 | type: 'success', | ||
| 271 | message: '删除成功' | ||
| 272 | }) | ||
| 273 | getLabelPageData(); | ||
| 274 | } else { | ||
| 275 | proxy.$ElMessage.error(res.msg); | ||
| 276 | } | ||
| 277 | }).catch(() => { | ||
| 278 | proxy.$ElMessage({ | ||
| 279 | type: 'info', | ||
| 280 | message: '已取消删除' | ||
| 281 | }); | ||
| 282 | }); | ||
| 283 | |||
| 284 | }; | ||
| 285 | |||
| 286 | const tableSwitchBeforeChange = (scope, field, callback) => { | ||
| 287 | // 弹窗确认 | ||
| 288 | proxy.$confirm('是否修改状态?', '提示', { | ||
| 289 | confirmButtonText: '确定', | ||
| 290 | cancelButtonText: '取消', | ||
| 291 | type: 'warning' | ||
| 292 | }).then(async () => { | ||
| 293 | const state = scope.row.bizState === 'Y' ? 'N' : 'Y'; | ||
| 294 | const res = await tableSwitchChange(state, scope, field); | ||
| 295 | if (res) { | ||
| 296 | callback(); | ||
| 297 | } | ||
| 298 | }).catch(() => { | ||
| 299 | proxy.$ElMessage({ | ||
| 300 | type: 'info', | ||
| 301 | message: '已取消修改' | ||
| 302 | }); | ||
| 303 | }); | ||
| 304 | } | ||
| 305 | |||
| 306 | const tableSwitchChange = async (state, scope, field) => { | ||
| 307 | console.log('tableSwitchChange', state, scope, field); | ||
| 308 | const params = { | ||
| 309 | ...scope.row, | ||
| 310 | bizState: state, | ||
| 311 | version: 0, | ||
| 312 | vagueMatchRule: scope.row.vagueMatchRule ? scope.row.vagueMatchRule : '' | ||
| 313 | } | ||
| 314 | const res: any = await updateLabel(params); | ||
| 315 | if (res.code == proxy.$passCode) { | ||
| 316 | proxy.$ElMessage.success('修改成功'); | ||
| 317 | getLabelPageData(); | ||
| 318 | return true | ||
| 319 | } else { | ||
| 320 | proxy.$ElMessage.error(res.msg); | ||
| 321 | return false | ||
| 322 | } | ||
| 323 | } | ||
| 324 | |||
| 325 | const tableBtnClick = async (scope, value) => { | ||
| 326 | console.log('tableBtnClick', scope.row); | ||
| 327 | await getGradeListData(scope.row.gradeGuid); | ||
| 328 | // formItems进行回显,加上disabled: true 不能修改 | ||
| 329 | newCreateGradeFormItems.value.forEach(item => { | ||
| 330 | item.default = scope.row[item.field]; | ||
| 331 | item.disabled = true; | ||
| 332 | }); | ||
| 333 | if (scope.row.vagueMatchRule) { | ||
| 334 | // formRows进行回显 | ||
| 335 | formRows.value = scope.row.vagueMatchRule.map((item) => ({ | ||
| 336 | matchValue: item.matchValue, | ||
| 337 | position: item.position, | ||
| 338 | name: item.name, | ||
| 339 | disabled: true | ||
| 340 | })); | ||
| 341 | } else { | ||
| 342 | formRows.value = [{ matchValue: '', position: '', name: '', disabled: false }]; | ||
| 343 | } | ||
| 344 | newCreateGradeStandardDialogInfo.value.visible = true; | ||
| 345 | } | ||
| 346 | |||
| 347 | const tablePageChange = (info) => { | ||
| 348 | console.log('tablePageChange', info); | ||
| 349 | page.value.curr = Number(info.curr); | ||
| 350 | page.value.limit = Number(info.limit); | ||
| 351 | getLabelPageData(); | ||
| 352 | } | ||
| 353 | |||
| 354 | |||
| 355 | /**弹窗配置 */ | ||
| 356 | const newCreateGradeFormItems = ref<any>([{ | ||
| 357 | label: '标签名', | ||
| 358 | type: 'input', | ||
| 359 | placeholder: '请选择', | ||
| 360 | field: 'label', | ||
| 361 | default: '', | ||
| 362 | required: true, | ||
| 363 | filterable: true, | ||
| 364 | clearable: true, | ||
| 365 | visible: true, | ||
| 366 | block: true, | ||
| 367 | }, | ||
| 368 | { | ||
| 369 | label: '分类', | ||
| 370 | type: 'tree-select', | ||
| 371 | placeholder: '请选择', | ||
| 372 | field: 'classifyDetailGuid', | ||
| 373 | default: '', | ||
| 374 | options: [], | ||
| 375 | props: { | ||
| 376 | label: "classifyName", | ||
| 377 | value: "guid", | ||
| 378 | }, | ||
| 379 | required: true, | ||
| 380 | checkStricty: true, | ||
| 381 | lazy: false, | ||
| 382 | filterable: true, | ||
| 383 | clearable: true, | ||
| 384 | visible: true, | ||
| 385 | block: true, | ||
| 386 | }, | ||
| 387 | { | ||
| 388 | label: '分级', | ||
| 389 | type: 'select', | ||
| 390 | maxlength: 19, | ||
| 391 | placeholder: '请输入', | ||
| 392 | field: 'gradeDetailGuid', | ||
| 393 | default: '', | ||
| 394 | options: [], | ||
| 395 | props: { | ||
| 396 | label: 'name', | ||
| 397 | value: 'guid', | ||
| 398 | }, | ||
| 399 | clearable: true, | ||
| 400 | required: true, | ||
| 401 | block: true, | ||
| 402 | }, | ||
| 403 | // { | ||
| 404 | // label: ' ', | ||
| 405 | // type: 'label', | ||
| 406 | // default: '规则配置', | ||
| 407 | // block: true, | ||
| 408 | // col: 'title-label' | ||
| 409 | // }, | ||
| 410 | { | ||
| 411 | label: '精确匹配', | ||
| 412 | type: 'textarea', | ||
| 413 | maxlength: 500, | ||
| 414 | placeholder: '请输入字段中文,中间用英文“,”分号隔开', | ||
| 415 | field: 'matchChValue', | ||
| 416 | default: '', | ||
| 417 | clearable: true, | ||
| 418 | required: false, | ||
| 419 | |||
| 420 | }, | ||
| 421 | { | ||
| 422 | label: '', | ||
| 423 | type: 'textarea', | ||
| 424 | maxlength: 500, | ||
| 425 | placeholder: '请输入字段中文,中间用英文“,”分号隔开', | ||
| 426 | field: 'matchEnValue', | ||
| 427 | default: '', | ||
| 428 | clearable: true, | ||
| 429 | required: false, | ||
| 430 | } | ||
| 431 | ]); | ||
| 432 | |||
| 433 | const newCreateGradeFormRules = ref({ | ||
| 434 | label: [ | ||
| 435 | { required: true, message: '请输入标签名', trigger: 'change' } | ||
| 436 | ], | ||
| 437 | detailGuid: [ | ||
| 438 | { required: true, message: '请选择分类', trigger: 'change' } | ||
| 439 | ], | ||
| 440 | gradeDetailGuid: [ | ||
| 441 | { required: true, message: '请选择分级', trigger: 'change' } | ||
| 442 | ], | ||
| 443 | }); | ||
| 444 | |||
| 445 | const newCreateGradeStandardDialogInfo = ref({ | ||
| 446 | visible: false, | ||
| 447 | size: 600, | ||
| 448 | title: "添加标签", | ||
| 449 | type: "", | ||
| 450 | formInfo: { | ||
| 451 | id: "grade-form", | ||
| 452 | items: newCreateGradeFormItems.value, | ||
| 453 | rules: newCreateGradeFormRules.value, | ||
| 454 | }, | ||
| 455 | submitBtnLoading: false, | ||
| 456 | btns: { | ||
| 457 | cancel: () => { | ||
| 458 | newCreateGradeStandardDialogInfo.value.visible = false; | ||
| 459 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = false; | ||
| 460 | }, | ||
| 461 | submit: async (btn, info) => { | ||
| 462 | console.log(info); | ||
| 463 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = true; | ||
| 464 | if (newCreateGradeStandardDialogInfo.value.title === "添加标签") { | ||
| 465 | const tempParams = formRows.value.map((item) => ({ | ||
| 466 | matchValue: item.matchValue, | ||
| 467 | position: item.position, | ||
| 468 | name: item.name | ||
| 469 | })); | ||
| 470 | const params = { | ||
| 471 | ...info, | ||
| 472 | classifyGuid: classifyGuid.value, | ||
| 473 | gradeGuid: tempRefGradeGuid.value, | ||
| 474 | vagueMatchRule: tempParams | ||
| 475 | } | ||
| 476 | console.log('submit', params); | ||
| 477 | const res: any = await saveLabel(params); | ||
| 478 | if (res.code == proxy.$passCode) { | ||
| 479 | proxy.$ElMessage.success('新增成功'); | ||
| 480 | newCreateGradeStandardDialogInfo.value.visible = false; | ||
| 481 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = false; | ||
| 482 | getLabelPageData(); | ||
| 483 | getLabelListData(); | ||
| 484 | } else { | ||
| 485 | proxy.$ElMessage.error(res.msg); | ||
| 486 | } | ||
| 487 | } | ||
| 488 | if (newCreateGradeStandardDialogInfo.value.title === "编辑标签") { | ||
| 489 | console.log('editLabelRow', info, formRows.value); | ||
| 490 | const tempParams = formRows.value.map((item) => ({ | ||
| 491 | matchValue: item.matchValue, | ||
| 492 | position: item.position, | ||
| 493 | name: item.name | ||
| 494 | })); | ||
| 495 | const params = { | ||
| 496 | ...editLabelRow.value, | ||
| 497 | ...info, | ||
| 498 | vagueMatchRule: tempParams, | ||
| 499 | classifyGuid: classifyGuid.value, | ||
| 500 | gradeGuid: tempRefGradeGuid.value, | ||
| 501 | } | ||
| 502 | console.log('submit', params); | ||
| 503 | const res: any = await updateLabel(params); | ||
| 504 | if (res.code == proxy.$passCode) { | ||
| 505 | proxy.$ElMessage.success('修改成功'); | ||
| 506 | newCreateGradeStandardDialogInfo.value.visible = false; | ||
| 507 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = false; | ||
| 508 | getLabelPageData(); | ||
| 509 | getLabelListData(); | ||
| 510 | } else { | ||
| 511 | proxy.$ElMessage.error(res.msg); | ||
| 512 | } | ||
| 513 | } | ||
| 514 | } | ||
| 515 | } | ||
| 516 | }) | ||
| 517 | |||
| 518 | // 新增标签 | ||
| 519 | const addNewLabel = () => { | ||
| 520 | console.log('addNewLabel'); | ||
| 521 | newCreateGradeFormItems.value.forEach(item => { | ||
| 522 | item.default = ''; | ||
| 523 | item.disabled = false; | ||
| 524 | }); | ||
| 525 | formRows.value = [{ matchValue: '', position: '', name: '', disabled: false }]; | ||
| 526 | newCreateGradeStandardDialogInfo.value.title = '添加标签'; | ||
| 527 | newCreateGradeStandardDialogInfo.value.visible = true; | ||
| 528 | } | ||
| 529 | |||
| 530 | |||
| 531 | const classSearchItemList = ref<any>([ | ||
| 532 | { | ||
| 533 | type: 'select-slots', | ||
| 534 | multiple: true, | ||
| 535 | label: '', | ||
| 536 | field: 'labelName', | ||
| 537 | default: [], | ||
| 538 | options: [], | ||
| 539 | placeholder: '请选择标签名称', | ||
| 540 | clearable: false, | ||
| 541 | filterable: true, | ||
| 542 | visible: true | ||
| 543 | } | ||
| 544 | ]); | ||
| 545 | |||
| 546 | const guids = ref<any>([]) | ||
| 547 | const selectChange = async (val: any, row: any) => { | ||
| 548 | if (val) { | ||
| 549 | guids.value = val; | ||
| 550 | } | ||
| 551 | }; | ||
| 552 | |||
| 553 | /** 搜索查询分类标准 */ | ||
| 554 | const searchClass = async (val: any, clear: boolean = false) => { | ||
| 555 | console.log('searchClass', val, clear); | ||
| 556 | if (clear) { | ||
| 557 | classSearchItemList.value.map(item => item.default = '') | ||
| 558 | guids.value = [] | ||
| 559 | getLabelPageData(); | ||
| 560 | return; | ||
| 561 | } | ||
| 562 | if (val?.labelName?.length !== 0) { | ||
| 563 | console.log('调用了吗'); | ||
| 564 | tableInfo.value.loading = true; | ||
| 565 | const params = { | ||
| 566 | pageIndex: page.value.curr, | ||
| 567 | pageSize: page.value.limit, | ||
| 568 | guids: guids.value, | ||
| 569 | } | ||
| 570 | const res: any = await getLabelPageList(params); | ||
| 571 | if (res.code == proxy.$passCode) { | ||
| 572 | labelPageList.value = res.data.records; | ||
| 573 | tableInfo.value.page.rows = res.data.totalRows; | ||
| 574 | tableInfo.value.page.limit = res.data.pageSize | ||
| 575 | tableInfo.value.page.curr = res.data.pageIndex | ||
| 576 | tableInfo.value.data = labelPageList.value; | ||
| 577 | tableInfo.value.loading = false; | ||
| 578 | } else { | ||
| 579 | proxy.$ElMessage.error(res.msg); | ||
| 580 | } | ||
| 581 | } | ||
| 582 | |||
| 583 | |||
| 584 | }; | ||
| 585 | |||
| 586 | |||
| 587 | //弹窗模糊匹配 | ||
| 588 | |||
| 589 | const tempRefGradeGuid = ref('') | ||
| 590 | const tempName = ref('') | ||
| 591 | const tempFormData = ref() | ||
| 592 | |||
| 593 | const handleSelectChange = async (val, row, info) => { | ||
| 594 | const formRef = dialogLabelFormRef.value.dialogRef.dialogFormRef[0].formInline | ||
| 595 | tempFormData.value = formRef; | ||
| 596 | if (tempRefGradeGuid.value) { | ||
| 597 | await getGradeListData(tempRefGradeGuid.value); | ||
| 598 | const matchedGrade = gradeListData.value.find( | ||
| 599 | (element: any) => element.name === tempName.value | ||
| 600 | ); | ||
| 601 | if (matchedGrade) { | ||
| 602 | newCreateGradeFormItems.value[2].default = matchedGrade.guid; | ||
| 603 | newCreateGradeFormItems.value[0].default = tempFormData.value.label; | ||
| 604 | newCreateGradeFormItems.value[1].default = tempFormData.value.classifyDetailGuid; | ||
| 605 | } | ||
| 606 | } | ||
| 607 | }; | ||
| 608 | |||
| 609 | const handleTreeSelectNodeChange = (node, item, nodeObj) => { | ||
| 610 | console.log('handleTreeSelectNodeChange', node, item, nodeObj); | ||
| 611 | treeInfo.value.expandedKey = []; | ||
| 612 | treeInfo.value.currentNodeKey = node.guid; | ||
| 613 | treeInfo.value.expandedKey.push(node.classifyGradeGuid); | ||
| 614 | if (node?.classifyGradeGuid) { | ||
| 615 | classifyGuid.value = node.classifyGradeGuid; | ||
| 616 | tempName.value = node.name; | ||
| 617 | classifyDetailGuid.value = node.guid; | ||
| 618 | } | ||
| 619 | // 遍历classGradeTreeData 找到对应的guid item的refGradeGuid | ||
| 620 | classGradeTreeData.value.forEach((element: any) => { | ||
| 621 | if (element.guid === classifyGuid.value) { | ||
| 622 | tempRefGradeGuid.value = element.refGradeGuid; | ||
| 623 | } | ||
| 624 | }); | ||
| 625 | }; | ||
| 626 | |||
| 627 | const gradeListData = ref<any>() | ||
| 628 | // 获取分级列表 | ||
| 629 | const getGradeListData = async (guid) => { | ||
| 630 | const params = { | ||
| 631 | pageIndex: 1, | ||
| 632 | pageSize: -1, | ||
| 633 | classifyGradeGuid: guid | ||
| 634 | } | ||
| 635 | const res: any = await getGradeList(params); | ||
| 636 | if (res.code == proxy.$passCode) { | ||
| 637 | gradeListData.value = res.data.records; | ||
| 638 | newCreateGradeFormItems.value[2].options = gradeListData.value; | ||
| 639 | return res.data.records; | ||
| 640 | } else { | ||
| 641 | proxy.$ElMessage.error(res.msg); | ||
| 642 | } | ||
| 643 | } | ||
| 644 | |||
| 645 | const formRows = ref([ | ||
| 646 | { matchValue: '', position: '', name: '', disabled: false }, // 初始行 | ||
| 647 | ]); | ||
| 648 | |||
| 649 | // 位置选项 | ||
| 650 | const positionOptions = [ | ||
| 651 | { label: '前面', value: 'B' }, | ||
| 652 | { label: '后面', value: 'A' }, | ||
| 653 | { label: '任意位置', value: 'C' }, | ||
| 654 | ]; | ||
| 655 | // 语言options | ||
| 656 | const languageOptions = [ | ||
| 657 | { label: '中文名', value: 'zhName' }, | ||
| 658 | { label: '英文名', value: 'enName' }, | ||
| 659 | ]; | ||
| 660 | // 当前悬停的行索引 | ||
| 661 | const hoveredRowIndex = ref<number | null>(null); | ||
| 662 | |||
| 663 | // 鼠标移入事件 | ||
| 664 | const handleMouseEnter = (index: number) => { | ||
| 665 | hoveredRowIndex.value = index; | ||
| 666 | }; | ||
| 667 | |||
| 668 | // 鼠标移出事件 | ||
| 669 | const handleMouseLeave = () => { | ||
| 670 | hoveredRowIndex.value = null; | ||
| 671 | }; | ||
| 672 | |||
| 673 | // 新增行 | ||
| 674 | const addRow = () => { | ||
| 675 | formRows.value.push({ matchValue: '', position: '', name: '', disabled: false }); | ||
| 676 | }; | ||
| 677 | |||
| 678 | // 删除行 | ||
| 679 | const deleteRow = (index: number) => { | ||
| 680 | formRows.value.splice(index, 1); | ||
| 681 | }; | ||
| 682 | |||
| 683 | </script> | ||
| 684 | |||
| 685 | <template> | ||
| 686 | <div class="data-label"> | ||
| 687 | <div class="container_wrap full flex"> | ||
| 688 | <div class="aside_wrap"> | ||
| 689 | <div class="aside_title">分类分级目录</div> | ||
| 690 | <Tree :treeInfo="treeInfo" @nodeClick="nodeClick" @itemMenuClick="handleTreeItemMenuClick" /> | ||
| 691 | </div> | ||
| 692 | <div class="main_wrap"> | ||
| 693 | <div class="main_wrap-top-area"> | ||
| 694 | <!-- <el-select v-model="labelInput" multiple filterable remote reserve-keyword placeholder="请输入关键字" | ||
| 695 | remote-show-suffix :remote-method="remoteMethod" :loading="loading" style="width: 240px"> | ||
| 696 | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> | ||
| 697 | </el-select> | ||
| 698 | |||
| 699 | <el-button type="primary" class="v-serach" @click="labelSearch">查询</el-button> | ||
| 700 | <el-button>清空</el-button> --> | ||
| 701 | <TableTools :searchItems="classSearchItemList" :searchId="'template-manage-search'" @search="searchClass" | ||
| 702 | @select-change="selectChange" /> | ||
| 703 | </div> | ||
| 704 | <div> | ||
| 705 | <el-button type="primary" class="v-add" @click="addNewLabel">新增</el-button> | ||
| 706 | <el-button class="v-import">导入</el-button> | ||
| 707 | <el-button>导出</el-button> | ||
| 708 | </div> | ||
| 709 | <div class="table_panel_wrap"> | ||
| 710 | <Table :tableInfo="tableInfo" @tableSwitchBeforeChange="tableSwitchBeforeChange" | ||
| 711 | @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" /> | ||
| 712 | </div> | ||
| 713 | </div> | ||
| 714 | </div> | ||
| 715 | <Dialog_form ref="dialogLabelFormRef" :dialogConfigInfo="newCreateGradeStandardDialogInfo" class="v-dialog-form" | ||
| 716 | @treeSelectNodeChange='handleTreeSelectNodeChange' @selectChange="handleSelectChange"> | ||
| 717 | <template v-slot:default> | ||
| 718 | |||
| 719 | <div class="dim-label">模糊匹配</div> | ||
| 720 | <!-- 渲染行 --> | ||
| 721 | <div v-for="(row, index) in formRows" :key="index" class="match-content-wrapper"> | ||
| 722 | <div class="match-content" @mouseenter="handleMouseEnter(index)" @mouseleave="handleMouseLeave()"> | ||
| 723 | <!-- 位置映射下拉框 --> | ||
| 724 | <el-select v-model="row.name" placeholder="请选语言类型" :disabled=row.disabled class="v-select"> | ||
| 725 | <el-option v-for="option in languageOptions" :key="option.value" :label="option.label" | ||
| 726 | :value="option.value" /> | ||
| 727 | </el-select> | ||
| 728 | <el-select v-model="row.position" placeholder="请选择位置" :disabled=row.disabled class="v-select"> | ||
| 729 | <el-option v-for="option in positionOptions" :key="option.value" :label="option.label" | ||
| 730 | :value="option.value" /> | ||
| 731 | </el-select> | ||
| 732 | <el-input v-model="row.matchValue" :disabled=row.disabled class="v-input" laceholder="请输入匹配值" /> | ||
| 733 | |||
| 734 | <!-- 删除按钮 --> | ||
| 735 | <el-button :disabled=row.disabled v-if="hoveredRowIndex === index" class="extra-icon" :icon="Delete" | ||
| 736 | @click="deleteRow(index)" circle style="margin-left: 8px;" /> | ||
| 737 | </div> | ||
| 738 | </div> | ||
| 739 | |||
| 740 | <!-- 新增按钮 --> | ||
| 741 | <div class="add-Icon" @click="addRow"> | ||
| 742 | <el-icon class="icon-add" color="#4fa1a4" :size="30"> | ||
| 743 | <CirclePlus /> | ||
| 744 | </el-icon> | ||
| 745 | <span class="word-des">模糊匹配规则</span> | ||
| 746 | </div> | ||
| 747 | |||
| 748 | </template> | ||
| 749 | </Dialog_form> | ||
| 750 | </div> | ||
| 751 | </template> | ||
| 752 | |||
| 753 | <style lang="scss" scoped> | ||
| 754 | .data-label { | ||
| 755 | width: 100%; | ||
| 756 | height: 100%; | ||
| 757 | |||
| 758 | .container_wrap { | ||
| 759 | padding: 0; | ||
| 760 | display: flex; | ||
| 761 | justify-content: space-between; | ||
| 762 | |||
| 763 | .aside_wrap { | ||
| 764 | width: 199px; | ||
| 765 | border-right: 1px solid #d9d9d9; | ||
| 766 | box-shadow: none; | ||
| 767 | |||
| 768 | .aside_title { | ||
| 769 | width: calc(100% - 32px); | ||
| 770 | display: inline-block; | ||
| 771 | } | ||
| 772 | |||
| 773 | .icon-add.el-icon { | ||
| 774 | width: 24px; | ||
| 775 | height: 24px; | ||
| 776 | vertical-align: middle; | ||
| 777 | cursor: pointer; | ||
| 778 | |||
| 779 | svg { | ||
| 780 | width: 24px; | ||
| 781 | height: 24px; | ||
| 782 | } | ||
| 783 | } | ||
| 784 | |||
| 785 | .tree_panel { | ||
| 786 | height: 100%; | ||
| 787 | padding-top: 0; | ||
| 788 | |||
| 789 | :deep(.el-tree) { | ||
| 790 | margin: 0; | ||
| 791 | height: calc(100% - 68px); | ||
| 792 | overflow: hidden auto; | ||
| 793 | } | ||
| 794 | } | ||
| 795 | |||
| 796 | } | ||
| 797 | |||
| 798 | .main_wrap { | ||
| 799 | padding: 11px 16px 0 16px; | ||
| 800 | |||
| 801 | .main_wrap-top-area { | ||
| 802 | display: flex; | ||
| 803 | margin-bottom: 10px; | ||
| 804 | align-items: center; | ||
| 805 | |||
| 806 | .v-serach { | ||
| 807 | margin-left: 10px; | ||
| 808 | } | ||
| 809 | } | ||
| 810 | |||
| 811 | .table_panel_wrap { | ||
| 812 | margin-top: 12px; | ||
| 813 | width: 100%; | ||
| 814 | height: calc(100% - 105px); | ||
| 815 | min-height: 210px; | ||
| 816 | overflow: visible; | ||
| 817 | } | ||
| 818 | } | ||
| 819 | } | ||
| 820 | |||
| 821 | .dim-label { | ||
| 822 | height: 10px; | ||
| 823 | display: flex; | ||
| 824 | } | ||
| 825 | |||
| 826 | .match-content-wrapper { | ||
| 827 | width: 100%; | ||
| 828 | |||
| 829 | .match-content { | ||
| 830 | display: flex; | ||
| 831 | align-items: center; | ||
| 832 | margin-top: 8px; | ||
| 833 | |||
| 834 | .v-select { | ||
| 835 | margin-right: 8px; | ||
| 836 | width: 33%; | ||
| 837 | } | ||
| 838 | |||
| 839 | .v-input { | ||
| 840 | width: calc(33% - 50px); | ||
| 841 | } | ||
| 842 | |||
| 843 | .extra-icon { | ||
| 844 | transition: opacity 1s; | ||
| 845 | } | ||
| 846 | } | ||
| 847 | } | ||
| 848 | |||
| 849 | :deep(.add-Icon) { | ||
| 850 | display: flex; | ||
| 851 | align-items: center; | ||
| 852 | margin-top: 13px; | ||
| 853 | width: 50%; | ||
| 854 | |||
| 855 | .el-icon svg { | ||
| 856 | height: 19px; | ||
| 857 | width: 19px; | ||
| 858 | } | ||
| 859 | |||
| 860 | .word-des { | ||
| 861 | color: #4fa1a4 | ||
| 862 | } | ||
| 863 | } | ||
| 864 | |||
| 865 | :deep(.v-dialog-form) { | ||
| 866 | .title-label { | ||
| 867 | font-size: 16px; | ||
| 868 | color: #212121; | ||
| 869 | line-height: 24px; | ||
| 870 | font-weight: 600; | ||
| 871 | } | ||
| 872 | } | ||
| 873 | } | ||
| 874 | </style> |
| ... | @@ -6,20 +6,54 @@ | ... | @@ -6,20 +6,54 @@ |
| 6 | import router from "@/router"; | 6 | import router from "@/router"; |
| 7 | import { getMetaDataBase } from '@/api/modules/dataMetaService'; | 7 | import { getMetaDataBase } from '@/api/modules/dataMetaService'; |
| 8 | import { ref } from "vue"; | 8 | import { ref } from "vue"; |
| 9 | 9 | import { getClassifyGradList, saveCgTemplate } from "@/api/modules/dataInventory"; | |
| 10 | 10 | ||
| 11 | onMounted(async () => { | 11 | onMounted(async () => { |
| 12 | const params = { | 12 | const params = { |
| 13 | pageIndex: 1, | 13 | pageIndex: 1, |
| 14 | pageSize: -1, | 14 | pageSize: -1, |
| 15 | } | 15 | } |
| 16 | const res = await getMetaDataBase(params) | 16 | const res = await getMetaDataBase(params); |
| 17 | console.log(res); | 17 | tableInfo.value.data = res.data.records; |
| 18 | getGradListData(); | ||
| 19 | getClassifyDataList(); | ||
| 20 | }); | ||
| 21 | |||
| 22 | const { proxy } = getCurrentInstance() as any; | ||
| 23 | const refGradePageParams = ref({ | ||
| 24 | pageIndex: 1, | ||
| 25 | pageSize: -1, | ||
| 26 | type: "G" | ||
| 27 | }); | ||
| 28 | const refClassifyPageParams = ref({ | ||
| 29 | pageIndex: 1, | ||
| 30 | pageSize: -1, | ||
| 31 | type: "C" | ||
| 18 | }); | 32 | }); |
| 19 | 33 | ||
| 34 | const gradListData = ref([]); | ||
| 35 | const classifyDataList = ref([]); | ||
| 36 | // 获取分级列表 | ||
| 37 | const getGradListData = async () => { | ||
| 38 | const res: any = await getClassifyGradList(refGradePageParams.value); | ||
| 39 | gradListData.value = res.data.records; | ||
| 40 | newCreateTemplateFormItems.value[2].options = gradListData.value; | ||
| 41 | }; | ||
| 42 | |||
| 43 | // 获取分类列表 | ||
| 44 | const getClassifyDataList = async () => { | ||
| 45 | const res: any = await getClassifyGradList(refClassifyPageParams.value); | ||
| 46 | classifyDataList.value = res.data.records; | ||
| 47 | newCreateTemplateFormItems.value[1].options = classifyDataList.value; | ||
| 48 | }; | ||
| 49 | |||
| 50 | |||
| 51 | |||
| 20 | // 表单引用 | 52 | // 表单引用 |
| 21 | const formRef = ref(); | 53 | const formRef = ref(); |
| 22 | const tableRef = ref(); | 54 | const tableRef = ref(); |
| 55 | // 元数据metaGuids | ||
| 56 | const metaGuids = ref<any>([]); | ||
| 23 | const fullscreenLoading = ref(false); | 57 | const fullscreenLoading = ref(false); |
| 24 | const isExpand = ref(true); | 58 | const isExpand = ref(true); |
| 25 | const newCreateTemplateFormItems = ref([{ | 59 | const newCreateTemplateFormItems = ref([{ |
| ... | @@ -27,7 +61,7 @@ const newCreateTemplateFormItems = ref([{ | ... | @@ -27,7 +61,7 @@ const newCreateTemplateFormItems = ref([{ |
| 27 | type: 'input', | 61 | type: 'input', |
| 28 | maxlength: 50, | 62 | maxlength: 50, |
| 29 | placeholder: '请输入', | 63 | placeholder: '请输入', |
| 30 | field: 'templeteName', | 64 | field: 'templateName', |
| 31 | default: '', | 65 | default: '', |
| 32 | clearable: true, | 66 | clearable: true, |
| 33 | required: true | 67 | required: true |
| ... | @@ -35,9 +69,13 @@ const newCreateTemplateFormItems = ref([{ | ... | @@ -35,9 +69,13 @@ const newCreateTemplateFormItems = ref([{ |
| 35 | label: '行业分类', | 69 | label: '行业分类', |
| 36 | type: 'select', | 70 | type: 'select', |
| 37 | placeholder: '请选择', | 71 | placeholder: '请选择', |
| 38 | field: ' industryCategory', | 72 | field: 'classifyGuid', |
| 39 | default: '', | 73 | default: '', |
| 40 | options: [], //TODO | 74 | options: [], //TODO |
| 75 | props: { | ||
| 76 | label: 'name', | ||
| 77 | value: 'guid' | ||
| 78 | }, | ||
| 41 | required: true, | 79 | required: true, |
| 42 | filterable: true, | 80 | filterable: true, |
| 43 | clearable: true, | 81 | clearable: true, |
| ... | @@ -46,9 +84,13 @@ const newCreateTemplateFormItems = ref([{ | ... | @@ -46,9 +84,13 @@ const newCreateTemplateFormItems = ref([{ |
| 46 | label: '分级标准', | 84 | label: '分级标准', |
| 47 | type: 'select', | 85 | type: 'select', |
| 48 | placeholder: '请选择', | 86 | placeholder: '请选择', |
| 49 | field: ' gradingStandard', | 87 | field: 'gradeGuid', |
| 50 | default: '', | 88 | default: '', |
| 51 | options: [], //TODO | 89 | options: [], //TODO |
| 90 | props: { | ||
| 91 | label: 'name', | ||
| 92 | value: 'guid' | ||
| 93 | }, | ||
| 52 | required: true, | 94 | required: true, |
| 53 | filterable: true, | 95 | filterable: true, |
| 54 | clearable: true, | 96 | clearable: true, |
| ... | @@ -82,63 +124,14 @@ const tableInfo = ref({ | ... | @@ -82,63 +124,14 @@ const tableInfo = ref({ |
| 82 | actionInfo: { | 124 | actionInfo: { |
| 83 | show: false, | 125 | show: false, |
| 84 | }, | 126 | }, |
| 85 | data: [ | 127 | data: [], |
| 86 | { | ||
| 87 | index: 1, | ||
| 88 | databaseNameZh: "数据库名称", | ||
| 89 | databaseName: "数据库名", | ||
| 90 | tableCount: 0, | ||
| 91 | storageCapacities: 0, | ||
| 92 | columns: 0, | ||
| 93 | }, | ||
| 94 | { | ||
| 95 | index: 2, | ||
| 96 | databaseNameZh: "数据库名称", | ||
| 97 | databaseName: "数据库名", | ||
| 98 | tableCount: 0, | ||
| 99 | storageCapacities: 0, | ||
| 100 | columns: 0, | ||
| 101 | }, | ||
| 102 | { | ||
| 103 | index: 3, | ||
| 104 | databaseNameZh: "数据库名称", | ||
| 105 | databaseName: "数据库名", | ||
| 106 | tableCount: 0, | ||
| 107 | storageCapacities: 0, | ||
| 108 | columns: 0, | ||
| 109 | }, | ||
| 110 | { | ||
| 111 | index: 4, | ||
| 112 | databaseNameZh: "数据库名称", | ||
| 113 | databaseName: "数据库名", | ||
| 114 | tableCount: 0, | ||
| 115 | storageCapacities: 0, | ||
| 116 | columns: 0, | ||
| 117 | }, | ||
| 118 | { | ||
| 119 | index: 5, | ||
| 120 | databaseNameZh: "数据库名称", | ||
| 121 | databaseName: "数据库名", | ||
| 122 | tableCount: 0, | ||
| 123 | storageCapacities: 0, | ||
| 124 | columns: 0, | ||
| 125 | }, | ||
| 126 | { | ||
| 127 | index: 6, | ||
| 128 | databaseNameZh: "数据库名称", | ||
| 129 | databaseName: "数据库名", | ||
| 130 | tableCount: 0, | ||
| 131 | storageCapacities: 0, | ||
| 132 | columns: 0, | ||
| 133 | }, | ||
| 134 | |||
| 135 | ], | ||
| 136 | showPage: false, | 128 | showPage: false, |
| 137 | loading: false, | 129 | loading: false, |
| 138 | }); | 130 | }); |
| 139 | 131 | ||
| 140 | const onTableSelectChange = (selection: any[]) => { | 132 | const onTableSelectChange = (selection: any[]) => { |
| 141 | console.log(selection); | 133 | // 遍历选中的元数据guid,然后存入metaGuids数组中 |
| 134 | metaGuids.value = selection.map((item: any) => item.guid); | ||
| 142 | }; | 135 | }; |
| 143 | 136 | ||
| 144 | const cancel = () => { | 137 | const cancel = () => { |
| ... | @@ -149,11 +142,24 @@ const cancel = () => { | ... | @@ -149,11 +142,24 @@ const cancel = () => { |
| 149 | const save = async () => { | 142 | const save = async () => { |
| 150 | console.log('save'); | 143 | console.log('save'); |
| 151 | // 校验表单 | 144 | // 校验表单 |
| 152 | const res = formRef.value; | 145 | const formRes = formRef.value; |
| 153 | res.ruleFormRef.validate((valid: any) => { | 146 | formRes.ruleFormRef.validate(async (valid: any) => { |
| 154 | if (valid) { | 147 | if (valid) { |
| 155 | // 表单校验通过 | 148 | // 表单校验通过 |
| 156 | console.log('表单校验通过'); | 149 | const formData = formRes.formInline; |
| 150 | const params = { | ||
| 151 | ...formData, | ||
| 152 | metaGuids: metaGuids.value, | ||
| 153 | version: 0 | ||
| 154 | }; | ||
| 155 | const res: any = await saveCgTemplate(params); | ||
| 156 | if (res.code == proxy.$passCode) { | ||
| 157 | // 保存成功 | ||
| 158 | proxy.$ElMessage.success(res.msg); | ||
| 159 | } else { | ||
| 160 | // 保存失败 | ||
| 161 | proxy.$ElMessage.error(res.msg); | ||
| 162 | } | ||
| 157 | } else { | 163 | } else { |
| 158 | console.log('表单校验不通过'); | 164 | console.log('表单校验不通过'); |
| 159 | return false; | 165 | return false; | ... | ... |
| ... | @@ -7,61 +7,75 @@ | ... | @@ -7,61 +7,75 @@ |
| 7 | import { ref, onMounted } from "vue"; | 7 | import { ref, onMounted } from "vue"; |
| 8 | import TableTools from '@/components/Tools/table_tools.vue'; | 8 | import TableTools from '@/components/Tools/table_tools.vue'; |
| 9 | import { MoreFilled } from "@element-plus/icons-vue"; | 9 | import { MoreFilled } from "@element-plus/icons-vue"; |
| 10 | import { commonPageConfig } from '@/components/PageNav/index'; | ||
| 11 | import { useValidator } from '@/hooks/useValidator'; | 10 | import { useValidator } from '@/hooks/useValidator'; |
| 12 | import TemplateItem from './templateItem.vue'; | 11 | import { saveClassifyGrad, getClassifyGradList, deleteClassifyGrad, updateClassifyGrad, } from "@/api/modules/dataInventory"; |
| 13 | import { getTempleteClassifyData, saveClassifyGrad, getClassifyGradList, deleteClassifyGrad, updateClassifyGrad, getGradeTreeList } from "@/api/modules/dataInventory"; | ||
| 14 | |||
| 15 | |||
| 16 | 12 | ||
| 17 | const router = useRouter(); | 13 | const router = useRouter(); |
| 18 | const { required } = useValidator(); | 14 | const { required } = useValidator(); |
| 19 | const { proxy } = getCurrentInstance() as any; | 15 | const { proxy } = getCurrentInstance() as any; |
| 20 | 16 | ||
| 21 | const refClassifyPageParams = ref({ | 17 | const refGradePageParams = ref({ |
| 22 | pageIndex: 1, | 18 | pageIndex: 1, |
| 23 | pageSize: 10, | 19 | pageSize: -1, |
| 24 | type: "G" | 20 | type: "G" |
| 25 | }); | 21 | }); |
| 26 | const classifyGradListData = ref(); | ||
| 27 | 22 | ||
| 23 | const refClassifyPageParams = ref({ | ||
| 24 | pageIndex: 1, | ||
| 25 | pageSize: -1, | ||
| 26 | type: "C" | ||
| 27 | }); | ||
| 28 | // 分级列表 | ||
| 29 | const classifyGradListData: any = ref([]); | ||
| 30 | |||
| 31 | // 分类列表 | ||
| 32 | const classListData: any = ref([]); | ||
| 33 | |||
| 34 | //记录分级guid | ||
| 35 | const classifyGradGuid = ref(''); | ||
| 36 | |||
| 37 | // 记录分类guid | ||
| 38 | const classGuid = ref(''); | ||
| 39 | |||
| 40 | |||
| 41 | |||
| 42 | const classListDataLoading = ref(false); | ||
| 43 | |||
| 44 | |||
| 45 | |||
| 46 | // 获取分级列表 | ||
| 28 | const getClassifyGradListData = async () => { | 47 | const getClassifyGradListData = async () => { |
| 29 | const res: any = await getClassifyGradList(refClassifyPageParams.value); | 48 | const res: any = await getClassifyGradList(refGradePageParams.value); |
| 30 | if (res.code == proxy.$passCode) { | 49 | if (res.code == proxy.$passCode) { |
| 31 | classifyGradListData.value = res.data.records || []; | 50 | classifyGradListData.value = res.data.records || []; |
| 51 | (classStandardFormItems.value[1].options as any) = classifyGradListData.value; | ||
| 32 | } else { | 52 | } else { |
| 33 | proxy.$ElMessage.error(res.msg); | 53 | proxy.$ElMessage.error(res.msg); |
| 34 | } | 54 | } |
| 35 | } | 55 | } |
| 36 | 56 | ||
| 37 | // 获取分级树形列表 | 57 | //获取分类列表 |
| 38 | const getGradeTreeListData = async () => { | 58 | const getClassListData = async () => { |
| 39 | const res: any = await getGradeTreeList(); | 59 | const res: any = await getClassifyGradList(refClassifyPageParams.value); |
| 40 | if (res.code == proxy.$passCode) { | 60 | if (res.code == proxy.$passCode) { |
| 41 | gradeTreeData.value = res.data || []; | 61 | classListData.value = res.data.records || []; |
| 42 | (classStandardFormItems.value[1].options as any) = gradeTreeData.value; | ||
| 43 | } else { | 62 | } else { |
| 44 | proxy.$ElMessage.error(res.msg); | 63 | proxy.$ElMessage.error(res.msg); |
| 45 | } | 64 | } |
| 46 | } | 65 | } |
| 47 | 66 | ||
| 48 | //记录分级guid | ||
| 49 | const classifyGradGuid = ref(''); | ||
| 50 | // 分级列表 | ||
| 51 | const gradeTreeData = ref(''); | ||
| 52 | |||
| 53 | onMounted(() => { | 67 | onMounted(() => { |
| 54 | getClassifyGradListData(); | 68 | getClassifyGradListData(); |
| 55 | getGradeTreeListData(); | 69 | getClassListData(); |
| 56 | }) | 70 | }) |
| 57 | 71 | ||
| 58 | 72 | ||
| 59 | const tabsInfo = ref({ | 73 | const tabsInfo = ref({ |
| 60 | activeName: 'classStandard', | 74 | activeName: 'gradeStandard', |
| 61 | tabs: [ | 75 | tabs: [ |
| 62 | { label: '分类分级模板', name: 'classTemplate' }, | 76 | // { label: '分类分级模板', name: 'classTemplate' }, |
| 77 | { label: '分级标准', name: 'gradeStandard' }, | ||
| 63 | { label: '分类标准', name: 'classStandard' }, | 78 | { label: '分类标准', name: 'classStandard' }, |
| 64 | { label: '分级标准', name: 'gradeStandard' } | ||
| 65 | ] | 79 | ] |
| 66 | }); | 80 | }); |
| 67 | 81 | ||
| ... | @@ -69,35 +83,6 @@ const tabChange = (val) => { | ... | @@ -69,35 +83,6 @@ const tabChange = (val) => { |
| 69 | tabsInfo.value.activeName = val; | 83 | tabsInfo.value.activeName = val; |
| 70 | } | 84 | } |
| 71 | 85 | ||
| 72 | /** 模板的搜索配置 */ | ||
| 73 | const searchItemList = ref([ | ||
| 74 | { | ||
| 75 | type: 'input', | ||
| 76 | label: '', | ||
| 77 | field: 'templateName', | ||
| 78 | default: '', | ||
| 79 | maxlength: 50, | ||
| 80 | placeholder: '模板名称', | ||
| 81 | clearable: true, | ||
| 82 | visible: true | ||
| 83 | } | ||
| 84 | ]); | ||
| 85 | |||
| 86 | /** 搜索查询分类分级模板。 */ | ||
| 87 | const searchTemplate = (val: any, clear: boolean = false) => { | ||
| 88 | // page.value.curr = 1; | ||
| 89 | // if (clear) { | ||
| 90 | // searchItemList.value.map(item => item.default = '') | ||
| 91 | // page.value.planName = ''; | ||
| 92 | // page.value.state = null; | ||
| 93 | // getTableData(); | ||
| 94 | // return; | ||
| 95 | // } | ||
| 96 | // page.value.planName = val.planName; | ||
| 97 | // page.value.state = val.state; | ||
| 98 | // getTableData(); | ||
| 99 | }; | ||
| 100 | |||
| 101 | /** ------------------------------- 分类标准相关 ------------------------------------- */ | 86 | /** ------------------------------- 分类标准相关 ------------------------------------- */ |
| 102 | 87 | ||
| 103 | /** 分类标准的搜索配置 */ | 88 | /** 分类标准的搜索配置 */ |
| ... | @@ -114,88 +99,90 @@ const classSearchItemList = ref([ | ... | @@ -114,88 +99,90 @@ const classSearchItemList = ref([ |
| 114 | } | 99 | } |
| 115 | ]); | 100 | ]); |
| 116 | 101 | ||
| 117 | const classPage: any = ref({ | ||
| 118 | ...commonPageConfig, | ||
| 119 | classStandardName: '' | ||
| 120 | }); | ||
| 121 | |||
| 122 | const classListDataLoading = ref(false); | ||
| 123 | |||
| 124 | const classListData: any = ref([{ | ||
| 125 | guid: '1', | ||
| 126 | name: '工业数据分类', | ||
| 127 | updateTime: '2020-12-12 10:10:10' | ||
| 128 | }, { | ||
| 129 | guid: '2' | ||
| 130 | }, { | ||
| 131 | guid: '3' | ||
| 132 | }, { | ||
| 133 | guid: '4' | ||
| 134 | }, { | ||
| 135 | guid: '5' | ||
| 136 | }, { | ||
| 137 | guid: '6' | ||
| 138 | }, { | ||
| 139 | guid: '7' | ||
| 140 | }]); | ||
| 141 | |||
| 142 | /** 记录点击省略号弹出菜单的visible */ | 102 | /** 记录点击省略号弹出菜单的visible */ |
| 143 | const cardBtnVisible: any = ref(false); | 103 | const cardBtnVisible: any = ref(false); |
| 144 | 104 | ||
| 145 | /** 搜索查询分类标准 */ | 105 | /** 搜索查询分类标准 */ |
| 146 | const searchClass = (val: any, clear: boolean = false) => { | 106 | const searchClass = async (val: any, clear: boolean = false) => { |
| 147 | classPage.value.curr = 1; | ||
| 148 | if (clear) { | 107 | if (clear) { |
| 149 | classSearchItemList.value.map(item => item.default = '') | 108 | classSearchItemList.value.map(item => item.default = '') |
| 150 | // classPage.value.planName = ''; | ||
| 151 | getClassListData(); | 109 | getClassListData(); |
| 152 | return; | 110 | return; |
| 153 | } | 111 | } |
| 154 | // classPage.value.planName = ''; | 112 | const params = { |
| 155 | getClassListData(); | 113 | type: 'C', |
| 156 | }; | 114 | name: val.classStandardName, |
| 157 | 115 | pageIndex: 1, | |
| 158 | 116 | pageSize: -1 | |
| 117 | } | ||
| 118 | const res: any = await getClassifyGradList(params); | ||
| 119 | if (res.code == proxy.$passCode) { | ||
| 120 | classListData.value = res.data.records || []; | ||
| 121 | } else { | ||
| 122 | proxy.$ElMessage.error(res.msg); | ||
| 123 | } | ||
| 159 | 124 | ||
| 160 | const getClassListData = () => { | 125 | }; |
| 161 | // classListDataLoading.value = true; | ||
| 162 | // getPlanList({ | ||
| 163 | // pageIndex: classPage.value.curr, | ||
| 164 | // pageSize: classPage.value.limit, | ||
| 165 | // //TODO | ||
| 166 | // }).then((res: any) => { | ||
| 167 | // classListDataLoading.value = false; | ||
| 168 | // if (res === undefined) { | ||
| 169 | // return; | ||
| 170 | // } | ||
| 171 | // if (res.code == proxy.$passCode) { | ||
| 172 | // const data = res.data || {} | ||
| 173 | // classListData.value.data = data.records || []; | ||
| 174 | // } else { | ||
| 175 | // proxy.$ElMessage.error(res.msg); | ||
| 176 | // } | ||
| 177 | // }) | ||
| 178 | } | ||
| 179 | 126 | ||
| 180 | /** 编辑分类 */ | 127 | /** 编辑分类 */ |
| 181 | const handleClassDataEdit = (item, des = '') => { | 128 | const handleClassDataEdit = (params) => { |
| 182 | 129 | classGuid.value = params.guid; | |
| 130 | newCreateClassStandardDialogInfo.value.submitBtnLoading = false; | ||
| 131 | newCreateClassStandardDialogInfo.value.visible = true; | ||
| 132 | newCreateClassStandardDialogInfo.value.title = '编辑分类'; | ||
| 133 | classStandardFormItems.value.forEach(item => { | ||
| 134 | if (item.field === 'refGradeGuid') { | ||
| 135 | item.default = params.refGradeGuid | ||
| 136 | } | ||
| 137 | if (item.field === 'classStandardName') { | ||
| 138 | item.default = params.name | ||
| 139 | } | ||
| 140 | }) | ||
| 183 | } | 141 | } |
| 184 | 142 | ||
| 143 | // 配置分类 | ||
| 185 | const handleClassDataClick = (item, des = '') => { | 144 | const handleClassDataClick = (item, des = '') => { |
| 145 | // 获取分级标准 | ||
| 186 | router.push({ | 146 | router.push({ |
| 187 | name: 'classStandardEdit', | 147 | name: 'classStandardEdit', |
| 188 | query: { | 148 | query: { |
| 149 | guid: item.guid, | ||
| 189 | type: des === '' ? '配置' : des, | 150 | type: des === '' ? '配置' : des, |
| 190 | classStandardName: '工业分类' | 151 | classStandardName: item.name, |
| 152 | refGradeGuid: item.refGradeGuid | ||
| 191 | } | 153 | } |
| 192 | }); | 154 | }); |
| 193 | } | 155 | } |
| 194 | 156 | ||
| 195 | const handleClassDataDel = (item) => { | 157 | const handleClassDataDel = async (item) => { |
| 158 | try { | ||
| 159 | // 弹出确认框 | ||
| 160 | await proxy.$confirm('此操作将永久删除该分级, 是否继续?', '提示', { | ||
| 161 | confirmButtonText: '确定', | ||
| 162 | cancelButtonText: '取消', | ||
| 163 | type: 'warning' | ||
| 164 | }); | ||
| 165 | const res: any = await deleteClassifyGrad({ guid: item.guid }); | ||
| 166 | if (res.code === proxy.$passCode) { | ||
| 167 | await getClassListData(); // 获取更新后的列表数据 | ||
| 168 | proxy.$ElMessage({ | ||
| 169 | type: 'success', | ||
| 170 | message: '删除成功!' | ||
| 171 | }); | ||
| 172 | } else { | ||
| 173 | proxy.$ElMessage.error(res.msg); // 显示错误信息 | ||
| 174 | } | ||
| 175 | } catch (error) { | ||
| 176 | if (error !== 'cancel') { | ||
| 177 | proxy.$ElMessage({ | ||
| 178 | type: 'info', | ||
| 179 | message: '已取消删除' | ||
| 180 | }); | ||
| 181 | } | ||
| 182 | } | ||
| 196 | 183 | ||
| 197 | } | 184 | } |
| 198 | /** ------------------------------- 分类标准相关 ------------------------------------- */ | 185 | |
| 199 | 186 | ||
| 200 | const classStandardFormItems = ref([{ | 187 | const classStandardFormItems = ref([{ |
| 201 | label: '分类名称', | 188 | label: '分类名称', |
| ... | @@ -209,25 +196,19 @@ const classStandardFormItems = ref([{ | ... | @@ -209,25 +196,19 @@ const classStandardFormItems = ref([{ |
| 209 | required: true | 196 | required: true |
| 210 | }, { | 197 | }, { |
| 211 | label: '分级标准', | 198 | label: '分级标准', |
| 212 | type: 'tree-select', | 199 | type: 'select', |
| 213 | placeholder: '请选择', | 200 | placeholder: '请选择', |
| 214 | field: 'gradeStandard', | 201 | field: 'refGradeGuid', |
| 215 | options: [], | 202 | options: [], |
| 216 | nodeKey: 'guid', | ||
| 217 | checkStrictly: false,//只能选择叶子节点。 | ||
| 218 | lazy: false, | ||
| 219 | multiple: false, | ||
| 220 | collapseTagsTooltip: true, | ||
| 221 | collapseTags: true, | ||
| 222 | props: { | 203 | props: { |
| 223 | label: "name", | 204 | label: "name", |
| 224 | value: "guid", | 205 | value: "guid", |
| 225 | children: "gradeRSVOList" | ||
| 226 | }, | 206 | }, |
| 227 | filterable: true, | 207 | filterable: true, |
| 228 | clearable: true, | 208 | clearable: true, |
| 229 | default: '', | 209 | default: '', |
| 230 | required: true | 210 | required: true, |
| 211 | block: true, | ||
| 231 | }]); | 212 | }]); |
| 232 | 213 | ||
| 233 | const classStandardFormRules = ref({ | 214 | const classStandardFormRules = ref({ |
| ... | @@ -250,18 +231,46 @@ const newCreateClassStandardDialogInfo = ref({ | ... | @@ -250,18 +231,46 @@ const newCreateClassStandardDialogInfo = ref({ |
| 250 | cancel: () => { | 231 | cancel: () => { |
| 251 | newCreateClassStandardDialogInfo.value.visible = false; | 232 | newCreateClassStandardDialogInfo.value.visible = false; |
| 252 | }, | 233 | }, |
| 253 | submit: (btn, info) => { | 234 | submit: async (btn, info) => { |
| 254 | newCreateClassStandardDialogInfo.value.visible = false; | 235 | if (newCreateClassStandardDialogInfo.value.title === '新增分类') { |
| 255 | classPage.value.curr = 1; | 236 | newCreateClassStandardDialogInfo.value.submitBtnLoading = true; |
| 256 | getClassListData(); | 237 | const params = { |
| 257 | //跳转到编辑页面 | 238 | name: info.classStandardName, |
| 258 | router.push({ | 239 | refGradeGuid: info.refGradeGuid, |
| 259 | name: 'classStandardEdit', | 240 | type: 'C' |
| 260 | query: { | ||
| 261 | guid: '1', | ||
| 262 | classStandardName: '工业分类' | ||
| 263 | } | 241 | } |
| 264 | }); | 242 | const res: any = await saveClassifyGrad(params); |
| 243 | if (res.code == proxy.$passCode) { | ||
| 244 | await getClassListData(); | ||
| 245 | proxy.$ElMessage({ | ||
| 246 | type: 'success', | ||
| 247 | message: '新增分类成功' | ||
| 248 | }) | ||
| 249 | newCreateClassStandardDialogInfo.value.submitBtnLoading = false; | ||
| 250 | newCreateClassStandardDialogInfo.value.visible = false; | ||
| 251 | } else { | ||
| 252 | proxy.$ElMessage.error(res.msg); | ||
| 253 | } | ||
| 254 | } else { | ||
| 255 | newCreateClassStandardDialogInfo.value.submitBtnLoading = true; | ||
| 256 | const params = { | ||
| 257 | name: info.classStandardName, | ||
| 258 | refGradeGuid: info.refGradeGuid, | ||
| 259 | guid: classGuid.value, | ||
| 260 | type: 'C' | ||
| 261 | } | ||
| 262 | const res: any = await updateClassifyGrad(params); | ||
| 263 | if (res.code == proxy.$passCode) { | ||
| 264 | getClassListData(); | ||
| 265 | proxy.$ElMessage({ | ||
| 266 | type: 'success', | ||
| 267 | message: '修改分类成功' | ||
| 268 | }) | ||
| 269 | newCreateClassStandardDialogInfo.value.visible = false; | ||
| 270 | } else { | ||
| 271 | proxy.$ElMessage.error(res.msg); | ||
| 272 | } | ||
| 273 | } | ||
| 265 | } | 274 | } |
| 266 | } | 275 | } |
| 267 | }) | 276 | }) |
| ... | @@ -389,6 +398,7 @@ const handleClassifyGradDataDel = async (item) => { | ... | @@ -389,6 +398,7 @@ const handleClassifyGradDataDel = async (item) => { |
| 389 | 398 | ||
| 390 | // 编辑分级 | 399 | // 编辑分级 |
| 391 | const handleClassifyGradDataEdit = (itemGradeName) => { | 400 | const handleClassifyGradDataEdit = (itemGradeName) => { |
| 401 | newCreateGradeStandardDialogInfo.value.submitBtnLoading = false; | ||
| 392 | classifyGradGuid.value = itemGradeName.guid; | 402 | classifyGradGuid.value = itemGradeName.guid; |
| 393 | newCreateGradeStandardDialogInfo.value.visible = true; | 403 | newCreateGradeStandardDialogInfo.value.visible = true; |
| 394 | newCreateGradeStandardDialogInfo.value.title = '编辑分级'; | 404 | newCreateGradeStandardDialogInfo.value.title = '编辑分级'; |
| ... | @@ -421,60 +431,69 @@ const newCreateGrade = () => { | ... | @@ -421,60 +431,69 @@ const newCreateGrade = () => { |
| 421 | 431 | ||
| 422 | /** ------------------------------- 分类分级模板 ------------------------------------- */ | 432 | /** ------------------------------- 分类分级模板 ------------------------------------- */ |
| 423 | 433 | ||
| 424 | const pageInfo = ref({ | 434 | // const pageInfo = ref({ |
| 425 | limit: 50, | 435 | // limit: 50, |
| 426 | curr: 1, | 436 | // curr: 1, |
| 427 | sizes: [ | 437 | // sizes: [ |
| 428 | { label: "10", value: 10 }, | 438 | // { label: "10", value: 10 }, |
| 429 | { label: "50", value: 50 }, | 439 | // { label: "50", value: 50 }, |
| 430 | { label: "100", value: 100 }, | 440 | // { label: "100", value: 100 }, |
| 431 | { label: "150", value: 150 }, | 441 | // { label: "150", value: 150 }, |
| 432 | { label: "200", value: 200 }, | 442 | // { label: "200", value: 200 }, |
| 433 | ], | 443 | // ], |
| 434 | type: "normal", | 444 | // type: "normal", |
| 435 | rows: 0, | 445 | // rows: 0, |
| 436 | }) | 446 | // }) |
| 437 | 447 | ||
| 438 | const newCreateTemplate = () => { | 448 | // const newCreateTemplate = () => { |
| 439 | router.push({ | 449 | // router.push({ |
| 440 | name: 'newCreateTemplate', | 450 | // name: 'newCreateTemplate', |
| 441 | query: { | 451 | // query: { |
| 442 | classStandardName: '分类分级模板' | 452 | // classStandardName: '分类分级模板' |
| 443 | } | 453 | // } |
| 444 | }); | 454 | // }); |
| 445 | } | 455 | // } |
| 446 | 456 | ||
| 447 | 457 | // const tempBtn = () => { | |
| 448 | const pageChange = (info) => { | 458 | // router.push({ |
| 449 | pageInfo.value.curr = Number(info.curr); | 459 | // name: 'classificationTemplateEdit', |
| 450 | pageInfo.value.limit = Number(info.limit); | 460 | // query: { |
| 451 | getClassificationTemplateList(); | 461 | // classClassifyGradName: '分类分级模板名称' |
| 452 | } | 462 | // } |
| 453 | 463 | // }); | |
| 454 | const getClassificationTemplateList = async () => { | 464 | // } |
| 455 | const params = { | 465 | |
| 456 | pageSize: pageInfo.value.limit, | 466 | |
| 457 | pageIndex: pageInfo.value.curr, | 467 | // const pageChange = (info) => { |
| 458 | } | 468 | // pageInfo.value.curr = Number(info.curr); |
| 459 | const res = await getTempleteClassifyData(params); | 469 | // pageInfo.value.limit = Number(info.limit); |
| 460 | console.log(res); | 470 | // getClassificationTemplateList(); |
| 461 | } | 471 | // } |
| 462 | 472 | ||
| 463 | onBeforeMount(() => { | 473 | // const getClassificationTemplateList = async () => { |
| 464 | getClassListData(); | 474 | // const params = { |
| 465 | getClassificationTemplateList(); | 475 | // pageSize: pageInfo.value.limit, |
| 466 | }) | 476 | // pageIndex: pageInfo.value.curr, |
| 477 | // } | ||
| 478 | // const res = await getTempleteClassifyData(params); | ||
| 479 | // console.log(res); | ||
| 480 | // } | ||
| 481 | |||
| 482 | // onBeforeMount(() => { | ||
| 483 | // getClassificationTemplateList(); | ||
| 484 | // }) | ||
| 467 | 485 | ||
| 468 | </script> | 486 | </script> |
| 469 | 487 | ||
| 470 | <template> | 488 | <template> |
| 471 | <div class="container"> | 489 | <div class="container"> |
| 472 | <Tabs :tabs-info="tabsInfo" @tab-change="tabChange" /> | 490 | <Tabs :tabs-info="tabsInfo" @tab-change="tabChange" /> |
| 473 | <div class="panel" v-show="tabsInfo.activeName == 'classTemplate'"> | 491 | <!-- <div class="panel" v-show="tabsInfo.activeName == 'classTemplate'"> |
| 474 | <div class="table_tool_wrap"> | 492 | <div class="table_tool_wrap"> |
| 475 | <TableTools :searchItems="searchItemList" :searchId="'template-manage-search'" @search="searchTemplate" /> | 493 | <TableTools :searchItems="searchItemList" :searchId="'template-manage-search'" @search="searchTemplate" /> |
| 476 | <div class="tools_btns"> | 494 | <div class="tools_btns"> |
| 477 | <el-button type="primary" @click="newCreateTemplate">新增模板</el-button> | 495 | <el-button type="primary" @click="newCreateTemplate">新增模板</el-button> |
| 496 | <el-button type="primary" @click="tempBtn">测试页面</el-button> | ||
| 478 | </div> | 497 | </div> |
| 479 | </div> | 498 | </div> |
| 480 | <div class="content"> | 499 | <div class="content"> |
| ... | @@ -483,7 +502,7 @@ onBeforeMount(() => { | ... | @@ -483,7 +502,7 @@ onBeforeMount(() => { |
| 483 | <div class="botton-page-nav"> | 502 | <div class="botton-page-nav"> |
| 484 | <PageNav :class="[pageInfo.type]" :pageInfo="pageInfo" @pageChange="pageChange" /> | 503 | <PageNav :class="[pageInfo.type]" :pageInfo="pageInfo" @pageChange="pageChange" /> |
| 485 | </div> | 504 | </div> |
| 486 | </div> | 505 | </div> --> |
| 487 | <div class="panel" v-show="tabsInfo.activeName == 'classStandard'"> | 506 | <div class="panel" v-show="tabsInfo.activeName == 'classStandard'"> |
| 488 | <div class="table_tool_wrap"> | 507 | <div class="table_tool_wrap"> |
| 489 | <TableTools :searchItems="classSearchItemList" :searchId="'template-manage-search'" @search="searchClass" /> | 508 | <TableTools :searchItems="classSearchItemList" :searchId="'template-manage-search'" @search="searchClass" /> |
| ... | @@ -512,10 +531,6 @@ onBeforeMount(() => { | ... | @@ -512,10 +531,6 @@ onBeforeMount(() => { |
| 512 | <svg-icon name="folder" /> | 531 | <svg-icon name="folder" /> |
| 513 | </el-icon> | 532 | </el-icon> |
| 514 | <div class="title">{{ item.name }}</div> | 533 | <div class="title">{{ item.name }}</div> |
| 515 | <div class="desc-row"> | ||
| 516 | <div class="desc">{{ '分级标准' }}</div> | ||
| 517 | <div class="desc">{{ item.updateTime }}</div> | ||
| 518 | </div> | ||
| 519 | </div> | 534 | </div> |
| 520 | <div v-if="!classListData.length" class="card-noData"> | 535 | <div v-if="!classListData.length" class="card-noData"> |
| 521 | <img src="../../assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" /> | 536 | <img src="../../assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" /> |
| ... | @@ -549,12 +564,8 @@ onBeforeMount(() => { | ... | @@ -549,12 +564,8 @@ onBeforeMount(() => { |
| 549 | <svg-icon name="folder" /> | 564 | <svg-icon name="folder" /> |
| 550 | </el-icon> | 565 | </el-icon> |
| 551 | <div class="title">{{ item.name }}</div> | 566 | <div class="title">{{ item.name }}</div> |
| 552 | <!-- <div class="desc-row"> | ||
| 553 | <div class="desc">{{ '分级标准' }}</div> | ||
| 554 | <div class="desc">{{ item.updateTime }}</div> | ||
| 555 | </div> --> | ||
| 556 | </div> | 567 | </div> |
| 557 | <div v-if="!classListData.length" class="card-noData"> | 568 | <div v-if="!classifyGradListData.length" class="card-noData"> |
| 558 | <img src="../../assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" /> | 569 | <img src="../../assets/images/no-data.png" :style="{ width: '96px', height: '96px' }" /> |
| 559 | <span>暂无分类标准</span> | 570 | <span>暂无分类标准</span> |
| 560 | </div> | 571 | </div> | ... | ... |
| ... | @@ -21,9 +21,10 @@ | ... | @@ -21,9 +21,10 @@ |
| 21 | <span>模板确认时间: {{ item.content.modelConfirmTime }}</span> | 21 | <span>模板确认时间: {{ item.content.modelConfirmTime }}</span> |
| 22 | </div> | 22 | </div> |
| 23 | <div class="botton-btn"> | 23 | <div class="botton-btn"> |
| 24 | <el-button type="primary" class="off-line-btn">下线</el-button> | 24 | <el-button type="primary" plain class="off-line-btn">下线</el-button> |
| 25 | <el-button type="primary" class="templete-btn">模板训练</el-button> | 25 | <el-button>模板训练</el-button> |
| 26 | <el-button type="primary" class="delete-btn">删除</el-button> | 26 | <el-button>模板确认</el-button> |
| 27 | <el-button>删除</el-button> | ||
| 27 | </div> | 28 | </div> |
| 28 | </div> | 29 | </div> |
| 29 | </div> | 30 | </div> |
| ... | @@ -146,6 +147,7 @@ const getItemStyle = (status: string) => { | ... | @@ -146,6 +147,7 @@ const getItemStyle = (status: string) => { |
| 146 | borderTop: `4px solid ${borderColor}`, | 147 | borderTop: `4px solid ${borderColor}`, |
| 147 | }; | 148 | }; |
| 148 | }; | 149 | }; |
| 150 | |||
| 149 | </script> | 151 | </script> |
| 150 | 152 | ||
| 151 | <style scoped lang="scss"> | 153 | <style scoped lang="scss"> |
| ... | @@ -259,22 +261,6 @@ const getItemStyle = (status: string) => { | ... | @@ -259,22 +261,6 @@ const getItemStyle = (status: string) => { |
| 259 | 261 | ||
| 260 | .botton-btn { | 262 | .botton-btn { |
| 261 | margin-top: 13px; | 263 | margin-top: 13px; |
| 262 | |||
| 263 | .off-line-btn { | ||
| 264 | background-color: #fff; | ||
| 265 | font-size: 14px; | ||
| 266 | color: #4FA1A4; | ||
| 267 | |||
| 268 | } | ||
| 269 | |||
| 270 | .templete-btn, | ||
| 271 | .delete-btn { | ||
| 272 | |||
| 273 | background: #FFFFFF; | ||
| 274 | border: 1px solid rgba(217, 217, 217, 1); | ||
| 275 | font-size: 14px; | ||
| 276 | color: #212121; | ||
| 277 | } | ||
| 278 | } | 264 | } |
| 279 | } | 265 | } |
| 280 | } | 266 | } | ... | ... |
| ... | @@ -15,6 +15,7 @@ import createBanner from './banner' | ... | @@ -15,6 +15,7 @@ import createBanner from './banner' |
| 15 | import AutoImport from 'unplugin-auto-import/vite'; | 15 | import AutoImport from 'unplugin-auto-import/vite'; |
| 16 | import Components from 'unplugin-vue-components/vite'; | 16 | import Components from 'unplugin-vue-components/vite'; |
| 17 | import { VantResolver } from '@vant/auto-import-resolver'; | 17 | import { VantResolver } from '@vant/auto-import-resolver'; |
| 18 | import createMock from './mock' | ||
| 18 | 19 | ||
| 19 | export default function createVitePlugins(viteEnv, isBuild = false) { | 20 | export default function createVitePlugins(viteEnv, isBuild = false) { |
| 20 | const vitePlugins: (PluginOption | PluginOption[])[] = [ | 21 | const vitePlugins: (PluginOption | PluginOption[])[] = [ |
| ... | @@ -37,5 +38,6 @@ export default function createVitePlugins(viteEnv, isBuild = false) { | ... | @@ -37,5 +38,6 @@ export default function createVitePlugins(viteEnv, isBuild = false) { |
| 37 | isBuild && vitePlugins.push(...createCompression(viteEnv)) | 38 | isBuild && vitePlugins.push(...createCompression(viteEnv)) |
| 38 | vitePlugins.push(...createSpritesmith(isBuild)) | 39 | vitePlugins.push(...createSpritesmith(isBuild)) |
| 39 | vitePlugins.push(createBanner()) | 40 | vitePlugins.push(createBanner()) |
| 41 | vitePlugins.push(createMock(viteEnv.VITE_APP_CHECK_BASEURL, isBuild)) | ||
| 40 | return vitePlugins | 42 | return vitePlugins |
| 41 | } | 43 | } | ... | ... |
-
Please register or sign in to post a comment