lsc 1 周之前
父節點
當前提交
e2bc1093cf

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.89c0b042c32c3bbee68dd9923d56acff.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.41f9d44fcc305a660223.js></script><script type=text/javascript src=./static/js/app.b0c7aeddaa4ee695f877.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.4ac7818c65cc61aafd6b6d17b73524e7.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.4dce3a5441c732d84c44.js></script><script type=text/javascript src=./static/js/app.f9b932c230ab245fe0d8.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.4ac7818c65cc61aafd6b6d17b73524e7.css


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.4ac7818c65cc61aafd6b6d17b73524e7.css.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/css/app.89c0b042c32c3bbee68dd9923d56acff.css.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.b0c7aeddaa4ee695f877.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.b0c7aeddaa4ee695f877.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.f9b932c230ab245fe0d8.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/app.f9b932c230ab245fe0d8.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/vendor.41f9d44fcc305a660223.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/vendor.4dce3a5441c732d84c44.js


文件差異過大導致無法顯示
+ 0 - 0
dist/static/js/vendor.4dce3a5441c732d84c44.js.map


+ 534 - 8
package-lock.json

@@ -8,6 +8,7 @@
       "name": "cocoroboworkpc",
       "version": "1.0.0",
       "dependencies": {
+        "@antv/g6": "^4.8.25",
         "@ffmpeg/ffmpeg": "^0.9.8",
         "@microsoft/fetch-event-source": "^2.0.1",
         "@vue-office/docx": "^1.6.2",
@@ -118,6 +119,387 @@
         "npm": ">= 3.0.0"
       }
     },
