Kaynağa Gözat

移除element-plus 将tree组件更换为td的

yujinwen 4 ay önce
ebeveyn
işleme
c0845e803b

+ 1 - 2
package.json

@@ -15,13 +15,12 @@
     "@vueuse/core": "^10.9.0",
     "@vueuse/core": "^10.9.0",
     "axios": "^1.6.8",
     "axios": "^1.6.8",
     "dagre": "^0.8.5",
     "dagre": "^0.8.5",
-    "element-plus": "^2.7.1",
     "highcharts": "^11.4.1",
     "highcharts": "^11.4.1",
     "lodash": "^4.17.21",
     "lodash": "^4.17.21",
     "moment": "^2.30.1",
     "moment": "^2.30.1",
     "normalize.css": "^8.0.1",
     "normalize.css": "^8.0.1",
     "tdesign-icons-vue-next": "^0.2.2",
     "tdesign-icons-vue-next": "^0.2.2",
-    "tdesign-vue-next": "^1.10.4",
+    "tdesign-vue-next": "^1.10.5",
     "vue": "^3.5.13",
     "vue": "^3.5.13",
     "vue-router": "^4.3.2"
     "vue-router": "^4.3.2"
   },
   },

+ 4 - 137
pnpm-lock.yaml

@@ -16,9 +16,6 @@ dependencies:
   dagre:
   dagre:
     specifier: ^0.8.5
     specifier: ^0.8.5
     version: 0.8.5
     version: 0.8.5
-  element-plus:
-    specifier: ^2.7.1
-    version: 2.7.6(vue@3.5.13)
   highcharts:
   highcharts:
     specifier: ^11.4.1
     specifier: ^11.4.1
     version: 11.4.3
     version: 11.4.3
@@ -35,8 +32,8 @@ dependencies:
     specifier: ^0.2.2
     specifier: ^0.2.2
     version: 0.2.2(vue@3.5.13)
     version: 0.2.2(vue@3.5.13)
   tdesign-vue-next:
   tdesign-vue-next:
-    specifier: ^1.10.4
-    version: 1.10.4(vue@3.5.13)
+    specifier: ^1.10.5
+    version: 1.10.5(vue@3.5.13)
   vue:
   vue:
     specifier: ^3.5.13
     specifier: ^3.5.13
     version: 3.5.13
     version: 3.5.13
@@ -381,19 +378,6 @@ packages:
       '@babel/helper-string-parser': 7.25.9
       '@babel/helper-string-parser': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
       '@babel/helper-validator-identifier': 7.25.9
 
 
-  /@ctrl/tinycolor@3.6.1:
-    resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
-    engines: {node: '>=10'}
-    dev: false
-
-  /@element-plus/icons-vue@2.3.1(vue@3.5.13):
-    resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
-    peerDependencies:
-      vue: ^3.2.0
-    dependencies:
-      vue: 3.5.13
-    dev: false
-
   /@esbuild/aix-ppc64@0.21.5:
   /@esbuild/aix-ppc64@0.21.5:
     resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
     resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
     engines: {node: '>=12'}
     engines: {node: '>=12'}
@@ -601,23 +585,6 @@ packages:
     dev: true
     dev: true
     optional: true
     optional: true
 
 
