editMenu.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <el-dropdown v-pdpath="'edit'">
  3. <span class="oper-span">
  4. 编辑
  5. <el-icon class="el-icon--right">
  6. <arrow-down />
  7. </el-icon>
  8. </span>
  9. <template #dropdown>
  10. <el-dropdown-menu>
  11. <el-dropdown-item v-for="menu in menus" :key="menu.key" @click="menu.onClick()">
  12. {{ menu.label }}
  13. </el-dropdown-item>
  14. </el-dropdown-menu>
  15. </template>
  16. </el-dropdown>
  17. </template>
  18. <script setup lang="ts">
  19. import { computed } from "vue";
  20. import { getFuseCodeLink, checkScenesOpen, MenuItem } from "./help";
  21. import { showCaseScenes, addCaseScenes } from "./quisk";
  22. import { RouteName, router } from "@/router";
  23. const props = defineProps<{
  24. caseId: number;
  25. prevMenu?: MenuItem[];
  26. lastMenu?: MenuItem[];
  27. }>();
  28. const menus = computed(() => {
  29. if (!props.caseId) {
  30. return [];
  31. }
  32. const caseId = props.caseId;
  33. const fuseLink = getFuseCodeLink(caseId);
  34. return [
  35. ...(props.prevMenu || []).map((item) => ({
  36. ...item,
  37. onClick: () => item.onClick(caseId),
  38. })),
  39. {
  40. key: "sceneManage",
  41. label: "场景管理",
  42. onClick: () =>
  43. showCaseScenes({
  44. caseId,
  45. onAddScenes: () => addCaseScenes({ caseId }),
  46. }),
  47. },
  48. {
  49. key: "fuse",
  50. label: "多元融合",
  51. onClick: () => checkScenesOpen(caseId, `${fuseLink}#fuseEdit/merge`),
  52. },
  53. {
  54. key: "getView",
  55. label: "视图提取",
  56. onClick: () => checkScenesOpen(caseId, `${fuseLink}#sceneEdit/view`),
  57. },
  58. {
  59. key: "record",
  60. label: "屏幕录制",
  61. onClick: () => checkScenesOpen(caseId, `${fuseLink}#sceneEdit/record`),
  62. },
  63. {
  64. key: "file",
  65. label: "卷宗管理",
  66. onClick: () => {
  67. router.push({ name: RouteName.caseFile, params: { caseId: caseId } });
  68. },
  69. },
  70. ...(props.lastMenu || []).map((item) => ({
  71. ...item,
  72. onClick: () => item.onClick(caseId),
  73. })),
  74. ];
  75. });
  76. </script>