feat: 分类表格拖拽排序功能实现
This commit is contained in:
parent
9dc268efb4
commit
b056db55b2
@ -64,6 +64,7 @@
|
|||||||
"pinia-plugin-persistedstate": "^3.2.1",
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
"qrcode": "^1.5.3",
|
"qrcode": "^1.5.3",
|
||||||
"qs": "^6.12.0",
|
"qs": "^6.12.0",
|
||||||
|
"sortablejs": "^1.15.3",
|
||||||
"steady-xml": "^0.1.0",
|
"steady-xml": "^0.1.0",
|
||||||
"url": "^0.11.3",
|
"url": "^0.11.3",
|
||||||
"video.js": "^7.21.5",
|
"video.js": "^7.21.5",
|
||||||
|
154
pnpm-lock.yaml
154
pnpm-lock.yaml
@ -125,6 +125,9 @@ importers:
|
|||||||
qs:
|
qs:
|
||||||
specifier: ^6.12.0
|
specifier: ^6.12.0
|
||||||
version: 6.12.1
|
version: 6.12.1
|
||||||
|
sortablejs:
|
||||||
|
specifier: ^1.15.3
|
||||||
|
version: 1.15.3
|
||||||
steady-xml:
|
steady-xml:
|
||||||
specifier: ^0.1.0
|
specifier: ^0.1.0
|
||||||
version: 0.1.0
|
version: 0.1.0
|
||||||
@ -1053,7 +1056,7 @@ packages:
|
|||||||
postcss-selector-parser: ^6.0.13
|
postcss-selector-parser: ^6.0.13
|
||||||
|
|
||||||
'@ctrl/tinycolor@3.6.1':
|
'@ctrl/tinycolor@3.6.1':
|
||||||
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==, tarball: https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz}
|
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
'@dual-bundle/import-meta-resolve@4.0.0':
|
'@dual-bundle/import-meta-resolve@4.0.0':
|
||||||
@ -1065,139 +1068,139 @@ packages:
|
|||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.19.12':
|
'@esbuild/aix-ppc64@0.19.12':
|
||||||
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==, tarball: https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz}
|
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [aix]
|
os: [aix]
|
||||||
|
|
||||||
'@esbuild/android-arm64@0.19.12':
|
'@esbuild/android-arm64@0.19.12':
|
||||||
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==, tarball: https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz}
|
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@esbuild/android-arm@0.19.12':
|
'@esbuild/android-arm@0.19.12':
|
||||||
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==, tarball: https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz}
|
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@esbuild/android-x64@0.19.12':
|
'@esbuild/android-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==, tarball: https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@esbuild/darwin-arm64@0.19.12':
|
'@esbuild/darwin-arm64@0.19.12':
|
||||||
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==, tarball: https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz}
|
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@esbuild/darwin-x64@0.19.12':
|
'@esbuild/darwin-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==, tarball: https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@esbuild/freebsd-arm64@0.19.12':
|
'@esbuild/freebsd-arm64@0.19.12':
|
||||||
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz}
|
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
|
||||||
'@esbuild/freebsd-x64@0.19.12':
|
'@esbuild/freebsd-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==, tarball: https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [freebsd]
|
os: [freebsd]
|
||||||
|
|
||||||
'@esbuild/linux-arm64@0.19.12':
|
'@esbuild/linux-arm64@0.19.12':
|
||||||
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz}
|
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-arm@0.19.12':
|
'@esbuild/linux-arm@0.19.12':
|
||||||
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz}
|
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-ia32@0.19.12':
|
'@esbuild/linux-ia32@0.19.12':
|
||||||
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==, tarball: https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz}
|
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-loong64@0.19.12':
|
'@esbuild/linux-loong64@0.19.12':
|
||||||
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==, tarball: https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz}
|
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [loong64]
|
cpu: [loong64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-mips64el@0.19.12':
|
'@esbuild/linux-mips64el@0.19.12':
|
||||||
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==, tarball: https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz}
|
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [mips64el]
|
cpu: [mips64el]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-ppc64@0.19.12':
|
'@esbuild/linux-ppc64@0.19.12':
|
||||||
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==, tarball: https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz}
|
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-riscv64@0.19.12':
|
'@esbuild/linux-riscv64@0.19.12':
|
||||||
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==, tarball: https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz}
|
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-s390x@0.19.12':
|
'@esbuild/linux-s390x@0.19.12':
|
||||||
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==, tarball: https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz}
|
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/linux-x64@0.19.12':
|
'@esbuild/linux-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==, tarball: https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@esbuild/netbsd-x64@0.19.12':
|
'@esbuild/netbsd-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==, tarball: https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [netbsd]
|
os: [netbsd]
|
||||||
|
|
||||||
'@esbuild/openbsd-x64@0.19.12':
|
'@esbuild/openbsd-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==, tarball: https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [openbsd]
|
os: [openbsd]
|
||||||
|
|
||||||
'@esbuild/sunos-x64@0.19.12':
|
'@esbuild/sunos-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==, tarball: https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [sunos]
|
os: [sunos]
|
||||||
|
|
||||||
'@esbuild/win32-arm64@0.19.12':
|
'@esbuild/win32-arm64@0.19.12':
|
||||||
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==, tarball: https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz}
|
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@esbuild/win32-ia32@0.19.12':
|
'@esbuild/win32-ia32@0.19.12':
|
||||||
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==, tarball: https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz}
|
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@esbuild/win32-x64@0.19.12':
|
'@esbuild/win32-x64@0.19.12':
|
||||||
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==, tarball: https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz}
|
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@ -1221,13 +1224,13 @@ packages:
|
|||||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||||
|
|
||||||
'@floating-ui/core@1.6.1':
|
'@floating-ui/core@1.6.1':
|
||||||
resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==, tarball: https://registry.npmmirror.com/@floating-ui/core/-/core-1.6.1.tgz}
|
resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==}
|
||||||
|
|
||||||
'@floating-ui/dom@1.6.4':
|
'@floating-ui/dom@1.6.4':
|
||||||
resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==, tarball: https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.6.4.tgz}
|
resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==}
|
||||||
|
|
||||||
'@floating-ui/utils@0.2.2':
|
'@floating-ui/utils@0.2.2':
|
||||||
resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==, tarball: https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.2.tgz}
|
resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==}
|
||||||
|
|
||||||
'@form-create/component-elm-checkbox@3.1.29':
|
'@form-create/component-elm-checkbox@3.1.29':
|
||||||
resolution: {integrity: sha512-tzqpwg+lq1X/V1wEsOkHBC9QxZyUsoymFRrWiEdqvstRcTQKQjntt/3gl8MQ3Tcq22dP2xJbQxjTeu1J8o6NCA==}
|
resolution: {integrity: sha512-tzqpwg+lq1X/V1wEsOkHBC9QxZyUsoymFRrWiEdqvstRcTQKQjntt/3gl8MQ3Tcq22dP2xJbQxjTeu1J8o6NCA==}
|
||||||
@ -1395,7 +1398,7 @@ packages:
|
|||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
'@pkgjs/parseargs@0.11.0':
|
'@pkgjs/parseargs@0.11.0':
|
||||||
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz}
|
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
'@pkgr/core@0.1.1':
|
'@pkgr/core@0.1.1':
|
||||||
@ -1415,7 +1418,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-s2t+1oVtGDV6KtqfCXtUOhxfeYvOdDF90IVm+nMs/6bUP0HeGZLslguuL/AibpwtfL4FA/oCsIu/RhwapgAdJw==}
|
resolution: {integrity: sha512-s2t+1oVtGDV6KtqfCXtUOhxfeYvOdDF90IVm+nMs/6bUP0HeGZLslguuL/AibpwtfL4FA/oCsIu/RhwapgAdJw==}
|
||||||
|
|
||||||
'@rollup/plugin-virtual@3.0.2':
|
'@rollup/plugin-virtual@3.0.2':
|
||||||
resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==, tarball: https://registry.npmmirror.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz}
|
resolution: {integrity: sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
@ -1437,91 +1440,91 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@rollup/rollup-android-arm-eabi@4.17.1':
|
'@rollup/rollup-android-arm-eabi@4.17.1':
|
||||||
resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.1.tgz}
|
resolution: {integrity: sha512-P6Wg856Ou/DLpR+O0ZLneNmrv7QpqBg+hK4wE05ijbC/t349BRfMfx+UFj5Ha3fCFopIa6iSZlpdaB4agkWp2Q==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@rollup/rollup-android-arm64@4.17.1':
|
'@rollup/rollup-android-arm64@4.17.1':
|
||||||
resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.1.tgz}
|
resolution: {integrity: sha512-piwZDjuW2WiHr05djVdUkrG5JbjnGbtx8BXQchYCMfib/nhjzWoiScelZ+s5IJI7lecrwSxHCzW026MWBL+oJQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [android]
|
os: [android]
|
||||||
|
|
||||||
'@rollup/rollup-darwin-arm64@4.17.1':
|
'@rollup/rollup-darwin-arm64@4.17.1':
|
||||||
resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.1.tgz}
|
resolution: {integrity: sha512-LsZXXIsN5Q460cKDT4Y+bzoPDhBmO5DTr7wP80d+2EnYlxSgkwdPfE3hbE+Fk8dtya+8092N9srjBTJ0di8RIA==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rollup/rollup-darwin-x64@4.17.1':
|
'@rollup/rollup-darwin-x64@4.17.1':
|
||||||
resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==, tarball: https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.1.tgz}
|
resolution: {integrity: sha512-S7TYNQpWXB9APkxu/SLmYHezWwCoZRA9QLgrDeml+SR2A1LLPD2DBUdUlvmCF7FUpRMKvbeeWky+iizQj65Etw==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm-gnueabihf@4.17.1':
|
'@rollup/rollup-linux-arm-gnueabihf@4.17.1':
|
||||||
resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.1.tgz}
|
resolution: {integrity: sha512-Lq2JR5a5jsA5um2ZoLiXXEaOagnVyCpCW7xvlcqHC7y46tLwTEgUSTM3a2TfmmTMmdqv+jknUioWXlmxYxE9Yw==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm-musleabihf@4.17.1':
|
'@rollup/rollup-linux-arm-musleabihf@4.17.1':
|
||||||
resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.1.tgz}
|
resolution: {integrity: sha512-9BfzwyPNV0IizQoR+5HTNBGkh1KXE8BqU0DBkqMngmyFW7BfuIZyMjQ0s6igJEiPSBvT3ZcnIFohZ19OqjhDPg==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-gnu@4.17.1':
|
'@rollup/rollup-linux-arm64-gnu@4.17.1':
|
||||||
resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.17.1.tgz}
|
resolution: {integrity: sha512-e2uWaoxo/rtzA52OifrTSXTvJhAXb0XeRkz4CdHBK2KtxrFmuU/uNd544Ogkpu938BzEfvmWs8NZ8Axhw33FDw==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-musl@4.17.1':
|
'@rollup/rollup-linux-arm64-musl@4.17.1':
|
||||||
resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.17.1.tgz}
|
resolution: {integrity: sha512-ekggix/Bc/d/60H1Mi4YeYb/7dbal1kEDZ6sIFVAE8pUSx7PiWeEh+NWbL7bGu0X68BBIkgF3ibRJe1oFTksQQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-powerpc64le-gnu@4.17.1':
|
'@rollup/rollup-linux-powerpc64le-gnu@4.17.1':
|
||||||
resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.1.tgz}
|
resolution: {integrity: sha512-UGV0dUo/xCv4pkr/C8KY7XLFwBNnvladt8q+VmdKrw/3RUd3rD0TptwjisvE2TTnnlENtuY4/PZuoOYRiGp8Gw==}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-riscv64-gnu@4.17.1':
|
'@rollup/rollup-linux-riscv64-gnu@4.17.1':
|
||||||
resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.1.tgz}
|
resolution: {integrity: sha512-gEYmYYHaehdvX46mwXrU49vD6Euf1Bxhq9pPb82cbUU9UT2NV+RSckQ5tKWOnNXZixKsy8/cPGtiUWqzPuAcXQ==}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-s390x-gnu@4.17.1':
|
'@rollup/rollup-linux-s390x-gnu@4.17.1':
|
||||||
resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.1.tgz}
|
resolution: {integrity: sha512-xeae5pMAxHFp6yX5vajInG2toST5lsCTrckSRUFwNgzYqnUjNBcQyqk1bXUxX5yhjWFl2Mnz3F8vQjl+2FRIcw==}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-gnu@4.17.1':
|
'@rollup/rollup-linux-x64-gnu@4.17.1':
|
||||||
resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.1.tgz}
|
resolution: {integrity: sha512-AsdnINQoDWfKpBzCPqQWxSPdAWzSgnYbrJYtn6W0H2E9It5bZss99PiLA8CgmDRfvKygt20UpZ3xkhFlIfX9zQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-musl@4.17.1':
|
'@rollup/rollup-linux-x64-musl@4.17.1':
|
||||||
resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==, tarball: https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.1.tgz}
|
resolution: {integrity: sha512-KoB4fyKXTR+wYENkIG3fFF+5G6N4GFvzYx8Jax8BR4vmddtuqSb5oQmYu2Uu067vT/Fod7gxeQYKupm8gAcMSQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-win32-arm64-msvc@4.17.1':
|
'@rollup/rollup-win32-arm64-msvc@4.17.1':
|
||||||
resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.1.tgz}
|
resolution: {integrity: sha512-J0d3NVNf7wBL9t4blCNat+d0PYqAx8wOoY+/9Q5cujnafbX7BmtYk3XvzkqLmFECaWvXGLuHmKj/wrILUinmQg==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rollup/rollup-win32-ia32-msvc@4.17.1':
|
'@rollup/rollup-win32-ia32-msvc@4.17.1':
|
||||||
resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.1.tgz}
|
resolution: {integrity: sha512-xjgkWUwlq7IbgJSIxvl516FJ2iuC/7ttjsAxSPpC9kkI5iQQFHKyEN5BjbhvJ/IXIZ3yIBcW5QDlWAyrA+TFag==}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@rollup/rollup-win32-x64-msvc@4.17.1':
|
'@rollup/rollup-win32-x64-msvc@4.17.1':
|
||||||
resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==, tarball: https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.1.tgz}
|
resolution: {integrity: sha512-0QbCkfk6cnnVKWqqlC0cUrrUMDMfu5ffvYMTUHf+qMN2uAb3MKP31LPcwiMXBNsvoFGs/kYdFOsuLmvppCopXA==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
@ -1529,71 +1532,71 @@ packages:
|
|||||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||||
|
|
||||||
'@swc/core-darwin-arm64@1.7.26':
|
'@swc/core-darwin-arm64@1.7.26':
|
||||||
resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==, tarball: https://registry.npmmirror.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz}
|
resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@swc/core-darwin-x64@1.7.26':
|
'@swc/core-darwin-x64@1.7.26':
|
||||||
resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==, tarball: https://registry.npmmirror.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz}
|
resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@swc/core-linux-arm-gnueabihf@1.7.26':
|
'@swc/core-linux-arm-gnueabihf@1.7.26':
|
||||||
resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz}
|
resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@swc/core-linux-arm64-gnu@1.7.26':
|
'@swc/core-linux-arm64-gnu@1.7.26':
|
||||||
resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz}
|
resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@swc/core-linux-arm64-musl@1.7.26':
|
'@swc/core-linux-arm64-musl@1.7.26':
|
||||||
resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==, tarball: https://registry.npmmirror.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz}
|
resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@swc/core-linux-x64-gnu@1.7.26':
|
'@swc/core-linux-x64-gnu@1.7.26':
|
||||||
resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz}
|
resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
libc: [glibc]
|
||||||
|
|
||||||
'@swc/core-linux-x64-musl@1.7.26':
|
'@swc/core-linux-x64-musl@1.7.26':
|
||||||
resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==, tarball: https://registry.npmmirror.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz}
|
resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
libc: [musl]
|
||||||
|
|
||||||
'@swc/core-win32-arm64-msvc@1.7.26':
|
'@swc/core-win32-arm64-msvc@1.7.26':
|
||||||
resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==, tarball: https://registry.npmmirror.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz}
|
resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@swc/core-win32-ia32-msvc@1.7.26':
|
'@swc/core-win32-ia32-msvc@1.7.26':
|
||||||
resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==, tarball: https://registry.npmmirror.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz}
|
resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@swc/core-win32-x64-msvc@1.7.26':
|
'@swc/core-win32-x64-msvc@1.7.26':
|
||||||
resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==, tarball: https://registry.npmmirror.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz}
|
resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@swc/core@1.7.26':
|
'@swc/core@1.7.26':
|
||||||
resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==, tarball: https://registry.npmmirror.com/@swc/core/-/core-1.7.26.tgz}
|
resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@swc/helpers': '*'
|
'@swc/helpers': '*'
|
||||||
@ -1602,13 +1605,13 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@swc/counter@0.1.3':
|
'@swc/counter@0.1.3':
|
||||||
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, tarball: https://registry.npmmirror.com/@swc/counter/-/counter-0.1.3.tgz}
|
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
||||||
|
|
||||||
'@swc/types@0.1.12':
|
'@swc/types@0.1.12':
|
||||||
resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==, tarball: https://registry.npmmirror.com/@swc/types/-/types-0.1.12.tgz}
|
resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==}
|
||||||
|
|
||||||
'@sxzz/popperjs-es@2.11.7':
|
'@sxzz/popperjs-es@2.11.7':
|
||||||
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==, tarball: https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz}
|
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
|
||||||
|
|
||||||
'@transloadit/prettier-bytes@0.0.7':
|
'@transloadit/prettier-bytes@0.0.7':
|
||||||
resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
|
resolution: {integrity: sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==}
|
||||||
@ -1756,10 +1759,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
||||||
|
|
||||||
'@types/video.js@7.3.58':
|
'@types/video.js@7.3.58':
|
||||||
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==, tarball: https://registry.npmmirror.com/@types/video.js/-/video.js-7.3.58.tgz}
|
resolution: {integrity: sha512-1CQjuSrgbv1/dhmcfQ83eVyYbvGyqhTvb2Opxr0QCV+iJ4J6/J+XWQ3Om59WiwCd1MN3rDUHasx5XRrpUtewYQ==}
|
||||||
|
|
||||||
'@types/web-bluetooth@0.0.16':
|
'@types/web-bluetooth@0.0.16':
|
||||||
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==, tarball: https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz}
|
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
|
||||||
|
|
||||||
'@types/web-bluetooth@0.0.20':
|
'@types/web-bluetooth@0.0.20':
|
||||||
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
|
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
|
||||||
@ -2105,19 +2108,19 @@ packages:
|
|||||||
resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
|
resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==}
|
||||||
|
|
||||||
'@vueuse/core@9.13.0':
|
'@vueuse/core@9.13.0':
|
||||||
resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==, tarball: https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz}
|
resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
|
||||||
|
|
||||||
'@vueuse/metadata@10.9.0':
|
'@vueuse/metadata@10.9.0':
|
||||||
resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==}
|
resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==}
|
||||||
|
|
||||||
'@vueuse/metadata@9.13.0':
|
'@vueuse/metadata@9.13.0':
|
||||||
resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==, tarball: https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz}
|
resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
|
||||||
|
|
||||||
'@vueuse/shared@10.9.0':
|
'@vueuse/shared@10.9.0':
|
||||||
resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
|
resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==}
|
||||||
|
|
||||||
'@vueuse/shared@9.13.0':
|
'@vueuse/shared@9.13.0':
|
||||||
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==, tarball: https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz}
|
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
|
||||||
|
|
||||||
'@wangeditor/basic-modules@1.1.7':
|
'@wangeditor/basic-modules@1.1.7':
|
||||||
resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
|
resolution: {integrity: sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==}
|
||||||
@ -2325,7 +2328,7 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
async-validator@4.2.5:
|
async-validator@4.2.5:
|
||||||
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==, tarball: https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz}
|
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
|
||||||
|
|
||||||
async@3.2.5:
|
async@3.2.5:
|
||||||
resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
|
resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==}
|
||||||
@ -3049,7 +3052,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==}
|
resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==}
|
||||||
|
|
||||||
element-plus@2.8.4:
|
element-plus@2.8.4:
|
||||||
resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==, tarball: https://registry.npmmirror.com/element-plus/-/element-plus-2.8.4.tgz}
|
resolution: {integrity: sha512-ZlVAdUOoJliv4kW3ntWnnSHMT+u/Os7mXJjk2xzOlqNeHaI2/ozlF+R58ZCEak8ZnDi6+5A2viWEYRsq64IuiA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
|
|
||||||
@ -3134,7 +3137,7 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
escape-html@1.0.3:
|
escape-html@1.0.3:
|
||||||
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, tarball: https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz}
|
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
|
||||||
|
|
||||||
escape-string-regexp@1.0.5:
|
escape-string-regexp@1.0.5:
|
||||||
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
|
||||||
@ -3376,7 +3379,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
||||||
|
|
||||||
fsevents@2.3.3:
|
fsevents@2.3.3:
|
||||||
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz}
|
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
@ -3993,7 +3996,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
||||||
|
|
||||||
lodash-unified@1.0.3:
|
lodash-unified@1.0.3:
|
||||||
resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==, tarball: https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz}
|
resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/lodash-es': '*'
|
'@types/lodash-es': '*'
|
||||||
lodash: '*'
|
lodash: '*'
|
||||||
@ -4129,7 +4132,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
||||||
|
|
||||||
memoize-one@6.0.0:
|
memoize-one@6.0.0:
|
||||||
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==, tarball: https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz}
|
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
|
||||||
|
|
||||||
meow@12.1.1:
|
meow@12.1.1:
|
||||||
resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
|
resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
|
||||||
@ -4300,7 +4303,7 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
normalize-wheel-es@1.2.0:
|
normalize-wheel-es@1.2.0:
|
||||||
resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==, tarball: https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz}
|
resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
|
||||||
|
|
||||||
npm-run-path@4.0.1:
|
npm-run-path@4.0.1:
|
||||||
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
|
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
|
||||||
@ -4920,6 +4923,9 @@ packages:
|
|||||||
sortablejs@1.14.0:
|
sortablejs@1.14.0:
|
||||||
resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
|
resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==}
|
||||||
|
|
||||||
|
sortablejs@1.15.3:
|
||||||
|
resolution: {integrity: sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==}
|
||||||
|
|
||||||
source-map-js@1.2.0:
|
source-map-js@1.2.0:
|
||||||
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
|
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -5336,7 +5342,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||||
|
|
||||||
uuid@10.0.0:
|
uuid@10.0.0:
|
||||||
resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==, tarball: https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz}
|
resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
vary@1.1.2:
|
vary@1.1.2:
|
||||||
@ -5386,7 +5392,7 @@ packages:
|
|||||||
vite: '>=2.0.0'
|
vite: '>=2.0.0'
|
||||||
|
|
||||||
vite-plugin-top-level-await@1.4.4:
|
vite-plugin-top-level-await@1.4.4:
|
||||||
resolution: {integrity: sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw==, tarball: https://registry.npmmirror.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.4.tgz}
|
resolution: {integrity: sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: '>=2.8'
|
vite: '>=2.8'
|
||||||
|
|
||||||
@ -10788,6 +10794,8 @@ snapshots:
|
|||||||
|
|
||||||
sortablejs@1.14.0: {}
|
sortablejs@1.14.0: {}
|
||||||
|
|
||||||
|
sortablejs@1.15.3: {}
|
||||||
|
|
||||||
source-map-js@1.2.0: {}
|
source-map-js@1.2.0: {}
|
||||||
|
|
||||||
source-map-resolve@0.5.3:
|
source-map-resolve@0.5.3:
|
||||||
|
404
src/views/bpm/model/CategoryDraggableModel.vue
Normal file
404
src/views/bpm/model/CategoryDraggableModel.vue
Normal file
@ -0,0 +1,404 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 默认使其全部展开 -->
|
||||||
|
<el-collapse :modelValue="title">
|
||||||
|
<el-collapse-item :name="title">
|
||||||
|
<template #icon="{ isActive }">
|
||||||
|
<div
|
||||||
|
class="ml-20px flex items-center"
|
||||||
|
:class="['transition-transform duration-300', isActive ? 'rotate-180' : 'rotate-0']"
|
||||||
|
>
|
||||||
|
<Icon icon="ep:arrow-down-bold" color="#999" />
|
||||||
|
</div>
|
||||||
|
<div class="ml-auto mr-30px">
|
||||||
|
<template v-if="!isSorting">
|
||||||
|
<el-button link type="info" class="mr-10px" @click.stop="handleSort">
|
||||||
|
<Icon icon="fa:sort-amount-desc" class="mr-5px" />
|
||||||
|
排序
|
||||||
|
</el-button>
|
||||||
|
<el-button link type="info" @click.stop="handleGroup">
|
||||||
|
<Icon icon="ep:setting" class="mr-5px" />
|
||||||
|
分组
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<el-button @click.stop="cancelSort"> 取 消 </el-button>
|
||||||
|
<el-button type="primary" @click.stop="saveSort"> 保存排序 </el-button>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<template #title>
|
||||||
|
<div class="flex items-center">
|
||||||
|
<h3 class="ml-20px mr-8px text-18px">{{ title }}</h3>
|
||||||
|
<div class="color-gray-600 text-16px"> ({{ dataList?.length || 0 }}) </div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
:class="title"
|
||||||
|
ref="tableRef"
|
||||||
|
:header-cell-style="{ backgroundColor: isDark ? '' : '#edeff0' }"
|
||||||
|
:data="dataList"
|
||||||
|
>
|
||||||
|
<el-table-column label="流程名" prop="name" min-width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<el-tooltip content="拖动排序" v-if="isSorting">
|
||||||
|
<Icon
|
||||||
|
icon="ic:round-drag-indicator"
|
||||||
|
class="drag-icon cursor-move text-#8a909c mr-10px"
|
||||||
|
/>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-image :src="scope.row.icon" class="h-32px w-32px mr-10px rounded" />
|
||||||
|
{{ scope.row.name }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="可见范围" prop="startUserIds" min-width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-text v-if="!scope.row.startUsers || scope.row.startUsers.length === 0">
|
||||||
|
全部可见
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else-if="scope.row.startUsers.length == 1">
|
||||||
|
{{ scope.row.startUsers[0].nickname }}
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else>
|
||||||
|
<el-tooltip
|
||||||
|
class="box-item"
|
||||||
|
effect="dark"
|
||||||
|
placement="top"
|
||||||
|
:content="scope.row.startUsers.map((user: any) => user.nickname).join('、')"
|
||||||
|
>
|
||||||
|
{{ scope.row.startUsers[0].nickname }}等 {{ scope.row.startUsers.length }} 人可见
|
||||||
|
</el-tooltip>
|
||||||
|
</el-text>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="表单信息" prop="formType" min-width="200">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.formType === 10"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleFormDetail(scope.row)"
|
||||||
|
>
|
||||||
|
<span>{{ scope.row.formName }}</span>
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-else-if="scope.row.formType === 20"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleFormDetail(scope.row)"
|
||||||
|
>
|
||||||
|
<span>{{ scope.row.formCustomCreatePath }}</span>
|
||||||
|
</el-button>
|
||||||
|
<label v-else>暂无表单</label>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="最后发布" prop="deploymentTime" min-width="250">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.processDefinition">
|
||||||
|
{{ formatDate(scope.row.processDefinition.deploymentTime) }}
|
||||||
|
</span>
|
||||||
|
<el-tag v-if="scope.row.processDefinition" class="ml-10px">
|
||||||
|
v{{ scope.row.processDefinition.version }}
|
||||||
|
</el-tag>
|
||||||
|
<el-tag v-else type="warning">未部署</el-tag>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.processDefinition?.suspensionState === 2"
|
||||||
|
type="warning"
|
||||||
|
class="ml-10px"
|
||||||
|
>
|
||||||
|
已停用
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="200" fixed="right">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="openForm('update', scope.row.id)"
|
||||||
|
v-hasPermi="['bpm:model:update']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
修改
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
class="!ml-5px"
|
||||||
|
type="primary"
|
||||||
|
@click="handleDesign(scope.row)"
|
||||||
|
v-hasPermi="['bpm:model:update']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
设计
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
class="!ml-5px"
|
||||||
|
type="primary"
|
||||||
|
@click="handleDeploy(scope.row)"
|
||||||
|
v-hasPermi="['bpm:model:deploy']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
发布
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown
|
||||||
|
class="!align-middle ml-5px"
|
||||||
|
@command="(command) => handleCommand(command, scope.row)"
|
||||||
|
v-hasPermi="['bpm:process-definition:query', 'bpm:model:update', 'bpm:model:delete']"
|
||||||
|
>
|
||||||
|
<el-button type="primary" link>更多</el-button>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item
|
||||||
|
command="handleDefinitionList"
|
||||||
|
v-if="checkPermi(['bpm:process-definition:query'])"
|
||||||
|
>
|
||||||
|
历史
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
command="handleChangeState"
|
||||||
|
v-if="checkPermi(['bpm:model:update']) && scope.row.processDefinition"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
{{ scope.row.processDefinition.suspensionState === 1 ? '停用' : '启用' }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
type="danger"
|
||||||
|
command="handleDelete"
|
||||||
|
v-if="checkPermi(['bpm:model:delete'])"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
// 拖拽组件
|
||||||
|
import Sortable from 'sortablejs'
|
||||||
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
import { formatDate } from '@/utils/formatTime'
|
||||||
|
import * as ModelApi from '@/api/bpm/model'
|
||||||
|
import * as FormApi from '@/api/bpm/form'
|
||||||
|
import { setConfAndFields2 } from '@/utils/formCreate'
|
||||||
|
import { BpmModelType } from '@/utils/constants'
|
||||||
|
import { checkPermi } from '@/utils/permission'
|
||||||
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
|
import { useAppStore } from '@/store/modules/app'
|
||||||
|
import { cloneDeep } from 'lodash-es'
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmModel' })
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
// 分类后的数据
|
||||||
|
dataList: propTypes.object.def([]),
|
||||||
|
title: propTypes.string.def('')
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['success'])
|
||||||
|
const appStore = useAppStore()
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const isDark = computed(() => appStore.getIsDark)
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
const { push } = useRouter() // 路由
|
||||||
|
const userStore = useUserStoreWithOut() // 用户信息缓存
|
||||||
|
const isSorting = ref(false) // 是否正处于排序状态
|
||||||
|
|
||||||
|
/** '更多'操作按钮 */
|
||||||
|
const handleCommand = (command: string, row: any) => {
|
||||||
|
switch (command) {
|
||||||
|
case 'handleDefinitionList':
|
||||||
|
handleDefinitionList(row)
|
||||||
|
break
|
||||||
|
case 'handleDelete':
|
||||||
|
handleDelete(row)
|
||||||
|
break
|
||||||
|
case 'handleChangeState':
|
||||||
|
handleChangeState(row)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 添加/修改操作 */
|
||||||
|
const formRef = ref()
|
||||||
|
const openForm = (type: string, id?: number) => {
|
||||||
|
formRef.value.open(type, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = async (row: any) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
await ModelApi.deleteModel(row.id)
|
||||||
|
message.success(t('common.delSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
emit('success')
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 更新状态操作 */
|
||||||
|
const handleChangeState = async (row: any) => {
|
||||||
|
const state = row.processDefinition.suspensionState
|
||||||
|
const newState = state === 1 ? 2 : 1
|
||||||
|
try {
|
||||||
|
// 修改状态的二次确认
|
||||||
|
const id = row.id
|
||||||
|
debugger
|
||||||
|
const statusState = state === 1 ? '停用' : '启用'
|
||||||
|
const content = '是否确认' + statusState + '流程名字为"' + row.name + '"的数据项?'
|
||||||
|
await message.confirm(content)
|
||||||
|
// 发起修改状态
|
||||||
|
await ModelApi.updateModelState(id, newState)
|
||||||
|
message.success(statusState + '成功')
|
||||||
|
// 刷新列表
|
||||||
|
emit('success')
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 设计流程 */
|
||||||
|
const handleDesign = (row: any) => {
|
||||||
|
if (row.type == BpmModelType.BPMN) {
|
||||||
|
push({
|
||||||
|
name: 'BpmModelEditor',
|
||||||
|
query: {
|
||||||
|
modelId: row.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
push({
|
||||||
|
name: 'SimpleWorkflowDesignEditor',
|
||||||
|
query: {
|
||||||
|
modelId: row.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 发布流程 */
|
||||||
|
const handleDeploy = async (row: any) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.confirm('是否部署该流程!!')
|
||||||
|
// 发起部署
|
||||||
|
await ModelApi.deployModel(row.id)
|
||||||
|
message.success(t('部署成功'))
|
||||||
|
// 刷新列表
|
||||||
|
emit('success')
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 跳转到指定流程定义列表 */
|
||||||
|
const handleDefinitionList = (row) => {
|
||||||
|
push({
|
||||||
|
name: 'BpmProcessDefinition',
|
||||||
|
query: {
|
||||||
|
key: row.key
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 流程表单的详情按钮操作 */
|
||||||
|
const formDetailVisible = ref(false)
|
||||||
|
const formDetailPreview = ref({
|
||||||
|
rule: [],
|
||||||
|
option: {}
|
||||||
|
})
|
||||||
|
const handleFormDetail = async (row: any) => {
|
||||||
|
if (row.formType == 10) {
|
||||||
|
// 设置表单
|
||||||
|
const data = await FormApi.getForm(row.formId)
|
||||||
|
setConfAndFields2(formDetailPreview, data.conf, data.fields)
|
||||||
|
// 弹窗打开
|
||||||
|
formDetailVisible.value = true
|
||||||
|
} else {
|
||||||
|
await push({
|
||||||
|
path: row.formCustomCreatePath
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 判断是否可以操作 */
|
||||||
|
const isManagerUser = (row: any) => {
|
||||||
|
const userId = userStore.getUser.id
|
||||||
|
return row.managerUserIds && row.managerUserIds.includes(userId)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 排序 */
|
||||||
|
const handleSort = () => {
|
||||||
|
isSorting.value = true
|
||||||
|
initSort()
|
||||||
|
}
|
||||||
|
|
||||||
|
const saveSort = () => {
|
||||||
|
// 接口调用
|
||||||
|
console.log(tableData.value)
|
||||||
|
cancelSort()
|
||||||
|
}
|
||||||
|
|
||||||
|
const cancelSort = () => {
|
||||||
|
isSorting.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分组 */
|
||||||
|
const handleGroup = () => {
|
||||||
|
console.log('分组')
|
||||||
|
}
|
||||||
|
const tableRef = ref()
|
||||||
|
// 创建拖拽实例
|
||||||
|
const initSort = () => {
|
||||||
|
const table = document.querySelector(`.${props.title} .el-table__body-wrapper tbody`)
|
||||||
|
Sortable.create(table, {
|
||||||
|
group: 'shared',
|
||||||
|
animation: 150,
|
||||||
|
draggable: '.el-table__row',
|
||||||
|
handle: '.drag-icon',
|
||||||
|
// 结束拖动事件
|
||||||
|
onEnd: ({ newDraggableIndex, oldDraggableIndex }) => {
|
||||||
|
if (oldDraggableIndex !== newDraggableIndex) {
|
||||||
|
tableData.value.splice(
|
||||||
|
newDraggableIndex,
|
||||||
|
0,
|
||||||
|
tableData.value.splice(oldDraggableIndex, 1)[0]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const tableData: any = ref([])
|
||||||
|
onMounted(() => {
|
||||||
|
tableData.value = cloneDeep(props.dataList)
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
:deep() {
|
||||||
|
.el-form--inline .el-form-item {
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.el-divider--horizontal {
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
.el-collapse,
|
||||||
|
.el-collapse-item__header,
|
||||||
|
.el-collapse-item__wrap {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.el-collapse-item__arrow {
|
||||||
|
margin-left: 10px;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,211 +1,69 @@
|
|||||||
<template>
|
<template>
|
||||||
<doc-alert title="流程设计器(BPMN)" url="https://doc.iocoder.cn/bpm/model-designer-dingding/" />
|
|
||||||
<doc-alert
|
|
||||||
title="流程设计器(钉钉、飞书)"
|
|
||||||
url="https://doc.iocoder.cn/bpm/model-designer-bpmn/"
|
|
||||||
/>
|
|
||||||
<doc-alert title="选择审批人、发起人自选" url="https://doc.iocoder.cn/bpm/assignee/" />
|
|
||||||
<doc-alert title="会签、或签、依次审批" url="https://doc.iocoder.cn/bpm/multi-instance/" />
|
|
||||||
|
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
|
<div class="flex justify-between pl-20px items-center">
|
||||||
|
<h3 class="font-extrabold">表单管理</h3>
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<el-form
|
<el-form
|
||||||
class="-mb-15px"
|
class="-mb-15px flex"
|
||||||
:model="queryParams"
|
:model="queryParams"
|
||||||
ref="queryFormRef"
|
ref="queryFormRef"
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="流程标识" prop="key">
|
<el-form-item align="right" prop="key" class="ml-auto">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.key"
|
v-model="queryParams.key"
|
||||||
placeholder="请输入流程标识"
|
placeholder="搜索流程"
|
||||||
clearable
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
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>
|
|
||||||
<el-form-item label="流程分类" prop="category">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.category"
|
|
||||||
placeholder="请选择流程分类"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
>
|
||||||
<el-option
|
<template #prefix>
|
||||||
v-for="category in categoryList"
|
<Icon icon="ep:search" class="mx-10px" />
|
||||||
:key="category.code"
|
</template>
|
||||||
:label="category.name"
|
</el-input>
|
||||||
:value="category.code"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button type="primary" @click="openForm('create')" v-hasPermi="['bpm:model:create']">
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<Icon icon="ep:plus" class="mr-5px" /> 新建流程
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
@click="openForm('create')"
|
|
||||||
v-hasPermi="['bpm:model:create']"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新建
|
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
|
||||||
</ContentWrap>
|
|
||||||
|
|
||||||
<!-- 列表 -->
|
<el-form-item>
|
||||||
<ContentWrap>
|
<el-dropdown placement="bottom-end">
|
||||||
<el-table v-loading="loading" :data="list">
|
<el-button class="w-30px" plain>
|
||||||
<el-table-column label="流程名称" align="center" prop="name" min-width="200" />
|
<Icon icon="ep:setting" />
|
||||||
<el-table-column label="流程图标" align="center" prop="icon" min-width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-image :src="scope.row.icon" class="h-32px w-32px" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="可见范围" align="center" prop="startUserIds" min-width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-text v-if="!scope.row.startUsers || scope.row.startUsers.length === 0">
|
|
||||||
全部可见
|
|
||||||
</el-text>
|
|
||||||
<el-text v-else-if="scope.row.startUsers.length == 1">
|
|
||||||
{{ scope.row.startUsers[0].nickname }}
|
|
||||||
</el-text>
|
|
||||||
<el-text v-else>
|
|
||||||
<el-tooltip
|
|
||||||
class="box-item"
|
|
||||||
effect="dark"
|
|
||||||
placement="top"
|
|
||||||
:content="scope.row.startUsers.map((user: any) => user.nickname).join('、')"
|
|
||||||
>
|
|
||||||
{{ scope.row.startUsers[0].nickname }}等 {{ scope.row.startUsers.length }} 人可见
|
|
||||||
</el-tooltip>
|
|
||||||
</el-text>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="流程分类" align="center" prop="categoryName" min-width="100" />
|
|
||||||
<el-table-column label="表单信息" align="center" prop="formType" min-width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
v-if="scope.row.formType === 10"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
@click="handleFormDetail(scope.row)"
|
|
||||||
>
|
|
||||||
<span>{{ scope.row.formName }}</span>
|
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
|
||||||
v-else-if="scope.row.formType === 20"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
@click="handleFormDetail(scope.row)"
|
|
||||||
>
|
|
||||||
<span>{{ scope.row.formCustomCreatePath }}</span>
|
|
||||||
</el-button>
|
|
||||||
<label v-else>暂无表单</label>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="最后发布" align="center" prop="deploymentTime" min-width="250">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.processDefinition">
|
|
||||||
{{ formatDate(scope.row.processDefinition.deploymentTime) }}
|
|
||||||
</span>
|
|
||||||
<el-tag v-if="scope.row.processDefinition" class="ml-10px">
|
|
||||||
v{{ scope.row.processDefinition.version }}
|
|
||||||
</el-tag>
|
|
||||||
<el-tag v-else type="warning">未部署</el-tag>
|
|
||||||
<el-tag
|
|
||||||
v-if="scope.row.processDefinition?.suspensionState === 2"
|
|
||||||
type="warning"
|
|
||||||
class="ml-10px"
|
|
||||||
>
|
|
||||||
已停用
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" align="center" width="200" fixed="right">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="openForm('update', scope.row.id)"
|
|
||||||
v-hasPermi="['bpm:model:update']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
修改
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
class="!ml-5px"
|
|
||||||
type="primary"
|
|
||||||
@click="handleDesign(scope.row)"
|
|
||||||
v-hasPermi="['bpm:model:update']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
设计
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
class="!ml-5px"
|
|
||||||
type="primary"
|
|
||||||
@click="handleDeploy(scope.row)"
|
|
||||||
v-hasPermi="['bpm:model:deploy']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
发布
|
|
||||||
</el-button>
|
|
||||||
<el-dropdown
|
|
||||||
class="!align-middle ml-5px"
|
|
||||||
@command="(command) => handleCommand(command, scope.row)"
|
|
||||||
v-hasPermi="['bpm:process-definition:query', 'bpm:model:update', 'bpm:model:delete']"
|
|
||||||
>
|
|
||||||
<el-button type="primary" link>更多</el-button>
|
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<el-dropdown-menu>
|
<el-dropdown-menu>
|
||||||
<el-dropdown-item
|
<el-dropdown-item>
|
||||||
command="handleDefinitionList"
|
<Icon icon="ep:circle-plus" :size="13" class="mr-5px" />
|
||||||
v-if="checkPermi(['bpm:process-definition:query'])"
|
新建分组
|
||||||
>
|
|
||||||
历史
|
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item
|
<el-dropdown-item>
|
||||||
command="handleChangeState"
|
<Icon icon="fa:sort-amount-desc" :size="13" class="mr-5px" />
|
||||||
v-if="checkPermi(['bpm:model:update']) && scope.row.processDefinition"
|
分组排序
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
{{ scope.row.processDefinition.suspensionState === 1 ? '停用' : '启用' }}
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item
|
|
||||||
type="danger"
|
|
||||||
command="handleDelete"
|
|
||||||
v-if="checkPermi(['bpm:model:delete'])"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</template>
|
</template>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</template>
|
</el-form-item>
|
||||||
</el-table-column>
|
</el-form>
|
||||||
</el-table>
|
</div>
|
||||||
<!-- 分页 -->
|
|
||||||
<Pagination
|
<el-divider />
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNo"
|
<!-- 分类卡片组 -->
|
||||||
v-model:limit="queryParams.pageSize"
|
<div class="px-15px">
|
||||||
@pagination="getList"
|
<ContentWrap
|
||||||
/>
|
v-loading="loading"
|
||||||
|
:body-style="{ padding: 0 }"
|
||||||
|
v-for="(list, title) in categoryGroup"
|
||||||
|
:key="title"
|
||||||
|
>
|
||||||
|
<CategoryDraggableModel :dataList="list" :title="title" @success="getList" />
|
||||||
|
</ContentWrap>
|
||||||
|
</div>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改流程 -->
|
<!-- 表单弹窗:添加/修改流程 -->
|
||||||
@ -218,26 +76,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { formatDate } from '@/utils/formatTime'
|
|
||||||
import * as ModelApi from '@/api/bpm/model'
|
import * as ModelApi from '@/api/bpm/model'
|
||||||
import * as FormApi from '@/api/bpm/form'
|
|
||||||
import ModelForm from './ModelForm.vue'
|
import ModelForm from './ModelForm.vue'
|
||||||
import { setConfAndFields2 } from '@/utils/formCreate'
|
import { groupBy } from 'lodash-es'
|
||||||
import { CategoryApi } from '@/api/bpm/category'
|
import { mockData } from './mock'
|
||||||
import { BpmModelType } from '@/utils/constants'
|
import CategoryDraggableModel from './CategoryDraggableModel.vue'
|
||||||
import { checkPermi } from '@/utils/permission'
|
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
|
||||||
|
|
||||||
defineOptions({ name: 'BpmModel' })
|
defineOptions({ name: 'BpmModel' })
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
|
||||||
const { t } = useI18n() // 国际化
|
|
||||||
const { push } = useRouter() // 路由
|
|
||||||
const userStore = useUserStoreWithOut() // 用户信息缓存
|
|
||||||
|
|
||||||
const loading = ref(true) // 列表的加载中
|
const loading = ref(true) // 列表的加载中
|
||||||
const total = ref(0) // 列表的总页数
|
|
||||||
const list = ref([]) // 列表的数据
|
|
||||||
const queryParams = reactive({
|
const queryParams = reactive({
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -246,15 +93,16 @@ const queryParams = reactive({
|
|||||||
category: undefined
|
category: undefined
|
||||||
})
|
})
|
||||||
const queryFormRef = ref() // 搜索的表单
|
const queryFormRef = ref() // 搜索的表单
|
||||||
const categoryList = ref([]) // 流程分类列表
|
const categoryGroup = ref<any>({}) // 按照category分组的数据
|
||||||
|
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
|
// TODO 芋艿:这里需要一个不分页查全部的流程模型接口
|
||||||
const data = await ModelApi.getModelPage(queryParams)
|
const data = await ModelApi.getModelPage(queryParams)
|
||||||
list.value = data.list
|
data.list = mockData
|
||||||
total.value = data.total
|
categoryGroup.value = groupBy(data.list, 'categoryName')
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
@ -266,139 +114,20 @@ const handleQuery = () => {
|
|||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 重置按钮操作 */
|
|
||||||
const resetQuery = () => {
|
|
||||||
queryFormRef.value.resetFields()
|
|
||||||
handleQuery()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** '更多'操作按钮 */
|
|
||||||
const handleCommand = (command: string, row: any) => {
|
|
||||||
switch (command) {
|
|
||||||
case 'handleDefinitionList':
|
|
||||||
handleDefinitionList(row)
|
|
||||||
break
|
|
||||||
case 'handleDelete':
|
|
||||||
handleDelete(row)
|
|
||||||
break
|
|
||||||
case 'handleChangeState':
|
|
||||||
handleChangeState(row)
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
/** 添加/修改操作 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = (type: string, id?: number) => {
|
const openForm = (type: string, id?: number) => {
|
||||||
formRef.value.open(type, id)
|
formRef.value.open(type, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
|
||||||
const handleDelete = async (row: any) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.delConfirm()
|
|
||||||
// 发起删除
|
|
||||||
await ModelApi.deleteModel(row.id)
|
|
||||||
message.success(t('common.delSuccess'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 更新状态操作 */
|
|
||||||
const handleChangeState = async (row: any) => {
|
|
||||||
const state = row.processDefinition.suspensionState
|
|
||||||
const newState = state === 1 ? 2 : 1
|
|
||||||
try {
|
|
||||||
// 修改状态的二次确认
|
|
||||||
const id = row.id
|
|
||||||
debugger
|
|
||||||
const statusState = state === 1 ? '停用' : '启用'
|
|
||||||
const content = '是否确认' + statusState + '流程名字为"' + row.name + '"的数据项?'
|
|
||||||
await message.confirm(content)
|
|
||||||
// 发起修改状态
|
|
||||||
await ModelApi.updateModelState(id, newState)
|
|
||||||
message.success(statusState + '成功')
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 设计流程 */
|
|
||||||
const handleDesign = (row: any) => {
|
|
||||||
if (row.type == BpmModelType.BPMN) {
|
|
||||||
push({
|
|
||||||
name: 'BpmModelEditor',
|
|
||||||
query: {
|
|
||||||
modelId: row.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
push({
|
|
||||||
name: 'SimpleWorkflowDesignEditor',
|
|
||||||
query: {
|
|
||||||
modelId: row.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 发布流程 */
|
|
||||||
const handleDeploy = async (row: any) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.confirm('是否部署该流程!!')
|
|
||||||
// 发起部署
|
|
||||||
await ModelApi.deployModel(row.id)
|
|
||||||
message.success(t('部署成功'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 跳转到指定流程定义列表 */
|
|
||||||
const handleDefinitionList = (row) => {
|
|
||||||
push({
|
|
||||||
name: 'BpmProcessDefinition',
|
|
||||||
query: {
|
|
||||||
key: row.key
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 流程表单的详情按钮操作 */
|
/** 流程表单的详情按钮操作 */
|
||||||
const formDetailVisible = ref(false)
|
const formDetailVisible = ref(false)
|
||||||
const formDetailPreview = ref({
|
const formDetailPreview = ref({
|
||||||
rule: [],
|
rule: [],
|
||||||
option: {}
|
option: {}
|
||||||
})
|
})
|
||||||
const handleFormDetail = async (row: any) => {
|
|
||||||
if (row.formType == 10) {
|
|
||||||
// 设置表单
|
|
||||||
const data = await FormApi.getForm(row.formId)
|
|
||||||
setConfAndFields2(formDetailPreview, data.conf, data.fields)
|
|
||||||
// 弹窗打开
|
|
||||||
formDetailVisible.value = true
|
|
||||||
} else {
|
|
||||||
await push({
|
|
||||||
path: row.formCustomCreatePath
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 判断是否可以操作 */
|
|
||||||
const isManagerUser = (row: any) => {
|
|
||||||
const userId = userStore.getUser.id
|
|
||||||
return row.managerUserIds && row.managerUserIds.includes(userId)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await getList()
|
await getList()
|
||||||
// 查询流程分类列表
|
|
||||||
categoryList.value = await CategoryApi.getCategorySimpleList()
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,456 +0,0 @@
|
|||||||
<template>
|
|
||||||
<ContentWrap>
|
|
||||||
<div class="flex justify-between pl-20px items-center">
|
|
||||||
<h3 class="font-extrabold">表单管理</h3>
|
|
||||||
<!-- 搜索工作栏 -->
|
|
||||||
<el-form
|
|
||||||
class="-mb-15px flex"
|
|
||||||
:model="queryParams"
|
|
||||||
ref="queryFormRef"
|
|
||||||
:inline="true"
|
|
||||||
label-width="68px"
|
|
||||||
>
|
|
||||||
<el-form-item align="right" prop="key" class="ml-auto">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.key"
|
|
||||||
placeholder="搜索流程"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<template #prefix>
|
|
||||||
<Icon icon="ep:search" class="mx-10px" />
|
|
||||||
</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" @click="openForm('create')" v-hasPermi="['bpm:model:create']">
|
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新建流程
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item>
|
|
||||||
<el-dropdown placement="bottom-end">
|
|
||||||
<el-button class="w-30px" plain>
|
|
||||||
<Icon icon="ep:setting" />
|
|
||||||
</el-button>
|
|
||||||
<template #dropdown>
|
|
||||||
<el-dropdown-menu>
|
|
||||||
<el-dropdown-item>
|
|
||||||
<Icon icon="ep:circle-plus" size="13" class="mr-5px" />
|
|
||||||
新建分组
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item>
|
|
||||||
<Icon icon="fa:sort-amount-desc" size="13" class="mr-5px" />
|
|
||||||
分组排序
|
|
||||||
</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</template>
|
|
||||||
</el-dropdown>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<el-divider />
|
|
||||||
|
|
||||||
<!-- 分类卡片组 -->
|
|
||||||
<div class="px-15px">
|
|
||||||
<ContentWrap :body-style="{ padding: 0 }" v-for="(list, title) in categoryGroup" :key="title">
|
|
||||||
<!-- 默认使其全部展开 -->
|
|
||||||
<el-collapse :modelValue="title">
|
|
||||||
<el-collapse-item :name="title">
|
|
||||||
<template #icon="{ isActive }">
|
|
||||||
<div
|
|
||||||
class="ml-20px flex items-center"
|
|
||||||
:class="['transition-transform duration-300', isActive ? 'rotate-180' : 'rotate-0']"
|
|
||||||
>
|
|
||||||
<Icon icon="ep:arrow-down-bold" color="#999" />
|
|
||||||
</div>
|
|
||||||
<div class="ml-auto mr-30px">
|
|
||||||
<el-button link type="info" class="mr-10px" @click.stop="handleSort">
|
|
||||||
<Icon icon="fa:sort-amount-desc" class="mr-5px" />
|
|
||||||
排序
|
|
||||||
</el-button>
|
|
||||||
<el-button link type="info" @click.stop="handleGroup">
|
|
||||||
<Icon icon="ep:setting" class="mr-5px" />
|
|
||||||
分组
|
|
||||||
</el-button>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<template #title>
|
|
||||||
<div class="flex items-center">
|
|
||||||
<h3 class="ml-20px mr-8px text-18px">{{ title }}</h3>
|
|
||||||
<div class="color-gray-600 text-16px"> ({{ list?.length || 0 }}) </div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<el-table
|
|
||||||
:header-cell-style="{ backgroundColor: isDark ? '' : '#edeff0' }"
|
|
||||||
v-loading="loading"
|
|
||||||
:data="list"
|
|
||||||
>
|
|
||||||
<el-table-column label="流程名" prop="name" min-width="150">
|
|
||||||
<template #default="scope">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<el-image :src="scope.row.icon" class="h-32px w-32px mr-10px rounded" />
|
|
||||||
{{ scope.row.name }}
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="可见范围" prop="startUserIds" min-width="100">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-text v-if="!scope.row.startUsers || scope.row.startUsers.length === 0">
|
|
||||||
全部可见
|
|
||||||
</el-text>
|
|
||||||
<el-text v-else-if="scope.row.startUsers.length == 1">
|
|
||||||
{{ scope.row.startUsers[0].nickname }}
|
|
||||||
</el-text>
|
|
||||||
<el-text v-else>
|
|
||||||
<el-tooltip
|
|
||||||
class="box-item"
|
|
||||||
effect="dark"
|
|
||||||
placement="top"
|
|
||||||
:content="scope.row.startUsers.map((user: any) => user.nickname).join('、')"
|
|
||||||
>
|
|
||||||
{{ scope.row.startUsers[0].nickname }}等
|
|
||||||
{{ scope.row.startUsers.length }} 人可见
|
|
||||||
</el-tooltip>
|
|
||||||
</el-text>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="表单信息" prop="formType" min-width="200">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
v-if="scope.row.formType === 10"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
@click="handleFormDetail(scope.row)"
|
|
||||||
>
|
|
||||||
<span>{{ scope.row.formName }}</span>
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
v-else-if="scope.row.formType === 20"
|
|
||||||
type="primary"
|
|
||||||
link
|
|
||||||
@click="handleFormDetail(scope.row)"
|
|
||||||
>
|
|
||||||
<span>{{ scope.row.formCustomCreatePath }}</span>
|
|
||||||
</el-button>
|
|
||||||
<label v-else>暂无表单</label>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="最后发布" prop="deploymentTime" min-width="250">
|
|
||||||
<template #default="scope">
|
|
||||||
<span v-if="scope.row.processDefinition">
|
|
||||||
{{ formatDate(scope.row.processDefinition.deploymentTime) }}
|
|
||||||
</span>
|
|
||||||
<el-tag v-if="scope.row.processDefinition" class="ml-10px">
|
|
||||||
v{{ scope.row.processDefinition.version }}
|
|
||||||
</el-tag>
|
|
||||||
<el-tag v-else type="warning">未部署</el-tag>
|
|
||||||
<el-tag
|
|
||||||
v-if="scope.row.processDefinition?.suspensionState === 2"
|
|
||||||
type="warning"
|
|
||||||
class="ml-10px"
|
|
||||||
>
|
|
||||||
已停用
|
|
||||||
</el-tag>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" width="200" fixed="right">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="openForm('update', scope.row.id)"
|
|
||||||
v-hasPermi="['bpm:model:update']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
修改
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
class="!ml-5px"
|
|
||||||
type="primary"
|
|
||||||
@click="handleDesign(scope.row)"
|
|
||||||
v-hasPermi="['bpm:model:update']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
设计
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
class="!ml-5px"
|
|
||||||
type="primary"
|
|
||||||
@click="handleDeploy(scope.row)"
|
|
||||||
v-hasPermi="['bpm:model:deploy']"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
发布
|
|
||||||
</el-button>
|
|
||||||
<el-dropdown
|
|
||||||
class="!align-middle ml-5px"
|
|
||||||
@command="(command) => handleCommand(command, scope.row)"
|
|
||||||
v-hasPermi="[
|
|
||||||
'bpm:process-definition:query',
|
|
||||||
'bpm:model:update',
|
|
||||||
'bpm:model:delete'
|
|
||||||
]"
|
|
||||||
>
|
|
||||||
<el-button type="primary" link>更多</el-button>
|
|
||||||
<template #dropdown>
|
|
||||||
<el-dropdown-menu>
|
|
||||||
<el-dropdown-item
|
|
||||||
command="handleDefinitionList"
|
|
||||||
v-if="checkPermi(['bpm:process-definition:query'])"
|
|
||||||
>
|
|
||||||
历史
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item
|
|
||||||
command="handleChangeState"
|
|
||||||
v-if="checkPermi(['bpm:model:update']) && scope.row.processDefinition"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
{{ scope.row.processDefinition.suspensionState === 1 ? '停用' : '启用' }}
|
|
||||||
</el-dropdown-item>
|
|
||||||
<el-dropdown-item
|
|
||||||
type="danger"
|
|
||||||
command="handleDelete"
|
|
||||||
v-if="checkPermi(['bpm:model:delete'])"
|
|
||||||
:disabled="!isManagerUser(scope.row)"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-dropdown-item>
|
|
||||||
</el-dropdown-menu>
|
|
||||||
</template>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</el-collapse-item>
|
|
||||||
</el-collapse>
|
|
||||||
</ContentWrap>
|
|
||||||
</div>
|
|
||||||
</ContentWrap>
|
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改流程 -->
|
|
||||||
<ModelForm ref="formRef" @success="getList" />
|
|
||||||
|
|
||||||
<!-- 弹窗:表单详情 -->
|
|
||||||
<Dialog title="表单详情" v-model="formDetailVisible" width="800">
|
|
||||||
<form-create :rule="formDetailPreview.rule" :option="formDetailPreview.option" />
|
|
||||||
</Dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts" setup>
|
|
||||||
import { formatDate } from '@/utils/formatTime'
|
|
||||||
import * as ModelApi from '@/api/bpm/model'
|
|
||||||
import * as FormApi from '@/api/bpm/form'
|
|
||||||
import ModelForm from './ModelForm.vue'
|
|
||||||
import { setConfAndFields2 } from '@/utils/formCreate'
|
|
||||||
import { CategoryApi } from '@/api/bpm/category'
|
|
||||||
import { BpmModelType } from '@/utils/constants'
|
|
||||||
import { checkPermi } from '@/utils/permission'
|
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
|
||||||
import { useAppStore } from '@/store/modules/app'
|
|
||||||
import { groupBy } from 'lodash-es'
|
|
||||||
|
|
||||||
defineOptions({ name: 'BpmModel' })
|
|
||||||
|
|
||||||
const appStore = useAppStore()
|
|
||||||
const message = useMessage() // 消息弹窗
|
|
||||||
const isDark = computed(() => appStore.getIsDark)
|
|
||||||
const { t } = useI18n() // 国际化
|
|
||||||
const { push } = useRouter() // 路由
|
|
||||||
const userStore = useUserStoreWithOut() // 用户信息缓存
|
|
||||||
const loading = ref(true) // 列表的加载中
|
|
||||||
const queryParams = reactive({
|
|
||||||
pageNo: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
key: undefined,
|
|
||||||
name: undefined,
|
|
||||||
category: undefined
|
|
||||||
})
|
|
||||||
const queryFormRef = ref() // 搜索的表单
|
|
||||||
const categoryList = ref([]) // 流程分类列表
|
|
||||||
const categoryGroup = ref<any>({}) // 按照category分组的数据
|
|
||||||
|
|
||||||
/** 查询列表 */
|
|
||||||
const getList = async () => {
|
|
||||||
loading.value = true
|
|
||||||
try {
|
|
||||||
// TODO 芋艿:这里需要一个不分页查全部的流程模型接口
|
|
||||||
const data = await ModelApi.getModelPage(queryParams)
|
|
||||||
categoryGroup.value = groupBy(data.list, 'categoryName')
|
|
||||||
} finally {
|
|
||||||
loading.value = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 搜索按钮操作 */
|
|
||||||
const handleQuery = () => {
|
|
||||||
queryParams.pageNo = 1
|
|
||||||
getList()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** '更多'操作按钮 */
|
|
||||||
const handleCommand = (command: string, row: any) => {
|
|
||||||
switch (command) {
|
|
||||||
case 'handleDefinitionList':
|
|
||||||
handleDefinitionList(row)
|
|
||||||
break
|
|
||||||
case 'handleDelete':
|
|
||||||
handleDelete(row)
|
|
||||||
break
|
|
||||||
case 'handleChangeState':
|
|
||||||
handleChangeState(row)
|
|
||||||
break
|
|
||||||
default:
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
|
||||||
const formRef = ref()
|
|
||||||
const openForm = (type: string, id?: number) => {
|
|
||||||
formRef.value.open(type, id)
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
|
||||||
const handleDelete = async (row: any) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.delConfirm()
|
|
||||||
// 发起删除
|
|
||||||
await ModelApi.deleteModel(row.id)
|
|
||||||
message.success(t('common.delSuccess'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 更新状态操作 */
|
|
||||||
const handleChangeState = async (row: any) => {
|
|
||||||
const state = row.processDefinition.suspensionState
|
|
||||||
const newState = state === 1 ? 2 : 1
|
|
||||||
try {
|
|
||||||
// 修改状态的二次确认
|
|
||||||
const id = row.id
|
|
||||||
debugger
|
|
||||||
const statusState = state === 1 ? '停用' : '启用'
|
|
||||||
const content = '是否确认' + statusState + '流程名字为"' + row.name + '"的数据项?'
|
|
||||||
await message.confirm(content)
|
|
||||||
// 发起修改状态
|
|
||||||
await ModelApi.updateModelState(id, newState)
|
|
||||||
message.success(statusState + '成功')
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 设计流程 */
|
|
||||||
const handleDesign = (row: any) => {
|
|
||||||
if (row.type == BpmModelType.BPMN) {
|
|
||||||
push({
|
|
||||||
name: 'BpmModelEditor',
|
|
||||||
query: {
|
|
||||||
modelId: row.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
push({
|
|
||||||
name: 'SimpleWorkflowDesignEditor',
|
|
||||||
query: {
|
|
||||||
modelId: row.id
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 发布流程 */
|
|
||||||
const handleDeploy = async (row: any) => {
|
|
||||||
try {
|
|
||||||
// 删除的二次确认
|
|
||||||
await message.confirm('是否部署该流程!!')
|
|
||||||
// 发起部署
|
|
||||||
await ModelApi.deployModel(row.id)
|
|
||||||
message.success(t('部署成功'))
|
|
||||||
// 刷新列表
|
|
||||||
await getList()
|
|
||||||
} catch {}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 跳转到指定流程定义列表 */
|
|
||||||
const handleDefinitionList = (row) => {
|
|
||||||
push({
|
|
||||||
name: 'BpmProcessDefinition',
|
|
||||||
query: {
|
|
||||||
key: row.key
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 流程表单的详情按钮操作 */
|
|
||||||
const formDetailVisible = ref(false)
|
|
||||||
const formDetailPreview = ref({
|
|
||||||
rule: [],
|
|
||||||
option: {}
|
|
||||||
})
|
|
||||||
const handleFormDetail = async (row: any) => {
|
|
||||||
if (row.formType == 10) {
|
|
||||||
// 设置表单
|
|
||||||
const data = await FormApi.getForm(row.formId)
|
|
||||||
setConfAndFields2(formDetailPreview, data.conf, data.fields)
|
|
||||||
// 弹窗打开
|
|
||||||
formDetailVisible.value = true
|
|
||||||
} else {
|
|
||||||
await push({
|
|
||||||
path: row.formCustomCreatePath
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 判断是否可以操作 */
|
|
||||||
const isManagerUser = (row: any) => {
|
|
||||||
const userId = userStore.getUser.id
|
|
||||||
return row.managerUserIds && row.managerUserIds.includes(userId)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 排序 */
|
|
||||||
const handleSort = () => {
|
|
||||||
console.log('排序')
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 分组 */
|
|
||||||
const handleGroup = () => {
|
|
||||||
console.log('分组')
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 初始化 **/
|
|
||||||
onMounted(async () => {
|
|
||||||
await getList()
|
|
||||||
// 查询流程分类列表
|
|
||||||
categoryList.value = await CategoryApi.getCategorySimpleList()
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
:deep() {
|
|
||||||
.el-form--inline .el-form-item {
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
.el-divider--horizontal {
|
|
||||||
margin-top: 6px;
|
|
||||||
}
|
|
||||||
.el-collapse,
|
|
||||||
.el-collapse-item__header,
|
|
||||||
.el-collapse-item__wrap {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.el-collapse-item__arrow {
|
|
||||||
margin-left: 10px;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
404
src/views/bpm/model/index_old.vue
Normal file
404
src/views/bpm/model/index_old.vue
Normal file
@ -0,0 +1,404 @@
|
|||||||
|
<template>
|
||||||
|
<doc-alert title="流程设计器(BPMN)" url="https://doc.iocoder.cn/bpm/model-designer-dingding/" />
|
||||||
|
<doc-alert
|
||||||
|
title="流程设计器(钉钉、飞书)"
|
||||||
|
url="https://doc.iocoder.cn/bpm/model-designer-bpmn/"
|
||||||
|
/>
|
||||||
|
<doc-alert title="选择审批人、发起人自选" url="https://doc.iocoder.cn/bpm/assignee/" />
|
||||||
|
<doc-alert title="会签、或签、依次审批" url="https://doc.iocoder.cn/bpm/multi-instance/" />
|
||||||
|
|
||||||
|
<ContentWrap>
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<el-form
|
||||||
|
class="-mb-15px"
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryFormRef"
|
||||||
|
:inline="true"
|
||||||
|
label-width="68px"
|
||||||
|
>
|
||||||
|
<el-form-item label="流程标识" prop="key">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.key"
|
||||||
|
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>
|
||||||
|
<el-form-item label="流程分类" prop="category">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.category"
|
||||||
|
placeholder="请选择流程分类"
|
||||||
|
clearable
|
||||||
|
class="!w-240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="category in categoryList"
|
||||||
|
:key="category.code"
|
||||||
|
:label="category.name"
|
||||||
|
:value="category.code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</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="primary"
|
||||||
|
plain
|
||||||
|
@click="openForm('create')"
|
||||||
|
v-hasPermi="['bpm:model:create']"
|
||||||
|
>
|
||||||
|
<Icon icon="ep:plus" class="mr-5px" /> 新建
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</ContentWrap>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<ContentWrap>
|
||||||
|
<el-table v-loading="loading" :data="list">
|
||||||
|
<el-table-column label="流程名称" align="center" prop="name" min-width="200" />
|
||||||
|
<el-table-column label="流程图标" align="center" prop="icon" min-width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-image :src="scope.row.icon" class="h-32px w-32px" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="可见范围" align="center" prop="startUserIds" min-width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-text v-if="!scope.row.startUsers || scope.row.startUsers.length === 0">
|
||||||
|
全部可见
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else-if="scope.row.startUsers.length == 1">
|
||||||
|
{{ scope.row.startUsers[0].nickname }}
|
||||||
|
</el-text>
|
||||||
|
<el-text v-else>
|
||||||
|
<el-tooltip
|
||||||
|
class="box-item"
|
||||||
|
effect="dark"
|
||||||
|
placement="top"
|
||||||
|
:content="scope.row.startUsers.map((user: any) => user.nickname).join('、')"
|
||||||
|
>
|
||||||
|
{{ scope.row.startUsers[0].nickname }}等 {{ scope.row.startUsers.length }} 人可见
|
||||||
|
</el-tooltip>
|
||||||
|
</el-text>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="流程分类" align="center" prop="categoryName" min-width="100" />
|
||||||
|
<el-table-column label="表单信息" align="center" prop="formType" min-width="200">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.formType === 10"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleFormDetail(scope.row)"
|
||||||
|
>
|
||||||
|
<span>{{ scope.row.formName }}</span>
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
v-else-if="scope.row.formType === 20"
|
||||||
|
type="primary"
|
||||||
|
link
|
||||||
|
@click="handleFormDetail(scope.row)"
|
||||||
|
>
|
||||||
|
<span>{{ scope.row.formCustomCreatePath }}</span>
|
||||||
|
</el-button>
|
||||||
|
<label v-else>暂无表单</label>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="最后发布" align="center" prop="deploymentTime" min-width="250">
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.processDefinition">
|
||||||
|
{{ formatDate(scope.row.processDefinition.deploymentTime) }}
|
||||||
|
</span>
|
||||||
|
<el-tag v-if="scope.row.processDefinition" class="ml-10px">
|
||||||
|
v{{ scope.row.processDefinition.version }}
|
||||||
|
</el-tag>
|
||||||
|
<el-tag v-else type="warning">未部署</el-tag>
|
||||||
|
<el-tag
|
||||||
|
v-if="scope.row.processDefinition?.suspensionState === 2"
|
||||||
|
type="warning"
|
||||||
|
class="ml-10px"
|
||||||
|
>
|
||||||
|
已停用
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" width="200" fixed="right">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="openForm('update', scope.row.id)"
|
||||||
|
v-hasPermi="['bpm:model:update']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
修改
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
class="!ml-5px"
|
||||||
|
type="primary"
|
||||||
|
@click="handleDesign(scope.row)"
|
||||||
|
v-hasPermi="['bpm:model:update']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
设计
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
class="!ml-5px"
|
||||||
|
type="primary"
|
||||||
|
@click="handleDeploy(scope.row)"
|
||||||
|
v-hasPermi="['bpm:model:deploy']"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
发布
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown
|
||||||
|
class="!align-middle ml-5px"
|
||||||
|
@command="(command) => handleCommand(command, scope.row)"
|
||||||
|
v-hasPermi="['bpm:process-definition:query', 'bpm:model:update', 'bpm:model:delete']"
|
||||||
|
>
|
||||||
|
<el-button type="primary" link>更多</el-button>
|
||||||
|
<template #dropdown>
|
||||||
|
<el-dropdown-menu>
|
||||||
|
<el-dropdown-item
|
||||||
|
command="handleDefinitionList"
|
||||||
|
v-if="checkPermi(['bpm:process-definition:query'])"
|
||||||
|
>
|
||||||
|
历史
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
command="handleChangeState"
|
||||||
|
v-if="checkPermi(['bpm:model:update']) && scope.row.processDefinition"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
{{ scope.row.processDefinition.suspensionState === 1 ? '停用' : '启用' }}
|
||||||
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item
|
||||||
|
type="danger"
|
||||||
|
command="handleDelete"
|
||||||
|
v-if="checkPermi(['bpm:model:delete'])"
|
||||||
|
:disabled="!isManagerUser(scope.row)"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</template>
|
||||||
|
</el-dropdown>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页 -->
|
||||||
|
<Pagination
|
||||||
|
:total="total"
|
||||||
|
v-model:page="queryParams.pageNo"
|
||||||
|
v-model:limit="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
</ContentWrap>
|
||||||
|
|
||||||
|
<!-- 表单弹窗:添加/修改流程 -->
|
||||||
|
<ModelForm ref="formRef" @success="getList" />
|
||||||
|
|
||||||
|
<!-- 弹窗:表单详情 -->
|
||||||
|
<Dialog title="表单详情" v-model="formDetailVisible" width="800">
|
||||||
|
<form-create :rule="formDetailPreview.rule" :option="formDetailPreview.option" />
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { formatDate } from '@/utils/formatTime'
|
||||||
|
import * as ModelApi from '@/api/bpm/model'
|
||||||
|
import * as FormApi from '@/api/bpm/form'
|
||||||
|
import ModelForm from './ModelForm.vue'
|
||||||
|
import { setConfAndFields2 } from '@/utils/formCreate'
|
||||||
|
import { CategoryApi } from '@/api/bpm/category'
|
||||||
|
import { BpmModelType } from '@/utils/constants'
|
||||||
|
import { checkPermi } from '@/utils/permission'
|
||||||
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
|
|
||||||
|
defineOptions({ name: 'BpmModel' })
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
const { push } = useRouter() // 路由
|
||||||
|
const userStore = useUserStoreWithOut() // 用户信息缓存
|
||||||
|
|
||||||
|
const loading = ref(true) // 列表的加载中
|
||||||
|
const total = ref(0) // 列表的总页数
|
||||||
|
const list = ref([]) // 列表的数据
|
||||||
|
const queryParams = reactive({
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
key: undefined,
|
||||||
|
name: undefined,
|
||||||
|
category: undefined
|
||||||
|
})
|
||||||
|
const queryFormRef = ref() // 搜索的表单
|
||||||
|
const categoryList = ref([]) // 流程分类列表
|
||||||
|
|
||||||
|
/** 查询列表 */
|
||||||
|
const getList = async () => {
|
||||||
|
loading.value = true
|
||||||
|
try {
|
||||||
|
const data = await ModelApi.getModelPage(queryParams)
|
||||||
|
list.value = data.list
|
||||||
|
total.value = data.total
|
||||||
|
} finally {
|
||||||
|
loading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
const handleQuery = () => {
|
||||||
|
queryParams.pageNo = 1
|
||||||
|
getList()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
const resetQuery = () => {
|
||||||
|
queryFormRef.value.resetFields()
|
||||||
|
handleQuery()
|
||||||
|
}
|
||||||
|
|
||||||
|
/** '更多'操作按钮 */
|
||||||
|
const handleCommand = (command: string, row: any) => {
|
||||||
|
switch (command) {
|
||||||
|
case 'handleDefinitionList':
|
||||||
|
handleDefinitionList(row)
|
||||||
|
break
|
||||||
|
case 'handleDelete':
|
||||||
|
handleDelete(row)
|
||||||
|
break
|
||||||
|
case 'handleChangeState':
|
||||||
|
handleChangeState(row)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 添加/修改操作 */
|
||||||
|
const formRef = ref()
|
||||||
|
const openForm = (type: string, id?: number) => {
|
||||||
|
formRef.value.open(type, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = async (row: any) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
await ModelApi.deleteModel(row.id)
|
||||||
|
message.success(t('common.delSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 更新状态操作 */
|
||||||
|
const handleChangeState = async (row: any) => {
|
||||||
|
const state = row.processDefinition.suspensionState
|
||||||
|
const newState = state === 1 ? 2 : 1
|
||||||
|
try {
|
||||||
|
// 修改状态的二次确认
|
||||||
|
const id = row.id
|
||||||
|
debugger
|
||||||
|
const statusState = state === 1 ? '停用' : '启用'
|
||||||
|
const content = '是否确认' + statusState + '流程名字为"' + row.name + '"的数据项?'
|
||||||
|
await message.confirm(content)
|
||||||
|
// 发起修改状态
|
||||||
|
await ModelApi.updateModelState(id, newState)
|
||||||
|
message.success(statusState + '成功')
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 设计流程 */
|
||||||
|
const handleDesign = (row: any) => {
|
||||||
|
if (row.type == BpmModelType.BPMN) {
|
||||||
|
push({
|
||||||
|
name: 'BpmModelEditor',
|
||||||
|
query: {
|
||||||
|
modelId: row.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
push({
|
||||||
|
name: 'SimpleWorkflowDesignEditor',
|
||||||
|
query: {
|
||||||
|
modelId: row.id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 发布流程 */
|
||||||
|
const handleDeploy = async (row: any) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.confirm('是否部署该流程!!')
|
||||||
|
// 发起部署
|
||||||
|
await ModelApi.deployModel(row.id)
|
||||||
|
message.success(t('部署成功'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 跳转到指定流程定义列表 */
|
||||||
|
const handleDefinitionList = (row) => {
|
||||||
|
push({
|
||||||
|
name: 'BpmProcessDefinition',
|
||||||
|
query: {
|
||||||
|
key: row.key
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 流程表单的详情按钮操作 */
|
||||||
|
const formDetailVisible = ref(false)
|
||||||
|
const formDetailPreview = ref({
|
||||||
|
rule: [],
|
||||||
|
option: {}
|
||||||
|
})
|
||||||
|
const handleFormDetail = async (row: any) => {
|
||||||
|
if (row.formType == 10) {
|
||||||
|
// 设置表单
|
||||||
|
const data = await FormApi.getForm(row.formId)
|
||||||
|
setConfAndFields2(formDetailPreview, data.conf, data.fields)
|
||||||
|
// 弹窗打开
|
||||||
|
formDetailVisible.value = true
|
||||||
|
} else {
|
||||||
|
await push({
|
||||||
|
path: row.formCustomCreatePath
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 判断是否可以操作 */
|
||||||
|
const isManagerUser = (row: any) => {
|
||||||
|
const userId = userStore.getUser.id
|
||||||
|
return row.managerUserIds && row.managerUserIds.includes(userId)
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
onMounted(async () => {
|
||||||
|
await getList()
|
||||||
|
// 查询流程分类列表
|
||||||
|
categoryList.value = await CategoryApi.getCategorySimpleList()
|
||||||
|
})
|
||||||
|
</script>
|
202
src/views/bpm/model/mock.js
Normal file
202
src/views/bpm/model/mock.js
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
export const mockData = [
|
||||||
|
{
|
||||||
|
key: 'out_apply',
|
||||||
|
name: '外出申请',
|
||||||
|
description: null,
|
||||||
|
category: '1',
|
||||||
|
categoryName: '测试1',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/OA/goingOut/create',
|
||||||
|
formCustomViewPath: '/OA/goingOut/detail',
|
||||||
|
id: 'ff8f8bab-4d4e-11ef-8201-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1722218716216,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'out_apply:4:7f56d464-4eec-11ef-8c3a-0242ac130002',
|
||||||
|
version: 4,
|
||||||
|
deploymentTime: 1722396312641,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'contract_change_history',
|
||||||
|
name: '合同变更申请',
|
||||||
|
description: null,
|
||||||
|
category: '2',
|
||||||
|
categoryName: '测试2',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/project/changeRecord/detail',
|
||||||
|
formCustomViewPath: '/project/changeRecord/detail',
|
||||||
|
id: '0c689067-3a92-11ef-b7f0-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1720158441959,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'contract_change_history:1:f69fff4f-3a9a-11ef-b7f0-0242ac130002',
|
||||||
|
version: 1,
|
||||||
|
deploymentTime: 1720162270788,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'expenses_claim',
|
||||||
|
name: '费用报销申请',
|
||||||
|
description: null,
|
||||||
|
category: '1',
|
||||||
|
categoryName: '测试1',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/finance/reimbursement/detail',
|
||||||
|
formCustomViewPath: '/finance/reimbursement/detail',
|
||||||
|
id: '0310ad0c-351e-11ef-a653-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1719558848849,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'expenses_claim:5:a043a1d8-4eec-11ef-8c3a-0242ac130002',
|
||||||
|
version: 5,
|
||||||
|
deploymentTime: 1722396367911,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'out_business_apply',
|
||||||
|
name: '申请单',
|
||||||
|
description: null,
|
||||||
|
category: '2',
|
||||||
|
categoryName: '测试2',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/finance/businessTripApply/detail',
|
||||||
|
formCustomViewPath: '/finance/businessTripApply/detail',
|
||||||
|
id: '279e27a4-3393-11ef-8401-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1719389258966,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'out_business_apply:9:a7b2d4e2-430f-11ef-876f-0242ac130002',
|
||||||
|
version: 9,
|
||||||
|
deploymentTime: 1721091998780,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'pms_project_delay_application',
|
||||||
|
name: '项目延时申请',
|
||||||
|
description: null,
|
||||||
|
category: '2',
|
||||||
|
categoryName: '测试2',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/project/workHourDelay/create',
|
||||||
|
formCustomViewPath: '/project/workHourDelay/detail',
|
||||||
|
id: '46d87275-27c7-11ef-b258-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1718092231234,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'b7ed308a-430f-11ef-876f-0242ac130002',
|
||||||
|
version: 5,
|
||||||
|
deploymentTime: 1721092026059,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'pms_project_result_approval',
|
||||||
|
name: '项目成果审核',
|
||||||
|
description: null,
|
||||||
|
category: '2',
|
||||||
|
categoryName: '测试2',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/project/projectTaskResult/detail',
|
||||||
|
formCustomViewPath: '/project/projectTaskResult/detail',
|
||||||
|
id: '4a15d4f8-23cc-11ef-8dd0-0242ac130002',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1717654579502,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'dd3cc360-4eec-11ef-8c3a-0242ac130002',
|
||||||
|
version: 6,
|
||||||
|
deploymentTime: 1722396470232,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'pms_contract',
|
||||||
|
name: '合同管理',
|
||||||
|
description: null,
|
||||||
|
category: '2',
|
||||||
|
categoryName: '测试2',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/sales/contract/create',
|
||||||
|
formCustomViewPath: '/sales/contract/detail',
|
||||||
|
id: '8317cb71-0d1a-11ef-8445-70b5e844a623',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1715159299146,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'pms_contract:5:c7d6012a-29f2-11ef-a08d-0242ac130002',
|
||||||
|
version: 5,
|
||||||
|
deploymentTime: 1718330818270,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'pms_consult_task_act',
|
||||||
|
name: '咨询任务书',
|
||||||
|
description: null,
|
||||||
|
category: '1',
|
||||||
|
categoryName: '测试1',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/consultTask/create',
|
||||||
|
formCustomViewPath: '/consultTask/detail',
|
||||||
|
id: '47fad8e4-0b91-11ef-b841-70b5e844a623',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1714990407756,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'pms_consult_task_act:1:67c2ae59-0b91-11ef-b841-70b5e844a623',
|
||||||
|
version: 1,
|
||||||
|
deploymentTime: 1714990460960,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'pms_project',
|
||||||
|
name: '立项管理',
|
||||||
|
description: null,
|
||||||
|
category: '1',
|
||||||
|
categoryName: '测试1',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/project/applyProject/create',
|
||||||
|
formCustomViewPath: '/project/applyProject/detail',
|
||||||
|
id: 'f0ba6bde-0b90-11ef-b841-70b5e844a623',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1714990261372,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'pms_project:6:b9e4e33b-2c6c-11ef-8386-0242ac130002',
|
||||||
|
version: 6,
|
||||||
|
deploymentTime: 1718603095738,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'invoice_apply_manage',
|
||||||
|
name: '开票申请',
|
||||||
|
description: 'asdas',
|
||||||
|
category: '1',
|
||||||
|
categoryName: '测试1',
|
||||||
|
formType: 20,
|
||||||
|
formId: null,
|
||||||
|
formCustomCreatePath: '/sales/invoice/create',
|
||||||
|
formCustomViewPath: '/sales/invoice/detail',
|
||||||
|
id: '7ec07575-0605-11ef-ab76-cc96e508c010',
|
||||||
|
formName: null,
|
||||||
|
createTime: 1714380614292,
|
||||||
|
processDefinition: {
|
||||||
|
id: 'invoice_apply_manage:8:665a8c40-44c9-11ef-9813-0242ac130002',
|
||||||
|
version: 8,
|
||||||
|
deploymentTime: 1721281726671,
|
||||||
|
suspensionState: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
Loading…
Reference in New Issue
Block a user