-  /@floating-ui/core@1.6.3:
-    resolution: {integrity: sha512-1ZpCvYf788/ZXOhRQGFxnYQOVgeU+pi0i+d0Ow34La7qjIXETi6RNswGVKkA6KcDO8/+Ysu2E/CeUmmeEBDvTg==}
-    dependencies:
-      '@floating-ui/utils': 0.2.3
-    dev: false
-
-  /@floating-ui/dom@1.6.6:
-    resolution: {integrity: sha512-qiTYajAnh3P+38kECeffMSQgbvXty2VB6rS+42iWR4FPIlZjLK84E9qtLnMTLIpPz2znD/TaFqaiavMUrS+Hcw==}
-    dependencies:
-      '@floating-ui/core': 1.6.3
-      '@floating-ui/utils': 0.2.3
-    dev: false
-
-  /@floating-ui/utils@0.2.3:
-    resolution: {integrity: sha512-XGndio0l5/Gvd6CLIABvsav9HHezgDFFhDfHk1bvLfr9ni8dojqLSvBbotJEjmIwNHL7vK4QzBJTdBRoB+c1ww==}
-    dev: false
-
   /@isaacs/cliui@8.0.2:
   /@isaacs/cliui@8.0.2:
     resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
     resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
     engines: {node: '>=12'}
     engines: {node: '>=12'}
@@ -846,10 +813,6 @@ packages:
     dev: true
     dev: true
     optional: true
     optional: true
 
 
-  /@sxzz/popperjs-es@2.11.7:
-    resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
-    dev: false
-
   /@trysound/sax@0.2.0:
   /@trysound/sax@0.2.0:
     resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
     resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
     engines: {node: '>=10.13.0'}
     engines: {node: '>=10.13.0'}
@@ -859,20 +822,10 @@ packages:
     resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
     resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
     dev: true
     dev: true
 
 
-  /@types/lodash-es@4.17.12:
-    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
-    dependencies:
-      '@types/lodash': 4.17.6
-    dev: false
-
   /@types/lodash@4.14.182:
   /@types/lodash@4.14.182:
     resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==}
     resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==}
     dev: false
     dev: false
 
 
-  /@types/lodash@4.17.6:
-    resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
-    dev: false
-
   /@types/node@20.14.9:
   /@types/node@20.14.9:
     resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
     resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
     dependencies:
     dependencies:
@@ -897,10 +850,6 @@ packages:
     resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==}
     resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==}
     dev: false
     dev: false
 
 
-  /@types/web-bluetooth@0.0.16:
-    resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
-    dev: false
-
   /@types/web-bluetooth@0.0.20:
   /@types/web-bluetooth@0.0.20:
     resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
     resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
 
 
@@ -1053,25 +1002,9 @@ packages:
       - '@vue/composition-api'
       - '@vue/composition-api'
       - vue
       - vue
 
 
-  /@vueuse/core@9.13.0(vue@3.5.13):
-    resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
-    dependencies:
-      '@types/web-bluetooth': 0.0.16
-      '@vueuse/metadata': 9.13.0
-      '@vueuse/shared': 9.13.0(vue@3.5.13)
-      vue-demi: 0.14.10(vue@3.5.13)
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-      - vue
-    dev: false
-
   /@vueuse/metadata@10.11.0:
   /@vueuse/metadata@10.11.0:
     resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==}
     resolution: {integrity: sha512-kQX7l6l8dVWNqlqyN3ePW3KmjCQO3ZMgXuBMddIu83CmucrsBfXlH+JoviYyRBws/yLTQO8g3Pbw+bdIoVm4oQ==}
 
 
-  /@vueuse/metadata@9.13.0:
-    resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
-    dev: false
-
   /@vueuse/shared@10.11.0(vue@3.5.13):
   /@vueuse/shared@10.11.0(vue@3.5.13):
     resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==}
     resolution: {integrity: sha512-fyNoIXEq3PfX1L3NkNhtVQUSRtqYwJtJg+Bp9rIzculIZWHTkKSysujrOk2J+NrRulLTQH9+3gGSfYLWSEWU1A==}
     dependencies:
     dependencies:
@@ -1080,15 +1013,6 @@ packages:
       - '@vue/composition-api'
       - '@vue/composition-api'
       - vue
       - vue
 
 
-  /@vueuse/shared@9.13.0(vue@3.5.13):
-    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
-    dependencies:
-      vue-demi: 0.14.10(vue@3.5.13)
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-      - vue
-    dev: false
-
   /abort-controller@3.0.0:
   /abort-controller@3.0.0:
     resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
     resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
     engines: {node: '>=6.5'}
     engines: {node: '>=6.5'}
