| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <template>
- <!-- 更适用于文件共享中心的CAD viewer组件,支持两种使用方法,详见下文 -->
- <CADViewer class="w-100% h-100%" :height="height" />
- </template>
- <script lang="ts" setup>
- import { onMounted, onUnmounted } from 'vue';
- import { CADViewer, useCADViewer } from '/@/components/CADViewer';
- import { useRoute } from 'vue-router';
- const props = defineProps<{
- // 文件共享中心中该文件的ID
- id: string;
- // 文件名
- filename?: string;
- height: number;
- }>();
- const { processFile, postMessage, registHook, unregistHook } = useCADViewer();
- function openFile(id: string) {
- // 只触发一次,因为MKY_Open_Mxweb之后会自动触发MKY_Open_File_Complete钩子,导致循环
- registHook('MKY_Open_File_Complete', () => {
- unregistHook('MKY_Open_File_Complete');
- processFile(id).then((path) => {
- postMessage('MKY_Open_Mxweb', path);
- });
- });
- }
- // watch(
- // () => props.id,
- // (v) => {
- // if (!v) return;
- // openFile(v, props.filename);
- // }
- // );
- // let initByRoute = false;
- onMounted(() => {
- const route = useRoute();
- if (route.query.id && route.query.filename) {
- // initByRoute = true;
- // 通过 url query 指定文件 ID 的形式使用该组件
- openFile(route.query.id as string);
- } else {
- // 通过 props 指定文件 ID 的形式使用该组件
- openFile(props.id);
- }
- });
- onUnmounted(() => {
- unregistHook('MKY_Open_File_Complete');
- });
- </script>
- <style scoped lang="less">
- ::v-deep .suffix {
- height: 32px;
- line-height: 32px;
- margin-left: 5px;
- color: #fff;
- }
- </style>
|