editMenu.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. window.open(
  68. router.resolve({ name: RouteName.caseFile, params: { caseId: caseId } }).href
  69. );
  70. },
  71. },
  72. ...(props.lastMenu || []).map((item) => ({
  73. ...item,
  74. onClick: () => item.onClick(caseId),
  75. })),
  76. ];
  77. });
  78. </script>