@@ -1215,10 +1139,6 @@ packages:
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
     dev: true
     dev: true
 
 
-  /async-validator@4.2.5:
-    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
-    dev: false
-
   /async@3.2.6:
   /async@3.2.6:
     resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
     resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
     dev: true
     dev: true
@@ -1588,10 +1508,6 @@ packages:
     resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
     resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==}
     dev: false
     dev: false
 
 
-  /dayjs@1.11.11:
-    resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==}
-    dev: false
-
   /debug@2.6.9:
   /debug@2.6.9:
     resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
     resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
     peerDependencies:
     peerDependencies:
@@ -1724,31 +1640,6 @@ packages:
     resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==}
     resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==}
     dev: true
     dev: true
 
 
-  /element-plus@2.7.6(vue@3.5.13):
-    resolution: {integrity: sha512-36sw1K23hYjgeooR10U6CiCaCp2wvOqwoFurADZVlekeQ9v5U1FhJCFGEXO6i/kZBBMwsE1c9fxjLs9LENw2Rg==}
-    peerDependencies:
-      vue: ^3.2.0
-    dependencies:
-      '@ctrl/tinycolor': 3.6.1
-      '@element-plus/icons-vue': 2.3.1(vue@3.5.13)
-      '@floating-ui/dom': 1.6.6
-      '@popperjs/core': /@sxzz/popperjs-es@2.11.7
-      '@types/lodash': 4.17.6
-      '@types/lodash-es': 4.17.12
-      '@vueuse/core': 9.13.0(vue@3.5.13)
-      async-validator: 4.2.5
-      dayjs: 1.11.11
-      escape-html: 1.0.3
-      lodash: 4.17.21
-      lodash-es: 4.17.21
-      lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21)
-      memoize-one: 6.0.0
-      normalize-wheel-es: 1.2.0
-      vue: 3.5.13
-    transitivePeerDependencies:
-      - '@vue/composition-api'
-    dev: false
-
   /emoji-regex@8.0.0:
   /emoji-regex@8.0.0:
     resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
     resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
     dev: true
     dev: true
@@ -1899,10 +1790,6 @@ packages:
     engines: {node: '>=6'}
     engines: {node: '>=6'}
     dev: true
     dev: true
 
 
-  /escape-html@1.0.3:
-    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
-    dev: false
-
   /escape-string-regexp@1.0.5:
   /escape-string-regexp@1.0.5:
     resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
     resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
     engines: {node: '>=0.8.0'}
     engines: {node: '>=0.8.0'}
@@ -2642,18 +2529,6 @@ packages:
     resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
     resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
     dev: false
     dev: false
 
 
-  /lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21):
-    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
-    peerDependencies:
-      '@types/lodash-es': '*'
-      lodash: '*'
-      lodash-es: '*'
-    dependencies:
-      '@types/lodash-es': 4.17.12
-      lodash: 4.17.21
-      lodash-es: 4.17.21
-    dev: false
-
   /lodash@4.17.21:
   /lodash@4.17.21:
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
     resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
 
 
@@ -2694,10 +2569,6 @@ packages:
     resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
     resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
     dev: true
     dev: true
 
 
-  /memoize-one@6.0.0:
-    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
-    dev: false
-
   /merge-options@1.0.1:
   /merge-options@1.0.1:
     resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
     resolution: {integrity: sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==}
     engines: {node: '>=4'}
     engines: {node: '>=4'}
@@ -2840,10 +2711,6 @@ packages:
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
     dev: true
     dev: true
 
 
-  /normalize-wheel-es@1.2.0:
-    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
-    dev: false
-
   /normalize.css@8.0.1:
   /normalize.css@8.0.1:
     resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
     resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==}
     dev: false
     dev: false