+    "node_modules/@ant-design/colors": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz",
+      "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==",
+      "dependencies": {
+        "tinycolor2": "^1.4.1"
+      }
+    },
+    "node_modules/@antv/algorithm": {
+      "version": "0.1.26",
+      "resolved": "https://registry.npmjs.org/@antv/algorithm/-/algorithm-0.1.26.tgz",
+      "integrity": "sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==",
+      "dependencies": {
+        "@antv/util": "^2.0.13",
+        "tslib": "^2.0.0"
+      }
+    },
+    "node_modules/@antv/dom-util": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/@antv/dom-util/-/dom-util-2.0.4.tgz",
+      "integrity": "sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==",
+      "dependencies": {
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/event-emitter": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@antv/event-emitter/-/event-emitter-0.1.3.tgz",
+      "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg=="
+    },
+    "node_modules/@antv/g-base": {
+      "version": "0.5.16",
+      "resolved": "https://registry.npmjs.org/@antv/g-base/-/g-base-0.5.16.tgz",
+      "integrity": "sha512-jP06wggTubDPHXoKwFg3/f1lyxBX9ywwN3E/HG74Nd7DXqOXQis8tsIWW+O6dS/h9vyuXLd1/wDWkMMm3ZzXdg==",
+      "dependencies": {
+        "@antv/event-emitter": "^0.1.1",
+        "@antv/g-math": "^0.1.9",
+        "@antv/matrix-util": "^3.1.0-beta.1",
+        "@antv/path-util": "~2.0.5",
+        "@antv/util": "~2.0.13",
+        "@types/d3-timer": "^2.0.0",
+        "d3-ease": "^1.0.5",
+        "d3-interpolate": "^3.0.1",
+        "d3-timer": "^1.0.9",
+        "detect-browser": "^5.1.0",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/g-base/node_modules/d3-ease": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
+      "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
+    },
+    "node_modules/@antv/g-base/node_modules/d3-interpolate": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+      "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+      "dependencies": {
+        "d3-color": "1 - 3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@antv/g-base/node_modules/d3-timer": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+      "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+    },
+    "node_modules/@antv/g-canvas": {
+      "version": "0.5.17",
+      "resolved": "https://registry.npmjs.org/@antv/g-canvas/-/g-canvas-0.5.17.tgz",
+      "integrity": "sha512-sXYJMWTOlb/Ycb6sTKu00LcJqInXJY4t99+kSM40u2OfqrXYmaXDjHR7D2V0roMkbK/QWiWS9UnEidCR1VtMOA==",
+      "dependencies": {
+        "@antv/g-base": "^0.5.12",
+        "@antv/g-math": "^0.1.9",
+        "@antv/matrix-util": "^3.1.0-beta.1",
+        "@antv/path-util": "~2.0.5",
+        "@antv/util": "~2.0.0",
+        "gl-matrix": "^3.0.0",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/g-math": {
+      "version": "0.1.9",
+      "resolved": "https://registry.npmjs.org/@antv/g-math/-/g-math-0.1.9.tgz",
+      "integrity": "sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==",
+      "dependencies": {
+        "@antv/util": "~2.0.0",
+        "gl-matrix": "^3.0.0"
+      }
+    },
+    "node_modules/@antv/g-svg": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-0.5.7.tgz",
+      "integrity": "sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==",
+      "dependencies": {
+        "@antv/g-base": "^0.5.12",
+        "@antv/g-math": "^0.1.9",
+        "@antv/util": "~2.0.0",
+        "detect-browser": "^5.0.0",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/g-webgpu": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/@antv/g-webgpu/-/g-webgpu-0.7.2.tgz",
+      "integrity": "sha512-kw+oYGsdvj5qeUfy5DPb/jztZBV+2fmqBd3Vv8NlKatfBmv8AirYX/CCW74AUSdWm99rEiLyxFB1VdRZ6b/wnQ==",
+      "dependencies": {
+        "@antv/g-webgpu-core": "^0.7.2",
+        "@antv/g-webgpu-engine": "^0.7.2",
+        "gl-matrix": "^3.1.0",
+        "gl-vec2": "^1.3.0",
+        "lodash": "^4.17.15"
+      }
+    },
+    "node_modules/@antv/g-webgpu-core": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/@antv/g-webgpu-core/-/g-webgpu-core-0.7.2.tgz",
+      "integrity": "sha512-xUMmop7f3Rs34zFYKXLqHhDR1CQTeDl/7vI7Sn3X/73BqJc3X3HIIRvm83Fg2CjVACaOzw4WeLRXNaOCp9fz9w==",
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "gl-matrix": "^3.1.0",
+        "lodash": "^4.17.15",
+        "probe.gl": "^3.1.1"
+      }
+    },
+    "node_modules/@antv/g-webgpu-engine": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/@antv/g-webgpu-engine/-/g-webgpu-engine-0.7.2.tgz",
+      "integrity": "sha512-lx8Y93IW2cnJvdoDRKyMmTdYqSC1pOmF0nyG3PGGyA0NI9vBYVgO0KTF6hkyWjdTWVq7XDZyf/h8CJridLh3lg==",
+      "dependencies": {
+        "@antv/g-webgpu-core": "^0.7.2",
+        "gl-matrix": "^3.1.0",
+        "lodash": "^4.17.15",
+        "regl": "^1.3.11"
+      }
+    },
+    "node_modules/@antv/g6": {
+      "version": "4.8.25",
+      "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-4.8.25.tgz",
+      "integrity": "sha512-8mdTnN9QMVNQZtlXmftL8fvRsa4L+GajK58Zp51wyrGLFyjeop8R0QSkCALW45DWP2TaQeZAPtjhQUU/wf5hIg==",
+      "dependencies": {
+        "@antv/g6-pc": "0.8.25"
+      }
+    },
+    "node_modules/@antv/g6-core": {
+      "version": "0.8.24",
+      "resolved": "https://registry.npmjs.org/@antv/g6-core/-/g6-core-0.8.24.tgz",
+      "integrity": "sha512-rgI3dArAD8uoSz2+skS4ctN4x/Of33ivTIKaEYYvClxgkLZWVz9zvocy+5AWcVPBHZsAXkZcdh9zndIoWY/33A==",
+      "dependencies": {
+        "@antv/algorithm": "^0.1.26",
+        "@antv/dom-util": "^2.0.1",
+        "@antv/event-emitter": "~0.1.0",
+        "@antv/g-base": "^0.5.1",
+        "@antv/g-math": "^0.1.1",
+        "@antv/matrix-util": "^3.1.0-beta.3",
+        "@antv/path-util": "^2.0.3",
+        "@antv/util": "~2.0.5",
+        "ml-matrix": "^6.5.0",
+        "tslib": "^2.6.2"
+      }
+    },
+    "node_modules/@antv/g6-core/node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+    },
+    "node_modules/@antv/g6-element": {
+      "version": "0.8.25",
+      "resolved": "https://registry.npmjs.org/@antv/g6-element/-/g6-element-0.8.25.tgz",
+      "integrity": "sha512-bPsI+dS9rdp80O/XyV0iy6QiusyOgO/diCIsGQuLHs6rBqjLtDA5yu9JDo49mPA3JblJV0MYjbgL8Exou7Ecqw==",
+      "dependencies": {
+        "@antv/g-base": "^0.5.1",
+        "@antv/g6-core": "0.8.24",
+        "@antv/util": "~2.0.5",
+        "tslib": "^2.6.2"
+      },
+      "peerDependencies": {
+        "@antv/g6": "4.8.25"
+      }
+    },
+    "node_modules/@antv/g6-element/node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+    },
+    "node_modules/@antv/g6-pc": {
+      "version": "0.8.25",
+      "resolved": "https://registry.npmjs.org/@antv/g6-pc/-/g6-pc-0.8.25.tgz",
+      "integrity": "sha512-HZ2QyDbgsUQpQBFqrA8Zcvm/rAKN4n3I7XEeWCODZgyhQ8kz2f3qdzrRXDPmMyclexi0JF9DarCs8a2rzhV5YA==",
+      "dependencies": {
+        "@ant-design/colors": "^4.0.5",
+        "@antv/algorithm": "^0.1.26",
+        "@antv/dom-util": "^2.0.1",
+        "@antv/event-emitter": "~0.1.0",
+        "@antv/g-base": "^0.5.1",
+        "@antv/g-canvas": "^0.5.2",
+        "@antv/g-math": "^0.1.1",
+        "@antv/g-svg": "^0.5.1",
+        "@antv/g6-core": "0.8.24",
+        "@antv/g6-element": "0.8.25",
+        "@antv/g6-plugin": "0.8.25",
+        "@antv/hierarchy": "^0.6.10",
+        "@antv/layout": "^0.3.0",
+        "@antv/matrix-util": "^3.1.0-beta.3",
+        "@antv/path-util": "^2.0.3",
+        "@antv/util": "~2.0.5",
+        "color": "^3.1.3",
+        "d3-force": "^2.0.1",
+        "dagre": "^0.8.5",
+        "insert-css": "^2.0.0",
+        "ml-matrix": "^6.5.0",
+        "tslib": "^2.6.2"
+      }
+    },
+    "node_modules/@antv/g6-pc/node_modules/color": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+      "dependencies": {
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      }
+    },
+    "node_modules/@antv/g6-pc/node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/@antv/g6-pc/node_modules/d3-force": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz",
+      "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==",
+      "dependencies": {
+        "d3-dispatch": "1 - 2",
+        "d3-quadtree": "1 - 2",
+        "d3-timer": "1 - 2"
+      }
+    },
+    "node_modules/@antv/g6-pc/node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+    },
+    "node_modules/@antv/g6-plugin": {
+      "version": "0.8.25",
+      "resolved": "https://registry.npmjs.org/@antv/g6-plugin/-/g6-plugin-0.8.25.tgz",
+      "integrity": "sha512-TAincRgNzrZNGBt1TvzfQV0Ob6OO3+WCcTrCZb4PzRoOessAiMsNm0S7x+7NFm30DJVC8Ud2M7M2V9DjhVd8Wg==",
+      "dependencies": {
+        "@antv/dom-util": "^2.0.2",
+        "@antv/g-base": "^0.5.1",
+        "@antv/g-canvas": "^0.5.2",
+        "@antv/g-svg": "^0.5.2",
+        "@antv/g6-core": "0.8.24",
+        "@antv/g6-element": "0.8.25",
+        "@antv/matrix-util": "^3.1.0-beta.3",
+        "@antv/path-util": "^2.0.3",
+        "@antv/scale": "^0.3.4",
+        "@antv/util": "^2.0.9",
+        "insert-css": "^2.0.0"
+      },
+      "peerDependencies": {
+        "@antv/g6": "4.8.25"
+      }
+    },
+    "node_modules/@antv/graphlib": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@antv/graphlib/-/graphlib-1.2.0.tgz",
+      "integrity": "sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ=="
+    },
+    "node_modules/@antv/hierarchy": {
+      "version": "0.6.14",
+      "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.14.tgz",
+      "integrity": "sha512-V3uknf7bhynOqQDw2sg+9r9DwZ9pc6k/EcqyTFdfXB1+ydr7urisP0MipIuimucvQKN+Qkd+d6w601r1UIroqQ=="
+    },
+    "node_modules/@antv/layout": {
+      "version": "0.3.25",
+      "resolved": "https://registry.npmjs.org/@antv/layout/-/layout-0.3.25.tgz",
+      "integrity": "sha512-d29Aw1PXoAavMRZy7iTB9L5rMBeChFEX0BJ9ELP4TI35ySdCu07YbmPo9ju9OH/6sG2/NB3o85Ayxrre3iwX/g==",
+      "dependencies": {
+        "@antv/g-webgpu": "0.7.2",
+        "@antv/graphlib": "^1.0.0",
+        "@antv/util": "^3.3.2",
+        "d3-force": "^2.1.1",
+        "d3-quadtree": "^2.0.0",
+        "dagre-compound": "^0.0.11",
+        "ml-matrix": "6.5.0"
+      }
+    },
+    "node_modules/@antv/layout/node_modules/@antv/util": {
+      "version": "3.3.11",
+      "resolved": "https://registry.npmjs.org/@antv/util/-/util-3.3.11.tgz",
+      "integrity": "sha512-FII08DFM4ABh2q5rPYdr0hMtKXRgeZazvXaFYCs7J7uTcWDHUhczab2qOCJLNDugoj8jFag1djb7wS9ehaRYBg==",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.3",
+        "gl-matrix": "^3.3.0",
+        "tslib": "^2.3.1"
+      }
+    },
+    "node_modules/@antv/layout/node_modules/d3-force": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz",
+      "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==",
+      "dependencies": {
+        "d3-dispatch": "1 - 2",
+        "d3-quadtree": "1 - 2",
+        "d3-timer": "1 - 2"
+      }
+    },
+    "node_modules/@antv/layout/node_modules/d3-quadtree": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz",
+      "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw=="
+    },
+    "node_modules/@antv/layout/node_modules/ml-matrix": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.5.0.tgz",
+      "integrity": "sha512-sms732Dge+rs5dU4mnjE0oqLWm1WujvR2fr38LgUHRG2cjXjWlO3WJupLYaSz3++2iYr0UrGDK72OAivr3J8dg==",
+      "dependencies": {
+        "ml-array-rescale": "^1.3.1"
+      }
+    },
+    "node_modules/@antv/layout/node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+    },
+    "node_modules/@antv/matrix-util": {
+      "version": "3.1.0-beta.3",
+      "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz",
+      "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==",
+      "dependencies": {
+        "@antv/util": "^2.0.9",
+        "gl-matrix": "^3.4.3",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/path-util": {
+      "version": "2.0.15",
+      "resolved": "https://registry.npmjs.org/@antv/path-util/-/path-util-2.0.15.tgz",
+      "integrity": "sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==",
+      "dependencies": {
+        "@antv/matrix-util": "^3.0.4",
+        "@antv/util": "^2.0.9",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/path-util/node_modules/@antv/matrix-util": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.0.4.tgz",
+      "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==",
+      "dependencies": {
+        "@antv/util": "^2.0.9",
+        "gl-matrix": "^3.3.0",
+        "tslib": "^2.0.3"
+      }
+    },
+    "node_modules/@antv/scale": {
+      "version": "0.3.18",
+      "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.3.18.tgz",
+      "integrity": "sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==",
+      "dependencies": {
+        "@antv/util": "~2.0.3",
+        "fecha": "~4.2.0",
+        "tslib": "^2.0.0"
+      }
+    },
+    "node_modules/@antv/util": {
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/@antv/util/-/util-2.0.17.tgz",
+      "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==",
+      "dependencies": {
+        "csstype": "^3.0.8",
+        "tslib": "^2.0.3"
+      }
+    },
     "node_modules/@babel/code-frame": {
       "version": "7.26.2",
       "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz",
@@ -369,6 +751,31 @@
         "url": "https://opencollective.com/popperjs"
       }
     },
+    "node_modules/@probe.gl/env": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.6.0.tgz",
+      "integrity": "sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.0.0"
+      }
+    },
+    "node_modules/@probe.gl/log": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.6.0.tgz",
+      "integrity": "sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==",
+      "dependencies": {
+        "@babel/runtime": "^7.0.0",
+        "@probe.gl/env": "3.6.0"
+      }
+    },
+    "node_modules/@probe.gl/stats": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.6.0.tgz",
+      "integrity": "sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.0.0"
+      }
+    },
     "node_modules/@tootallnate/once": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
