|
|
@@ -4,11 +4,19 @@
|
|
|
<el-menu-item
|
|
|
v-for="menu in menus"
|
|
|
:key="menu.key"
|
|
|
+ v-show="showItem(menu)"
|
|
|
:index="menu.key"
|
|
|
@click="handleMenuClick(menu)"
|
|
|
>
|
|
|
{{ menu.label }}
|
|
|
</el-menu-item>
|
|
|
+ <!-- <el-menu-item
|
|
|
+ v-if="editOrShow != 'edit'"
|
|
|
+ index="screenRecord"
|
|
|
+ @click="handleMenuClick(menu)"
|
|
|
+ >
|
|
|
+ 现场讲解
|
|
|
+ </el-menu-item> -->
|
|
|
</el-menu>
|
|
|
|
|
|
<template v-if="currentMenuKey === 'info'">
|
|
|
@@ -43,6 +51,7 @@ import SiteInspection from './components/siteInspection.vue';
|
|
|
import OtherFiles from './components/otherFiles.vue';
|
|
|
import { ElMessage } from "element-plus";
|
|
|
import { Fire, setFire } from "@/app/fire/store/fire";
|
|
|
+import { getFusionAndSceneList, caseFilesTypeGetTree, getRecordCaseVideo } from '@/store/editCsae';
|
|
|
|
|
|
const props = defineProps<{
|
|
|
caseId: number;
|
|
|
@@ -59,7 +68,15 @@ const emit = defineEmits<{
|
|
|
const route = useRoute();
|
|
|
const vueRouter = useRouter();
|
|
|
const caseId = computed(() => Number(route.params.caseId));
|
|
|
+const editOrShow = computed(() => route.query.editOrShow as string || 'show');
|
|
|
let tempFire = ref({});
|
|
|
+const fusionList = ref([]);
|
|
|
+const scenes = ref<Scene[]>([]);
|
|
|
+const showObj = ref<any>({
|
|
|
+ siteInspection: true,
|
|
|
+ otherFiles: true,
|
|
|
+ screenRecord: true
|
|
|
+});
|
|
|
watch(
|
|
|
() => props.currentRecord,
|
|
|
(newVal) => {
|
|
|
@@ -74,6 +91,43 @@ watch(
|
|
|
const startShot = (payload?: any) => {
|
|
|
emit("start", payload);
|
|
|
}
|
|
|
+const initData = async () => {
|
|
|
+ getFusionAndSceneList({ caseId: caseId.value, type: 'scene' }).then(res => {
|
|
|
+ console.log('getFusionAndSceneList', res)
|
|
|
+ scenes.value = res || []
|
|
|
+ })
|
|
|
+ getFusionAndSceneList({ caseId: caseId.value, type: 'fusion' }).then(res => {
|
|
|
+ console.log('getFusionAndSceneList', res)
|
|
|
+ fusionList.value = res || []
|
|
|
+ })
|
|
|
+
|
|
|
+ caseFilesTypeGetTree(caseId.value).then(res => {
|
|
|
+ showObj.value.siteInspection = recursiveSearch(res.filter(item => item.filesTypeName != '其他资料'))
|
|
|
+ showObj.value.otherFiles = recursiveSearch(res.filter(item => item.filesTypeName == '其他资料'))
|
|
|
+ console.log('caseFilesTypeGetTree', res, showObj.value)
|
|
|
+ // fusionList.value = res || []
|
|
|
+ })
|
|
|
+ getRecordCaseVideo({ caseId: caseId.value }).then(res => {
|
|
|
+ console.log('getRecordCaseVideo', res)
|
|
|
+ showObj.value.screenRecord = res.length > 0;
|
|
|
+ })
|
|
|
+ // const res: any = await caseFilesTypeGetTree(caseId.value!);
|
|
|
+}
|
|
|
+const showItem = (item) => {
|
|
|
+ console.log('showItem', item)
|
|
|
+ if(editOrShow.value === 'edit') return true;
|
|
|
+ if(!item) return false;
|
|
|
+ switch (item.key) {
|
|
|
+ case 'scene': return scenes.value.length;
|
|
|
+ case 'mix3d': return fusionList.value.length; // 暂时隐藏
|
|
|
+ case 'siteInspection': return showObj.value.siteInspection; // 暂时隐藏
|
|
|
+ case 'otherFiles': return showObj.value.otherFiles; // 暂时隐藏
|
|
|
+ case 'screenRecord': return showObj.value.screenRecord; // 暂时隐藏
|
|
|
+ default: return true;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+initData()
|
|
|
// 从路由查询参数中获取当前菜单项,如果没有则默认为 'info'
|
|
|
let currentMenuKey = ref(route.query.tab as string || 'info');
|
|
|
// 处理菜单点击事件
|
|
|
@@ -189,7 +243,30 @@ const renameHandler = async (evt: any) => {
|
|
|
ElMessage.error('保存失败,请稍后重试');
|
|
|
}
|
|
|
};
|
|
|
-
|
|
|
+const recursiveSearch = (nodes) => {
|
|
|
+ // 如果没有节点,直接返回
|
|
|
+ if (!nodes || !nodes.length) return;
|
|
|
+
|
|
|
+ // 遍历当前节点
|
|
|
+ for (const node of nodes) {
|
|
|
+ // 检查是否符合条件
|
|
|
+ if (node.caseFilesList && node.caseFilesList.length > 0 && node.caseFilesList.some(file => file.filesUrl)) {
|
|
|
+ // 如果只需要第一个,直接返回
|
|
|
+ return true; // 终止递归
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果有子节点,递归查询
|
|
|
+ if (node.childrenList && node.childrenList.length) {
|
|
|
+ const found = recursiveSearch(node.childrenList);
|
|
|
+ // 如果已经找到第一个,终止递归
|
|
|
+ if(found){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
onMounted(() => {
|
|
|
window.addEventListener('fireDetails:renameTitle', renameHandler as any);
|
|
|
});
|