@@ -3580,8 +3447,8 @@ packages:
       vue: 3.5.13
       vue: 3.5.13
     dev: false
     dev: false
 
 
-  /tdesign-vue-next@1.10.4(vue@3.5.13):
-    resolution: {integrity: sha512-DdRf2WZKNwDVZ3y9+xxJi9XJmYyZjSnkJDDlDsUopPhg3jiUiJEdyUuAkAJIljgda6GZk+scrg8b8Am+kySbrw==}
+  /tdesign-vue-next@1.10.5(vue@3.5.13):
+    resolution: {integrity: sha512-z00HyuKI3xnXSzkBMPjjl87FnXrkxmF1MPJbEzys2Eh80ofRC+Pc+iPQbcbEOxJhJ0yeQYf2jzwgl/wmKesSrg==}
     peerDependencies:
     peerDependencies:
       vue: '>=3.1.0'
       vue: '>=3.1.0'
     dependencies:
     dependencies:

+ 1 - 1
src/views/etaChart/components/ChartWrap.vue

@@ -145,7 +145,7 @@ function handleGoEdbSource(data) {
       </div>
       </div>
       <div class="table-wrap">
       <div class="table-wrap">
         <t-table
         <t-table
-          row-key="ChartInfoId"
+          row-key="EdbInfoId"
           :data="tableData"
           :data="tableData"
           :columns="columns"
           :columns="columns"
           bordered
           bordered

+ 97 - 170
src/views/etaChart/components/ClassifyWrap.vue

@@ -1,10 +1,8 @@
 <script setup>
 <script setup>
-import { computed, reactive, ref, watch } from 'vue'
+import { computed, reactive, ref, useTemplateRef, watch } from 'vue'
 import { SearchIcon, Icon } from 'tdesign-icons-vue-next';
 import { SearchIcon, Icon } from 'tdesign-icons-vue-next';
 import { apiETAChart } from '@/api/etaChart'
 import { apiETAChart } from '@/api/etaChart'
 import { apiSystemCommon } from '@/api/system'
 import { apiSystemCommon } from '@/api/system'
-import { ElTree } from 'element-plus'
-import 'element-plus/es/components/tree/style/css'
 import { useClassify } from '../hooks/useClassify'
 import { useClassify } from '../hooks/useClassify'
 import MoveClassify from './MoveClassify.vue'
 import MoveClassify from './MoveClassify.vue'
 
 
@@ -83,8 +81,8 @@ function handleSelectChart(value, context) {
 //分类列表
 //分类列表
 const classifyTreeKeys = {
 const classifyTreeKeys = {
   label: 'ChartClassifyName',
   label: 'ChartClassifyName',
+  value: 'ChartClassifyId',
   children: 'Children',
   children: 'Children',
-  isLeaf: 'isLeaf'
 }
 }
 const { classifyActived } = useClassify()//当前选中的分类
 const { classifyActived } = useClassify()//当前选中的分类
 const classifyList = ref([])
 const classifyList = ref([])
@@ -98,45 +96,44 @@ async function getClassify() {
     classifyList.value = arr.map(item => {
     classifyList.value = arr.map(item => {
       return {
       return {
         ...item,
         ...item,
-        Children: null
+        draggable:item.ChartClassifyId===0?false:true,//未分类不允许拖动
+        Children: true
       }
       }
     })
     })
   }
   }
 }
 }
 getClassify()
 getClassify()
 // 懒加载分类
 // 懒加载分类