@@ -378,6 +785,11 @@
         "node": ">= 6"
       }
     },
+    "node_modules/@types/d3-timer": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.3.tgz",
+      "integrity": "sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg=="
+    },
     "node_modules/@types/eslint": {
       "version": "8.56.10",
       "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz",
@@ -3179,7 +3591,6 @@
       "version": "1.9.3",
       "resolved": "https://registry.npmmirror.com/color-convert/download/color-convert-1.9.3.tgz?cache=0&sync_timestamp=1566248870121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor-convert%2Fdownload%2Fcolor-convert-1.9.3.tgz",
       "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
-      "dev": true,
       "dependencies": {
         "color-name": "1.1.3"
       }
@@ -3187,8 +3598,7 @@
     "node_modules/color-name": {
       "version": "1.1.3",
       "resolved": "https://registry.npmmirror.com/color-name/download/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
-      "dev": true
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
     },
     "node_modules/color-string": {
       "version": "0.3.0",
@@ -4754,6 +5164,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/csstype": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+      "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+    },
     "node_modules/cuint": {
       "version": "0.2.2",
       "resolved": "https://registry.npmmirror.com/cuint/download/cuint-0.2.2.tgz",
@@ -5070,6 +5485,26 @@
         "d3-transition": "1"
       }
     },
