3e3c2dab by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents b30375b8 210b5eb5
...@@ -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 })
......
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,59 +587,31 @@ defineExpose({ ...@@ -629,59 +587,31 @@ 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"
634 :class="[
635 con.tools && con.tools.posit, 591 con.tools && con.tools.posit,
636 con.tableInfo.col, 592 con.tableInfo.col,
637 { full: !con.tools }, 593 { full: !con.tools },
638 ]" 594 ]">
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="
656 !con.tableInfo.showPage && 602 !con.tableInfo.showPage &&
657 con.tableInfo.pageCount !== undefined 603 con.tableInfo.pageCount !== undefined
658 " 604 " class="footer_page" :pageInfo="{ type: 'count', rows: con.tableInfo.pageCount }" />
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 <!-- 修改此处时须测试数据目录对不对。-->
...@@ -693,11 +623,7 @@ defineExpose({ ...@@ -693,11 +623,7 @@ defineExpose({
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.
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 },
...@@ -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 ]
......
...@@ -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 }
210 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 };
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>
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) => {
235 if (newCreateClassStandardDialogInfo.value.title === '新增分类') {
236 newCreateClassStandardDialogInfo.value.submitBtnLoading = true;
237 const params = {
238 name: info.classStandardName,
239 refGradeGuid: info.refGradeGuid,
240 type: 'C'
241 }
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;
254 newCreateClassStandardDialogInfo.value.visible = false; 250 newCreateClassStandardDialogInfo.value.visible = false;
255 classPage.value.curr = 1; 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) {
256 getClassListData(); 264 getClassListData();
257 //跳转到编辑页面 265 proxy.$ElMessage({
258 router.push({ 266 type: 'success',
259 name: 'classStandardEdit', 267 message: '修改分类成功'
260 query: { 268 })
261 guid: '1', 269 newCreateClassStandardDialogInfo.value.visible = false;
262 classStandardName: '工业分类' 270 } else {
271 proxy.$ElMessage.error(res.msg);
272 }
263 } 273 }
264 });
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 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!