|
@@ -53,13 +53,31 @@
|
|
</div>
|
|
</div>
|
|
</Modal>
|
|
</Modal>
|
|
|
|
|
|
- <div @click="visible = true">
|
|
|
|
- <slot></slot>
|
|
|
|
|
|
+ <div>
|
|
|
|
+ <Dropdown placement="bottom">
|
|
|
|
+ <slot></slot>
|
|
|
|
+ <template #overlay>
|
|
|
|
+ <Menu>
|
|
|
|
+ <MenuItem @click="visible = true">场景管理</MenuItem>
|
|
|
|
+ <MenuItem @click="selectModel">媒体库</MenuItem>
|
|
|
|
+ </Menu>
|
|
|
|
+ </template>
|
|
|
|
+ </Dropdown>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
-import { Modal, Input, Table, Empty, Tabs, TabPane } from "ant-design-vue";
|
|
|
|
|
|
+import {
|
|
|
|
+ Modal,
|
|
|
|
+ Input,
|
|
|
|
+ Table,
|
|
|
|
+ Empty,
|
|
|
|
+ Tabs,
|
|
|
|
+ TabPane,
|
|
|
|
+ Dropdown,
|
|
|
|
+ Menu,
|
|
|
|
+ MenuItem,
|
|
|
|
+} from "ant-design-vue";
|
|
import { computed, nextTick, ref, watch, watchEffect } from "vue";
|
|
import { computed, nextTick, ref, watch, watchEffect } from "vue";
|
|
import { scenes, save, SceneTypeDesc } from "@/store";
|
|
import { scenes, save, SceneTypeDesc } from "@/store";
|
|
import { asyncTimeout, createLoadPack } from "@/utils";
|
|
import { asyncTimeout, createLoadPack } from "@/utils";
|
|
@@ -73,6 +91,7 @@ import {
|
|
|
|
|
|
import type { Scene } from "@/api";
|
|
import type { Scene } from "@/api";
|
|
import { getSceneModel } from "@/sdk";
|
|
import { getSceneModel } from "@/sdk";
|
|
|
|
+import { selectMaterials } from "@/components/materials/quisk";
|
|
|
|
|
|
type Key = Scene["modelId"];
|
|
type Key = Scene["modelId"];
|
|
|
|
|
|
@@ -133,10 +152,8 @@ const cloumns = [
|
|
},
|
|
},
|
|
];
|
|
];
|
|
|
|
|
|
-const okHandler = createLoadPack(async () => {
|
|
|
|
- const models = selects.value
|
|
|
|
- .filter((modelId) => !fuseModels.value.some((model) => model.modelId === modelId))
|
|
|
|
- .map((modelId) => createFuseModels({ modelId }));
|
|
|
|
|
|
+const addModelHandler = createLoadPack(async (modelIds: number[]) => {
|
|
|
|
+ const models = modelIds.map((modelId) => createFuseModels({ modelId }));
|
|
const addPromises = models.map(addFuseModel);
|
|
const addPromises = models.map(addFuseModel);
|
|
|
|
|
|
await Promise.all(addPromises);
|
|
await Promise.all(addPromises);
|
|
@@ -159,6 +176,13 @@ const okHandler = createLoadPack(async () => {
|
|
});
|
|
});
|
|
await asyncTimeout(100);
|
|
await asyncTimeout(100);
|
|
await save();
|
|
await save();
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+const okHandler = createLoadPack(async () => {
|
|
|
|
+ const models = selects.value.filter(
|
|
|
|
+ (modelId) => !fuseModels.value.some((model) => model.modelId === modelId)
|
|
|
|
+ );
|
|
|
|
+ await addModelHandler(models);
|
|
visible.value = false;
|
|
visible.value = false;
|
|
});
|
|
});
|
|
|
|
|
|
@@ -166,10 +190,24 @@ watch(visible, (visible, oldvisible) => {
|
|
if (visible !== oldvisible) {
|
|
if (visible !== oldvisible) {
|
|
keyword.value = "";
|
|
keyword.value = "";
|
|
selects.value = selectIds.value;
|
|
selects.value = selectIds.value;
|
|
-
|
|
|
|
visible && initialScenes();
|
|
visible && initialScenes();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+const selectModel = async () => {
|
|
|
|
+ const list = await selectMaterials({
|
|
|
|
+ format: ["obj", "ply", "las", "laz", "b3dm"],
|
|
|
|
+ maxSize: 2 * 1024 * 1024 * 1024,
|
|
|
|
+ });
|
|
|
|
+ if (!list?.length) return;
|
|
|
|
+ const modelIds = list
|
|
|
|
+ .map((item) => item.modelId!)
|
|
|
|
+ .filter(
|
|
|
|
+ (modelId) => modelId && !fuseModels.value.some((model) => model.modelId === modelId)
|
|
|
|
+ );
|
|
|
|
+ console.log(modelIds);
|
|
|
|
+ // await addModelHandler(modelIds);
|
|
|
|
+};
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|