+    "node_modules/dagre": {
+      "version": "0.8.5",
+      "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz",
+      "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==",
+      "dependencies": {
+        "graphlib": "^2.1.8",
+        "lodash": "^4.17.15"
+      }
+    },
+    "node_modules/dagre-compound": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmjs.org/dagre-compound/-/dagre-compound-0.0.11.tgz",
+      "integrity": "sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==",
+      "engines": {
+        "node": ">=6.0.0"
+      },
+      "peerDependencies": {
+        "dagre": "^0.8.5"
+      }
+    },
     "node_modules/dashdash": {
       "version": "1.14.1",
       "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
@@ -5310,6 +5745,11 @@
       "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
       "dev": true
     },
+    "node_modules/detect-browser": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz",
+      "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w=="
+    },
     "node_modules/detect-indent": {
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/detect-indent/-/detect-indent-4.0.0.tgz",
@@ -5979,8 +6419,7 @@
     "node_modules/eventemitter3": {
       "version": "4.0.7",
       "resolved": "https://registry.npmmirror.com/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517728928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz",
-      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
-      "dev": true
+      "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8="
     },
     "node_modules/events": {
       "version": "3.3.0",
@@ -6320,6 +6759,11 @@
         "node": ">=0.4.0"
       }
     },
+    "node_modules/fecha": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+      "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="
+    },
     "node_modules/fflate": {
       "version": "0.3.11",
       "resolved": "https://registry.npmmirror.com/fflate/download/fflate-0.3.11.tgz?cache=0&sync_timestamp=1616295166909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffflate%2Fdownload%2Ffflate-0.3.11.tgz",
@@ -6789,6 +7233,16 @@
         "assert-plus": "^1.0.0"
       }
     },
