|
@@ -1,76 +1,100 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <ContentBox
|
|
|
|
|
- class="go-content-layers go-boderbox"
|
|
|
|
|
- :class="{ scoped: !chartLayoutStore.getDetails }"
|
|
|
|
|
- :showTop="false"
|
|
|
|
|
- :depth="2"
|
|
|
|
|
- >
|
|
|
|
|
- <n-tabs class="tabs-box" size="small" type="segment">
|
|
|
|
|
- <n-tab-pane
|
|
|
|
|
- v-for="item in tabList"
|
|
|
|
|
- :key="item.key"
|
|
|
|
|
- :name="item.key"
|
|
|
|
|
- display-directive="show:lazy"
|
|
|
|
|
- >
|
|
|
|
|
- <template #tab>
|
|
|
|
|
- <n-space>
|
|
|
|
|
- <span>{{ item.title }}</span>
|
|
|
|
|
- <n-icon size="16" class="icon-position">
|
|
|
|
|
- <component :is="item.icon"></component>
|
|
|
|
|
- </n-icon>
|
|
|
|
|
- </n-space>
|
|
|
|
|
- </template>
|
|
|
|
|
- <component :is="item.render"></component>
|
|
|
|
|
- </n-tab-pane>
|
|
|
|
|
- </n-tabs>
|
|
|
|
|
- </ContentBox>
|
|
|
|
|
|
|
+ <n-layout has-sider sider-placement="right">
|
|
|
|
|
+ <n-layout-content>
|
|
|
|
|
+ <!-- 为了展示折叠的按钮,放在了这里 呜呜呜 -->
|
|
|
|
|
+ <ContentDrag />
|
|
|
|
|
+ </n-layout-content>
|
|
|
|
|
+ <n-layout-sider
|
|
|
|
|
+ collapse-mode="transform"
|
|
|
|
|
+ :collapsed-width="0"
|
|
|
|
|
+ :width="350"
|
|
|
|
|
+ :collapsed="collapsed"
|
|
|
|
|
+ :native-scrollbar="false"
|
|
|
|
|
+ show-trigger="bar"
|
|
|
|
|
+ @collapse="collapsedHindle"
|
|
|
|
|
+ @expand="expandHindle"
|
|
|
|
|
+ >
|
|
|
|
|
+ <ContentBox class="go-content-layers go-boderbox" :showTop="false" :depth="2">
|
|
|
|
|
+ <n-tabs class="tabs-box" size="small" type="segment">
|
|
|
|
|
+ <n-tab-pane
|
|
|
|
|
+ v-for="item in tabList"
|
|
|
|
|
+ :key="item.key"
|
|
|
|
|
+ :name="item.key"
|
|
|
|
|
+ display-directive="show:lazy"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #tab>
|
|
|
|
|
+ <n-space>
|
|
|
|
|
+ <span>{{ item.title }}</span>
|
|
|
|
|
+ <n-icon size="16" class="icon-position">
|
|
|
|
|
+ <component :is="item.icon"></component>
|
|
|
|
|
+ </n-icon>
|
|
|
|
|
+ </n-space>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <component :is="item.render"></component>
|
|
|
|
|
+ </n-tab-pane>
|
|
|
|
|
+ </n-tabs>
|
|
|
|
|
+ </ContentBox>
|
|
|
|
|
+ </n-layout-sider>
|
|
|
|
|
+ </n-layout>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { reactive, shallowRef } from 'vue'
|
|
|
|
|
|
|
+import { shallowRef, ref, toRefs, watch } from 'vue'
|
|
|
import { icon } from '@/plugins'
|
|
import { icon } from '@/plugins'
|
|
|
import { ContentBox } from '../ContentBox/index'
|
|
import { ContentBox } from '../ContentBox/index'
|
|
|
import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore'
|
|
import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayoutStore'
|
|
|
|
|
+import { ChartLayoutStoreEnums } from '@/store/modules/chartLayoutStore/chartLayoutStore.d'
|
|
|
import { Setting } from './components/Setting/index'
|
|
import { Setting } from './components/Setting/index'
|
|
|
import { Behind } from './components/Behind/index'
|
|
import { Behind } from './components/Behind/index'
|
|
|
|
|
+import { ContentDrag } from '../ContentDrag/index'
|
|
|
|
|
|
|
|
-const chartLayoutStore = useChartLayoutStore()
|
|
|
|
|
|
|
+const { getDetails } = toRefs(useChartLayoutStore())
|
|
|
|
|
+const { setItem } = useChartLayoutStore()
|
|
|
|
|
|
|
|
const { CubeIcon, FlashIcon } = icon.ionicons5
|
|
const { CubeIcon, FlashIcon } = icon.ionicons5
|
|
|
|
|
|
|
|
-const tabList = reactive([
|
|
|
|
|
|
|
+const collapsed = ref<boolean>(getDetails.value)
|
|
|
|
|
+
|
|
|
|
|
+const collapsedHindle = () => {
|
|
|
|
|
+ collapsed.value = true
|
|
|
|
|
+ setItem(ChartLayoutStoreEnums.DETAILS, true)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+const expandHindle = () => {
|
|
|
|
|
+ collapsed.value = false
|
|
|
|
|
+ setItem(ChartLayoutStoreEnums.DETAILS, false)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+watch(getDetails, (newData) => {
|
|
|
|
|
+ if (newData) {
|
|
|
|
|
+ collapsedHindle()
|
|
|
|
|
+ } else {
|
|
|
|
|
+ expandHindle()
|
|
|
|
|
+ }
|
|
|
|
|
+})
|
|
|
|
|
+
|
|
|
|
|
+const tabList = shallowRef([
|
|
|
{
|
|
{
|
|
|
key: 'setting',
|
|
key: 'setting',
|
|
|
title: '配置项',
|
|
title: '配置项',
|
|
|
icon: CubeIcon,
|
|
icon: CubeIcon,
|
|
|
- render: shallowRef(Setting)
|
|
|
|
|
|
|
+ render: Setting
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
key: 'behind',
|
|
key: 'behind',
|
|
|
title: '后端数据',
|
|
title: '后端数据',
|
|
|
icon: FlashIcon,
|
|
icon: FlashIcon,
|
|
|
- render: shallowRef(Behind)
|
|
|
|
|
|
|
+ render: Behind
|
|
|
}
|
|
}
|
|
|
])
|
|
])
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-$wight: 400px;
|
|
|
|
|
@include go(content-layers) {
|
|
@include go(content-layers) {
|
|
|
- width: $wight;
|
|
|
|
|
padding: 10px;
|
|
padding: 10px;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
- @extend .go-transition;
|
|
|
|
|
.icon-position {
|
|
.icon-position {
|
|
|
padding-top: 2px;
|
|
padding-top: 2px;
|
|
|
}
|
|
}
|
|
|
- &.scoped {
|
|
|
|
|
- width: 0;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- }
|
|
|
|
|
- .tabs-box {
|
|
|
|
|
- /* padding 值 */
|
|
|
|
|
- width: $wight - 2 * 10;
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|