|
|
@@ -4,8 +4,8 @@
|
|
|
<Search v-if="meta.search != 'hide'" />
|
|
|
<Nav v-if="meta.nav" />
|
|
|
<Breadcrumb v-if="meta.breadcrumb" />
|
|
|
- <div class="pages-bos" :class="meta.workbench ? 'pages-bos1' : 'pages-bos2'">
|
|
|
- <Workbench v-if="meta.workbench" />
|
|
|
+ <div class="pages-bos" :class="meta.workbench ? 'pages-bos1' : 'pages-bos2'" :style="{ minHeight: boxHeight }">
|
|
|
+ <Workbench ref="WorkbenchRef" v-if="meta.workbench" />
|
|
|
<router-view> </router-view>
|
|
|
</div>
|
|
|
<Foot />
|
|
|
@@ -17,8 +17,44 @@ import { Header, Search, Nav, Breadcrumb, Foot, Workbench } from './components';
|
|
|
|
|
|
const route = useRoute();
|
|
|
const meta = ref<any>({});
|
|
|
-meta.value = route.meta;
|
|
|
+const WorkbenchRef = ref<any>(null);
|
|
|
+const boxHeight = ref<any>('0px');
|
|
|
+
|
|
|
+const observeHeight = () => {
|
|
|
+ if (!WorkbenchRef.value?.$el) return;
|
|
|
+
|
|
|
+ const resizeObserver = new ResizeObserver((entries) => {
|
|
|
+ for (const entry of entries) {
|
|
|
+ boxHeight.value = entry.contentRect.height + 'px';
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
+ resizeObserver.observe(WorkbenchRef.value.$el);
|
|
|
+
|
|
|
+ // 组件卸载时清理
|
|
|
+ onUnmounted(() => {
|
|
|
+ resizeObserver.disconnect();
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ nextTick(() => {
|
|
|
+ if (route.meta.workbench) {
|
|
|
+ observeHeight();
|
|
|
+ }
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+watch(
|
|
|
+ () => route.meta.workbench,
|
|
|
+ (newVal) => {
|
|
|
+ if (newVal) {
|
|
|
+ nextTick(() => observeHeight());
|
|
|
+ }
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+meta.value = route.meta;
|
|
|
watch(route, () => {
|
|
|
meta.value = route.meta;
|
|
|
});
|
|
|
@@ -43,7 +79,7 @@ watch(route, () => {
|
|
|
|
|
|
&.pages-bos1 {
|
|
|
width: 1200px;
|
|
|
- margin: 20px auto 0 auto;
|
|
|
+ margin: 20px auto;
|
|
|
}
|
|
|
|
|
|
&.pages-bos2 {
|