+    "node_modules/gl-matrix": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz",
+      "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
+    },
+    "node_modules/gl-vec2": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/gl-vec2/-/gl-vec2-1.3.0.tgz",
+      "integrity": "sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A=="
+    },
     "node_modules/glob": {
       "version": "7.1.6",
       "resolved": "https://registry.npmmirror.com/glob/download/glob-7.1.6.tgz",
@@ -6898,6 +7352,14 @@
       "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
       "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
     },
+    "node_modules/graphlib": {
+      "version": "2.1.8",
+      "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz",
+      "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==",
+      "dependencies": {
+        "lodash": "^4.17.15"
+      }
+    },
     "node_modules/growly": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/growly/download/growly-1.3.0.tgz",
@@ -7731,6 +8193,11 @@
       "resolved": "https://registry.npmmirror.com/inherits/download/inherits-2.0.4.tgz",
       "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
     },
+    "node_modules/insert-css": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz",
+      "integrity": "sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA=="
+    },
     "node_modules/internal-ip": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/internal-ip/download/internal-ip-1.2.0.tgz?cache=0&sync_timestamp=1605885528721&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-1.2.0.tgz",
@@ -7813,6 +8280,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/is-any-array": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz",
+      "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ=="
+    },
     "node_modules/is-arguments": {
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/is-arguments/download/is-arguments-1.1.0.tgz?cache=0&sync_timestamp=1607117337190&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-arguments%2Fdownload%2Fis-arguments-1.1.0.tgz",
@@ -9729,6 +10201,41 @@
         "mkdirp": "bin/cmd.js"
       }
     },
+    "node_modules/ml-array-max": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz",
+      "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==",
+      "dependencies": {
+        "is-any-array": "^2.0.0"
+      }
+    },
+    "node_modules/ml-array-min": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz",
+      "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==",
+      "dependencies": {
+        "is-any-array": "^2.0.0"
+      }
+    },
+    "node_modules/ml-array-rescale": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz",
+      "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==",
+      "dependencies": {
+        "is-any-array": "^2.0.0",
+        "ml-array-max": "^1.2.4",
+        "ml-array-min": "^1.2.3"
+      }
+    },
+    "node_modules/ml-matrix": {
+      "version": "6.12.1",
+      "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.12.1.tgz",
+      "integrity": "sha512-TJ+8eOFdp+INvzR4zAuwBQJznDUfktMtOB6g/hUcGh3rcyjxbz4Te57Pgri8Q9bhSQ7Zys4IYOGhFdnlgeB6Lw==",
+      "dependencies": {
+        "is-any-array": "^2.0.1",
+        "ml-array-rescale": "^1.3.7"
+      }
+    },
     "node_modules/move-concurrently": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
