pro-task
parent
3c3bf1b13b
commit
fff9c7f34e
|
|
@ -45,6 +45,7 @@
|
|||
"crypto-js": "^4.2.0",
|
||||
"dayjs": "^1.11.10",
|
||||
"dayjs-plugin-lunar": "^1.4.1",
|
||||
"dhtmlx-gantt": "^9.1.1",
|
||||
"diagram-js": "^12.8.0",
|
||||
"driver.js": "^1.3.1",
|
||||
"echarts": "^5.5.0",
|
||||
|
|
|
|||
225
pnpm-lock.yaml
225
pnpm-lock.yaml
|
|
@ -65,6 +65,12 @@ importers:
|
|||
dayjs:
|
||||
specifier: ^1.11.10
|
||||
version: 1.11.13
|
||||
dayjs-plugin-lunar:
|
||||
specifier: ^1.4.1
|
||||
version: 1.4.1(dayjs@1.11.13)(tyme4ts@1.4.2)
|
||||
dhtmlx-gantt:
|
||||
specifier: ^9.1.1
|
||||
version: 9.1.1
|
||||
diagram-js:
|
||||
specifier: ^12.8.0
|
||||
version: 12.8.1
|
||||
|
|
@ -886,7 +892,7 @@ packages:
|
|||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@bpmn-io/cm-theme@0.1.0-alpha.2':
|
||||
resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==}
|
||||
resolution: {integrity: sha512-ZILgiYzxk3KMvxplUXmdRFQo45/JehDPg5k9tWfehmzUOSE13ssyLPil8uCloMQnb3yyzyOWTjb/wzKXTHlFQw==, tarball: https://registry.npmmirror.com/@bpmn-io/cm-theme/-/cm-theme-0.1.0-alpha.2.tgz}
|
||||
|
||||
'@bpmn-io/diagram-js-ui@0.2.3':
|
||||
resolution: {integrity: sha512-OGyjZKvGK8tHSZ0l7RfeKhilGoOGtFDcoqSGYkX0uhFlo99OVZ9Jn1K7TJGzcE9BdKwvA5Y5kGqHEhdTxHvFfw==}
|
||||
|
|
@ -895,17 +901,17 @@ packages:
|
|||
resolution: {integrity: sha512-yAS7ZYX+D56K+luC36u96eRMLb4VHcPUwTUqMZ/Z/Je2gou2DJLRbuBTHAB4jjKt4wFCHSG4B8Y+TrBciEYf4w==}
|
||||
|
||||
'@bpmn-io/feel-editor@1.9.1':
|
||||
resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==}
|
||||
resolution: {integrity: sha512-UxSORdh5cwKM4fib4f9ov6J1/BHGpQVNtA+wPyEdKQyCyz3wqwE2/xe5wneVR1j5QFC5m2Na8nTy4a1TDFvZTw==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-editor/-/feel-editor-1.9.1.tgz}
|
||||
engines: {node: '>= 16'}
|
||||
|
||||
'@bpmn-io/feel-lint@1.3.1':
|
||||
resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==}
|
||||
resolution: {integrity: sha512-wcFkJKhOm/iqCt5bzkKvxL5Dr9wKwUD+t164bQYbJsTYouAqmkkxiGsoqck42hXwdIhMSguZ+vqQ3hj5QdiYCA==, tarball: https://registry.npmmirror.com/@bpmn-io/feel-lint/-/feel-lint-1.3.1.tgz}
|
||||
|
||||
'@bpmn-io/properties-panel@3.25.0':
|
||||
resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==}
|
||||
resolution: {integrity: sha512-SRGgj8uJc1Yyjcht2g36Q+xKR7sTx5VZXvcwDrdmQKlx5Y3nRmvmMjDGzeGDJDb7pNU1DSlaBJic84uISDBMWg==, tarball: https://registry.npmmirror.com/@bpmn-io/properties-panel/-/properties-panel-3.25.0.tgz}
|
||||
|
||||
'@codemirror/autocomplete@6.18.3':
|
||||
resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==}
|
||||
resolution: {integrity: sha512-1dNIOmiM0z4BIBwxmxEfA1yoxh1MF/6KPBbh20a5vphGV0ictKlgQsbJs6D6SkR6iJpGbpwRsa6PFMNlg9T9pQ==, tarball: https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.3.tgz}
|
||||
peerDependencies:
|
||||
'@codemirror/language': ^6.0.0
|
||||
'@codemirror/state': ^6.0.0
|
||||
|
|
@ -913,19 +919,19 @@ packages:
|
|||
'@lezer/common': ^1.0.0
|
||||
|
||||
'@codemirror/commands@6.7.1':
|
||||
resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==}
|
||||
resolution: {integrity: sha512-llTrboQYw5H4THfhN4U3qCnSZ1SOJ60ohhz+SzU0ADGtwlc533DtklQP0vSFaQuCPDn3BPpOd1GbbnUtwNjsrw==, tarball: https://registry.npmmirror.com/@codemirror/commands/-/commands-6.7.1.tgz}
|
||||
|
||||
'@codemirror/language@6.10.6':
|
||||
resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==}
|
||||
resolution: {integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==, tarball: https://registry.npmmirror.com/@codemirror/language/-/language-6.10.6.tgz}
|
||||
|
||||
'@codemirror/lint@6.8.4':
|
||||
resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==}
|
||||
resolution: {integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==, tarball: https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz}
|
||||
|
||||
'@codemirror/state@6.4.1':
|
||||
resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==}
|
||||
resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==, tarball: https://registry.npmmirror.com/@codemirror/state/-/state-6.4.1.tgz}
|
||||
|
||||
'@codemirror/view@6.35.0':
|
||||
resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==}
|
||||
resolution: {integrity: sha512-I0tYy63q5XkaWsJ8QRv5h6ves7kvtrBWjBcnf/bzohFJQc5c14a1AQRdE8QpPF9eMp5Mq2FMm59TCj1gDfE7kw==, tarball: https://registry.npmmirror.com/@codemirror/view/-/view-6.35.0.tgz}
|
||||
|
||||
'@commitlint/cli@19.6.0':
|
||||
resolution: {integrity: sha512-v17BgGD9w5KnthaKxXnEg6KLq6DYiAxyiN44TpiRtqyW8NSq+Kx99mkEG8Qo6uu6cI5eMzMojW2muJxjmPnF8w==}
|
||||
|
|
@ -1032,139 +1038,139 @@ packages:
|
|||
vue: ^3.2.0
|
||||
|
||||
'@esbuild/aix-ppc64@0.19.12':
|
||||
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
|
||||
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==, tarball: https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [aix]
|
||||
|
||||
'@esbuild/android-arm64@0.19.12':
|
||||
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
|
||||
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@esbuild/android-arm@0.19.12':
|
||||
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
|
||||
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@esbuild/android-x64@0.19.12':
|
||||
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
|
||||
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [android]
|
||||
|
||||
'@esbuild/darwin-arm64@0.19.12':
|
||||
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
|
||||
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@esbuild/darwin-x64@0.19.12':
|
||||
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
|
||||
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@esbuild/freebsd-arm64@0.19.12':
|
||||
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
|
||||
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@esbuild/freebsd-x64@0.19.12':
|
||||
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
|
||||
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@esbuild/linux-arm64@0.19.12':
|
||||
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
|
||||
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-arm@0.19.12':
|
||||
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
|
||||
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-ia32@0.19.12':
|
||||
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
|
||||
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-loong64@0.19.12':
|
||||
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
|
||||
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-mips64el@0.19.12':
|
||||
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
|
||||
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [mips64el]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-ppc64@0.19.12':
|
||||
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
|
||||
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-riscv64@0.19.12':
|
||||
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
|
||||
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-s390x@0.19.12':
|
||||
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
|
||||
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/linux-x64@0.19.12':
|
||||
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
|
||||
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@esbuild/netbsd-x64@0.19.12':
|
||||
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
|
||||
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [netbsd]
|
||||
|
||||
'@esbuild/openbsd-x64@0.19.12':
|
||||
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
|
||||
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [openbsd]
|
||||
|
||||
'@esbuild/sunos-x64@0.19.12':
|
||||
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
|
||||
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [sunos]
|
||||
|
||||
'@esbuild/win32-arm64@0.19.12':
|
||||
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
|
||||
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@esbuild/win32-ia32@0.19.12':
|
||||
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
|
||||
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@esbuild/win32-x64@0.19.12':
|
||||
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
|
||||
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz}
|
||||
engines: {node: '>=12'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -1351,16 +1357,16 @@ packages:
|
|||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||
|
||||
'@lezer/common@1.2.3':
|
||||
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==}
|
||||
resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==, tarball: https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz}
|
||||
|
||||
'@lezer/highlight@1.2.1':
|
||||
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==}
|
||||
resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==, tarball: https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz}
|
||||
|
||||
'@lezer/lr@1.4.2':
|
||||
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==}
|
||||
resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, tarball: https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz}
|
||||
|
||||
'@lezer/markdown@1.3.2':
|
||||
resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==}
|
||||
resolution: {integrity: sha512-Wu7B6VnrKTbBEohqa63h5vxXjiC4pO5ZQJ/TDbhJxPQaaIoRD/6UVDhSDtVsCwVZV12vvN9KxuLL3ATMnlG0oQ==, tarball: https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.3.2.tgz}
|
||||
|
||||
'@microsoft/fetch-event-source@2.0.1':
|
||||
resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==}
|
||||
|
|
@ -1378,95 +1384,95 @@ packages:
|
|||
engines: {node: '>= 8'}
|
||||
|
||||
'@parcel/watcher-android-arm64@2.5.0':
|
||||
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==}
|
||||
resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==, tarball: https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@parcel/watcher-darwin-arm64@2.5.0':
|
||||
resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==}
|
||||
resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==, tarball: https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@parcel/watcher-darwin-x64@2.5.0':
|
||||
resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==}
|
||||
resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==, tarball: https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@parcel/watcher-freebsd-x64@2.5.0':
|
||||
resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==}
|
||||
resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==, tarball: https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@parcel/watcher-linux-arm-glibc@2.5.0':
|
||||
resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==}
|
||||
resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@parcel/watcher-linux-arm-musl@2.5.0':
|
||||
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
|
||||
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@parcel/watcher-linux-arm64-glibc@2.5.0':
|
||||
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
|
||||
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@parcel/watcher-linux-arm64-musl@2.5.0':
|
||||
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
|
||||
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@parcel/watcher-linux-x64-glibc@2.5.0':
|
||||
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
|
||||
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@parcel/watcher-linux-x64-musl@2.5.0':
|
||||
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
|
||||
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==, tarball: https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@parcel/watcher-win32-arm64@2.5.0':
|
||||
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
|
||||
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher-win32-ia32@2.5.0':
|
||||
resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==}
|
||||
resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher-win32-x64@2.5.0':
|
||||
resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==}
|
||||
resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==, tarball: https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher@2.5.0':
|
||||
resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==}
|
||||
resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==, tarball: https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.0.tgz}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz}
|
||||
engines: {node: '>=14'}
|
||||
|
||||
'@pkgr/core@0.1.1':
|
||||
|
|
@ -1512,101 +1518,101 @@ packages:
|
|||
optional: true
|
||||
|
||||
'@rollup/rollup-android-arm-eabi@4.27.4':
|
||||
resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==}
|
||||
resolution: {integrity: sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz}
|
||||
cpu: [arm]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-android-arm64@4.27.4':
|
||||
resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==}
|
||||
resolution: {integrity: sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@rollup/rollup-darwin-arm64@4.27.4':
|
||||
resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==}
|
||||
resolution: {integrity: sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-darwin-x64@4.27.4':
|
||||
resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==}
|
||||
resolution: {integrity: sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@rollup/rollup-freebsd-arm64@4.27.4':
|
||||
resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==}
|
||||
resolution: {integrity: sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==, tarball: https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-freebsd-x64@4.27.4':
|
||||
resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==}
|
||||
resolution: {integrity: sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==, tarball: https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@rollup/rollup-linux-arm-gnueabihf@4.27.4':
|
||||
resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==}
|
||||
resolution: {integrity: sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.27.4':
|
||||
resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==}
|
||||
resolution: {integrity: sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.27.4':
|
||||
resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==}
|
||||
resolution: {integrity: sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.27.4':
|
||||
resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==}
|
||||
resolution: {integrity: sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-powerpc64le-gnu@4.27.4':
|
||||
resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==}
|
||||
resolution: {integrity: sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.27.4':
|
||||
resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==}
|
||||
resolution: {integrity: sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.27.4':
|
||||
resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==}
|
||||
resolution: {integrity: sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.27.4':
|
||||
resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==}
|
||||
resolution: {integrity: sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.27.4':
|
||||
resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==}
|
||||
resolution: {integrity: sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-win32-arm64-msvc@4.27.4':
|
||||
resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==}
|
||||
resolution: {integrity: sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-ia32-msvc@4.27.4':
|
||||
resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==}
|
||||
resolution: {integrity: sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@rollup/rollup-win32-x64-msvc@4.27.4':
|
||||
resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==}
|
||||
resolution: {integrity: sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
|
|
@ -1617,65 +1623,65 @@ packages:
|
|||
resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==}
|
||||
|
||||
'@swc/core-darwin-arm64@1.9.3':
|
||||
resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==}
|
||||
resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==, tarball: https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@swc/core-darwin-x64@1.9.3':
|
||||
resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==}
|
||||
resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==, tarball: https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@swc/core-linux-arm-gnueabihf@1.9.3':
|
||||
resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==}
|
||||
resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@swc/core-linux-arm64-gnu@1.9.3':
|
||||
resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==}
|
||||
resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@swc/core-linux-arm64-musl@1.9.3':
|
||||
resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==}
|
||||
resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@swc/core-linux-x64-gnu@1.9.3':
|
||||
resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==}
|
||||
resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@swc/core-linux-x64-musl@1.9.3':
|
||||
resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==}
|
||||
resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@swc/core-win32-arm64-msvc@1.9.3':
|
||||
resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==}
|
||||
resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==, tarball: https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core-win32-ia32-msvc@1.9.3':
|
||||
resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==}
|
||||
resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==, tarball: https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@swc/core-win32-x64-msvc@1.9.3':
|
||||
resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==}
|
||||
resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==, tarball: https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
|
@ -1696,7 +1702,7 @@ packages:
|
|||
resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==}
|
||||
|
||||
'@sxzz/popperjs-es@2.11.7':
|
||||
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
|
||||
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
|
||||
|
||||
'@transloadit/prettier-bytes@0.0.7':
|
||||
resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
|
||||
|
|
@ -1847,10 +1853,10 @@ packages:
|
|||
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
|
||||
|
||||
'@types/trusted-types@2.0.7':
|
||||
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
|
||||
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==, tarball: https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz}
|
||||
|
||||
'@types/video.js@7.3.58':
|
||||
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==}
|
||||
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==, tarball: https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz}
|
||||
|
||||
'@types/web-bluetooth@0.0.16':
|
||||
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
|
||||
|
|
@ -2557,7 +2563,7 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
|
||||
camunda-bpmn-js-behaviors@1.7.2:
|
||||
resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==}
|
||||
resolution: {integrity: sha512-xjLJHc18T40tcYu4JCeYDo1wR5i9+ZqcVnXVP6c4ooAe2gKISbBvFc07gqGpqiwm7TpEBvUfDj3PrRr+ofaf4w==, tarball: https://registry.npmmirror.com/camunda-bpmn-js-behaviors/-/camunda-bpmn-js-behaviors-1.7.2.tgz}
|
||||
peerDependencies:
|
||||
bpmn-js: '>= 9'
|
||||
camunda-bpmn-moddle: '>= 7'
|
||||
|
|
@ -2597,7 +2603,7 @@ packages:
|
|||
engines: {node: '>= 14.16.0'}
|
||||
|
||||
classnames@2.5.1:
|
||||
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
|
||||
resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz}
|
||||
|
||||
cli-cursor@5.0.0:
|
||||
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
|
||||
|
|
@ -2723,7 +2729,7 @@ packages:
|
|||
optional: true
|
||||
|
||||
crelt@1.0.6:
|
||||
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
|
||||
resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, tarball: https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz}
|
||||
|
||||
cropperjs@1.6.2:
|
||||
resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==}
|
||||
|
|
@ -2914,6 +2920,12 @@ packages:
|
|||
resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
dayjs-plugin-lunar@1.4.1:
|
||||
resolution: {integrity: sha512-nHKJMKoVAGt/Wp6x3xH8GrjWhB25YBYd6iYTCfLkCm4GAS6q3jvfHpLwRnIX8bjHgl8sPlTPiLFcylcEaEnj8Q==, tarball: https://registry.npmmirror.com/dayjs-plugin-lunar/-/dayjs-plugin-lunar-1.4.1.tgz}
|
||||
peerDependencies:
|
||||
dayjs: ^1.0.0
|
||||
tyme4ts: ^1.0.0
|
||||
|
||||
dayjs@1.11.13:
|
||||
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
|
||||
|
||||
|
|
@ -2961,6 +2973,9 @@ packages:
|
|||
engines: {node: '>=0.10'}
|
||||
hasBin: true
|
||||
|
||||
dhtmlx-gantt@9.1.1:
|
||||
resolution: {integrity: sha512-ym4m+kHHFJfeI3JYs7PdfQb31uqfbA44qrBxuc3mye9kx6Q+uc4dg6zxAXr7ll+6G9ccRcGZqk2fKfBqwCMp3w==, tarball: https://registry.npmmirror.com/dhtmlx-gantt/-/dhtmlx-gantt-9.1.1.tgz}
|
||||
|
||||
diagram-js-direct-editing@3.2.0:
|
||||
resolution: {integrity: sha512-+pyxeQGBSdLiZX0/tmmsm2qZSvm9YtVzod5W3RMHSTR7VrkUMD6E7EX/W9JQv3ebxO7oIdqFmytmNDDpSHnYEw==}
|
||||
peerDependencies:
|
||||
|
|
@ -3013,7 +3028,7 @@ packages:
|
|||
resolution: {integrity: sha512-m4yreHcUWHBncGVV7U+yQzc12vIlq0jMrtHZ5mW6dQMiL/7skSYNVX9wqKwOtyO9SGCgevrAFEgOCAHmamHTUA==}
|
||||
|
||||
domify@2.0.0:
|
||||
resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==}
|
||||
resolution: {integrity: sha512-rmvrrmWQPD/X1A/nPBfIVg4r05792QdG9Z4Prk6oQG0F9zBMDkr0GKAdds1wjb2dq1rTz/ywc4ZxpZbgz0tttg==, tarball: https://registry.npmmirror.com/domify/-/domify-2.0.0.tgz}
|
||||
engines: {node: '>=18'}
|
||||
|
||||
dompurify@3.2.1:
|
||||
|
|
@ -3270,10 +3285,10 @@ packages:
|
|||
optional: true
|
||||
|
||||
feelers@1.4.0:
|
||||
resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==}
|
||||
resolution: {integrity: sha512-CGa/7ILuqoqTaeYeoKsg/4tzu2es9sEEJTmSjdu0lousZBw4V9gcYhHYFNmbrSrKmbAVfOzj6/DsymGJWFIOeg==, tarball: https://registry.npmmirror.com/feelers/-/feelers-1.4.0.tgz}
|
||||
|
||||
feelin@3.2.0:
|
||||
resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==}
|
||||
resolution: {integrity: sha512-GFDbHsTYk7YXO1tyw1dOjb7IODeAZvNIosdGZThUwPx5XcD/XhO0hnPZXsIbAzSsIdrgGlTEEdby9fZ2gixysA==, tarball: https://registry.npmmirror.com/feelin/-/feelin-3.2.0.tgz}
|
||||
|
||||
file-entry-cache@6.0.1:
|
||||
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
|
||||
|
|
@ -3314,7 +3329,7 @@ packages:
|
|||
resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==}
|
||||
|
||||
focus-trap@7.6.2:
|
||||
resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==}
|
||||
resolution: {integrity: sha512-9FhUxK1hVju2+AiQIDJ5Dd//9R2n2RAfJ0qfhF4IHGHgcoEUTMpbTeG/zbEuwaiYXfuAH6XE0/aCyxDdRM+W5w==, tarball: https://registry.npmmirror.com/focus-trap/-/focus-trap-7.6.2.tgz}
|
||||
|
||||
follow-redirects@1.15.9:
|
||||
resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
|
||||
|
|
@ -3348,7 +3363,7 @@ packages:
|
|||
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
||||
|
||||
fsevents@2.3.3:
|
||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz}
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
os: [darwin]
|
||||
|
||||
|
|
@ -3724,14 +3739,14 @@ packages:
|
|||
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
|
||||
|
||||
lang-feel@2.2.0:
|
||||
resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==}
|
||||
resolution: {integrity: sha512-Ebo5nftYsMfJzB3Ny8Oy4oaDXZXb5x61qtVVmKv6aImvAZUbT76mD60ZbEilizjZQzsR2CcU1iMK5sacIa1NVA==, tarball: https://registry.npmmirror.com/lang-feel/-/lang-feel-2.2.0.tgz}
|
||||
|
||||
levn@0.4.1:
|
||||
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
||||
lezer-feel@1.4.0:
|
||||
resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==}
|
||||
resolution: {integrity: sha512-kNxG7O38gwpuYy+C3JCRxQNTCE2qu9uTuH5dE3EGVnRhIQMe6rPDz0S8t3urLEOsMud6HI795m6zX2ujfUaqTw==, tarball: https://registry.npmmirror.com/lezer-feel/-/lezer-feel-1.4.0.tgz}
|
||||
|
||||
lilconfig@3.1.2:
|
||||
resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
|
||||
|
|
@ -3848,7 +3863,7 @@ packages:
|
|||
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
|
||||
|
||||
luxon@3.5.0:
|
||||
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
|
||||
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==, tarball: https://registry.npmmirror.com/luxon/-/luxon-3.5.0.tgz}
|
||||
engines: {node: '>=12'}
|
||||
|
||||
m3u8-parser@4.8.0:
|
||||
|
|
@ -3953,7 +3968,7 @@ packages:
|
|||
resolution: {integrity: sha512-TMoL8SEEIhUWYgkj7XMSgxmwSyGI+4fP2KFFGnN3FbHfbGHVdsLYSz8LoIsgPhz4dWRmLvxWWSMgzZMJW5sZuA==}
|
||||
|
||||
min-dom@5.1.1:
|
||||
resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==}
|
||||
resolution: {integrity: sha512-GaKUlguMAofd3OJsB0OkP17i5kucKqErgVCJxPawO9l5NwIPnr28SAr99zzlzMCWWljISBYrnZVWdE2Q92YGFQ==, tarball: https://registry.npmmirror.com/min-dom/-/min-dom-5.1.1.tgz}
|
||||
|
||||
minimatch@3.1.2:
|
||||
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
|
||||
|
|
@ -4648,7 +4663,7 @@ packages:
|
|||
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
||||
|
||||
style-mod@4.1.2:
|
||||
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==}
|
||||
resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, tarball: https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz}
|
||||
|
||||
stylelint-config-html@1.1.0:
|
||||
resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==}
|
||||
|
|
@ -4715,7 +4730,7 @@ packages:
|
|||
resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==}
|
||||
|
||||
tabbable@6.2.0:
|
||||
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
|
||||
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==, tarball: https://registry.npmmirror.com/tabbable/-/tabbable-6.2.0.tgz}
|
||||
|
||||
table@6.8.2:
|
||||
resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==}
|
||||
|
|
@ -4778,6 +4793,9 @@ packages:
|
|||
tslib@2.8.1:
|
||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||
|
||||
tyme4ts@1.4.2:
|
||||
resolution: {integrity: sha512-3rUMpQv3Oz9V0f/GOPVHn+PC6eqR4CyMYQu02B8bUA5+BWvYALJapfwjOS7GH5NFK7mAS3LCUzSEYkQc4rkk6Q==, tarball: https://registry.npmmirror.com/tyme4ts/-/tyme4ts-1.4.2.tgz}
|
||||
|
||||
type-check@0.4.0:
|
||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||
engines: {node: '>= 0.8.0'}
|
||||
|
|
@ -5056,7 +5074,7 @@ packages:
|
|||
vue: ^3.0.1
|
||||
|
||||
w3c-keyname@2.2.8:
|
||||
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
|
||||
resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==, tarball: https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz}
|
||||
|
||||
wangeditor@4.7.15:
|
||||
resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==}
|
||||
|
|
@ -5172,7 +5190,7 @@ packages:
|
|||
engines: {node: '>=12.20'}
|
||||
|
||||
zeebe-bpmn-moddle@1.7.0:
|
||||
resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==}
|
||||
resolution: {integrity: sha512-eZ6OXSt0c4n9V/oN/46gTlwDIS3GhWQLt9jbM5uS/YryB4yN8wdrrKrtw+TpyNy0SSKWXNDHyC83nCA2blPO3Q==, tarball: https://registry.npmmirror.com/zeebe-bpmn-moddle/-/zeebe-bpmn-moddle-1.7.0.tgz}
|
||||
|
||||
zrender@5.6.0:
|
||||
resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==}
|
||||
|
|
@ -8211,6 +8229,11 @@ snapshots:
|
|||
|
||||
dargs@8.1.0: {}
|
||||
|
||||
dayjs-plugin-lunar@1.4.1(dayjs@1.11.13)(tyme4ts@1.4.2):
|
||||
dependencies:
|
||||
dayjs: 1.11.13
|
||||
tyme4ts: 1.4.2
|
||||
|
||||
dayjs@1.11.13: {}
|
||||
|
||||
de-indent@1.0.2: {}
|
||||
|
|
@ -8244,6 +8267,8 @@ snapshots:
|
|||
detect-libc@1.0.3:
|
||||
optional: true
|
||||
|
||||
dhtmlx-gantt@9.1.1: {}
|
||||
|
||||
diagram-js-direct-editing@3.2.0(diagram-js@14.11.3):
|
||||
dependencies:
|
||||
diagram-js: 14.11.3
|
||||
|
|
@ -10110,6 +10135,8 @@ snapshots:
|
|||
|
||||
tslib@2.8.1: {}
|
||||
|
||||
tyme4ts@1.4.2: {}
|
||||
|
||||
type-check@0.4.0:
|
||||
dependencies:
|
||||
prelude-ls: 1.2.1
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// MES 生产任务 VO
|
||||
export interface ProTaskVO {
|
||||
id: number // 编号
|
||||
code: string // 任务编码
|
||||
name: string // 任务名称
|
||||
workOrderId: number // 生产工单编号
|
||||
workOrderCode: string // 工单编码
|
||||
workOrderName: string // 工单名称
|
||||
workstationId: number // 工作站编号
|
||||
workstationName: string // 工作站名称
|
||||
routeId: number // 工艺路线编号
|
||||
processId: number // 工序编号
|
||||
processName: string // 工序名称
|
||||
itemId: number // 产品物料编号
|
||||
itemName: string // 产品名称
|
||||
itemCode: string // 产品编码
|
||||
itemSpec: string // 规格型号
|
||||
unitMeasureId: number // 单位编号
|
||||
unitMeasureName: string // 单位名称
|
||||
quantity: number // 排产数量
|
||||
producedQuantity: number // 已生产数量
|
||||
qualifyQuantity: number // 合格品数量
|
||||
unqualifyQuantity: number // 不良品数量
|
||||
changedQuantity: number // 调整数量
|
||||
clientId: number // 客户编号
|
||||
clientName: string // 客户名称
|
||||
startTime: Date // 开始生产时间
|
||||
duration: number // 生产时长(工作日,1=8小时)
|
||||
endTime: Date // 结束生产时间
|
||||
colorCode: string // 甘特图显示颜色
|
||||
requestDate: Date // 需求日期(从工单查)
|
||||
finishDate: Date // 完成日期
|
||||
cancelDate: Date // 取消日期
|
||||
status: number // 任务状态
|
||||
remark: string // 备注
|
||||
}
|
||||
|
||||
// MES 生产任务 API
|
||||
export const ProTaskApi = {
|
||||
// 查询生产任务分页
|
||||
getTaskPage: async (params: any) => {
|
||||
return await request.get({ url: `/mes/pro/task/page`, params })
|
||||
},
|
||||
|
||||
// 查询生产任务详情
|
||||
getTask: async (id: number) => {
|
||||
return await request.get({ url: `/mes/pro/task/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增生产任务
|
||||
createTask: async (data: ProTaskVO) => {
|
||||
return await request.post({ url: `/mes/pro/task/create`, data })
|
||||
},
|
||||
|
||||
// 修改生产任务
|
||||
updateTask: async (data: ProTaskVO) => {
|
||||
return await request.put({ url: `/mes/pro/task/update`, data })
|
||||
},
|
||||
|
||||
// 删除生产任务
|
||||
deleteTask: async (id: number) => {
|
||||
return await request.delete({ url: `/mes/pro/task/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出生产任务 Excel
|
||||
exportTask: async (params: any) => {
|
||||
return await request.download({ url: `/mes/pro/task/export-excel`, params })
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
import request from '@/config/axios'
|
||||
|
||||
// MES 生产任务投料 VO
|
||||
export interface ProTaskIssueVO {
|
||||
id: number // 编号
|
||||
taskId: number // 生产任务编号
|
||||
workOrderId: number // 生产工单编号
|
||||
workstationId: number // 工作站编号
|
||||
sourceDocId: number // 来源单据编号
|
||||
sourceDocCode: string // 来源单据编码
|
||||
sourceDocType: string // 来源单据类型
|
||||
batchCode: string // 投料批次
|
||||
sourceLineId: number // 来源单据行编号
|
||||
itemId: number // 产品物料编号
|
||||
itemName: string // 产品名称
|
||||
itemCode: string // 产品编码
|
||||
itemSpec: string // 规格型号
|
||||
unitMeasureId: number // 单位编号
|
||||
unitMeasureName: string // 单位名称
|
||||
issuedQuantity: number // 总投料数量
|
||||
availableQuantity: number // 当前可用数量
|
||||
usedQuantity: number // 当前使用数量
|
||||
remark: string // 备注
|
||||
}
|
||||
|
||||
// MES 生产任务投料 API
|
||||
export const ProTaskIssueApi = {
|
||||
// 查询生产任务投料分页
|
||||
getTaskIssuePage: async (params: any) => {
|
||||
return await request.get({ url: `/mes/pro/task-issue/page`, params })
|
||||
},
|
||||
|
||||
// 查询生产任务投料详情
|
||||
getTaskIssue: async (id: number) => {
|
||||
return await request.get({ url: `/mes/pro/task-issue/get?id=` + id })
|
||||
},
|
||||
|
||||
// 新增生产任务投料
|
||||
createTaskIssue: async (data: ProTaskIssueVO) => {
|
||||
return await request.post({ url: `/mes/pro/task-issue/create`, data })
|
||||
},
|
||||
|
||||
// 修改生产任务投料
|
||||
updateTaskIssue: async (data: ProTaskIssueVO) => {
|
||||
return await request.put({ url: `/mes/pro/task-issue/update`, data })
|
||||
},
|
||||
|
||||
// 删除生产任务投料
|
||||
deleteTaskIssue: async (id: number) => {
|
||||
return await request.delete({ url: `/mes/pro/task-issue/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 按任务查询投料列表
|
||||
getTaskIssueListByTask: async (taskId: number) => {
|
||||
return await request.get({ url: `/mes/pro/task-issue/list-by-task?taskId=` + taskId })
|
||||
}
|
||||
}
|
||||
|
|
@ -271,5 +271,6 @@ export enum DICT_TYPE {
|
|||
MES_PRO_WORK_ORDER_TYPE = 'mes_pro_work_order_type', // MES 工单类型
|
||||
MES_QC_TYPE = 'mes_qc_type', // MES 质检方案类型
|
||||
MES_PRO_LINK_TYPE = 'mes_pro_link_type', // MES 工序关系类型
|
||||
MES_PRO_TASK_STATUS = 'mes_pro_task_status', // MES 生产任务状态
|
||||
MES_TIME_UNIT_TYPE = 'mes_time_unit_type', // MES 时间单位
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,81 @@
|
|||
<!-- MES 工作站选择器:纯下拉,前端过滤(支持 name、code) -->
|
||||
<template>
|
||||
<el-select
|
||||
v-model="selectValue"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
:clearable="clearable"
|
||||
filterable
|
||||
:filter-method="handleFilter"
|
||||
class="!w-1/1"
|
||||
@change="handleChange"
|
||||
>
|
||||
<el-option v-for="item in filteredList" :key="item.id" :label="item.name" :value="item.id">
|
||||
<div class="flex items-center gap-8px">
|
||||
<span>{{ item.name }}</span>
|
||||
<el-tag v-if="item.code" size="small" type="info" class="ml-4px">
|
||||
编号: {{ item.code }}
|
||||
</el-tag>
|
||||
</div>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { MdWorkstationApi, MdWorkstationVO } from '@/api/mes/md/workstation'
|
||||
|
||||
defineOptions({ name: 'MdWorkstationSelect' })
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
modelValue?: number
|
||||
disabled?: boolean
|
||||
clearable?: boolean
|
||||
placeholder?: string
|
||||
}>(),
|
||||
{
|
||||
disabled: false,
|
||||
clearable: true,
|
||||
placeholder: '请选择工作站'
|
||||
}
|
||||
)
|
||||
|
||||
const emit = defineEmits<{
|
||||
'update:modelValue': [value: number | undefined]
|
||||
change: [item: MdWorkstationVO | undefined]
|
||||
}>()
|
||||
|
||||
const allList = ref<MdWorkstationVO[]>([])
|
||||
const filteredList = ref<MdWorkstationVO[]>([])
|
||||
|
||||
const selectValue = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit('update:modelValue', val)
|
||||
})
|
||||
|
||||
/** 前端过滤(name + code) */
|
||||
const handleFilter = (query: string) => {
|
||||
if (!query) {
|
||||
filteredList.value = allList.value
|
||||
return
|
||||
}
|
||||
const keyword = query.toLowerCase()
|
||||
filteredList.value = allList.value.filter(
|
||||
(item) =>
|
||||
item.name?.toLowerCase().includes(keyword) ||
|
||||
item.code?.toLowerCase().includes(keyword)
|
||||
)
|
||||
}
|
||||
|
||||
/** 选中变化 */
|
||||
const handleChange = (val: number | undefined) => {
|
||||
const item = allList.value.find((o) => o.id === val)
|
||||
emit('change', item)
|
||||
}
|
||||
|
||||
/** 加载工作站列表 */
|
||||
onMounted(async () => {
|
||||
allList.value = await MdWorkstationApi.getWorkstationSimpleList()
|
||||
filteredList.value = allList.value
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
<!-- MES 甘特图编辑(全屏 Dialog) -->
|
||||
<!-- TODO @AI:独立路由 -->
|
||||
<template>
|
||||
<Dialog title="甘特图编辑" v-model="dialogVisible" fullscreen>
|
||||
<div class="mb-10px flex items-center justify-between">
|
||||
<span class="text-14px text-gray-500">
|
||||
拖拽任务条可调整开始时间和时长,修改后点击"批量保存"
|
||||
</span>
|
||||
<div>
|
||||
<el-badge :value="pendingCount" :hidden="pendingCount === 0" class="mr-10px">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="handleSave"
|
||||
:loading="saving"
|
||||
:disabled="pendingCount === 0"
|
||||
>
|
||||
批量保存
|
||||
</el-button>
|
||||
</el-badge>
|
||||
<el-button @click="handleRefresh">刷新</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<GanttChart
|
||||
ref="ganttRef"
|
||||
:tasks="taskList"
|
||||
:readonly="false"
|
||||
:height="ganttHeight"
|
||||
@task-update="handleTaskUpdate"
|
||||
/>
|
||||
</Dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ProTaskApi, ProTaskVO } from '@/api/mes/pro/task'
|
||||
import GanttChart from './components/GanttChart.vue'
|
||||
|
||||
defineOptions({ name: 'GanttEdit' })
|
||||
|
||||
const message = useMessage()
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const taskList = ref<ProTaskVO[]>([])
|
||||
const saving = ref(false)
|
||||
const ganttRef = ref()
|
||||
|
||||
/** 待保存的修改 Map<taskId, changeData> */
|
||||
const pendingChanges = ref(new Map<number, any>())
|
||||
const pendingCount = computed(() => pendingChanges.value.size)
|
||||
|
||||
/** 甘特图高度 = 视口高度 - 顶栏 - 操作栏 */
|
||||
const ganttHeight = computed(() => window.innerHeight - 140)
|
||||
|
||||
/** 打开 */
|
||||
const open = async () => {
|
||||
dialogVisible.value = true
|
||||
pendingChanges.value = new Map()
|
||||
await loadGanttData()
|
||||
}
|
||||
|
||||
/** 加载甘特图数据(复用 page 接口,传大 pageSize) */
|
||||
const loadGanttData = async () => {
|
||||
// TODO @AI:请求地址不存在:admin-api/mes/pro/task/page;这个在对齐下;
|
||||
const data = await ProTaskApi.getTaskPage({ pageNo: 1, pageSize: 999 })
|
||||
taskList.value = data.list
|
||||
}
|
||||
|
||||
/** 拖拽变更回调 */
|
||||
const handleTaskUpdate = (change: any) => {
|
||||
pendingChanges.value.set(change.id, change)
|
||||
}
|
||||
|
||||
/** 批量保存 */
|
||||
const handleSave = async () => {
|
||||
if (pendingChanges.value.size === 0) return
|
||||
saving.value = true
|
||||
try {
|
||||
const promises = Array.from(pendingChanges.value.values()).map((change) =>
|
||||
ProTaskApi.updateTask({
|
||||
id: change.id,
|
||||
startTime: change.startTime,
|
||||
endTime: change.endTime,
|
||||
duration: change.duration
|
||||
} as any)
|
||||
)
|
||||
await Promise.all(promises)
|
||||
message.success(`已保存 ${pendingChanges.value.size} 条修改`)
|
||||
pendingChanges.value = new Map()
|
||||
await loadGanttData()
|
||||
} finally {
|
||||
saving.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 刷新 */
|
||||
const handleRefresh = async () => {
|
||||
pendingChanges.value = new Map()
|
||||
await loadGanttData()
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
|
|
@ -0,0 +1,279 @@
|
|||
<!-- MES 生产任务表单 -->
|
||||
<!-- TODO @芋艿:晚点在 review -->
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" width="800px">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="120px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="所属工单" prop="workOrderId">
|
||||
<el-input :model-value="workOrderInfo" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工序" prop="processId">
|
||||
<el-select
|
||||
v-model="formData.processId"
|
||||
placeholder="请选择工序"
|
||||
class="!w-1/1"
|
||||
:disabled="isDetail"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in processList"
|
||||
:key="item.processId"
|
||||
:label="item.processName"
|
||||
:value="item.processId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="工作站" prop="workstationId">
|
||||
<MdWorkstationSelect
|
||||
v-model="formData.workstationId"
|
||||
:disabled="isDetail"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="排产数量" prop="quantity">
|
||||
<el-input-number
|
||||
v-model="formData.quantity"
|
||||
:min="0"
|
||||
:precision="2"
|
||||
class="!w-1/1"
|
||||
:disabled="isDetail"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="开始时间" prop="startTime">
|
||||
<el-date-picker
|
||||
v-model="formData.startTime"
|
||||
type="datetime"
|
||||
placeholder="请选择开始时间"
|
||||
value-format="x"
|
||||
class="!w-1/1"
|
||||
:disabled="isDetail"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="生产时长(工作日)" prop="duration">
|
||||
<el-input-number
|
||||
v-model="formData.duration"
|
||||
:min="1"
|
||||
:precision="0"
|
||||
class="!w-1/1"
|
||||
:disabled="isDetail"
|
||||
@change="computeEndTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="结束时间">
|
||||
<el-date-picker
|
||||
v-model="formData.endTime"
|
||||
type="datetime"
|
||||
disabled
|
||||
value-format="x"
|
||||
class="!w-1/1"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="甘特颜色" prop="colorCode">
|
||||
<el-color-picker v-model="formData.colorCode" :disabled="isDetail" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="formType !== 'create'">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="任务状态">
|
||||
<dict-tag :type="DICT_TYPE.MES_PRO_TASK_STATUS" :value="formData.status" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="formData.remark"
|
||||
placeholder="请输入备注"
|
||||
:disabled="isDetail"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer v-if="!isDetail">
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { ProTaskApi, ProTaskVO } from '@/api/mes/pro/task'
|
||||
import { ProRouteProcessVO } from '@/api/mes/pro/route/process'
|
||||
import MdWorkstationSelect from '@/views/mes/md/workstation/components/MdWorkstationSelect.vue'
|
||||
|
||||
defineOptions({ name: 'ProTaskForm' })
|
||||
|
||||
const { t } = useI18n()
|
||||
const message = useMessage()
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const dialogTitle = ref('')
|
||||
const formLoading = ref(false)
|
||||
const formType = ref('')
|
||||
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
workOrderId: undefined,
|
||||
workstationId: undefined,
|
||||
routeId: undefined,
|
||||
processId: undefined,
|
||||
itemId: undefined,
|
||||
unitMeasureId: undefined,
|
||||
quantity: undefined,
|
||||
startTime: undefined,
|
||||
duration: 1,
|
||||
endTime: undefined,
|
||||
colorCode: '#00AEF3',
|
||||
status: undefined,
|
||||
remark: undefined
|
||||
})
|
||||
|
||||
const formRules = reactive({
|
||||
workstationId: [{ required: true, message: '工作站不能为空', trigger: 'change' }],
|
||||
processId: [{ required: true, message: '工序不能为空', trigger: 'change' }],
|
||||
quantity: [{ required: true, message: '排产数量不能为空', trigger: 'blur' }],
|
||||
startTime: [{ required: true, message: '开始时间不能为空', trigger: 'change' }],
|
||||
duration: [{ required: true, message: '生产时长不能为空', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref()
|
||||
|
||||
/** 工单信息(只读展示) */
|
||||
const workOrderInfo = ref('')
|
||||
/** 工序列表(从工艺路线工序加载) */
|
||||
const processList = ref<ProRouteProcessVO[]>([])
|
||||
|
||||
const isDetail = computed(() => formType.value === 'detail')
|
||||
|
||||
/** 自动计算结束时间:startTime + duration * 8h */
|
||||
const computeEndTime = () => {
|
||||
if (formData.value.startTime && formData.value.duration) {
|
||||
const start = typeof formData.value.startTime === 'number'
|
||||
? formData.value.startTime
|
||||
: new Date(formData.value.startTime).getTime()
|
||||
formData.value.endTime = start + formData.value.duration * 8 * 3600 * 1000
|
||||
}
|
||||
}
|
||||
|
||||
// 监听开始时间变化也重新计算
|
||||
watch(() => formData.value.startTime, () => computeEndTime())
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (
|
||||
type: string,
|
||||
params: {
|
||||
id?: number
|
||||
workOrderId?: number
|
||||
workOrderCode?: string
|
||||
workOrderName?: string
|
||||
routeId?: number
|
||||
processId?: number
|
||||
itemId?: number
|
||||
unitMeasureId?: number
|
||||
processList?: ProRouteProcessVO[]
|
||||
}
|
||||
) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = type === 'detail' ? '任务详情' : t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
|
||||
// 设置工序列表
|
||||
if (params.processList) {
|
||||
processList.value = params.processList
|
||||
}
|
||||
|
||||
if (type === 'create') {
|
||||
// 新增时预填工单信息
|
||||
formData.value.workOrderId = params.workOrderId
|
||||
formData.value.routeId = params.routeId
|
||||
formData.value.processId = params.processId
|
||||
formData.value.itemId = params.itemId
|
||||
formData.value.unitMeasureId = params.unitMeasureId
|
||||
workOrderInfo.value = `${params.workOrderCode || ''} ${params.workOrderName || ''}`
|
||||
} else if (params.id) {
|
||||
// 编辑/详情
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = await ProTaskApi.getTask(params.id)
|
||||
formData.value = data
|
||||
workOrderInfo.value = `${data.workOrderCode || ''} ${data.workOrderName || ''}`
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success'])
|
||||
const submitForm = async () => {
|
||||
await formRef.value.validate()
|
||||
formLoading.value = true
|
||||
try {
|
||||
const data = formData.value as unknown as ProTaskVO
|
||||
if (formType.value === 'create') {
|
||||
await ProTaskApi.createTask(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await ProTaskApi.updateTask(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
workOrderId: undefined,
|
||||
workstationId: undefined,
|
||||
routeId: undefined,
|
||||
processId: undefined,
|
||||
itemId: undefined,
|
||||
unitMeasureId: undefined,
|
||||
quantity: undefined,
|
||||
startTime: undefined,
|
||||
duration: 1,
|
||||
endTime: undefined,
|
||||
colorCode: '#00AEF3',
|
||||
status: undefined,
|
||||
remark: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
<!-- MES 生产任务投料列表 -->
|
||||
<!-- TODO @芋艿:待 review -->
|
||||
<!-- TODO @芋艿:投料记录依赖仓库模块的领料出库单(wm_issue),当前仓库模块未迁移,先展示列表 -->
|
||||
<template>
|
||||
<div>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="物料编码" align="center" prop="itemCode" width="120" />
|
||||
<el-table-column label="物料名称" align="center" prop="itemName" min-width="150" />
|
||||
<el-table-column label="规格" align="center" prop="itemSpec" width="120" />
|
||||
<el-table-column label="单位" align="center" prop="unitMeasureName" width="80" />
|
||||
<el-table-column label="来源单据编码" align="center" prop="sourceDocCode" width="140" />
|
||||
<el-table-column label="来源类型" align="center" prop="sourceDocType" width="100" />
|
||||
<el-table-column label="批次" align="center" prop="batchCode" width="120" />
|
||||
<el-table-column label="投料数量" align="center" prop="issuedQuantity" width="100" />
|
||||
<el-table-column label="可用数量" align="center" prop="availableQuantity" width="100" />
|
||||
<el-table-column label="已用数量" align="center" prop="usedQuantity" width="100" />
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ProTaskIssueApi, ProTaskIssueVO } from '@/api/mes/pro/task/issue'
|
||||
|
||||
defineOptions({ name: 'ProTaskIssueList' })
|
||||
|
||||
const props = defineProps<{
|
||||
taskId: number
|
||||
}>()
|
||||
|
||||
const loading = ref(false)
|
||||
const list = ref<ProTaskIssueVO[]>([])
|
||||
|
||||
/** 查询投料列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
list.value = await ProTaskIssueApi.getTaskIssueListByTask(props.taskId)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
watch(
|
||||
() => props.taskId,
|
||||
() => getList()
|
||||
)
|
||||
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
|
|
@ -0,0 +1,259 @@
|
|||
<!-- MES 生产任务列表(工单维度,排产 Drawer 内使用) -->
|
||||
<!-- TODO @芋艿:待 review -->
|
||||
<template>
|
||||
<div>
|
||||
<!-- 操作栏 -->
|
||||
<div class="mb-10px">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['mes:pro-task:create']"
|
||||
:disabled="disabled"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增任务
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 任务列表 -->
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="任务编码" align="center" prop="code" width="140" />
|
||||
<el-table-column label="任务名称" align="center" prop="name" min-width="150" />
|
||||
<el-table-column label="工作站" align="center" prop="workstationName" width="120" />
|
||||
<el-table-column label="排产数量" align="center" prop="quantity" width="100" />
|
||||
<el-table-column label="已生产" align="center" prop="producedQuantity" width="80" />
|
||||
<el-table-column label="合格" align="center" prop="qualifyQuantity" width="80" />
|
||||
<el-table-column
|
||||
label="开始时间"
|
||||
align="center"
|
||||
prop="startTime"
|
||||
:formatter="dateFormatter"
|
||||
width="170"
|
||||
/>
|
||||
<el-table-column label="时长(天)" align="center" prop="duration" width="80" />
|
||||
<el-table-column
|
||||
label="结束时间"
|
||||
align="center"
|
||||
prop="endTime"
|
||||
:formatter="dateFormatter"
|
||||
width="170"
|
||||
/>
|
||||
<el-table-column label="颜色" align="center" prop="colorCode" width="60">
|
||||
<template #default="scope">
|
||||
<div
|
||||
:style="{
|
||||
background: scope.row.colorCode || '#00AEF3',
|
||||
width: '20px',
|
||||
height: '20px',
|
||||
borderRadius: '4px',
|
||||
margin: '0 auto'
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.MES_PRO_TASK_STATUS" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||
<template #default="scope">
|
||||
<!-- 草稿(0):编辑/删除/开始 -->
|
||||
<template v-if="scope.row.status === MesProTaskStatusEnum.NORMAL">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['mes:pro-task:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
<!-- 进行中(1):暂停/完成/取消 -->
|
||||
<template v-if="scope.row.status === MesProTaskStatusEnum.START">
|
||||
<el-button
|
||||
link
|
||||
type="warning"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.PAUSE, '暂停')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
暂停
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="success"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.FINISHED, '完成')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
完成
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.CANCELED, '取消')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
取消
|
||||
</el-button>
|
||||
</template>
|
||||
<!-- 暂停(2):继续/完成/取消 -->
|
||||
<template v-if="scope.row.status === MesProTaskStatusEnum.PAUSE">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.START, '继续')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
继续
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="success"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.FINISHED, '完成')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
完成
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleChangeStatus(scope.row.id, MesProTaskStatusEnum.CANCELED, '取消')"
|
||||
v-hasPermi="['mes:pro-task:update']"
|
||||
>
|
||||
取消
|
||||
</el-button>
|
||||
</template>
|
||||
<!-- 所有状态:详情 -->
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="handleDetail(scope.row)"
|
||||
v-hasPermi="['mes:pro-task:query']"
|
||||
>
|
||||
详情
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 任务表单 -->
|
||||
<ProTaskForm ref="formRef" @success="getList" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { ProTaskApi, ProTaskVO } from '@/api/mes/pro/task'
|
||||
import { ProRouteProcessVO } from '@/api/mes/pro/route/process'
|
||||
import { MesProTaskStatusEnum } from '@/views/mes/utils/constants'
|
||||
import ProTaskForm from './ProTaskForm.vue'
|
||||
|
||||
defineOptions({ name: 'ProTaskList' })
|
||||
|
||||
const props = defineProps<{
|
||||
workOrderId: number
|
||||
workOrderCode?: string
|
||||
workOrderName?: string
|
||||
routeId: number
|
||||
processId: number
|
||||
itemId?: number
|
||||
unitMeasureId?: number
|
||||
processList?: ProRouteProcessVO[]
|
||||
disabled?: boolean
|
||||
}>()
|
||||
|
||||
const { t } = useI18n()
|
||||
const message = useMessage()
|
||||
|
||||
const loading = ref(false)
|
||||
const list = ref<ProTaskVO[]>([])
|
||||
|
||||
/** 查询任务列表(按工单+工序过滤) */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ProTaskApi.getTaskPage({
|
||||
workOrderId: props.workOrderId,
|
||||
processId: props.processId,
|
||||
pageNo: 1,
|
||||
pageSize: 100
|
||||
})
|
||||
list.value = data.list
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 新增任务 */
|
||||
const formRef = ref()
|
||||
const handleAdd = () => {
|
||||
formRef.value.open('create', {
|
||||
workOrderId: props.workOrderId,
|
||||
workOrderCode: props.workOrderCode,
|
||||
workOrderName: props.workOrderName,
|
||||
routeId: props.routeId,
|
||||
processId: props.processId,
|
||||
itemId: props.itemId,
|
||||
unitMeasureId: props.unitMeasureId,
|
||||
processList: props.processList
|
||||
})
|
||||
}
|
||||
|
||||
/** 编辑任务 */
|
||||
const handleEdit = (row: any) => {
|
||||
formRef.value.open('update', {
|
||||
id: row.id,
|
||||
workOrderId: props.workOrderId,
|
||||
workOrderCode: props.workOrderCode,
|
||||
workOrderName: props.workOrderName,
|
||||
processList: props.processList
|
||||
})
|
||||
}
|
||||
|
||||
/** 查看详情 */
|
||||
const handleDetail = (row: any) => {
|
||||
formRef.value.open('detail', {
|
||||
id: row.id,
|
||||
processList: props.processList
|
||||
})
|
||||
}
|
||||
|
||||
/** 删除任务 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
await message.delConfirm()
|
||||
await ProTaskApi.deleteTask(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 变更任务状态 */
|
||||
const handleChangeStatus = async (id: number, status: number, actionName: string) => {
|
||||
try {
|
||||
await message.confirm(`确认要${actionName}该任务吗?`)
|
||||
await ProTaskApi.updateTask({ id, status } as any)
|
||||
message.success(`任务已${actionName}`)
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
// 监听 processId 切换重新加载
|
||||
watch(
|
||||
() => props.processId,
|
||||
() => getList()
|
||||
)
|
||||
|
||||
onMounted(() => getList())
|
||||
|
||||
defineExpose({ getList })
|
||||
</script>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<!-- MES 生产任务进度展示 -->
|
||||
<!-- TODO @芋艿:待 review -->
|
||||
<template>
|
||||
<div v-loading="loading">
|
||||
<el-empty v-if="!list.length" description="暂无排产任务" />
|
||||
<div v-else class="flex flex-wrap gap-20px p-10px">
|
||||
<el-card
|
||||
v-for="task in list"
|
||||
:key="task.id"
|
||||
class="w-240px"
|
||||
shadow="hover"
|
||||
>
|
||||
<div class="text-center">
|
||||
<el-progress
|
||||
type="circle"
|
||||
:percentage="getProgress(task)"
|
||||
:width="100"
|
||||
:color="task.colorCode || '#00AEF3'"
|
||||
/>
|
||||
<div class="mt-10px font-bold text-14px">{{ task.name }}</div>
|
||||
<div class="mt-5px text-12px text-gray-500">
|
||||
{{ task.processName }} - {{ task.workstationName }}
|
||||
</div>
|
||||
<div class="mt-5px text-12px">
|
||||
<dict-tag :type="DICT_TYPE.MES_PRO_TASK_STATUS" :value="task.status" />
|
||||
</div>
|
||||
<div class="mt-5px text-12px text-gray-400">
|
||||
排产: {{ task.quantity }} | 已产: {{ task.producedQuantity }} | 合格: {{ task.qualifyQuantity }}
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { ProTaskApi, ProTaskVO } from '@/api/mes/pro/task'
|
||||
|
||||
defineOptions({ name: 'ProTaskProgress' })
|
||||
|
||||
const props = defineProps<{
|
||||
workOrderId: number
|
||||
}>()
|
||||
|
||||
const loading = ref(false)
|
||||
const list = ref<ProTaskVO[]>([])
|
||||
|
||||
/** 计算进度百分比 */
|
||||
const getProgress = (task: ProTaskVO): number => {
|
||||
if (!task.quantity || task.quantity === 0) return 0
|
||||
const percent = (task.producedQuantity / task.quantity) * 100
|
||||
return Math.min(Math.round(percent), 100)
|
||||
}
|
||||
|
||||
/** 查询任务列表(复用 page 接口,按工单过滤) */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ProTaskApi.getTaskPage({
|
||||
workOrderId: props.workOrderId,
|
||||
pageNo: 1,
|
||||
pageSize: 999
|
||||
})
|
||||
list.value = data.list
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => props.workOrderId, () => getList())
|
||||
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
<!-- dhtmlx-gantt Vue 3 封装 -->
|
||||
<!-- TODO @芋艿:更深度的注释 -->
|
||||
<template>
|
||||
<div ref="ganttContainer" :style="{ width: '100%', height: height + 'px' }"></div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { gantt } from 'dhtmlx-gantt'
|
||||
import 'dhtmlx-gantt/codebase/dhtmlxgantt.css'
|
||||
|
||||
// TODO @AI:更全的注释;
|
||||
|
||||
defineOptions({ name: 'GanttChart' })
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
tasks: any[] // 甘特图任务数据
|
||||
readonly?: boolean // 是否只读
|
||||
height?: number // 甘特图高度
|
||||
}>(),
|
||||
{
|
||||
tasks: () => [],
|
||||
readonly: false,
|
||||
height: 350
|
||||
}
|
||||
)
|
||||
|
||||
const emit = defineEmits<{
|
||||
'task-update': [task: any]
|
||||
'task-click': [id: string | number]
|
||||
}>()
|
||||
|
||||
const ganttContainer = ref<HTMLElement>()
|
||||
const ganttInited = ref(false)
|
||||
|
||||
/** 初始化甘特图配置 */
|
||||
const initGantt = () => {
|
||||
if (!ganttContainer.value) return
|
||||
|
||||
// 中文 locale
|
||||
gantt.locale = {
|
||||
date: {
|
||||
month_full: [
|
||||
'一月',
|
||||
'二月',
|
||||
'三月',
|
||||
'四月',
|
||||
'五月',
|
||||
'六月',
|
||||
'七月',
|
||||
'八月',
|
||||
'九月',
|
||||
'十月',
|
||||
'十一月',
|
||||
'十二月'
|
||||
],
|
||||
month_short: [
|
||||
'1月',
|
||||
'2月',
|
||||
'3月',
|
||||
'4月',
|
||||
'5月',
|
||||
'6月',
|
||||
'7月',
|
||||
'8月',
|
||||
'9月',
|
||||
'10月',
|
||||
'11月',
|
||||
'12月'
|
||||
],
|
||||
day_full: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
|
||||
day_short: ['日', '一', '二', '三', '四', '五', '六']
|
||||
},
|
||||
// TODO @AI:这里有 linter 报错;
|
||||
labels: {
|
||||
new_task: '新任务',
|
||||
icon_save: '保存',
|
||||
icon_cancel: '取消',
|
||||
icon_details: '详情',
|
||||
icon_edit: '编辑',
|
||||
icon_delete: '删除',
|
||||
confirm_closing: '',
|
||||
confirm_deleting: '确认删除?',
|
||||
section_description: '描述',
|
||||
section_time: '时间',
|
||||
section_type: '类型',
|
||||
column_wbs: 'WBS',
|
||||
column_text: '任务名称',
|
||||
column_start_date: '开始时间',
|
||||
column_duration: '时长',
|
||||
column_add: '',
|
||||
link: '关联',
|
||||
confirm_link_deleting: '将被删除',
|
||||
link_start: '(开始)',
|
||||
link_end: '(结束)',
|
||||
type_task: '任务',
|
||||
type_project: '项目',
|
||||
type_milestone: '里程碑',
|
||||
minutes: '分钟',
|
||||
hours: '小时',
|
||||
days: '天',
|
||||
weeks: '周',
|
||||
months: '月',
|
||||
years: '年'
|
||||
}
|
||||
}
|
||||
|
||||
// 基础配置
|
||||
gantt.config.date_format = '%Y-%m-%d %H:%i:%s'
|
||||
gantt.config.duration_unit = 'hour'
|
||||
gantt.config.duration_step = 8 // 1工作日 = 8小时
|
||||
gantt.config.row_height = 36
|
||||
gantt.config.bar_height = 24
|
||||
gantt.config.fit_tasks = true
|
||||
gantt.config.auto_scheduling = false
|
||||
gantt.config.drag_links = false
|
||||
gantt.config.details_on_create = false
|
||||
gantt.config.details_on_dblclick = false
|
||||
gantt.config.show_progress = true
|
||||
|
||||
// 只读模式
|
||||
if (props.readonly) {
|
||||
gantt.config.drag_move = false
|
||||
gantt.config.drag_resize = false
|
||||
gantt.config.drag_progress = false
|
||||
} else {
|
||||
gantt.config.drag_move = true
|
||||
gantt.config.drag_resize = true
|
||||
gantt.config.drag_progress = false
|
||||
}
|
||||
|
||||
// 时间刻度:周 > 日
|
||||
gantt.config.scales = [
|
||||
{ unit: 'week', step: 1, format: '%Y年 第%W周' },
|
||||
{ unit: 'day', step: 1, format: '%m/%d %D' }
|
||||
]
|
||||
|
||||
// 左侧列配置
|
||||
gantt.config.columns = [
|
||||
{ name: 'text', label: '任务名称', tree: true, width: 200, resize: true },
|
||||
{ name: 'start_date', label: '开始时间', align: 'center', width: 100 },
|
||||
{ name: 'duration', label: '时长(天)', align: 'center', width: 60 }
|
||||
]
|
||||
|
||||
// 今天标记线
|
||||
gantt.plugins({ marker: true })
|
||||
gantt.addMarker({
|
||||
start_date: new Date(),
|
||||
css: 'today',
|
||||
text: '今天'
|
||||
})
|
||||
|
||||
// 任务颜色模板
|
||||
gantt.templates.task_class = (_start: any, _end: any, task: any) => {
|
||||
if (task.type === gantt.config.types.project) return 'gantt-project-bar'
|
||||
return ''
|
||||
}
|
||||
gantt.templates.task_cell_class = () => ''
|
||||
gantt.templates.task_row_class = () => ''
|
||||
|
||||
// 事件监听
|
||||
if (!props.readonly) {
|
||||
gantt.attachEvent('onAfterTaskDrag', (id: string | number) => {
|
||||
const task = gantt.getTask(id)
|
||||
emit('task-update', {
|
||||
id: task.taskId || id,
|
||||
startTime: task.start_date,
|
||||
endTime: task.end_date,
|
||||
// TODO @AI:这里有linter报错
|
||||
duration: task.duration / 8 // 转回工作日
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
gantt.attachEvent('onTaskClick', (id: string | number) => {
|
||||
emit('task-click', id)
|
||||
return true
|
||||
})
|
||||
|
||||
gantt.init(ganttContainer.value)
|
||||
ganttInited.value = true
|
||||
}
|
||||
|
||||
/** 转换数据为甘特图格式 */
|
||||
const convertToGanttData = (tasks: any[]) => {
|
||||
const data: any[] = []
|
||||
// 按工单分组
|
||||
const workOrderMap = new Map<number, any[]>()
|
||||
tasks.forEach((task) => {
|
||||
const woId = task.workOrderId
|
||||
if (!workOrderMap.has(woId)) {
|
||||
workOrderMap.set(woId, [])
|
||||
}
|
||||
workOrderMap.get(woId)!.push(task)
|
||||
})
|
||||
|
||||
workOrderMap.forEach((woTasks, woId) => {
|
||||
const firstTask = woTasks[0]
|
||||
// 工单作为 project 行
|
||||
data.push({
|
||||
id: 'wo_' + woId,
|
||||
text: firstTask.workOrderCode + ' ' + firstTask.workOrderName,
|
||||
type: gantt.config.types.project,
|
||||
open: true
|
||||
})
|
||||
// 任务行
|
||||
woTasks.forEach((t) => {
|
||||
data.push({
|
||||
id: 'task_' + t.id,
|
||||
taskId: t.id,
|
||||
text: t.name,
|
||||
start_date: t.startTime ? new Date(t.startTime) : new Date(),
|
||||
duration: (t.duration || 1) * 8, // 工作日→小时
|
||||
parent: 'wo_' + woId,
|
||||
progress: t.quantity > 0 ? t.producedQuantity / t.quantity : 0,
|
||||
color: t.colorCode || '#00AEF3'
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
return { data, links: [] }
|
||||
}
|
||||
|
||||
/** 加载数据到甘特图 */
|
||||
const loadData = (tasks: any[]) => {
|
||||
if (!ganttInited.value) return
|
||||
gantt.clearAll()
|
||||
const ganttData = convertToGanttData(tasks)
|
||||
gantt.parse(ganttData)
|
||||
}
|
||||
|
||||
// 监听 tasks 变化
|
||||
watch(
|
||||
() => props.tasks,
|
||||
(val) => {
|
||||
if (val && ganttInited.value) {
|
||||
loadData(val)
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
|
||||
onMounted(() => {
|
||||
initGantt()
|
||||
if (props.tasks?.length) {
|
||||
loadData(props.tasks)
|
||||
}
|
||||
})
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
if (ganttInited.value) {
|
||||
gantt.clearAll()
|
||||
}
|
||||
})
|
||||
|
||||
defineExpose({ loadData })
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* 今天标记线 */
|
||||
.gantt_marker.today {
|
||||
background-color: #ff4444;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.gantt_marker.today .gantt_marker_content {
|
||||
color: #ff4444;
|
||||
font-size: 12px;
|
||||
}
|
||||
/* 工单(project)行样式 */
|
||||
.gantt-project-bar .gantt_task_progress {
|
||||
background: #7b68ee;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,318 @@
|
|||
<!-- MES 生产排产 -->
|
||||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="工单编码" prop="code">
|
||||
<el-input
|
||||
v-model="queryParams.code"
|
||||
placeholder="请输入工单编码"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="工单名称" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
placeholder="请输入工单名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- TODO @AI:来源单据 -->
|
||||
<!-- TODO @AI:产品 xxx;参考下别的模块 -->
|
||||
<!-- TODO @AI:客户 xxx;参考下别的模块 -->
|
||||
<el-form-item label="需求日期" prop="requestDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.requestDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
type="daterange"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button type="warning" plain @click="openGanttEdit">
|
||||
<Icon icon="ep:data-analysis" class="mr-5px" /> 甘特图编辑
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 甘特图预览 -->
|
||||
<ContentWrap title="排产甘特图">
|
||||
<GanttChart ref="ganttPreviewRef" :tasks="ganttTasks" :readonly="true" :height="350" />
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 待排产工单列表 -->
|
||||
<!-- TODO @AI:这里是父子,在参考下修复;也可以看看 workorder -->
|
||||
<ContentWrap title="待排产工单">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="workOrderList"
|
||||
:stripe="true"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<el-table-column label="工单编码" align="center" prop="code" width="140" />
|
||||
<el-table-column label="工单名称" align="center" prop="name" min-width="150" />
|
||||
<!-- TODO @AI:工单来源 -->
|
||||
<!-- TODO @AI:订单编号 -->
|
||||
<!-- TODO @AI:订单编号 -->
|
||||
<el-table-column label="产品编码" align="center" prop="productCode" width="120" />
|
||||
<el-table-column label="产品名称" align="center" prop="productName" min-width="120" />
|
||||
<el-table-column label="规格型号" align="center" prop="productSpec" width="120" />
|
||||
<el-table-column label="单位" align="center" prop="unitMeasureName" width="80" />
|
||||
<el-table-column label="工单数量" align="center" prop="quantity" width="100" />
|
||||
<!-- TODO @AI:调整数量 -->
|
||||
<el-table-column label="已排产" align="center" prop="quantityScheduled" width="80" />
|
||||
<el-table-column label="已生产数量" align="center" prop="quantityProduced" width="80" />
|
||||
<!-- TODO @AI:客户编码 -->
|
||||
<el-table-column label="客户名称" align="center" prop="clientName" width="120" />
|
||||
<el-table-column
|
||||
label="需求日期"
|
||||
align="center"
|
||||
prop="requestDate"
|
||||
:formatter="dateFormatter2"
|
||||
width="120"
|
||||
/>
|
||||
<el-table-column label="状态" align="center" prop="status" width="100">
|
||||
<template #default="scope">
|
||||
<dict-tag :type="DICT_TYPE.MES_PRO_WORK_ORDER_STATUS" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="160" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openScheduleDrawer(scope.row)"
|
||||
v-hasPermi="['mes:pro-task:create']"
|
||||
>
|
||||
排产
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="success"
|
||||
@click="openProgressDrawer(scope.row)"
|
||||
v-hasPermi="['mes:pro-task:query']"
|
||||
>
|
||||
进度
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getWorkOrderList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 排产 Drawer -->
|
||||
<!-- TODO @AI:是不是要抽出去一个独立组件?是不是使用弹窗?在对齐下; -->
|
||||
<el-drawer v-model="scheduleDrawerVisible" title="排产" size="75%" :destroy-on-close="true">
|
||||
<div v-if="currentWorkOrder">
|
||||
<!-- 工单概要信息 -->
|
||||
<el-descriptions :column="3" border class="mb-15px">
|
||||
<el-descriptions-item label="工单编码">{{ currentWorkOrder.code }}</el-descriptions-item>
|
||||
<el-descriptions-item label="工单名称">{{ currentWorkOrder.name }}</el-descriptions-item>
|
||||
<el-descriptions-item label="产品">{{ currentWorkOrder.productName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="数量">{{ currentWorkOrder.quantity }}</el-descriptions-item>
|
||||
<el-descriptions-item label="客户">{{ currentWorkOrder.clientName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="需求日期">
|
||||
{{ formatDate(currentWorkOrder.requestDate, 'YYYY-MM-DD') }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
||||
<!-- 工序步骤导航 -->
|
||||
<el-steps
|
||||
v-if="routeProcessList.length"
|
||||
:active="activeProcessStep"
|
||||
finish-status="success"
|
||||
class="mb-15px"
|
||||
@change="handleStepChange"
|
||||
>
|
||||
<el-step
|
||||
v-for="(rp, index) in routeProcessList"
|
||||
:key="rp.processId"
|
||||
:title="rp.processName"
|
||||
:description="'第' + (index + 1) + '道工序'"
|
||||
style="cursor: pointer"
|
||||
@click="handleStepClick(index)"
|
||||
/>
|
||||
</el-steps>
|
||||
<el-empty v-else description="该产品未配置工艺路线,请先在工艺路线中维护" />
|
||||
|
||||
<!-- 当前工序的任务列表 -->
|
||||
<ProTaskList
|
||||
v-if="currentProcess"
|
||||
:work-order-id="currentWorkOrder.id"
|
||||
:work-order-code="currentWorkOrder.code"
|
||||
:work-order-name="currentWorkOrder.name"
|
||||
:route-id="currentRouteId"
|
||||
:process-id="currentProcess.processId"
|
||||
:item-id="currentWorkOrder.productId"
|
||||
:unit-measure-id="currentWorkOrder.unitMeasureId"
|
||||
:process-list="routeProcessList"
|
||||
/>
|
||||
</div>
|
||||
</el-drawer>
|
||||
|
||||
<!-- 进度 Drawer -->
|
||||
<el-drawer v-model="progressDrawerVisible" title="生产进度" size="60%" :destroy-on-close="true">
|
||||
<ProTaskProgress v-if="currentWorkOrder" :work-order-id="currentWorkOrder.id" />
|
||||
</el-drawer>
|
||||
|
||||
<!-- 甘特图编辑 Dialog -->
|
||||
<GanttEdit ref="ganttEditRef" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { dateFormatter2 } from '@/utils/formatTime'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { ProWorkOrderApi, ProWorkOrderVO } from '@/api/mes/pro/workorder'
|
||||
import { ProTaskApi } from '@/api/mes/pro/task'
|
||||
import { ProRouteProcessApi, ProRouteProcessVO } from '@/api/mes/pro/route/process'
|
||||
import { ProRouteProductApi } from '@/api/mes/pro/route/product'
|
||||
import { MesProWorkOrderStatusEnum, MesProWorkOrderTypeEnum } from '@/views/mes/utils/constants'
|
||||
import GanttChart from './components/GanttChart.vue'
|
||||
import GanttEdit from './GanttEdit.vue'
|
||||
import ProTaskList from './ProTaskList.vue'
|
||||
import ProTaskProgress from './ProTaskProgress.vue'
|
||||
|
||||
defineOptions({ name: 'MesProTask' })
|
||||
|
||||
const loading = ref(true)
|
||||
const workOrderList = ref<ProWorkOrderVO[]>([])
|
||||
const total = ref(0)
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
code: undefined,
|
||||
name: undefined,
|
||||
requestDate: undefined,
|
||||
// 固定筛选:已确认 + 自行生产
|
||||
status: MesProWorkOrderStatusEnum.CONFIRMED,
|
||||
type: MesProWorkOrderTypeEnum.SELF
|
||||
})
|
||||
const queryFormRef = ref()
|
||||
|
||||
// 甘特图预览数据
|
||||
const ganttTasks = ref<any[]>([])
|
||||
const ganttPreviewRef = ref()
|
||||
|
||||
/** 查询待排产工单列表 */
|
||||
const getWorkOrderList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await ProWorkOrderApi.getWorkOrderPage(queryParams)
|
||||
workOrderList.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 加载甘特图预览数据(复用 page 接口,传大 pageSize) */
|
||||
const loadGanttPreview = async () => {
|
||||
try {
|
||||
const data = await ProTaskApi.getTaskPage({ pageNo: 1, pageSize: 999 })
|
||||
ganttTasks.value = data.list
|
||||
} catch (e) {
|
||||
console.warn('加载甘特图数据失败', e)
|
||||
ganttTasks.value = []
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getWorkOrderList()
|
||||
}
|
||||
|
||||
/** 重置 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
// 恢复固定筛选
|
||||
queryParams.status = MesProWorkOrderStatusEnum.CONFIRMED
|
||||
queryParams.type = MesProWorkOrderTypeEnum.SELF
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
// ==================== 排产 Drawer ====================
|
||||
const scheduleDrawerVisible = ref(false)
|
||||
const currentWorkOrder = ref<any>(null)
|
||||
const routeProcessList = ref<ProRouteProcessVO[]>([])
|
||||
const activeProcessStep = ref(0)
|
||||
const currentRouteId = ref(0)
|
||||
|
||||
const currentProcess = computed(() => {
|
||||
return routeProcessList.value[activeProcessStep.value]
|
||||
})
|
||||
|
||||
/** 打开排产 Drawer */
|
||||
const openScheduleDrawer = async (row: any) => {
|
||||
currentWorkOrder.value = row
|
||||
scheduleDrawerVisible.value = true
|
||||
activeProcessStep.value = 0
|
||||
routeProcessList.value = []
|
||||
|
||||
// 通过产品查找工艺路线,再加载工序列表
|
||||
try {
|
||||
const routeProducts = await ProRouteProductApi.getRouteProductListByRoute(0)
|
||||
// TODO @芋艿:需要后端提供"根据产品查询关联的工艺路线"接口
|
||||
// 临时方案:查所有工艺路线产品,前端匹配
|
||||
const matched = routeProducts?.find((rp: any) => rp.itemId === row.productId)
|
||||
if (matched) {
|
||||
currentRouteId.value = matched.routeId
|
||||
const processes = await ProRouteProcessApi.getRouteProcessListByRoute(matched.routeId)
|
||||
routeProcessList.value = processes.sort((a: any, b: any) => a.sort - b.sort)
|
||||
}
|
||||
} catch (e) {
|
||||
console.warn('加载工艺路线工序失败', e)
|
||||
}
|
||||
}
|
||||
|
||||
/** 工序步骤切换 */
|
||||
const handleStepChange = (index: number) => {
|
||||
activeProcessStep.value = index
|
||||
}
|
||||
const handleStepClick = (index: number) => {
|
||||
activeProcessStep.value = index
|
||||
}
|
||||
|
||||
// ==================== 进度 Drawer ====================
|
||||
const progressDrawerVisible = ref(false)
|
||||
|
||||
const openProgressDrawer = (row: any) => {
|
||||
currentWorkOrder.value = row
|
||||
progressDrawerVisible.value = true
|
||||
}
|
||||
|
||||
// ==================== 甘特图编辑 ====================
|
||||
const ganttEditRef = ref()
|
||||
const openGanttEdit = () => {
|
||||
ganttEditRef.value.open()
|
||||
}
|
||||
|
||||
/** 初始化 */
|
||||
onMounted(async () => {
|
||||
await getWorkOrderList()
|
||||
await loadGanttPreview()
|
||||
})
|
||||
</script>
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<!-- MES 工单物料需求列表(只读) -->
|
||||
<template>
|
||||
<el-table v-loading="loading" :data="itemList" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="物料编码" align="center" prop="itemCode" width="120" />
|
||||
<el-table-column label="物料名称" align="center" prop="itemName" min-width="150" />
|
||||
<el-table-column label="规格型号" align="center" prop="itemSpec" width="120" />
|
||||
<el-table-column label="单位" align="center" prop="unitMeasureName" width="80" />
|
||||
<el-table-column label="需求数量" align="center" prop="quantity" width="120" />
|
||||
</el-table>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ProWorkOrderBomApi } from '@/api/mes/pro/workorder/bom'
|
||||
|
||||
defineOptions({ name: 'WorkOrderItemList' })
|
||||
|
||||
const props = defineProps<{
|
||||
workOrderId: number
|
||||
}>()
|
||||
|
||||
const loading = ref(false)
|
||||
const itemList = ref<any[]>([])
|
||||
|
||||
/** 查询物料需求列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
itemList.value = await ProWorkOrderBomApi.getWorkOrderBomItemListByWorkOrderId(props.workOrderId)
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 初始化 */
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
|
|
@ -79,6 +79,15 @@ export const MesProWorkOrderSourceTypeEnum = {
|
|||
STORE: 2 // 库存备货
|
||||
}
|
||||
|
||||
/** MES 生产任务状态枚举 */
|
||||
export const MesProTaskStatusEnum = {
|
||||
NORMAL: 0, // 草稿
|
||||
START: 1, // 进行中
|
||||
PAUSE: 2, // 暂停
|
||||
FINISHED: 3, // 已完成
|
||||
CANCELED: 4 // 已取消
|
||||
}
|
||||
|
||||
/** 获取物料/产品标识的标签 */
|
||||
export const getItemOrProductLabel = (value: string): string => {
|
||||
for (const item of Object.values(MesItemOrProductEnum)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue