提交 e4858893 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 修改旅程模板连接线

上级 5f8ffb99
......@@ -115,6 +115,7 @@
"useArrayFilter": true,
"useArrayFind": true,
"useArrayFindIndex": true,
"useArrayFindLast": true,
"useArrayJoin": true,
"useArrayMap": true,
"useArrayReduce": true,
......
// Generated by 'unplugin-auto-import'
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-auto-import
export {}
declare global {
const $$: typeof import('vue/macros')['$$']
......@@ -109,6 +112,7 @@ declare global {
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
......@@ -276,5 +280,5 @@ declare global {
// for type re-export
declare global {
// @ts-ignore
export type { Component,ComponentPublicInstance,ComputedRef,InjectionKey,PropType,Ref,VNode } from 'vue'
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
}
......@@ -8,17 +8,17 @@
"name": "saas-dml",
"version": "0.0.0",
"dependencies": {
"@element-plus/icons-vue": "^2.0.10",
"@tinymce/tinymce-vue": "^5.0.0",
"@element-plus/icons-vue": "^2.1.0",
"@tinymce/tinymce-vue": "^5.0.1",
"@vue-flow/controls": "^1.0.4",
"@vue-flow/core": "^1.15.2",
"@vue-flow/core": "^1.15.5",
"@vueuse/core": "^9.13.0",
"axios": "^1.3.4",
"blueimp-md5": "^2.19.0",
"element-plus": "^2.2.32",
"element-plus": "^2.2.35",
"lodash-es": "^4.17.21",
"nanoid": "^4.0.1",
"pinia": "^2.0.32",
"pinia": "^2.0.33",
"vue": "^3.2.47",
"vue-router": "^4.1.6"
},
......@@ -35,7 +35,7 @@
"eslint-plugin-vue": "^9.9.0",
"sass": "^1.58.3",
"typescript": "~4.9.5",
"unplugin-auto-import": "^0.15.0",
"unplugin-auto-import": "^0.15.1",
"vite": "^4.1.4",
"vue-tsc": "^1.2.0"
}
......@@ -45,6 +45,8 @@
"resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.0.tgz",
"integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.1.0",
"@jridgewell/trace-mapping": "^0.3.9"
......@@ -64,6 +66,8 @@
"resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.18.6.tgz",
"integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/highlight": "^7.18.6"
},
......@@ -76,6 +80,8 @@
"resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.21.0.tgz",
"integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -85,6 +91,8 @@
"resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.21.0.tgz",
"integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.18.6",
......@@ -111,6 +119,8 @@
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"semver": "bin/semver.js"
}
......@@ -120,6 +130,8 @@
"resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.21.1.tgz",
"integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/types": "^7.21.0",
"@jridgewell/gen-mapping": "^0.3.2",
......@@ -135,6 +147,8 @@
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
"integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
......@@ -149,6 +163,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
"integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/compat-data": "^7.20.5",
"@babel/helper-validator-option": "^7.18.6",
......@@ -168,6 +184,8 @@
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"yallist": "^3.0.2"
}
......@@ -177,6 +195,8 @@
"resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"semver": "bin/semver.js"
}
......@@ -185,13 +205,17 @@
"version": "3.1.1",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/@babel/helper-environment-visitor": {
"version": "7.18.9",
"resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
"integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -201,6 +225,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
"integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/template": "^7.20.7",
"@babel/types": "^7.21.0"
......@@ -214,6 +240,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
"integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/types": "^7.18.6"
},
......@@ -226,6 +254,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
"integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/types": "^7.18.6"
},
......@@ -238,6 +268,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
"integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/helper-environment-visitor": "^7.18.9",
"@babel/helper-module-imports": "^7.18.6",
......@@ -257,6 +289,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
"integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/types": "^7.20.2"
},
......@@ -269,6 +303,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
"integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/types": "^7.18.6"
},
......@@ -281,6 +317,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
"integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -290,6 +328,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -299,6 +339,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
"integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -308,6 +350,8 @@
"resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.21.0.tgz",
"integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/template": "^7.20.7",
"@babel/traverse": "^7.21.0",
......@@ -322,6 +366,8 @@
"resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.18.6.tgz",
"integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.18.6",
"chalk": "^2.0.0",
......@@ -336,6 +382,8 @@
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"color-convert": "^1.9.0"
},
......@@ -348,6 +396,8 @@
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
......@@ -362,6 +412,8 @@
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"color-name": "1.1.3"
}
......@@ -370,13 +422,17 @@
"version": "1.1.3",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/@babel/highlight/node_modules/escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=0.8.0"
}
......@@ -386,6 +442,8 @@
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=4"
}
......@@ -395,6 +453,8 @@
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"has-flag": "^3.0.0"
},
......@@ -418,6 +478,8 @@
"resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.21.2.tgz",
"integrity": "sha512-ySP/TJcyqMJVg1M/lmnPVi6L+F+IJpQ4+0lqtf723LERbk1N8/0JgLgm346cRAzfHaoXkLq/M/mJBd2uo25RBA==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -427,6 +489,8 @@
"resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.20.7.tgz",
"integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.18.6",
"@babel/parser": "^7.20.7",
......@@ -441,6 +505,8 @@
"resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.21.2.tgz",
"integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.18.6",
"@babel/generator": "^7.21.1",
......@@ -462,6 +528,8 @@
"resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=4"
}
......@@ -471,6 +539,8 @@
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.21.2.tgz",
"integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/helper-string-parser": "^7.19.4",
"@babel/helper-validator-identifier": "^7.19.1",
......@@ -489,9 +559,9 @@
}
},
"node_modules/@element-plus/icons-vue": {
"version": "2.0.10",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz",
"integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==",
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
"integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
"peerDependencies": {
"vue": "^3.2.0"
}
......@@ -924,6 +994,8 @@
"resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
"integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.0",
"@jridgewell/sourcemap-codec": "^1.4.10"
......@@ -937,6 +1009,8 @@
"resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
"integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.0.0"
}
......@@ -946,6 +1020,8 @@
"resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.0.0"
}
......@@ -961,6 +1037,8 @@
"resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/resolve-uri": "3.1.0",
"@jridgewell/sourcemap-codec": "1.4.14"
......@@ -1006,6 +1084,8 @@
"resolved": "https://registry.npmmirror.com/@nuxt/kit/-/kit-3.2.2.tgz",
"integrity": "sha512-T3UeLxGSNl7dQgKzmtBbPEkUiiBYgXI+KkemmpkYbQK/l+bWy2f9VQw/Rl0HkQLfRTE2fS8q8jhsOedFiEnHQQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@nuxt/schema": "3.2.2",
"c12": "^1.1.2",
......@@ -1035,6 +1115,8 @@
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=12"
}
......@@ -1044,6 +1126,8 @@
"resolved": "https://registry.npmmirror.com/globby/-/globby-13.1.3.tgz",
"integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"dir-glob": "^3.0.1",
"fast-glob": "^3.2.11",
......@@ -1060,6 +1144,8 @@
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
......@@ -1072,6 +1158,8 @@
"resolved": "https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz",
"integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=12"
}
......@@ -1081,6 +1169,8 @@
"resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.2.4.tgz",
"integrity": "sha512-qMgmeEGqqrrmEtm0dqxMG37J6xBtrriqxq9hILvDb+e6l2F0yTnJomLoCCp0eghLR7bYGeBsUU5Y0oyiUYhViw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.2",
"escape-string-regexp": "^5.0.0",
......@@ -1100,6 +1190,8 @@
"resolved": "https://registry.npmmirror.com/@nuxt/schema/-/schema-3.2.2.tgz",
"integrity": "sha512-o3O2OqLAMKqb/DlGpK8eJq4tH29NA4OMaohknSSXl35+Nw/qHB5eOLDz+cFxNE+MKHoMj1rRVMCfi/Y/PrCN6g==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"c12": "^1.1.2",
"create-require": "^1.1.1",
......@@ -1124,6 +1216,8 @@
"resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=12"
}
......@@ -1133,6 +1227,8 @@
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
......@@ -1145,6 +1241,8 @@
"resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.2.4.tgz",
"integrity": "sha512-qMgmeEGqqrrmEtm0dqxMG37J6xBtrriqxq9hILvDb+e6l2F0yTnJomLoCCp0eghLR7bYGeBsUU5Y0oyiUYhViw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.2",
"escape-string-regexp": "^5.0.0",
......@@ -1194,9 +1292,9 @@
"dev": true
},
"node_modules/@tinymce/tinymce-vue": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/@tinymce/tinymce-vue/-/tinymce-vue-5.0.0.tgz",
"integrity": "sha512-1HRCNa2eGdztOKShYAiHIry50LTU6YJG//qSP9AJElrXhb3BIBN0Bef6E56nZObVgwCgSmI4cnX35VU9D49aow==",
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/@tinymce/tinymce-vue/-/tinymce-vue-5.0.1.tgz",
"integrity": "sha512-RzJflpf06VimGQNgCYMasS5+gEKTOs5ddOgrBuTGOMsHOeKBhMTim9ePjiwYpCpilyZgR5ZDyo5NfZgrKOHHEA==",
"dependencies": {
"tinymce": "^6.0.0 || ^5.5.1"
},
......@@ -1513,9 +1611,9 @@
}
},
"node_modules/@vue-flow/core": {
"version": "1.15.2",
"resolved": "https://registry.npmmirror.com/@vue-flow/core/-/core-1.15.2.tgz",
"integrity": "sha512-4cfOvH56Yj9tlV/k4n11lZXKSCRomfHQJxaIj0joPMLDAc650MrQ9qhKHIn+yjB9cGujsYH1PiaaYmo13zQRyw==",
"version": "1.15.5",
"resolved": "https://registry.npmmirror.com/@vue-flow/core/-/core-1.15.5.tgz",
"integrity": "sha512-HvCxr/JaY8fpJuSrAkhM8d3hqBJe1JBiqlBBSbA02I9AZ4tHqRcb2NfoNMf43ReDtjT1d6kjNAsBF3H2/PRNKw==",
"dependencies": {
"@vueuse/core": "^9.13.0",
"d3-drag": "^3.0.0",
......@@ -2016,6 +2114,8 @@
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
"integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"caniuse-lite": "^1.0.30001449",
"electron-to-chromium": "^1.4.284",
......@@ -2049,6 +2149,8 @@
"resolved": "https://registry.npmmirror.com/c12/-/c12-1.1.2.tgz",
"integrity": "sha512-fHT5HDEHNMb2oImnqJ88/UlpEOkY/chdyYxSd3YCpvBqBvU0IDlHTkNc7GnjObDMxdis2lL+rwlQcNq8VeZESA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"defu": "^6.1.2",
"dotenv": "^16.0.3",
......@@ -2083,7 +2185,9 @@
"version": "1.0.30001458",
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz",
"integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/chalk": {
"version": "5.2.0",
......@@ -2132,6 +2236,8 @@
"resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=10"
}
......@@ -2158,7 +2264,9 @@
"version": "2.0.19",
"resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.19.tgz",
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/combined-stream": {
"version": "1.0.8",
......@@ -2181,7 +2289,9 @@
"version": "2.15.3",
"resolved": "https://registry.npmmirror.com/consola/-/consola-2.15.3.tgz",
"integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/content-type": {
"version": "1.0.4",
......@@ -2196,7 +2306,9 @@
"version": "1.9.0",
"resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/copy-to": {
"version": "2.0.1",
......@@ -2214,7 +2326,9 @@
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/cross-spawn": {
"version": "7.0.3",
......@@ -2411,7 +2525,9 @@
"version": "6.1.2",
"resolved": "https://registry.npmmirror.com/defu/-/defu-6.1.2.tgz",
"integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/degenerator": {
"version": "3.0.2",
......@@ -2449,7 +2565,9 @@
"version": "1.2.2",
"resolved": "https://registry.npmmirror.com/destr/-/destr-1.2.2.tgz",
"integrity": "sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/destroy": {
"version": "1.2.0",
......@@ -2502,6 +2620,8 @@
"resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.0.3.tgz",
"integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=12"
}
......@@ -2516,12 +2636,14 @@
"version": "1.4.313",
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.313.tgz",
"integrity": "sha512-QckB9OVqr2oybjIrbMI99uF+b9+iTja5weFe0ePbqLb5BHqXOJUO1SG6kDj/1WtWPRIBr51N153AEq8m7HuIaA==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/element-plus": {
"version": "2.2.32",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.32.tgz",
"integrity": "sha512-DTJMhYOy6MApbmh6z/95hPTK5WrBiNHGzV4IN+uEkup1WoimQ+Qyt8RxKdTe/X1LWEJ8YgWv/Cl8P4ocrt5z5g==",
"version": "2.2.35",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.35.tgz",
"integrity": "sha512-if5QW41hQwVltekRS+avXYtqjRNra/fSgGstXKPR1lSJ81PWQccy+oztw/OP+USqZP/OejFs7rjLPk5MHgT40w==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6",
......@@ -2566,6 +2688,8 @@
"resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
"integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"graceful-fs": "^4.1.2",
"memory-fs": "^0.5.0",
......@@ -2580,6 +2704,8 @@
"resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
"integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"prr": "~1.0.1"
},
......@@ -2629,6 +2755,8 @@
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6"
}
......@@ -3086,6 +3214,8 @@
"resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz",
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"flat": "cli.js"
}
......@@ -3165,6 +3295,8 @@
"resolved": "https://registry.npmmirror.com/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"minipass": "^3.0.0"
},
......@@ -3177,6 +3309,8 @@
"resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
......@@ -3252,6 +3386,8 @@
"resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6.9.0"
}
......@@ -3295,6 +3431,8 @@
"resolved": "https://registry.npmmirror.com/giget/-/giget-1.1.2.tgz",
"integrity": "sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"colorette": "^2.0.19",
"defu": "^6.1.2",
......@@ -3412,7 +3550,9 @@
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
"integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/he": {
"version": "1.2.0",
......@@ -3427,7 +3567,9 @@
"version": "5.4.2",
"resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.4.2.tgz",
"integrity": "sha512-6rOvaUiNKy9lET1X0ECnyZ5O5kSV0PJbtA5yZUgdEF7fGJEVwSLSislltyt7nFwVVALYHQJtfGeAR2Y0A0uJkg==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/http-errors": {
"version": "2.0.0",
......@@ -3670,6 +3812,8 @@
"resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.17.1.tgz",
"integrity": "sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"jiti": "bin/jiti.js"
}
......@@ -3690,7 +3834,9 @@
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/js-yaml": {
"version": "4.1.0",
......@@ -3709,6 +3855,8 @@
"resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"jsesc": "bin/jsesc"
},
......@@ -3733,6 +3881,8 @@
"resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"json5": "lib/cli.js"
},
......@@ -3765,7 +3915,9 @@
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/knitwork/-/knitwork-1.0.0.tgz",
"integrity": "sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/ko-sleep": {
"version": "1.1.4",
......@@ -3834,7 +3986,9 @@
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/lodash.merge": {
"version": "4.6.2",
......@@ -3847,6 +4001,8 @@
"resolved": "https://registry.npmmirror.com/lodash.template/-/lodash.template-4.5.0.tgz",
"integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"lodash._reinterpolate": "^3.0.0",
"lodash.templatesettings": "^4.0.0"
......@@ -3857,6 +4013,8 @@
"resolved": "https://registry.npmmirror.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
"integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"lodash._reinterpolate": "^3.0.0"
}
......@@ -3891,6 +4049,8 @@
"resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz",
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"errno": "^0.1.3",
"readable-stream": "^2.0.1"
......@@ -3981,6 +4141,8 @@
"resolved": "https://registry.npmmirror.com/minipass/-/minipass-4.2.4.tgz",
"integrity": "sha512-lwycX3cBMTvcejsHITUgYj6Gy6A7Nh4Q6h9NP4sTHY1ccJlC7yKzDmiShEHsJ16Jf1nKGDEaiHxiltsJEvk0nQ==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=8"
}
......@@ -3990,6 +4152,8 @@
"resolved": "https://registry.npmmirror.com/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
......@@ -4003,6 +4167,8 @@
"resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"yallist": "^4.0.0"
},
......@@ -4039,6 +4205,8 @@
"resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz",
"integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=4"
}
......@@ -4130,13 +4298,17 @@
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/node-fetch-native/-/node-fetch-native-1.0.2.tgz",
"integrity": "sha512-KIkvH1jl6b3O7es/0ShyCgWLcfXxlBrLBbP3rOr23WArC66IMcU4DeZEeYEOwnopYhawLTn7/y+YtmASe8DFVQ==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/node-releases": {
"version": "2.0.10",
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz",
"integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/normalize-path": {
"version": "3.0.0",
......@@ -4375,9 +4547,9 @@
}
},
"node_modules/pinia": {
"version": "2.0.32",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.32.tgz",
"integrity": "sha512-8Tw4OrpCSJ028UUyp0gYPP/wyjigLoEceuO/x1G+FlHVf73337e5vLm4uDmrRIoBG1hvaed/eSHnrCFjOc4nkA==",
"version": "2.0.33",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.33.tgz",
"integrity": "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==",
"dependencies": {
"@vue/devtools-api": "^6.5.0",
"vue-demi": "*"
......@@ -4453,6 +4625,8 @@
"resolved": "https://registry.npmmirror.com/postcss-import-resolver/-/postcss-import-resolver-2.0.0.tgz",
"integrity": "sha512-y001XYgGvVwgxyxw9J1a5kqM/vtmIQGzx34g0A0Oy44MFcy/ZboZw1hu/iN3VYFjSTRzbvd7zZJJz0Kh0AGkTw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"enhanced-resolve": "^4.1.1"
}
......@@ -4539,7 +4713,9 @@
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
"integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/pump": {
"version": "3.0.0",
......@@ -4598,6 +4774,8 @@
"resolved": "https://registry.npmmirror.com/rc9/-/rc9-2.0.1.tgz",
"integrity": "sha512-9EfjLgNmzP9255YX8bGnILQcmdtOXKtUlFTu8bOZPJVtaUDZ2imswcUdpK51tMjTRQyB7r5RebNijrzuyGXcVA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"defu": "^6.1.2",
"destr": "^1.2.2",
......@@ -4901,7 +5079,9 @@
"version": "3.3.2",
"resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.3.2.tgz",
"integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==",
"dev": true
"dev": true,
"optional": true,
"peer": true
},
"node_modules/stream-http": {
"version": "2.8.2",
......@@ -4990,6 +5170,8 @@
"resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz",
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=6"
}
......@@ -4999,6 +5181,8 @@
"resolved": "https://registry.npmmirror.com/tar/-/tar-6.1.13.tgz",
"integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
......@@ -5016,6 +5200,8 @@
"resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
"dev": true,
"optional": true,
"peer": true,
"bin": {
"mkdirp": "bin/cmd.js"
},
......@@ -5072,6 +5258,8 @@
"resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=4"
}
......@@ -5163,6 +5351,8 @@
"resolved": "https://registry.npmmirror.com/unctx/-/unctx-2.1.2.tgz",
"integrity": "sha512-KK18aLRKe3OlbPyHbXAkIWSU3xK8GInomXfA7fzDMGFXQ1crX1UWrCzKesVXeUyHIayHUrnTvf87IPCKMyeKTg==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"acorn": "^8.8.2",
"estree-walker": "^3.0.3",
......@@ -5175,6 +5365,8 @@
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@types/estree": "^1.0.0"
}
......@@ -5184,6 +5376,8 @@
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.27.0.tgz",
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.13"
},
......@@ -5274,27 +5468,30 @@
}
},
"node_modules/unplugin-auto-import": {
"version": "0.15.0",
"resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.15.0.tgz",
"integrity": "sha512-TYlqpTiX1jlbc2+EVaM0jfwdvbIdDWLHAPqw/l+7+QRm9rkqK2j8LQGjY3tAPbe66r5EirgTlrrXQG/MNVTv7w==",
"version": "0.15.1",
"resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.15.1.tgz",
"integrity": "sha512-xLS+BfVNy00Y3IkqBmEd0IThvjx8kSGIgSuf/1kETttiENK8sHrDA+poKkQxRCPTKYH4yWM6txGQANPTzwpUWQ==",
"dev": true,
"dependencies": {
"@antfu/utils": "^0.7.2",
"@nuxt/kit": "^3.2.2",
"@rollup/pluginutils": "^5.0.2",
"local-pkg": "^0.4.3",
"magic-string": "^0.30.0",
"minimatch": "^7.1.0",
"unimport": "^3.0.0",
"minimatch": "^7.4.2",
"unimport": "^3.0.2",
"unplugin": "^1.1.0"
},
"engines": {
"node": ">=14"
},
"peerDependencies": {
"@nuxt/kit": "^3.2.2",
"@vueuse/core": "*"
},
"peerDependenciesMeta": {
"@nuxt/kit": {
"optional": true
},
"@vueuse/core": {
"optional": true
}
......@@ -5322,9 +5519,9 @@
}
},
"node_modules/unplugin-auto-import/node_modules/minimatch": {
"version": "7.3.0",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.3.0.tgz",
"integrity": "sha512-WaMDuhKa7a6zKiwplR1AOz+zGvJba24k5VU1Cy6NhEguavT2YRlHxuINUgTas4wiS6fwBpYq4TcA1XIECSntyw==",
"version": "7.4.2",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-7.4.2.tgz",
"integrity": "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
......@@ -5338,6 +5535,8 @@
"resolved": "https://registry.npmmirror.com/untyped/-/untyped-1.2.2.tgz",
"integrity": "sha512-EANYd5L6AdpgfldlgMcmvOOnj092nWhy0ybhc7uhEH12ipytDYz89EOegBQKj8qWL3u1wgYnmFjADhsuCJs5Aw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/core": "^7.20.12",
"@babel/standalone": "^7.20.12",
......@@ -5350,6 +5549,8 @@
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
"integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"escalade": "^3.1.1",
"picocolors": "^1.0.0"
......
......@@ -15,17 +15,17 @@
"cert": "node ./cert.js"
},
"dependencies": {
"@element-plus/icons-vue": "^2.0.10",
"@tinymce/tinymce-vue": "^5.0.0",
"@element-plus/icons-vue": "^2.1.0",
"@tinymce/tinymce-vue": "^5.0.1",
"@vue-flow/controls": "^1.0.4",
"@vue-flow/core": "^1.15.2",
"@vue-flow/core": "^1.15.5",
"@vueuse/core": "^9.13.0",
"axios": "^1.3.4",
"blueimp-md5": "^2.19.0",
"element-plus": "^2.2.32",
"element-plus": "^2.2.35",
"lodash-es": "^4.17.21",
"nanoid": "^4.0.1",
"pinia": "^2.0.32",
"pinia": "^2.0.33",
"vue": "^3.2.47",
"vue-router": "^4.1.6"
},
......@@ -42,7 +42,7 @@
"eslint-plugin-vue": "^9.9.0",
"sass": "^1.58.3",
"typescript": "~4.9.5",
"unplugin-auto-import": "^0.15.0",
"unplugin-auto-import": "^0.15.1",
"vite": "^4.1.4",
"vue-tsc": "^1.2.0"
}
......
<script setup>
import { BaseEdge, EdgeLabelRenderer, getBezierPath, useVueFlow } from '@vue-flow/core'
import { CircleClose } from '@element-plus/icons-vue'
import { StraightEdge, EdgeLabelRenderer, useVueFlow, getStraightPath } from '@vue-flow/core'
import { CircleCloseFilled } from '@element-plus/icons-vue'
const props = defineProps({
id: { type: String, required: true },
......@@ -12,14 +12,13 @@ const props = defineProps({
targetPosition: { type: String, required: true },
data: { type: Object, required: false },
markerEnd: { type: String, required: false },
style: { type: Object, required: false }
style: { type: Object, required: false },
label: { required: false }
})
const { removeEdges } = useVueFlow()
const path = computed(() => {
return getBezierPath(props)
})
const path = computed(() => getStraightPath(props))
</script>
<script>
......@@ -29,35 +28,30 @@ export default {
</script>
<template>
<!-- You can use the `BaseEdge` component to create your own custom edge more easily -->
<!-- :marker-end="markerEnd" -->
<BaseEdge :id="id" :style="style" :path="path[0]" marker-end="url(#triangle)" />
<defs>
<marker
id="triangle"
viewBox="0 0 1 10"
refX="1"
refY="5"
markerUnits="strokeWidth"
markerHeight="8"
markerWidth="8"
orient="auto"
>
<path d="M 0 1.5 L 4 5 L 0 8.5 z" />
</marker>
</defs>
<!-- Use the `EdgeLabelRenderer` to escape the SVG world of edges and render your own custom label in a `<div>` ctx -->
<StraightEdge :id="id" :style="style" :path="path[0]" :marker-end="markerEnd"></StraightEdge>
<EdgeLabelRenderer>
<div
:style="{
pointerEvents: 'all',
position: 'absolute',
transform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`
}"
@click="removeEdges([id])"
>
<el-icon style="color: var(--main-color)"><CircleClose /></el-icon>
<div class="edge-label" :style="{ transform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)` }">
<span v-if="label">{{ label }}</span>
<el-icon @click="removeEdges([id])"><CircleCloseFilled /></el-icon>
</div>
</EdgeLabelRenderer>
</template>
<style lang="scss">
.edge-label {
display: flex;
align-items: center;
pointer-events: all;
position: absolute;
background-color: #fff;
span {
margin-right: 5px;
}
.el-icon {
display: block;
font-size: 20px;
color: var(--main-color);
}
}
</style>
<script setup lang="ts">
import type { NodeProps } from '@vue-flow/core'
const props = defineProps<{ node: NodeProps }>()
const component = computed(() => {
const allComponent: any = {
TCRealTimeTrigger: markRaw(
......@@ -21,6 +24,7 @@ const component = computed(() => {
TCWenjuanxing: markRaw(
defineAsyncComponent(() => import('./components/triggeringConditions/wenjuanxing/Index.vue'))
),
MAEndTrip: markRaw(defineAsyncComponent(() => import('./components/marketingAction/endTrip/Index.vue'))),
MAJoinGroup: markRaw(defineAsyncComponent(() => import('./components/marketingAction/joinGroup/Index.vue'))),
MALeaveGroup: markRaw(defineAsyncComponent(() => import('./components/marketingAction/leaveGroup/Index.vue'))),
MAChangeProps: markRaw(defineAsyncComponent(() => import('./components/marketingAction/changeProps/Index.vue'))),
......@@ -53,10 +57,8 @@ const component = computed(() => {
}
return allComponent[props.node?.data.componentName]
})
const props = defineProps<{ node: any }>()
</script>
<template>
<component :is="component" v-bind="props"></component>
<component :is="component" :node="node"></component>
</template>
......@@ -6,7 +6,7 @@ export default {
<script setup lang="ts">
import { nanoid } from 'nanoid'
import { VueFlow, useVueFlow, PanelPosition } from '@vue-flow/core'
import { VueFlow, useVueFlow, PanelPosition, MarkerType, ConnectionLineType } from '@vue-flow/core'
import { Controls } from '@vue-flow/controls'
import CustomNode from './CustomNode.vue'
import CustomEdge from './CustomEdge.vue'
......@@ -17,7 +17,6 @@ interface Props {
templateType?: string
score?: number
}
const props = withDefaults(defineProps<Props>(), { action: 'edit', role: 'teacher', score: 0 })
provide('action', props.action)
provide('role', props.role)
......@@ -35,7 +34,30 @@ const onDragOver = (event: DragEvent) => {
}
onConnect(params => {
addEdges([{ ...params, type: 'custom' }])
const map: any = {
'handle-yes': { label: '是', style: { stroke: '#81b337' } },
'handle-no': { label: '否', style: { stroke: '#a16222' } },
'handle-success': { label: '成功', style: { stroke: '#81b337' } },
'handle-failure': { label: '失败', style: { stroke: '#a16222' } }
}
let customParams = {}
if (params.sourceHandle) {
customParams = map[params.sourceHandle]
}
const style = {
stroke: '#5b6b73'
// strokeWidth: 2
}
addEdges([
{
...params,
sourceHandle: 'handle-right',
type: 'custom',
markerEnd: MarkerType.ArrowClosed,
style,
...customParams
}
])
})
const onDrop = (event: DragEvent) => {
......@@ -53,7 +75,7 @@ const onDrop = (event: DragEvent) => {
const position = project({ x: event.clientX - left, y: event.clientY - top })
const newNode = {
id: nanoid(),
id: nanoid(4),
type: 'custom',
position,
label: data.name,
......@@ -87,7 +109,14 @@ const onDrop = (event: DragEvent) => {
<slot name="left-panel"> </slot>
<el-card shadow="never" class="flow-main" @drop="onDrop">
<slot name="header"> </slot>
<VueFlow :zoom-on-scroll="false" :prevent-scrolling="false" @dragover="onDragOver" v-bind="$attrs">
<VueFlow
snap-to-grid
:zoom-on-scroll="false"
:prevent-scrolling="false"
:connection-radius="30"
:connection-line-options="{ markerEnd: MarkerType.ArrowClosed, type: ConnectionLineType.Straight }"
@dragover="onDragOver"
v-bind="$attrs">
<template #node-custom="node">
<CustomNode :node="node" />
</template>
......@@ -104,7 +133,7 @@ const onDrop = (event: DragEvent) => {
<style lang="scss">
@import '@vue-flow/core/dist/style.css';
@import '@vue-flow/core/dist/theme-default.css';
// @import '@vue-flow/core/dist/theme-default.css';
@import '@vue-flow/controls/dist/style.css';
.flow {
......
......@@ -35,7 +35,7 @@ const list = ref([
name: '营销动作',
background: { icon: 'square', color: '#19AAA5' },
children: [
{ name: '终止旅程', type: '营销动作', icon: '16', componentName: 'MAEndTrip' },
{ name: '终止旅程', type: '营销动作', icon: '16', componentName: 'MAEndTrip', color: '#AA1941' },
{ name: '加入群组', type: '营销动作', icon: '14', componentName: 'MAJoinGroup' },
{ name: '移除群组', type: '营销动作', icon: '17', componentName: 'MALeaveGroup' },
{ name: '变更属性', type: '营销动作', icon: '15', componentName: 'MAChangeProps' },
......@@ -98,7 +98,7 @@ const onDragStart = (event: DragEvent, data: any) => {
<Icon class="icon" color="#fff" :name="item.icon" w="24" h="24"></Icon>
<Icon
class="circle"
:color="parent.background?.color"
:color="item.color || parent.background?.color"
:name="parent.background?.icon || ''"
w="60"
h="60"></Icon>
......
......@@ -2,9 +2,11 @@
import type { NodeProps } from '@vue-flow/core'
import { useVueFlow, Handle, Position } from '@vue-flow/core'
import { Setting, Delete } from '@element-plus/icons-vue'
import IconFlowLine from '@/components/icon/IconFlowLine.vue'
const props = defineProps<{ node: NodeProps }>()
const props = withDefaults(
defineProps<{ node: NodeProps; connectionType?: number; canSetting?: boolean; canConnect?: boolean }>(),
{ canSetting: true, canConnect: true }
)
const action = inject('action')
......@@ -17,88 +19,118 @@ function onRemove() {
const node = findNode(props.node.id)
if (node) removeNodes([node])
}
let toolbarShow = ref(false)
window.addEventListener('click', function () {
toolbarShow.value = false
})
const handleToolbar = function () {
setTimeout(() => {
toolbarShow.value = true
}, 100)
}
</script>
<template>
<div class="custom-node" @click="handleToolbar">
<div class="node-toolbar" v-if="toolbarShow">
<div class="custom-node">
<div class="node-toolbar">
<el-icon v-if="action !== 'view'" size="12" @click="onRemove"><Delete /></el-icon>
<el-icon size="12" @click="emit('setting')"><Setting /></el-icon>
<el-icon size="12" @click="emit('setting')" v-if="canSetting"><Setting /></el-icon>
</div>
<div class="custom-node__inner">
<slot :node="node" />
<p class="node-label">{{ node.label }}</p>
</div>
<IconFlowLine class="tool-line" v-if="toolbarShow"></IconFlowLine>
</div>
<Handle id="right" class="handle handle-right" :position="Position.Right"></Handle>
<Handle style="opacity: 0; width: 10px; height: 10px" id="left" class="handle" :position="Position.Left" />
<!-- <Handle id="bottom" class="handle" :position="Position.Bottom" /> -->
<Handle id="handle-left" class="handle" :position="Position.Left" :connectable="false" />
<Handle id="handle-top" class="handle" :position="Position.Top" :connectable="false" />
<Handle id="handle-bottom" class="handle" :position="Position.Bottom" :connectable="false" />
<Handle id="handle-right" class="handle" :position="Position.Right" :connectable="false" />
<div class="handle-wrap" v-if="canConnect">
<template v-if="connectionType === 1">
<Handle id="handle-yes" class="handle-link is-yes" :position="Position.Left"></Handle>
<Handle id="handle-no" class="handle-link is-no" :position="Position.Left"></Handle>
</template>
<template v-else-if="connectionType === 2">
<Handle id="handle-success" class="handle-link is-yes" :position="Position.Left">成功</Handle>
<Handle id="handle-failure" class="handle-link is-no" :position="Position.Left">失败</Handle>
<Handle id="handle-any" class="handle-link is-any" :position="Position.Left">继续</Handle>
</template>
<template v-else>
<Handle id="handle-any" class="handle-default" :position="Position.Left">
<svg
xmlns="http://www.w3.org/2000/svg"
class="styles__StyledSVGIconPathComponent-sc-16fsqc8-0 dGjRCM svg-icon-path-icon fill"
viewBox="0 0 512 512"
width="24"
height="24">
<g>
<path
d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"
fill="#6c6c6c"></path>
</g>
</svg>
</Handle>
</template>
</div>
</template>
<style lang="scss" scoped>
.dispatchers {
<style lang="scss">
.handle {
background-color: transparent;
border-radius: 0;
border: 0;
}
.handle-wrap {
opacity: 0;
position: absolute;
width: 100px;
height: 100px;
right: -110px;
top: 20px;
z-index: -2;
div {
width: 50px;
line-height: 18px;
height: 18px;
border-radius: 3px;
font-size: 6px;
text-align: center;
left: 100%;
top: 50%;
padding-left: 5px;
transform: translateY(-50%);
.handle-link {
position: unset;
min-width: unset;
min-height: unset;
width: auto;
height: auto;
background: transparent;
white-space: nowrap;
height: 16px;
font-size: 10px;
line-height: 16px;
color: #fff;
text-align: center;
margin: 2px 0;
padding: 0 10px;
border: 0;
transform: unset;
}
.item1 {
background: #6dbd7a;
.handle-default {
left: 0;
svg {
pointer-events: none;
}
}
.item2 {
margin: 3px 0;
background: #fe615e;
.is-yes {
background-color: #81b337;
}
.item3 {
background: #6a6c8a;
.is-no {
background-color: #a16222;
}
.is-any {
background-color: #347caf;
}
}
.handle-right {
width: 10px;
border-radius: 0;
right: -5px;
opacity: 0;
}
.tool-line {
position: absolute;
top: 35%;
right: -12px;
}
.vue-flow__handle {
.vue-flow__node {
&.selected {
.node-toolbar {
display: flex;
}
.handle-wrap {
opacity: 1;
}
}
}
.custom-node {
position: relative;
// &:hover {
// .node-toolbar {
// display: flex;
// }
// }
}
.node-toolbar {
position: absolute;
left: 50%;
top: -25px;
display: flex;
display: none;
align-items: center;
justify-content: center;
font-size: 20px;
......@@ -110,9 +142,10 @@ const handleToolbar = function () {
cursor: pointer;
}
}
</style>
<style lang="scss">
.node-label {
font-size: 12px;
text-align: center;
}
.node-item {
position: relative;
.icon {
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="20" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="23" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="22" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="21" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="1" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="1" @setting="settingVisible = true">
<div class="node-item">
<Icon name="hexagon" :color="isGray ? '#9a9a9a' : '#ceaa62'" w="60" h="60"></Icon>
<Icon class="icon" name="24" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="15" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="18" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="2" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="6" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="9" color="#fff" w="24" h="24"></Icon>
......
<script setup lang="ts">
import ConfigTemplate from '../../ConfigTemplate.vue'
import { useMaterial, useConnection } from '../../../useAllData'
import { useMapStore } from '@/stores/map'
const props = defineProps<{ node: any }>()
const role = inject('role') as string
const form = reactive({
operate: '',
material_type: '',
material_id: '',
connection_id: ''
})
watchEffect(() => {
Object.assign(form, props.node.data[role])
})
const operateList = ref([{ label: '发送邮件', value: '0' }])
const materialTypeList = useMapStore().getMapValuesByKey('experiment_marketing_material_type')
const { materialList } = useMaterial()
const { connectionList } = useConnection()
</script>
<template>
<ConfigTemplate :model="form" :node="node" :stepNum="2">
<template #default="{ step }: { step: number }">
<template v-if="step === 0">
<el-form-item>
<el-radio-group v-model="form.operate" v-if="step === 0">
<el-radio v-for="item in operateList" :key="item.value" :label="item.value">
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</template>
<template v-else-if="step === 1">
<el-form-item>
<el-select placeholder="请选择" style="width: 100%" v-model="form.connection_id">
<el-option v-for="item in connectionList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
</template>
<template v-else-if="step === 2">
<el-form-item>
<el-radio-group v-model="form.material_type">
<el-radio v-for="item in materialTypeList" :key="item.id" :label="item.value" style="width: 105px">
发送{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-select placeholder="请选择资料内容" v-model="form.material_id" style="width: 100%">
<el-option v-for="item in materialList" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
</template>
</template>
</ConfigTemplate>
</template>
<script setup lang="ts">
import ConfigViewTemplate from '../../ConfigViewTemplate.vue'
defineProps<{ node: any }>()
</script>
<template>
<ConfigViewTemplate :node="node">
<el-form-item label="学生答案"> </el-form-item>
<el-form-item label="正确答案"> </el-form-item>
</ConfigViewTemplate>
</template>
......@@ -3,33 +3,14 @@
import NodeTemplate from '../../NodeTemplate.vue'
import Icon from '@/components/ConnectionIcon.vue'
const Config = defineAsyncComponent(() => import('./Config.vue'))
const ConfigView = defineAsyncComponent(() => import('./ConfigView.vue'))
const props = defineProps<{ node: any }>()
const action = inject('action') as string
const role = inject('role') as string
const templateType = inject('templateType') as string
// 是否置灰
const isGray = computed(() => {
return templateType === '2' && role === 'student' && action === 'edit' && !props.node.data[role]
})
// 设置
const settingVisible = ref(false)
defineProps<{ node: any }>()
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" :canSetting="false" :canConnect="false">
<div class="node-item">
<Icon name="circle" :color="isGray ? '#9a9a9a' : '#4C5AB3'" w="60" h="60"></Icon>
<Icon class="icon" name="14" color="#fff" w="24" h="24"></Icon>
<Icon name="square" color="#AA1941" w="60" h="60"></Icon>
<Icon class="icon" name="16" color="#fff" w="24" h="24"></Icon>
</div>
</NodeTemplate>
<!-- 配置 -->
<Config v-model="settingVisible" :node="node" v-if="settingVisible && action === 'edit'" />
<!-- 查看配置 -->
<ConfigView v-model="settingVisible" :node="node" v-if="settingVisible && action === 'view'" />
</template>
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="19" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="14" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="17" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="1" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="10" color="#fff" w="24" h="24"></Icon>
......
......@@ -22,7 +22,7 @@ const settingVisible = ref(false)
</script>
<template>
<NodeTemplate :node="node" @setting="settingVisible = true">
<NodeTemplate :node="node" :connectionType="2" @setting="settingVisible = true">
<div class="node-item">
<Icon name="square" :color="isGray ? '#9a9a9a' : '#19AAA5'" w="60" h="60"></Icon>
<Icon class="icon" name="7" color="#fff" w="24" h="24"></Icon>
......
......@@ -72,7 +72,7 @@ function handleConnectionUpdate(value: string[]) {
<el-descriptions-item label="旅程类型:">{{ detail.experiment_itinerary_type_name }}</el-descriptions-item>
</el-descriptions>
</el-card>
<TripFlow v-model="elements" action="edit" role="student">
<TripFlow v-model="elements" action="edit" role="student" :nodes-draggable="!isFree">
<template #left-panel v-if="isFree">
<TripFlowSidebar :connectionIds="connectionIds" />
</template>
......@@ -105,6 +105,5 @@ function handleConnectionUpdate(value: string[]) {
v-model="configVisible"
:data="detail"
@update="handleConnectionUpdate"
v-if="configVisible && detail"
></BindConnection>
v-if="configVisible && detail"></BindConnection>
</template>
......@@ -35,7 +35,7 @@ const commentVisible = ref(false)
<el-button type="primary" @click="commentVisible = true">教师评语</el-button>
</el-descriptions-item>
</el-descriptions>
<TripFlow v-model="elements" action="view" role="student"></TripFlow>
<TripFlow v-model="elements" action="view" role="student" :nodes-draggable="false"></TripFlow>
</AppCard>
<el-dialog title="评语" width="500px" append-to-body v-model="commentVisible">
......
......@@ -70,7 +70,7 @@ function handleSubmit() {
<el-button type="primary" @click="commentVisible = true">填写评语</el-button>
</el-descriptions-item>
</el-descriptions>
<TripFlow v-model="elements" action="view" role="teacher">
<TripFlow v-model="elements" action="view" role="teacher" :nodes-draggable="false">
<template #footer>
<el-row justify="center">
<el-button type="primary" auto-insert-space @click="handleSubmit" :disabled="isReviewed">保存</el-button>
......
......@@ -96,7 +96,7 @@ function handleConfig() {
</el-row>
</el-form>
</el-card>
<TripFlow v-model="elements" action="view" role="teacher" :templateType="detail?.type" :score="score">
<TripFlow v-model="elements" action="edit" role="teacher" :templateType="detail?.type" :score="score">
<template #left-panel>
<TripFlowSidebar :connectionIds="connectionIds" />
</template>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论