@@ -14455,6 +14962,17 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/probe.gl": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.6.0.tgz",
+      "integrity": "sha512-19JydJWI7+DtR4feV+pu4Mn1I5TAc0xojuxVgZdXIyfmTLfUaFnk4OloWK1bKbPtkgGKLr2lnbnCXmpZEcEp9g==",
+      "dependencies": {
+        "@babel/runtime": "^7.0.0",
+        "@probe.gl/env": "3.6.0",
+        "@probe.gl/log": "3.6.0",
+        "@probe.gl/stats": "3.6.0"
+      }
+    },
     "node_modules/process": {
       "version": "0.11.10",
       "resolved": "https://registry.npmmirror.com/process/download/process-0.11.10.tgz",
@@ -14925,6 +15443,11 @@
         "jsesc": "bin/jsesc"
       }
     },
+    "node_modules/regl": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/regl/-/regl-1.7.0.tgz",
+      "integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w=="
+    },
     "node_modules/relateurl": {
       "version": "0.2.7",
       "resolved": "https://registry.npmmirror.com/relateurl/download/relateurl-0.2.7.tgz",
@@ -15729,7 +16252,6 @@
       "version": "0.2.2",
       "resolved": "https://registry.npmmirror.com/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
       "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
-      "dev": true,
       "dependencies": {
         "is-arrayish": "^0.3.1"
       }
@@ -15737,8 +16259,7 @@
     "node_modules/simple-swizzle/node_modules/is-arrayish": {
       "version": "0.3.2",
       "resolved": "https://registry.npmmirror.com/is-arrayish/download/is-arrayish-0.3.2.tgz",
-      "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=",
-      "dev": true
+      "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM="
     },
     "node_modules/slash": {
       "version": "1.0.0",
@@ -16727,6 +17248,11 @@
       "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
       "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
     },
+    "node_modules/tinycolor2": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+      "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+    },
     "node_modules/to-arraybuffer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmmirror.com/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
     "build": "node build/build.js"
   },
   "dependencies": {
+    "@antv/g6": "^4.8.25",
     "@ffmpeg/ffmpeg": "^0.9.8",
     "@microsoft/fetch-event-source": "^2.0.1",
     "@vue-office/docx": "^1.6.2",

+ 58 - 7
src/components/pages/knowledge/components/checkDialog.vue

@@ -50,7 +50,7 @@
         </div>
         <div class="noneData" v-if="!chunksArray.length">{{lang.sliceDataNull}}</div>
         <el-pagination v-if="chunksArray.length > 0" style="margin-top: 10px" background layout="prev, pager, next"
-          :page-size="limit" :total="total" @current-change="handleCurrentChange">
+          :page-size="limit" :total="total" :current-page="page" @current-change="handleCurrentChange">
         </el-pagination>
       </div>
       <div class="chunkBox" v-show="type == 3" v-loading="entitiesLoading">
@@ -62,7 +62,7 @@
         </div>
         <div class="noneData" v-if="!entitiesArray.length">{{lang.entDataNull}}</div>
         <el-pagination v-if="entitiesArray.length > 0" style="margin-top: 10px" background layout="prev, pager, next"
-          :page-size="limit2" :total="total2" @current-change="handleCurrentChange2">
+          :page-size="limit2" :total="total2" :current-page="page2" @current-change="handleCurrentChange2">
         </el-pagination>
       </div>
       <div class="chunkBox" v-show="type == 4" v-loading="relationshipsLoading">
@@ -75,12 +75,12 @@
         </div>
         <div class="noneData" v-if="!relationshipsArray.length">{{lang.reaDataNUll}}</div>
         <el-pagination v-if="relationshipsArray.length > 0" style="margin-top: 10px" background
-          layout="prev, pager, next" :page-size="limit3" :total="total3" @current-change="handleCurrentChange3">
+          layout="prev, pager, next" :page-size="limit3" :total="total3" :current-page="page3" @current-change="handleCurrentChange3">
         </el-pagination>
       </div>
-      <div class="tuBox" v-show="type == 2" v-loading="graphLoading">
+      <div class="tuBox" v-if="type == 2" v-loading="graphLoading">
         <div v-if="!Object.keys(graphJson).length" class="noneData">{{lang.graphDataNull}}</div>
-        <graph v-if="Object.keys(graphJson).length" :Json="graphJson"></graph>
+        <graph ref="graphComponent" v-if="Object.keys(graphJson).length" :Json="graphJson"></graph>
       </div>
     </div>
     <span slot="footer">
@@ -122,6 +122,16 @@ export default {
       full: false,
     };
   },
