|
@@ -1,41 +1,39 @@
|
|
|
<template>
|
|
|
- <VRModel>
|
|
|
- <template v-slot:content="{ pagging }: { pagging: ScenePagging }">
|
|
|
- <div :style="{ display: 'none' }">{{ syncTableSelects(pagging) }}</div>
|
|
|
+ <VRModelList :params="params">
|
|
|
+ <template v-slot:header>
|
|
|
+ <el-form-item label="标题:" style="grid-area: 1 / 1 / 2 / 4">
|
|
|
+ <el-input v-model="params.keyword" placeholder="请输入" />
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+ <template v-slot:content>
|
|
|
<el-table
|
|
|
- :data="pagging.state.table.rows"
|
|
|
+ :data="params.pagging.state.table.rows"
|
|
|
tooltip-effect="dark"
|
|
|
ref="tableRef"
|
|
|
style="width: 100%"
|
|
|
size="large"
|
|
|
- @selection-change="
|
|
|
- (val) =>
|
|
|
- changeSelection(val, pagging.state.table.rows, pagging.state.query.type)
|
|
|
- "
|
|
|
+ @selection-change="changeSelection"
|
|
|
>
|
|
|
<el-table-column type="selection" width="50" />
|
|
|
<el-table-column label="标题" v-slot:default="{ row }">
|
|
|
- {{ pagging.state.query.type === SceneType.SWMX ? row.modelTitle : row.name }}
|
|
|
+ {{ params.isSwmx ? row.modelTitle : row.name }}
|
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
- label="原始数据格式"
|
|
|
- prop="modelDateType"
|
|
|
- v-if="pagging.state.query.type === SceneType.SWMX"
|
|
|
- />
|
|
|
+ <el-table-column label="所属架构" prop="deptName"></el-table-column>
|
|
|
+ <el-table-column label="原始数据格式" prop="modelDateType" v-if="params.isSwmx" />
|
|
|
<el-table-column label="拍摄时间" prop="createTime" v-slot:default="{ row }">
|
|
|
{{ row.createTime.substr(0, 16) }}
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</template>
|
|
|
- </VRModel>
|
|
|
+ </VRModelList>
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import VRModel from "@/view/vrmodel/index.vue";
|
|
|
-import { Scene, SceneType } from "@/store/scene";
|
|
|
+import VRModelList from "@/view/vrmodel/list.vue";
|
|
|
+import { Scene } from "@/store/scene";
|
|
|
import { CaseScenes } from "@/store/case";
|
|
|
-import { ScenePagging } from "@/view/vrmodel/pagging";
|
|
|
-import { Ref, onMounted, onUnmounted, ref, watchEffect } from "vue";
|
|
|
+import { useScenePaggingParams } from "@/view/vrmodel/pagging";
|
|
|
+import { onMounted, ref, watchEffect } from "vue";
|
|
|
import {
|
|
|
getCaseSceneList,
|
|
|
getCaseScenes,
|
|
@@ -46,50 +44,28 @@ import { QuiskExpose } from "@/helper/mount";
|
|
|
import { ElTable } from "element-plus";
|
|
|
|
|
|
const props = defineProps<{ caseId: number }>();
|
|
|
-
|
|
|
+const params = useScenePaggingParams();
|
|
|
const caseScenes = ref<CaseScenes>(getCaseScenes([]));
|
|
|
const tableRef = ref<InstanceType<typeof ElTable>>();
|
|
|
-let paggingLoading: Ref<boolean>;
|
|
|
-// 同步table选择
|
|
|
-let stopSyncWatch: () => void;
|
|
|
-const syncTableSelects = (pagging: ScenePagging) => {
|
|
|
- stopSyncWatch && stopSyncWatch();
|
|
|
|
|
|
- const stopParamWatch = watchEffect(
|
|
|
- () => {
|
|
|
- console.log(pagging.state.query.status);
|
|
|
- pagging.state.query.status = 2;
|
|
|
- },
|
|
|
- { flush: "sync" }
|
|
|
- );
|
|
|
- const stopSyncSelect = watchEffect(
|
|
|
- () => {
|
|
|
- paggingLoading = pagging.loading;
|
|
|
- if (paggingLoading.value) {
|
|
|
- return;
|
|
|
- }
|
|
|
- const selectKeys = caseScenes.value.find(
|
|
|
- (item) => item.type === pagging.state.query.type
|
|
|
- )!.numList;
|
|
|
- pagging.state.table.rows.forEach((scene) => {
|
|
|
- tableRef.value?.toggleRowSelection(
|
|
|
- scene,
|
|
|
- selectKeys.includes(getSceneKey(scene))
|
|
|
- );
|
|
|
- });
|
|
|
- },
|
|
|
- { flush: "post" }
|
|
|
- );
|
|
|
+params.pagging.state.query.status = 2;
|
|
|
+params.pagging.state.query.caseId = props.caseId;
|
|
|
+// 复选框同步
|
|
|
+watchEffect(() => {
|
|
|
+ if (!tableRef.value) return;
|
|
|
+ const selectKeys = caseScenes.value.find(
|
|
|
+ (item) => item.type === params.pagging.state.query.type
|
|
|
+ )!.numList;
|
|
|
|
|
|
- stopSyncWatch = () => {
|
|
|
- stopSyncSelect();
|
|
|
- stopParamWatch();
|
|
|
- };
|
|
|
-};
|
|
|
-const changeSelection = (selectScenes: Scene[], pagScenes: Scene[], type: SceneType) => {
|
|
|
- if (paggingLoading.value) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ params.pagging.state.table.rows.forEach((scene) => {
|
|
|
+ tableRef.value!.toggleRowSelection(scene, selectKeys.includes(getSceneKey(scene)));
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+const changeSelection = (selectScenes: Scene[]) => {
|
|
|
+ if (params.pagging.loading) return;
|
|
|
+ const pagScenes = params.pagging.state.table.rows;
|
|
|
+ const type = params.pagging.state.query.type;
|
|
|
const typeCaseScenes = caseScenes.value.find((item) => item.type === type)!;
|
|
|
const oldKeys = caseScenes.value.find((item) => item.type === type)!.numList;
|
|
|
const selectKeys = selectScenes.map(getSceneKey);
|
|
@@ -105,13 +81,8 @@ const changeSelection = (selectScenes: Scene[], pagScenes: Scene[], type: SceneT
|
|
|
onMounted(async () => {
|
|
|
caseScenes.value = getCaseScenes(await getCaseSceneList(props.caseId));
|
|
|
});
|
|
|
-onUnmounted(() => {
|
|
|
- stopSyncWatch();
|
|
|
-});
|
|
|
|
|
|
defineExpose<QuiskExpose>({
|
|
|
- async submit() {
|
|
|
- await replaceCaseScenes(props.caseId, caseScenes.value);
|
|
|
- },
|
|
|
+ submit: () => replaceCaseScenes(props.caseId, caseScenes.value),
|
|
|
});
|
|
|
</script>
|