bill 8 maanden geleden
bovenliggende
commit
b3571da4c5

+ 1 - 0
src/api/material.ts

@@ -55,6 +55,7 @@ export const fetchMaterialPage = async (params: MaterialPageProps) => {
   const material = await axios.post<PagingResult<ServiceMaterial[]>>(MATERIAL_PAG, {
     pageNum: params.pageNum,
     pageSize: params.pageSize,
+    name: params.name,
     dictIds: params.groupIds,
     fileFormats: params.formats
   });

+ 3 - 1
src/api/scene.ts

@@ -19,6 +19,7 @@ export enum SceneType {
   SWSSMX = 4,
   SWYDSS = 5,
   SWYDMX = 6,
+  DSFXJ = 7,
 }
 export const SceneTypeDesc: Record<SceneType, string>  = {
   [SceneType.SWKK]: '八目',
@@ -27,7 +28,8 @@ export const SceneTypeDesc: Record<SceneType, string>  = {
   [SceneType.SWMX]: '三维模型',
   [SceneType.SWSSMX]: '激光转台Mesh场景',
   [SceneType.SWYDSS]: '激光移动点云场景',
-  [SceneType.SWYDMX]: '激光移动Mesh场景'
+  [SceneType.SWYDMX]: '激光移动Mesh场景',
+  [SceneType.DSFXJ]: '第三方相机'
 }
 
 

+ 1 - 1
src/components/materials/index.vue

@@ -136,7 +136,7 @@ const rowSelection: any = ref({
       (key) => !origin.value.list.some((item) => key === item.id)
     );
     const newKeys = Array.from(new Set([...otherPageKeys, ...ids]));
-    if (!props.count || props.count >= newKeys.length) {
+    if (typeof props.count === "number" && props.count >= newKeys.length) {
       selectKeys.value = newKeys;
     } else {
       Message.error(`最多选择${props.count}项`);

+ 1 - 1
src/env/index.ts

@@ -18,7 +18,7 @@ export const showPathsStack = stackFactory(ref<boolean>(true))
 export const showPathStack = stackFactory(ref<Path['id']>())
 export const showMeasuresStack = stackFactory(ref<boolean>(true))
 export const currentModelStack = stackFactory(ref<FuseModel | null>(null))
-export const showModelsMapStack = stackFactory(ref<WeakMap<FuseModel, boolean>>(new WeakMap()), true)
+export const showModelsMapStack = stackFactory(ref<WeakMap<FuseModel, boolean>>(new Map()), true)
 export const modelsChangeStoreStack = stackFactory(ref<boolean>(false))
 export const showTaggingPositionsStack = stackFactory(ref<WeakSet<TaggingPosition>>(new WeakSet()))
 export const currentViewStack = stackFactory(ref<View>())

+ 1 - 1
src/layout/scene-list/index.vue

@@ -76,7 +76,7 @@ const showModelList = ref(true);
 
 const voffline = offline;
 const canSync = (scene: Scene) =>
-  [SceneType.SWKK, SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX].includes(
+  [SceneType.SWKK, SceneType.DSFXJ, SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX].includes(
     scene.raw.type
   );
 

+ 3 - 0
src/model/app.vue

@@ -63,6 +63,7 @@ export const Model = defineComponent({
       const urls = offline
         ? {
             [SceneType.SWKK]: `${offlinePrev}swkk/${scene.value.num}/wwwroot/spg.html?m=${scene.value.num}&lang=zh`,
+            [SceneType.DSFXJ]: `${offlinePrev}swkk/${scene.value.num}/wwwroot/spg.html?m=${scene.value.num}&lang=zh`,
             [SceneType.SWKJ]: `${offlinePrev}swkk/${scene.value.num}/wwwroot/spg.html?m=${scene.value.num}&lang=zh`,
             [SceneType.SWSS]: `${offlinePrev}swss/${scene.value.num}/www/offline.html?m=${scene.value.num}&lang=zh`,
             [SceneType.SWSSMX]: `${offlinePrev}swkk/${scene.value.num}/wwwroot/spg.html?m=${scene.value.num}&lang=zh`,
@@ -72,6 +73,7 @@ export const Model = defineComponent({
           }
         : {
             [SceneType.SWKK]: `/swkk/spg.html?m=${scene.value.num}`,
+            [SceneType.DSFXJ]: `/swkk/spg.html?m=${scene.value.num}`,
             [SceneType.SWKJ]: `/swkk/spg.html?m=${scene.value.num}`,
             [SceneType.SWSS]: `/swss/index.html?m=${scene.value.num}`,
             [SceneType.SWSSMX]: `/swkk/spg.html?m=${scene.value.num}`,
@@ -83,6 +85,7 @@ export const Model = defineComponent({
       if (import.meta.env.DEV && !offline) {
         Object.assign(urls, {
           [SceneType.SWKK]: `/swkk/spg.html?m=${scene.value.num}&toen=${getToken()}`,
+          [SceneType.DSFXJ]: `/swkk/spg.html?m=${scene.value.num}&toen=${getToken()}`,
           [SceneType.SWKJ]: `/swkk/spg.html?m=${scene.value.num}&toen=${getToken()}`,
           [SceneType.SWSS]: `/swss/index.html?m=${scene.value.num}&toen=${getToken()}`,
           [SceneType.SWSSMX]: `/swkk/spg.html?m=${scene.value.num}&toen=${getToken()}`,

+ 1 - 1
src/model/platform.ts

@@ -187,7 +187,7 @@ export async function exposeFactory(
       },
     },
   };
-  platforms[SceneType.SWYDSS] = platforms[SceneType.SWSS];
+  platforms[SceneType.DSFXJ] = platforms[SceneType.SWYDSS] = platforms[SceneType.SWSS];
   platforms[SceneType.SWYDMX] =
     platforms[SceneType.SWSSMX] =
     platforms[SceneType.SWKJ] =

+ 1 - 4
src/store/path.ts

@@ -61,10 +61,7 @@ export const createPath = (path: Partial<Path> = {}): Path => {
 let bcPaths: Paths = []
 export const getBackupPaths = () => bcPaths
 export const backupPaths = () => {
-  bcPaths = paths.value.map(path => ({
-    ...path,
-    points: path.points.map(item => ({...item})),
-  }))
+  bcPaths = JSON.parse(JSON.stringify(paths.value))
 }
 
 export const initialPaths = fetchStoreItems(paths, fetchPaths, backupPaths)

+ 2 - 1
src/store/scene.ts

@@ -26,6 +26,7 @@ export const SceneTypePaths: { [key in SceneType]: string[] } = {
     `/livestream/fd/criminal.html`,
   ],
   [SceneType.SWKJ]: ["/swkk/spg.html", "/swkk/epg.html"],
+  [SceneType.DSFXJ]: ["/swkk/spg.html", "/swkk/epg.html"],
   [SceneType.SWSS]: ["/swss/index.html", "/swss/index.html"],
   [SceneType.SWMX]: import.meta.env.DEV
     ? ["/dev-code/index.html", "/dev-code/index.html"]
@@ -37,7 +38,7 @@ export const SceneTypePaths: { [key in SceneType]: string[] } = {
 
 export const getSWKKSyncLink = async (scene: Scene) => {
   console.log('scene', scene)
-  const supportTypes = [SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX];
+  const supportTypes = [SceneType.SWKJ, SceneType.SWSSMX, SceneType.SWYDMX, SceneType.DSFXJ];
   const kkScenes = scenes.value.filter((scene) =>
     supportTypes.includes(scene.type)
   );

+ 0 - 1
src/store/sys.ts

@@ -115,7 +115,6 @@ export const autoSetModeCallback = <T extends object>(
   const leaveCallback =
     (setting.recovery || setting.backup) &&
     (async () => {
-      console.log("???", isLeaveIng);
       isLeaveIng = true;
       setting.recovery && (await setting.recovery());
       setting.backup && (await setting.backup());

+ 1 - 1
src/store/tagging.ts

@@ -51,7 +51,7 @@ export const createTagging = (tagging: Partial<Tagging> = {}): Tagging => {
   return {
     id: createTemploraryID(),
     title: ``,
-    styleId: lastUseStyle.value?.id || defaultStyle.value?.id || '',
+    styleId: '',
     desc: '',
     part: '',
     method: '',

+ 10 - 6
src/views/guide/index.vue

@@ -21,14 +21,18 @@
 import { RightFillPano } from "@/layout";
 import GuideEdit from "./guide/edit.vue";
 import PathEdit from "./path/edit.vue";
-import { ref } from "vue";
-import { isEdit } from "@/store";
+import { reactive, ref, watchEffect } from "vue";
+import { guides, isEdit, paths } from "@/store";
 
 const current = ref("guide");
-const tabs = [
-  { key: "guide", text: "导览" },
-  { key: "path", text: "路线" },
-];
+const tabs = reactive([
+  { key: "guide", text: "导览()" },
+  { key: "path", text: "路线()" },
+]);
+watchEffect(() => {
+  tabs[0].text = `导览(${guides.value.length})`;
+  tabs[1].text = `路线(${paths.value.length})`;
+});
 </script>
 
 <style lang="scss" scoped>

+ 7 - 0
src/views/guide/path/edit-path.vue

@@ -15,6 +15,7 @@
               width="100%"
               type="text"
               ref="nameInput"
+              class="nameInput"
               placeholder="路径名称"
               @keydown="keydownHandler"
               v-model="data.name"
@@ -301,3 +302,9 @@ const switchPlay = () => {
   justify-content: center;
 }
 </style>
+
+<style>
+.nameInput.ui-input .text.suffix input {
+  padding-right: 60px;
+}
+</style>

+ 7 - 3
src/views/sign-model/index.vue

@@ -8,7 +8,6 @@ import { createFuseModels, defTitle, fuseModels, SceneStatus } from "@/store";
 import {
   custom,
   params,
-  showModelsMapStack,
   showRightPanoStack,
   viewModeStack,
 } from "@/env";
@@ -36,7 +35,11 @@ const loadSignModel = async () => {
       numList: [params.m!],
       type: SceneType.SWYDMX,
     });
-    const scenes = [...SSscenes, ...YDscenes];
+    const DDscenes = await fetchScenesAll({
+      numList: [params.m!],
+      type: SceneType.DSFXJ,
+    });
+    const scenes = [...SSscenes, ...YDscenes, ...DDscenes];
     scene = scenes.find((scene) => scene.num === params.m);
     console.log(scene);
   }
@@ -59,7 +62,8 @@ const loadSignModel = async () => {
     fuseModels.value.push(fuseModel);
 
     await loadModel(FModel);
-    pop = showModelsMapStack.push(ref(new Map([[fuseModel, true]])));
+    custom.showModelsMap.set(fuseModel, true);
+    // pop = showModelsMapStack.push(ref(new Map([[fuseModel, true]])));
     (window as any).__sdk = sdk;
   }
 };

+ 18 - 11
src/views/tagging/edit.vue

@@ -110,7 +110,12 @@
       <div class="input">
         <div class="mat-select">
           <span>图片/视频</span>
-          <span class="select" @click="imageSelect">+从媒体库上传</span>
+          <span
+            class="select"
+            @click="imageSelect"
+            v-if="imageCount - tagging.images.length > 0"
+            >+从媒体库上传</span
+          >
         </div>
         <ui-input
           type="file"
@@ -118,7 +123,7 @@
           height="225px"
           preview
           placeholder="上传图片/视频"
-          othPlaceholder="支持JPG、PNG、MP4等格式,单张不超过5MB,最多支持上传9张。"
+          othPlaceholder="支持JPG、PNG、MP4、MOV等格式,单个不超过100MB,最多支持上传10张。"
           :accept="imageFormat.map((u) => `.${u}`).join(',')"
           :disable="true"
           :multiple="true"
@@ -171,9 +176,9 @@ export type EditProps = {
   data: Tagging;
 };
 
-const imageSize = 50 * 1024 * 1024;
-const imageCount = 9;
-const imageFormat = ["jpg", "png", "mp4"];
+const imageSize = 100 * 1024 * 1024;
+const imageCount = 10;
+const imageFormat = ["jpg", "png", "mp4", "mov"];
 const audioSize = 30 * 1024 * 1024;
 const audioCount = 1;
 const audioFormat = ["mp3", "wav"];
@@ -184,9 +189,9 @@ const tagging = ref<Tagging>({ ...props.data, images: [...props.data.images] });
 const activeStyle = computed(() => getTaggingStyle(tagging.value.styleId));
 // 去除默认
 if (!activeStyle.value && defaultStyle.value) {
-  tagging.value.styleId = defaultStyle.value.id;
+  // tagging.value.styleId = defaultStyle.value.id;
 }
-const type = ref(activeStyle.value ? activeStyle.value.typeId : styleTypes[0].id);
+const type = ref(activeStyle.value ? activeStyle.value.typeId : defStyleType.id);
 
 const submitHandler = () => {
   if (activeStyle.value?.typeId !== type.value) {
@@ -205,8 +210,10 @@ const submitHandler = () => {
 const styles = computed(() => {
   const fStyles = taggingStyles.value.filter((item) => item.typeId === type.value);
   console.log(fStyles);
-  return fStyles.sort((a, b) =>
-    a.default
+  return fStyles.sort((a, b) => {
+    if (a.default && b.default) return 0;
+
+    return a.default
       ? -1
       : b.default
       ? 1
@@ -218,8 +225,8 @@ const styles = computed(() => {
       ? -1
       : isTemploraryID(b.id)
       ? 1
-      : 0
-  );
+      : 0;
+  });
 });
 watchEffect(() => {
   if (type.value && activeStyle.value?.typeId !== type.value && styles.value.length) {

+ 6 - 1
src/views/tagging/sign.vue

@@ -61,9 +61,14 @@ const emit = defineEmits<{
 }>();
 
 const findImage = computed(() => {
-  return props.tagging.images.find(
+  let img = props.tagging.images.find(
     (a) => getUrlType(getResource(getFileUrl(a))) === MetaType.image
   );
+  if (!img) {
+    return getTaggingStyle(props.tagging.styleId)?.icon;
+  } else {
+    return img;
+  }
 });
 
 const menus = [

+ 7 - 5
src/views/tagging/style-type-select.vue

@@ -1,8 +1,9 @@
 <template>
   <!-- <Menu style="width: 256px" mode="vertical" :items="getItems()" @click="handleClick" /> -->
-  <Dropdown placement="bottom" v-if="current">
+  <Dropdown placement="bottom" v-if="current.length">
     <span>
-      {{ current.title }}<span class="count" v-if="count">({{ current.count }})</span>
+      {{ current.map((i: any) => i.title).join("/") }}
+      <span class="count" v-if="count">({{ current[current.length - 1].count }})</span>
       <DownOutlined />
     </span>
     <template #overlay>
@@ -67,14 +68,15 @@ const getItems = (types = styleTypes): any => {
 const getCurrentItem = (type: number, all = items.value): any => {
   for (const item of all) {
     if (type === item.key) {
-      return item;
+      return [item];
     } else if ("children" in item && item.children) {
       const citem = getCurrentItem(type, item.children);
-      if (citem) {
-        return citem;
+      if (citem.length) {
+        return [item, ...citem];
       }
     }
   }
+  return [];
 };
 const types = computed(() => {
   if (props.all) {