+  watch: {
+    full() {
+      // The DOM update and CSS transition need time.
+      setTimeout(() => {
+        if (this.$refs.graphComponent) {
+          this.$refs.graphComponent.handleResize();
+        }
+      }, 300);
+    }
+  },
   computed: {
     getState() {
       return function (item) {
@@ -351,6 +361,47 @@ export default {
         lines: lines
       };
     },
+    transformData2(data) {
+        const nodes2 = [];
+        const lines2 = [];
+        // 构建节点
+        const nodeMap2 = new Map();
+
+        data.results.forEach(item => {
+            const subject = item.subject;
+            const object = item.object;
+            const subjectId = item.subjectId;
+            const objectId = item.objectId;
+
+            // 构建节点
+            const addNode = (id, label) => {
+                if (!nodeMap2.has(id)) {
+                    nodeMap2.set(id, { id, label });
+                    nodes2.push(nodeMap2.get(id));
+                }
+            };
+
+            addNode(subjectId, subject);
+            addNode(objectId, object);
+
+            // 添加关系线
+            lines2.push({
+                source: item.subjectId,
+                target: item.objectId,
+                predicate: item.predicate
+            });
+        });
+
+        console.log({
+            nodes: nodes2,
+            edges: lines2
+        });
+
+        return {
+            nodes: nodes2,
+            edges: lines2
+        };
+    },
     setGrapJson() {
       this.graphLoading = true;
       let params = {
@@ -364,8 +415,8 @@ export default {
           this.graphLoading = false;
           console.log(res.data);
           if (res.data.result.results.length) {
-            console.log(this.transformData(res.data.result));
-            this.graphJson = this.transformData(res.data.result)
+            console.log(this.transformData2(res.data.result));
+            this.graphJson = this.transformData2(res.data.result)
           }else {
             this.graphJson = {}
           }

+ 80 - 0
src/components/pages/knowledge/components/graph copy.vue

@@ -0,0 +1,80 @@
+<template>
+    <div style="width: 100%; max-height: 600px; overflow: auto;padding-bottom: 10px;" class="content">
+        <div style="height:600px;position: relative;">
+            <RelationGraph ref="seeksRelationGraph" :options="graphOptions" :on-node-click="onNodeClick"
+                :on-line-click="onLineClick" />
+        </div>
+    </div>
+</template>
+
+<script>
+import RelationGraph from 'relation-graph'
+
+export default {
+    props: ['Json'],
+    components: {
+        RelationGraph,
+    },
+    data() {
+        return {
+            graphOptions: {
+                allowSwitchLineShape: true,
+                zoomToFitWhenRefresh: true,
+                moveToCenterWhenRefresh: true,
+                // allowSwitchJunctionPoint: true,
+                defaultJunctionPoint: 'border',
+                // backgroundImage: "https://ssl.relation-graph.com/images/relatioon-graph-canvas-bg.png",
+                backgroundImageNoRepeat: true,
+                useAnimationWhenRefresh: true,
+                defaultNodeBorderWidth: 5,
+                defaultNodeColor: "#0C7FF6",
+                defaultNodeBorderColor: "#0C7FF6",
+                defaultLineShape: 5,
+                hideNodeContentByZoom: true,
+                layouts: [
+                    {
+                        label: "中心",
+                        layoutName: "center",
+                        centerOffset_x: 0,
+                        centerOffset_y: 0,
+                        distanceCoefficient: 1
+                    }
+                ]
+            }
+        }
+    },
+    mounted() {
+        this.showSeeksGraph()
+    },
+    watch: {
+        Json: {
+            immediate: true,
+            deep: true,
+            handler(newValue, oldValue) {
+                this.Json = newValue
+                this.showSeeksGraph()
+            }
+        }
+    },
+    methods: {
+        showSeeksGraph() {
+            const __graph_json_data = this.Json
+            // 以上数据中的node和link可以参考"Node节点"和"Link关系"中的参数进行配置 
+            this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
+                // Called when the relation-graph is completed 
+            })
+        },
+        onNodeClick(nodeObject, $event) {
+            console.log('onNodeClick:', nodeObject)
+        },
+        onLineClick(lineObject, $event) {
+            console.log('onLineClick:', lineObject)
+        }
+    }
+}
+
+</script>
+
+<style>
+
+</style>

+ 90 - 49
src/components/pages/knowledge/components/graph.vue

@@ -1,80 +1,121 @@
 <template>
     <div style="width: 100%; max-height: 600px; overflow: auto;padding-bottom: 10px;" class="content">
-        <div style="height:600px;position: relative;">
-            <RelationGraph ref="seeksRelationGraph" :options="graphOptions" :on-node-click="onNodeClick"
-                :on-line-click="onLineClick" />
-        </div>
+        <div style="height:600px;position: relative;" ref="container"></div>
     </div>
 </template>
 
 <script>
-import RelationGraph from 'relation-graph'
+import G6 from '@antv/g6';
 
 export default {
     props: ['Json'],
-    components: {
-        RelationGraph,
-    },
     data() {
         return {
-            graphOptions: {
-                allowSwitchLineShape: true,
-                zoomToFitWhenRefresh: true,
-                moveToCenterWhenRefresh: true,
-                // allowSwitchJunctionPoint: true,
-                defaultJunctionPoint: 'border',
-                // backgroundImage: "https://ssl.relation-graph.com/images/relatioon-graph-canvas-bg.png",
-                backgroundImageNoRepeat: true,
-                useAnimationWhenRefresh: true,
-                defaultNodeBorderWidth: 5,
-                defaultNodeColor: "#0C7FF6",
-                defaultNodeBorderColor: "#0C7FF6",
-                defaultLineShape: 5,
-                hideNodeContentByZoom: true,
-                layouts: [
-                    {
-                        label: "中心",
-                        layoutName: "center",
-                        centerOffset_x: 0,
-                        centerOffset_y: 0,
-                        distanceCoefficient: 1
-                    }
-                ]
-            }
+            graph: null,
         }
     },
     mounted() {
-        this.showSeeksGraph()
+        this.$nextTick(() => {
+            if (this.Json && this.Json.nodes) {
+                this.showSeeksGraph(this.Json);
+            }
+        });
+        window.addEventListener('resize', this.handleResize);
+    },
+    beforeDestroy() {
+        window.removeEventListener('resize', this.handleResize);
+        if (this.graph) {
+            this.graph.destroy();
+        }
     },
     watch: {
         Json: {
             immediate: true,
             deep: true,
             handler(newValue, oldValue) {
-                this.Json = newValue
-                this.showSeeksGraph()
+                this.$nextTick(() => {
+                    if (newValue && newValue.nodes && this.$refs.container) {
+                        this.showSeeksGraph(newValue);
+                    }
+                });
             }
         }
     },
     methods: {
-        showSeeksGraph() {
-            const __graph_json_data = this.Json
-            // 以上数据中的node和link可以参考"Node节点"和"Link关系"中的参数进行配置 
-            this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
-                // Called when the relation-graph is completed 
-            })
-        },
-        onNodeClick(nodeObject, $event) {
-            console.log('onNodeClick:', nodeObject)
+        showSeeksGraph(data) {
+            if (this.graph) {
+                this.graph.destroy();
+            }
+            console.log(data);
+
+            const container = this.$refs.container;
+            if (!container) return;
+            
+            this.graph = new G6.Graph({
+                container: container,
+                width: container.scrollWidth,
+                height: container.scrollHeight || 600,
+                fitView: true,
+                modes: {
+                    default: ['drag-canvas', 'zoom-canvas', 'drag-node'],
+                },
+                layout: {
+                    type: 'force',
+                    preventOverlap: true,
+                    nodeSpacing: 30,
+                    linkDistance: 200,
+                    nodeStrength: -60,
+                    edgeStrength: 0.1,
+                },
+                defaultNode: {
+                    size: 40,
+                    labelCfg: {
+                        style: {
+                            fill: '#000',
+                            fontSize: 12
+                        }
+                    }
+                },
+                defaultEdge: {
+                    style: {
+                        endArrow: true,
+                    },
+                     labelCfg: {
+                        autoRotate: true,
+                    }
+                }
+            });
+
+
+            const graphData = {
+                nodes: data.nodes,
+                edges: data.edges.map(edge => ({
+                    ...edge,
+                    label: edge.predicate
+                }))
+            };
+
+            this.graph.data(graphData);
+            this.graph.render();
+
+            this.graph.on('node:mouseenter', (e) => {
+                this.graph.setItemState(e.item, 'hover', true);
+            });
+
+            this.graph.on('node:mouseleave', (e) => {
+                this.graph.setItemState(e.item, 'hover', false);
+            });
         },
-        onLineClick(lineObject, $event) {
-            console.log('onLineClick:', lineObject)
+        handleResize() {
+            if (!this.graph || this.graph.get('destroyed')) return;
+            if (!this.$refs.container) return;
+            
+            const container = this.$refs.container;
+            this.graph.changeSize(container.scrollWidth, container.scrollHeight || 600);
         }
     }
 }
 
 </script>
 
-<style>
-
-</style>
+<style></style>

部分文件因文件數量過多而無法顯示