-async function classifyLoad(node, resolve) {
-  if (node.level === 0) {
-    resolve(classifyList.value)
-  } else {
-    let nodes = []
-    const res = await apiETAChart.classifyList({
-      ParentId: node.data.ChartClassifyId,
-      SysUserIds: userVal.value?.join(',')
+async function classifyLoad(node) {
+  let nodes = []
+  const res = await apiETAChart.classifyList({
+    ParentId: node.data.ChartClassifyId,
+    SysUserIds: userVal.value?.join(',')
+  })
+  if (res.Ret === 200) {
+    const arr = res.Data.AllNodes || []
+    nodes = arr.map(item => {
+      return {
+        ...item,
+        Children: item.ChartInfoId !== 0 ?false:true,
+        ChartClassifyId: item.ChartInfoId ? item.UniqueCode : item.ChartClassifyId,//如果是指标则将分类id设置为图表id
+      }
     })
     })
-    if (res.Ret === 200) {
-      const arr = res.Data.AllNodes || []
-      nodes = arr.map(item => {
-        return {
-          ...item,
-          isLeaf: item.ChartInfoId !== 0 ? true : false,
-          ChartClassifyId: item.ChartInfoId ? item.UniqueCode : item.ChartClassifyId,//如果是指标则将分类id设置为图表id
-        }
-      })
-    }
-    resolve(nodes);
   }
   }
+  return nodes
 }
 }
-function handleClassifyActiveChange(data, node) {
-  classifyActived.value = data.ChartClassifyId
-  if (data.ChartInfoId) {//选择的是图表
-    emits('change', data)
+// 点击分类或者指标
+function handleClassifyActiveChange({node}) {
+  if(classifyActived.value === node.data.ChartClassifyId) return
+  classifyActived.value = node.data.ChartClassifyId
+  if (node.data.ChartInfoId) {//选择的是图表
+    emits('change', node.data)
   } else {
   } else {
     emits('filter')
     emits('filter')
   }
   }
 }
 }
 // 控制分类操作按钮显示
 // 控制分类操作按钮显示
-function showClassifyOpt(node, data) {
+function showClassifyOpt(data) {
   return (classifyActived.value === data.ChartClassifyId) && data.ChartClassifyId !== 0 && data.ChartInfoId === 0
   return (classifyActived.value === data.ChartClassifyId) && data.ChartClassifyId !== 0 && data.ChartInfoId === 0
 }
 }
 
 
@@ -179,26 +176,23 @@ async function handleConfirmClassify() {
 
 
 
 
 }
 }
