1
0
tangning 7 месяцев назад
Родитель
Сommit
e2e33b3d23
5 измененных файлов с 93 добавлено и 30 удалено
  1. 19 1
      src/store/case.ts
  2. 3 3
      src/store/scene.ts
  3. 5 2
      src/view/layout/index.vue
  4. 5 1
      src/view/vrmodel/index.vue
  5. 61 23
      src/view/vrmodel/sceneContent.vue

+ 19 - 1
src/store/case.ts

@@ -99,7 +99,8 @@ export const updateCaseInfo = async (caseFile: CaseFile) =>
   });
 
 export const getCaseSceneList = async (caseId: number): Promise<Scene[]> => {
-  sceneList.value = (await axios.get(caseSceneList, { params: { caseId } })).data;
+  let mylist = (await axios.get(caseSceneList, { params: { caseId } })).data;
+  sceneList.value = mylist.filter(item => item.type != 3);
   return sceneList.value;
 };
 
@@ -237,6 +238,22 @@ export const submitMergePhotos = (data) => axios.post(ffmpegMergeImage, { ...dat
 export const getCaseInfoData = () => caseInfoData.value
 export const getCaseSceneListData = () => sceneList.value
 
+export const getSceneListTree = () => {
+  let myData = {
+    0: [],//点云
+    1: [],//mesh
+  };
+  sceneList.value.map((item) => {
+    console.log('sceneList', item)
+    if(item.type == 2 || item.type == 5 ) {
+      myData[0].push(item.num)
+    }else{
+      myData[1].push(item.num)
+    }
+  });
+  return [{numList:myData[0],type: 0}, {numList:myData[1],type: 1}]
+}
+
 export const getUrlSrc = (item, caseId) => {
   let SceneType = {
     0: `/swkk/spg.html?m=${item.num}`,
@@ -247,6 +264,7 @@ export const getUrlSrc = (item, caseId) => {
     5: `index.html?caseId=${caseId}&modelId=${item.num}#sign-model`,
     6: `/swss/index.html?m=${item.num}`,
     7: `/swkk/spg.html?m=${item.num}`,
+    99: `/code/index.html?caseId=${caseId}&single#/show`,
   };
   return SceneType[item.type];
 }

+ 3 - 3
src/store/scene.ts

@@ -50,10 +50,10 @@ export type QuoteScene = BaseScene & {
 
 // 普通场景状态
 export enum QuoteSceneStatus {
-  DEL = -1,
+  DEL = -2,
   RUN = 0,
-  ERR = 1,
-  SUCCESS = 2,
+  ERR = -1,
+  SUCCESS = 1,
   ARCHIVE = 3,
   RERUN = 4,
 }

+ 5 - 2
src/view/layout/index.vue

@@ -34,7 +34,7 @@
             <!-- @load="setupSDK($event.target)" -->
               <iframe
                 v-if="caseId"
-                :src="sceneURL || `/code/index.html?caseId=${caseId}&single#/show`"
+                :src="sceneURL"
                 frameborder="0"
                 :style="{ width: '100%', height: '100%' }"
               ></iframe>
@@ -67,7 +67,10 @@ const caseId = computed(() => {
   }
 });
 const sceneURL = ref(null)
-const sceneList = computed(() => getCaseSceneListData());
+const sceneList = computed(() => {
+  let mylist = getCaseSceneListData()
+  return [{ id: -1, type: 99, name: '多元融合' }, ...mylist];
+});
 console.log(sceneList, 'sceneList');
 updateByTreeFileLists()
 const hiddenSlide = computed(

+ 5 - 1
src/view/vrmodel/index.vue

@@ -14,7 +14,11 @@
             :key="index"
           >
             <span>{{ item.name || '多元融合' }}</span>
-            <div @click="handlegotoEdit(item)" class="cursor-pointer" quaternary type="primary">编辑</div>
+            <div class="cursor-pointer" quaternary type="primary">
+              <span class="mr-4" @click="handlegotoEdit(item)">移除</span>
+              <span @click="handlegotoEdit(item)">编辑</span>
+            </div>
+            <!-- <div @click="handlegotoEdit(item)" class="cursor-pointer" quaternary type="primary">编辑</div> -->
           </div>
         </div>
       </div>

+ 61 - 23
src/view/vrmodel/sceneContent.vue

@@ -1,7 +1,4 @@
 <template>
-  <div class="body-head">
-    <!-- <h3 style="visibility: hidden">场景管理</h3> -->
-  </div>
   <el-table
     class="mybody-head"
     :data="pagging.state.table.rows"
@@ -26,7 +23,7 @@
       {{ row.createTime.substr(0, 16) }}
     </el-table-column>
     <el-table-column label="状态" v-slot:default="{ row }: { row: QuoteScene }">
-      {{ QuoteSceneStatusDesc[row.status] }}
+      {{ row.statusString }}
     </el-table-column>
     <!-- <el-table-column label="所属架构" prop="deptName"></el-table-column> -->
     <!-- <el-table-column label="操作" v-slot:default="{ row }: { row: QuoteScene }">
@@ -92,13 +89,15 @@ import {
   genMeshScene,
   LocationEnum,
 } from "@/store/scene";
+import { getSceneListTree } from "@/store/case";
 import { QuoteSceneStatusDesc } from "@/constant/scene";
 import { OpenType, openSceneUrl } from "../case/help";
 import { confirm } from "@/helper/message";
+import { router } from "@/router";
 import { sceneDownload } from "./quisk";
 import { useScenePaggingParams, ScenePagging } from "./pagging";
 import { QuiskExpose } from "@/helper/mount";
-import { onMounted, ref, watch, watchEffect } from "vue";
+import { onMounted, ref, watch, watchEffect, computed, nextTick } from "vue";
 import {
   getCaseSceneList,
   getCaseScenes,
@@ -106,7 +105,8 @@ import {
   replaceCaseScenes,
   setCaseaddOrUpdate,
 } from "@/store/case";
-const params = useScenePaggingParams();
+// const params = useScenePaggingParams();
+const caseId = computed(() => (router.currentRoute.value?.params?.caseId));
 const tableRef = ref(null);
 const caseScenes = ref([
   {
@@ -118,9 +118,15 @@ const caseScenes = ref([
     numList: [],
   }
 ]);
+const selectList = ref({
+  0: [],
+  1: [],
+})
+caseScenes.value = getSceneListTree()
+console.log('caseScenes', selectList);
 const submit = async () => {
   const apiData = {
-    caseTitle: props.caseId,
+    caseTitle: caseId.value,
     sceneNumParam: caseScenes.value,
   };
   await setCaseaddOrUpdate(apiData)
@@ -130,6 +136,10 @@ defineExpose<QuiskExpose>({
   submit
 });
 const props = defineProps<{ pagging: ScenePagging, numList: Array<string> }>();
+
+
+
+const isObj = ref(props.pagging.state.query?.isObj);
 const delSceneHandler = async (scene: QuoteScene) => {
   if (await confirm("确定要删除当前场景吗?")) {
     await delQuoteScene(scene);
@@ -138,37 +148,65 @@ const delSceneHandler = async (scene: QuoteScene) => {
 };
 console.log('propsnumList', props.numList);
 const selectable = (row) => {
-  return !props.numList.includes(row.num)
+  // let selectlist = selectList.find(item => item.type == params.pagging.state.query?.isObj)?.numList;
+  return row.statusString == '计算成功'// && !selectlist.includes(row.num)
 }
+
+// watch(()=>props.pagging.state.query.isObj, (newVal, oldVal) => {
+//   let scene = selectList.value[newVal]
+//   if (params.pagging.loading) return;
+//   console.log('newVal---', selectList.value, scene, tableRef.value); //newVal--- 修改的数据1
+//   scene.forEach(item => {
+//       tableRef.value!.toggleRowSelection(item, true);
+//   })
+//   // props.pagging.changeSelectRows(selectList.value)
+//   // tableRef.value.toggleRowSelection(scene, true);
+//   console.log('newVal---', newVal); //newVal--- 修改的数据1
+//   console.log('oldVal---', oldVal); //oldVal--- ref数据
+// });
 // 复选框同步
+let changIng = false;
+
 watchEffect(() => {
+  const type = props.pagging.state.query.isObj;
   if (!tableRef.value) return;
   const selectKeys = caseScenes.value.find(
-    (item) => item.type === params.pagging.state.query.isObj
+    (item) => item.type === type
   )!.numList;
-
-  params.pagging.state.table.rows.forEach((scene) => {
-    tableRef.value!.toggleRowSelection(scene, selectKeys.includes(getSceneKey(scene)));
+  props.pagging.state.table.rows
+  // console.log('watchEffect', selectKeys);
+  changIng = true;
+  props.pagging.state.table.rows.forEach((scene) => {
+    tableRef.value!.toggleRowSelection(scene, selectKeys.includes(scene.num));
   });
-});
-const changeSelection = (selectScenes) => {
-  if (params.pagging.loading) return;
-  const pagScenes = params.pagging.state.table.rows;
-  const type = params.pagging.state.query.isObj;
-  console.log('changeSelection', params, type);
+  changIng = false;
+  // console.log(tableRef.value!.getSelectionRows())
+  // console.log('watchEffect', props.pagging.state.table.rows);
+}, { flush: 'post' });
+const changeSelection = async (selectScenes) => {
+  if (changIng) return;
+  changIng = true
+  // selectScenes.lnegth === 2 && console.log(toRaw(selectScenes[0]) === toRaw(selectScenes[1]))
+  console.log(selectScenes.length)
+  if (props.pagging.loading) return;
+  const pagScenes = props.pagging.state.table.rows;
+  const type = props.pagging.state.query.isObj;
+  const selectKeys = selectScenes.map(ele => ele.num);
   const typeCaseScenes = caseScenes.value.find((item) => item.type == type)!;
   const oldKeys = caseScenes.value.find((item) => item.type == type)!.numList;
-  const pagKeys = pagScenes.map(getSceneKey);
-  const selectKeys = selectScenes.map(getSceneKey);
-  console.log('changeSelection', oldKeys, pagKeys, selectKeys);
+  const pagKeys = pagScenes.map(ele => ele.num);
+
+  // console.log(pagKeys, oldKeys)
   let newlist = oldKeys
     // 保留其他页的key,剔除当前页的key
     .filter((key) => !pagKeys.includes(key))
     // 拼接上当前页选中的key
     .concat(selectKeys);
-  typeCaseScenes.numList = [...new Set(newlist)];
-  console.log('changeSelection', selectScenes, caseScenes.value);
 
+
+  typeCaseScenes.numList = [...new Set(newlist)];
+  // tableRef.value!.clearSelection()
+  changIng = false
 };
 const sceneDownloadHandler = (scene: QuoteScene) => {
   sceneDownload({ scene });