sceneList.vue 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <div class="body-but">
  3. <el-button type="primary" @click="addScenesHandler">添加场景</el-button>
  4. </div>
  5. <el-table :data="list" tooltip-effect="dark" style="width: 100%" size="large">
  6. <el-table-column label="标题" v-slot:default="{ row }">
  7. {{ row.type === SceneType.SWMX ? row.modelTitle : row.name }}
  8. </el-table-column>
  9. <el-table-column label="类型" v-slot:default="{ row }: { row: Scene }">
  10. {{ SceneTypeDesc[row.type] }}
  11. </el-table-column>
  12. <el-table-column label="拍摄/创建时间" prop="createTime" v-slot:default="{ row }">
  13. {{ row.createTime.substr(0, 16) }}
  14. </el-table-column>
  15. <el-table-column label="所属架构" prop="deptName"></el-table-column>
  16. <el-table-column label="操作" v-slot:default="{ row }: { row: Scene }">
  17. <span
  18. class="oper-span"
  19. v-pdpath="['view']"
  20. @click="openSceneUrl(row, OpenType.query)"
  21. v-if="hasSuccess(row)"
  22. >
  23. 查看
  24. </span>
  25. <span
  26. v-if="row.type !== SceneType.SWMX && hasSuccess(row)"
  27. class="oper-span"
  28. v-pdpath="['edit']"
  29. @click="openSceneUrl(row, OpenType.edit)"
  30. >
  31. 编辑
  32. </span>
  33. <span class="oper-span delBtn" v-pdscene="row" @click="delCaseScene(row)">
  34. 删除
  35. </span>
  36. </el-table-column>
  37. </el-table>
  38. </template>
  39. <script setup lang="ts">
  40. import comDialog from "@/components/dialog/index.vue";
  41. import { SceneTypeDesc } from "@/constant/scene";
  42. import { confirm } from "@/helper/message";
  43. import { getCaseSceneList, getCaseScenes, replaceCaseScenes } from "@/store/case";
  44. import {
  45. ModelScene,
  46. ModelSceneStatus,
  47. QuoteScene,
  48. QuoteSceneStatus,
  49. Scene,
  50. SceneType,
  51. } from "@/store/scene";
  52. import { onMounted, ref } from "vue";
  53. import { openSceneUrl, OpenType } from "./help";
  54. const props = defineProps<{
  55. caseId: number;
  56. onAddScenes: () => any;
  57. }>();
  58. const list = ref<Scene[]>([]);
  59. const hasSuccess = (scene: Scene) => {
  60. if (scene.type === SceneType.SWMX) {
  61. return (scene as ModelScene).createStatus === ModelSceneStatus.SUCCESS;
  62. } else {
  63. return (scene as QuoteScene).status === QuoteSceneStatus.SUCCESS;
  64. }
  65. };
  66. const refresh = async () => {
  67. list.value = await getCaseSceneList(props.caseId);
  68. };
  69. const addScenesHandler = async () => {
  70. if (await props.onAddScenes()) {
  71. refresh();
  72. }
  73. };
  74. const delCaseScene = async (scene: Scene) => {
  75. if (await confirm("删除该场景,将同时从案件和融合模型中移除,确定要删除吗?")) {
  76. const scenes = getCaseScenes(list.value.filter((item) => item !== scene));
  77. await replaceCaseScenes(props.caseId, scenes);
  78. refresh();
  79. }
  80. };
  81. onMounted(refresh);
  82. </script>