-// 递归获取父节点
-function getAllParent(data, arr) {
-  if (data.level === 0) return
-  arr.push({ ChartClassifyName: data.data.ChartClassifyName, ChartClassifyId: data.data.ChartClassifyId })
-  getAllParent(data.parent, arr)
-  return arr
-}
-function handleClassifyOpt(node, data, type) {
+function handleClassifyOpt(node, type) {
+  const data=node.data
   if (type === 'edit') {
   if (type === 'edit') {
     classifyEditState.id = data.ChartClassifyId
     classifyEditState.id = data.ChartClassifyId
     classifyEditState.name = data.ChartClassifyName
     classifyEditState.name = data.ChartClassifyName
-    let parr = getAllParent(node, [])
-    parr.shift()
-    classifyEditState.parent = parr.reverse()
-    classifyEditState.parentId = node.parent.id || 0
+    let parr = node.getParents()
+    classifyEditState.parent =parr.map(item=>{
+      return item.data
+    }).reverse()
+    classifyEditState.parentId = node.getParent()?.value || 0
     showEditClassify.value = true
     showEditClassify.value = true
   }
   }
   if (type === 'add') {
   if (type === 'add') {
-    let parr = getAllParent(node, [])
-    classifyEditState.parent = parr.reverse()
+    let parr = node.getPath()
+    classifyEditState.parent =parr.map(item=>{
+      return item.data
+    })
     classifyEditState.parentId = data.ChartClassifyId
     classifyEditState.parentId = data.ChartClassifyId
     showEditClassify.value = true
     showEditClassify.value = true
   }
   }
@@ -217,21 +211,7 @@ function handleClassifyOpt(node, data, type) {
 
 
 
 
 const defaultShowNodes = ref([])//当前展开的数据
 const defaultShowNodes = ref([])//当前展开的数据
-function handleNodeExpand(data) {
-  // 保存当前展开的节点
-  let flag = defaultShowNodes.value.some((item) => item === data.ChartClassifyId);
-  if (!flag) { // 不存在则存到数组里
-    defaultShowNodes.value.push(data.ChartClassifyId)
-  }
-}
-function handleNodeCollapse(data) {
-  defaultShowNodes.value.some((item, index) => {
-    if (item === data.ChartClassifyId) {
-      // 删除关闭节点
-      defaultShowNodes.value.length = index
-    }
-  })
-}
+
 // 有筛选条件时不允许拖动排序
 // 有筛选条件时不允许拖动排序
 const canDragSort = computed(() => {
 const canDragSort = computed(() => {
   if (userVal.value.length>0) return false
   if (userVal.value.length>0) return false
@@ -241,52 +221,39 @@ function allowDrag({ data }) {
   if (data.ChartClassifyId === 0) return false //未分类不允许拖动
   if (data.ChartClassifyId === 0) return false //未分类不允许拖动
   return true
   return true
 }
 }
-function allowDrop(draggingNode, dropNode, type) {
+// 判断节点是否可以执行 drop 操作 dropPosition -1放在dropNode前面 0里面 1后面
+function allowDrop({dragNode, dropNode, dropPosition}) {
   let canDrop = false
   let canDrop = false
   // 如果拖动的是指标
   // 如果拖动的是指标
-  if (draggingNode.data.ChartInfoId) {
-    if (!(dropNode.level === 1 && type !== 'inner')) {
+  if (dragNode.data.ChartInfoId) {
+    if (!(dropNode.getLevel() === 0 && dropPosition !== 0)) {
       canDrop = true
       canDrop = true
     }
     }
   } else {//拖动的是目录
   } else {//拖动的是目录
-    // console.log(dropNode.level,draggingNode.level);
+    // console.log(dropNode.level,dragNode.level);
     //目录层级不能改变
     //目录层级不能改变
-    if ((dropNode.level + 1 == draggingNode.level && type === 'inner' && !dropNode.data.ChartInfoId) || (dropNode.level === draggingNode.level && type !== 'inner')) {
+    if ((dropNode.getLevel() + 1 == dragNode.getLevel() && dropPosition === 0 && !dropNode.data.ChartInfoId) || (dropNode.getLevel() === dragNode.getLevel() && dropPosition !== 0)) {
       canDrop = true
       canDrop = true
     }
     }
   }
   }
   return canDrop
   return canDrop
 }
 }
-function handleDropOver(b, a, i, e) {
+function handleDropOver({dragNode,dropNode,dropPosition}) {
   // 被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置
   // 被拖拽节点对应的 Node、结束拖拽时最后进入的节点、被拖拽节点的放置位置
-  console.log(b, a, i);
-  const isEDB = b.data.ChartInfoId ? true : false
-  let list = a.parent.childNodes;
+  // console.log(dragNode,dropNode,dropPosition);
+  
+  const isEDB = dragNode.data.ChartInfoId ? true : false
+  let list = dragNode.getSiblings();
   let targetIndex = 0, PrevClassifyId = 0, NextClassifyId = 0, ParentClassifyId = 0;
   let targetIndex = 0, PrevClassifyId = 0, NextClassifyId = 0, ParentClassifyId = 0;
   let ClassifyId = 0, ChartInfoId = 0, PrevChartInfoId = 0, NextChartInfoId = 0;
   let ClassifyId = 0, ChartInfoId = 0, PrevChartInfoId = 0, NextChartInfoId = 0;
 
 
-  ClassifyId = isEDB ? 0 : b.data.ChartClassifyId
-  ChartInfoId = isEDB ? b.data.ChartInfoId : 0
-
-
-  if (i !== 'inner') {
-    ParentClassifyId = a.parent.data.ChartClassifyId || 0
-    list.forEach((item, index) => {
-      if (isEDB) {
-        if (item.data.ChartInfoId === b.data.ChartInfoId) {
-          targetIndex = index
-        }
-      } else {
-        if (item.data.ChartClassifyId === b.data.ChartClassifyId) {
-          targetIndex = index
-        }
-      }
-
-    })
-
-    console.log(targetIndex);
+  ClassifyId = isEDB ? 0 : dragNode.data.ChartClassifyId
+  ChartInfoId = isEDB ? dragNode.data.ChartInfoId : 0
 
 
 
 
+  if (dropPosition !== 0) {
+    ParentClassifyId = dragNode.getParent()?.value || 0
+    targetIndex=dragNode.getIndex()
     if (targetIndex === 0) {
     if (targetIndex === 0) {
       const data = list[targetIndex + 1].data
       const data = list[targetIndex + 1].data
       NextClassifyId = data.ChartInfoId ? 0 : data.ChartClassifyId
       NextClassifyId = data.ChartInfoId ? 0 : data.ChartClassifyId
@@ -306,7 +273,7 @@ function handleDropOver(b, a, i, e) {
       NextChartInfoId = nData.ChartInfoId ? nData.ChartInfoId : 0
       NextChartInfoId = nData.ChartInfoId ? nData.ChartInfoId : 0
     }
     }
   } else {
   } else {
-    ParentClassifyId = a.data.ChartClassifyId || 0
+    ParentClassifyId = dropNode.data.ChartClassifyId || 0
   }
   }
 
 
   const params = {
   const params = {
@@ -318,7 +285,7 @@ function handleDropOver(b, a, i, e) {
     PrevChartInfoId,
     PrevChartInfoId,
     NextChartInfoId
     NextChartInfoId
   }
   }
-  console.log(params);
+  // console.log(params);
   apiETAChart.classifySort(params).then(res => {
   apiETAChart.classifySort(params).then(res => {
     if (res.Ret === 200) {
     if (res.Ret === 200) {
       MessagePlugin.success('移动成功!')
       MessagePlugin.success('移动成功!')
@@ -363,92 +330,48 @@ const showBatchMove = ref(false)
       </template>
       </template>
     </t-select>
     </t-select>
     <div class="classify-list-box">
     <div class="classify-list-box">
-      <el-tree
-        :data="classifyList"
-        :props="classifyTreeKeys"
-        :current-node-key="classifyActived"
-        :default-expanded-keys="defaultShowNodes"
-        @node-expand="handleNodeExpand"
-        @node-collapse="handleNodeCollapse"
-        :draggable="canDragSort"
-        check-on-click-node
-        :expand-on-click-node="false"
-        node-key="ChartClassifyId"
-        check-strictly
-        highlight-current
-        empty-text="暂无目录"
-        lazy
-        icon="span"
-        @current-change="handleClassifyActiveChange"
-        :load="classifyLoad"
-        :allow-drop="allowDrop"
-        :allow-drag="allowDrag"
-        @node-drop="handleDropOver"
-      >
-        <template #default="{ node, data }">
-          <div class="classify-item-box">
-            <div class="label">{{ node.label }}</div>
-            <div class="opt-box" v-show="showClassifyOpt(node, data)">
-              <span v-if="canDragSort">
-                <t-icon name="drag-move" />
-              </span>
-              <span v-if="node.level<6" @click.stop="handleClassifyOpt(node, data, 'add')">
-                <t-icon name="add" />
-              </span>
-              <span @click.stop="handleClassifyOpt(node, data, 'edit')">
-                <t-icon name="edit-2" />
-              </span>
-              <span @click.stop="handleClassifyOpt(node, data, 'del')">
-                <t-icon name="close" />
-              </span>
-            </div>
-          </div>
-        </template>
-      </el-tree>
-
-      <!-- <t-tree
-        v-model:actived="classifyActived"
+      <t-tree
+        v-model:expanded="defaultShowNodes"
+        :defaultExpanded="defaultShowNodes"
+        :actived="[classifyActived]"
         :data="classifyList"
         :data="classifyList"
         activable
         activable
         transition
         transition
-        draggable
-        :load="classifyLoad"
-        value-mode="all"
+        expandParent
+        :draggable="canDragSort"
+        value-mode="onlyLeaf"
         :keys="classifyTreeKeys"
         :keys="classifyTreeKeys"
         check-strictly
         check-strictly
-        :onDragOver="canDrag"
-        @drop="handleClassifyDrop"
+        :allow-drop="allowDrop"
+        :load="classifyLoad"
+        empty="暂无目录"
+        @click="handleClassifyActiveChange"
+        @drop="handleDropOver"
       >
       >
         <template #icon="{ node }">
         <template #icon="{ node }">
+          <!-- 指标无展开收起按钮 -->
           <t-icon
           <t-icon
-            name="add-rectangle"
-            v-if="node.getChildren() && !node.expanded"
-          />
-          <t-icon
-            name="minus-rectangle"
-            v-if="node.getChildren() && node.expanded"
+            :name="node.expanded?'minus-rectangle':'add-rectangle'"
+            v-if="node.data.ChartInfoId === 0"
           />
           />
         </template>
         </template>
-        <template #label="{ node }">
-          <div class="classify-item-box">
-            <div class="label">{{ node.label }}</div>
-            <div class="opt-box" v-show="showClassifyOpt(node)">
-              <span>
-                <t-icon name="drag-move" />
-              </span>
-              <span @click.stop="handleClassifyOpt(node,'add')" v-if="node.data.Level<6">
-                <t-icon name="add" />
-              </span>
-              <span @click.stop="handleClassifyOpt(node,'edit')">
-                <t-icon name="edit-2" />
-              </span>
-              <span @click.stop="handleClassifyOpt(node,'del')">
-                <t-icon name="close" />
-              </span>
-            </div>
+        <template #operations="{ node }">
+          <div class="opt-box" v-show="showClassifyOpt(node.data)">
+            <span>
+              <t-icon name="drag-move" />
+            </span>
+            <span @click.stop="handleClassifyOpt(node,'add')" v-if="node.getLevel()<5">
+              <t-icon name="add" />
+            </span>
+            <span @click.stop="handleClassifyOpt(node,'edit')">
+              <t-icon name="edit-2" />
+            </span>
+            <span @click.stop="handleClassifyOpt(node,'del')">
+              <t-icon name="close" />
+            </span>
           </div>
           </div>
         </template>
         </template>
-      </t-tree> -->
+      </t-tree>
     </div>
     </div>
     <div class="classify-add-box" @click="showEditClassify = true">
     <div class="classify-add-box" @click="showEditClassify = true">
       <t-icon name="add-rectangle" />
       <t-icon name="add-rectangle" />
@@ -546,6 +469,16 @@ const showBatchMove = ref(false)
     padding-top: 10px;
     padding-top: 10px;
     height: calc(100vh - 340px);
     height: calc(100vh - 340px);
     overflow-y: auto;
     overflow-y: auto;
+    :deep(.t-is-active){
+      background-color: var(--td-brand-color-light);
+    }
+    .opt-box {
+      display: flex;
+      gap: 0 5px;
+      .t-icon {
+        color: var(--td-brand-color);
+      }
+    }
     .classify-item-box {
     .classify-item-box {
       flex: 1;
       flex: 1;
       display: flex;
       display: flex;
@@ -554,13 +487,7 @@ const showBatchMove = ref(false)
       .label {
       .label {
         flex: 1;
         flex: 1;
       }
       }
-      .opt-box {
-        display: flex;
-        gap: 0 5px;
-        .t-icon {
-          color: var(--td-brand-color);
-        }
-      }
+      
     }
     }
   }
   }
   .classify-add-box {
   .classify-add-box {