sceneList.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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="操作" v-slot:default="{ row }: { row: Scene }">
  16. <span
  17. class="oper-span"
  18. v-pdpath="['view']"
  19. @click="openSceneUrl(row, OpenType.query)"
  20. v-if="hasSuccess(row)"
  21. >
  22. 查看
  23. </span>
  24. <span
  25. v-if="row.type !== SceneType.SWMX && hasSuccess(row)"
  26. class="oper-span"
  27. v-pdpath="['edit']"
  28. @click="openSceneUrl(row, OpenType.edit)"
  29. >
  30. 编辑
  31. </span>
  32. <span class="oper-span delBtn" v-pdscene="row" @click="delCaseScene(row)">
  33. 删除
  34. </span>
  35. </el-table-column>
  36. </el-table>
  37. </template>
  38. <script setup lang="ts">
  39. import comDialog from "@/components/dialog/index.vue";
  40. import { SceneTypeDesc } from "@/constant/scene";
  41. import { confirm } from "@/helper/message";
  42. import { getCaseSceneList, getCaseScenes, replaceCaseScenes } from "@/store/case";
  43. import {
  44. ModelScene,
  45. ModelSceneStatus,
  46. QuoteScene,
  47. QuoteSceneStatus,
  48. Scene,
  49. SceneType,
  50. } from "@/store/scene";
  51. import { onMounted, ref } from "vue";
  52. import { openSceneUrl, OpenType } from "./help";
  53. const props = defineProps<{
  54. caseId: number;
  55. onAddScenes: () => any;
  56. }>();
  57. const list = ref<Scene[]>([]);
  58. const hasSuccess = (scene: Scene) => {
  59. if (scene.type === SceneType.SWMX) {
  60. return (scene as ModelScene).createStatus === ModelSceneStatus.SUCCESS;
  61. } else {
  62. return (scene as QuoteScene).status === QuoteSceneStatus.SUCCESS;
  63. }
  64. };
  65. const refresh = async () => {
  66. list.value = await getCaseSceneList(props.caseId);
  67. };
  68. const addScenesHandler = async () => {
  69. if (await props.onAddScenes()) {
  70. refresh();
  71. }
  72. };
  73. const delCaseScene = async (scene: Scene) => {
  74. if (await confirm("删除该场景,将同时从案件和融合模型中移除,确定要删除吗?")) {
  75. const scenes = getCaseScenes(list.value.filter((item) => item !== scene));
  76. await replaceCaseScenes(props.caseId, scenes);
  77. refresh();
  78. }
  79. };
  80. onMounted(refresh);
  81. </script>