|
@@ -1,48 +1,31 @@
|
|
|
<template>
|
|
|
- <ActionMenus
|
|
|
- v-if="!store.child.value && viewStatus"
|
|
|
- class="menus"
|
|
|
- :class="{ level: level === 2 }"
|
|
|
- :menus="store.menus as any"
|
|
|
- :active-key="store.activeMenuKey.value"
|
|
|
- dire="column"
|
|
|
- />
|
|
|
- <scene-menus
|
|
|
- :parentKey="store.activeMenuKey.value"
|
|
|
- v-if="store.child.value && viewStatus"
|
|
|
- @back="store.child.value = null"
|
|
|
- :menus="store.child.value as MenuRaw[]"
|
|
|
- :level="level + 1"
|
|
|
- />
|
|
|
+ <ActionMenus v-if="!store.child.value" class="menus" :class="{ level: level === 2 }" :menus="store.menus as any" :active-key="store.activeMenuKey.value" dire="column" />
|
|
|
+ <scene-menus :parentKey="store.activeMenuKey.value" v-if="store.child.value" @back="store.child.value = null" :menus="store.child.value as MenuRaw[]" :level="level + 1" />
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import ActionMenus from "@/components/group-button/index.vue";
|
|
|
-import { generateMixMenus, MenuRaw, menus, findMenuByKey } from "./menus";
|
|
|
-import { joinActions } from "./actions";
|
|
|
-import { computed, onMounted, onUnmounted, ref, watchEffect } from "vue";
|
|
|
-import { disabledMap, laserModeStack } from "@/hook";
|
|
|
-import { Mode } from "@/sdk";
|
|
|
+import ActionMenus from '@/components/group-button/index.vue';
|
|
|
+import { generateMixMenus, MenuRaw, menus, findMenuByKey } from './menus';
|
|
|
+import { joinActions } from './actions';
|
|
|
+import { computed, onMounted, onUnmounted, ref, watchEffect } from 'vue';
|
|
|
+import { disabledMap, laserModeStack } from '@/hook';
|
|
|
+import { Mode } from '@/sdk';
|
|
|
|
|
|
-const props = withDefaults(
|
|
|
- defineProps<{ menus?: MenuRaw[]; level?: number; parentKey?: string ;viewStatus?:Boolean}>(),
|
|
|
- { level: 1 }
|
|
|
-
|
|
|
-);
|
|
|
+const props = withDefaults(defineProps<{ menus?: MenuRaw[]; level?: number; parentKey?: string }>(), { level: 1 });
|
|
|
const emit = defineEmits<{
|
|
|
- (e: "back"): void;
|
|
|
- (e: "enterChild"): void;
|
|
|
- (e: "leaveChild"): void;
|
|
|
+ (e: 'back'): void;
|
|
|
+ (e: 'enterChild'): void;
|
|
|
+ (e: 'leaveChild'): void;
|
|
|
}>();
|
|
|
const backMenu = {
|
|
|
- icon: "return",
|
|
|
- text: "",
|
|
|
- key: "back",
|
|
|
- onClick: () => emit("back"),
|
|
|
+ icon: 'return',
|
|
|
+ text: '',
|
|
|
+ key: 'back',
|
|
|
+ onClick: () => emit('back'),
|
|
|
};
|
|
|
|
|
|
const menusMix = computed(() => (props.level === 1 ? menus : [backMenu, ...props.menus]));
|
|
|
-const store = generateMixMenus("children", (m) => m, menusMix.value);
|
|
|
+const store = generateMixMenus('children', (m) => m, menusMix.value);
|
|
|
|
|
|
watchEffect(() => {
|
|
|
const menu = findMenuByKey(store.itemActiveKey.value as any);
|
|
@@ -60,16 +43,16 @@ watchEffect((onCleanup) => {
|
|
|
onCleanup(() => {});
|
|
|
}
|
|
|
});
|
|
|
-console.error(props)
|
|
|
+console.error(props);
|
|
|
if (props.level === 1) {
|
|
|
watchEffect(() => {
|
|
|
disabledMap.photo = !store.child.value?.length;
|
|
|
});
|
|
|
watchEffect(() => {
|
|
|
if (store.child.value) {
|
|
|
- emit("enterChild");
|
|
|
+ emit('enterChild');
|
|
|
} else {
|
|
|
- emit("leaveChild");
|
|
|
+ emit('leaveChild');
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -77,14 +60,14 @@ if (props.level === 1) {
|
|
|
const stopWatch = joinActions(store.itemActiveKey);
|
|
|
onUnmounted(() => {
|
|
|
stopWatch();
|
|
|
- if (props.parentKey === "measure") {
|
|
|
+ if (props.parentKey === 'measure') {
|
|
|
laserModeStack.pop();
|
|
|
}
|
|
|
});
|
|
|
onMounted(() => {
|
|
|
if (props.level > 1) {
|
|
|
const defaultMenu = props.menus.find((menu) => {
|
|
|
- if (typeof menu.defaultSelect === "function") {
|
|
|
+ if (typeof menu.defaultSelect === 'function') {
|
|
|
return menu.defaultSelect();
|
|
|
} else {
|
|
|
return menu.defaultSelect;
|
|
@@ -92,14 +75,14 @@ onMounted(() => {
|
|
|
});
|
|
|
store.itemActiveKey.value = defaultMenu?.key;
|
|
|
// store.activeMenuKey.value =
|
|
|
- if (props.parentKey === "measure") {
|
|
|
+ if (props.parentKey === 'measure') {
|
|
|
laserModeStack.push(ref(Mode.cloud));
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
</script>
|
|
|
<script lang="ts">
|
|
|
-export default { name: "scene-menus" };
|
|
|
+export default { name: 'scene-menus' };
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -127,7 +110,7 @@ export default { name: "scene-menus" };
|
|
|
|
|
|
&:after {
|
|
|
position: absolute;
|
|
|
- content: "";
|
|
|
+ content: '';
|
|
|
height: 1px;
|
|
|
left: 10px;
|
|
|
right: 10px;
|