'admin-21.01.13:新增布局配置分类背景风格切换'

This commit is contained in:
lyt 2021-01-13 17:32:59 +08:00
parent d16e6c9075
commit 5a57e37578
4 changed files with 39 additions and 6 deletions

View File

@ -37,6 +37,7 @@ export interface RootStateTypes {
wartermarkText: string, wartermarkText: string,
tagsStyle: string, tagsStyle: string,
animation: string, animation: string,
columnsAsideStyle: string,
layout: string layout: string
} }
} }

View File

@ -34,5 +34,6 @@ export default {
wartermarkText: 'small@小柒', wartermarkText: 'small@小柒',
tagsStyle: 'tagsStyleOne', tagsStyle: 'tagsStyleOne',
animation: 'slideRight', animation: 'slideRight',
columnsAsideStyle: 'columnsRound',
layout: 'defaults' layout: 'defaults'
} }

View File

@ -3,7 +3,7 @@
<el-scrollbar> <el-scrollbar>
<ul> <ul>
<li v-for="(v,k) in columnsAsideList" :key="k" @click="onColumnsAsideDown(v,k)" <li v-for="(v,k) in columnsAsideList" :key="k" @click="onColumnsAsideDown(v,k)"
:ref="el => { if (el) columnsAsideOffsetTopRefs[k] = el }" :class="{'layout-columns-active': liIndex === k}"> :ref="el => { if (el) columnsAsideOffsetTopRefs[k] = el }" :class="{'layout-columns-active':liIndex === k} ">
<div class="layout-columns-aside-li-box"> <div class="layout-columns-aside-li-box">
<template v-if="!v.meta.isLink"> <template v-if="!v.meta.isLink">
<i :class="v.meta.icon"></i> <i :class="v.meta.icon"></i>
@ -21,19 +21,21 @@
</template> </template>
</div> </div>
</li> </li>
<div class="layout-columns-aside-active" ref="columnsAsideActiveRef"></div> <div ref="columnsAsideActiveRef" :class="setColumnsAsideStyle"></div>
</ul> </ul>
</el-scrollbar> </el-scrollbar>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { reactive, toRefs, ref } from "vue"; import { reactive, toRefs, ref, computed } from "vue";
import { useStore } from "/@/store/index.ts";
export default { export default {
name: "layoutColumnsAside", name: "layoutColumnsAside",
setup() { setup() {
const columnsAsideOffsetTopRefs = ref([]); const columnsAsideOffsetTopRefs = ref([]);
const columnsAsideActiveRef = ref(); const columnsAsideActiveRef = ref();
const store = useStore();
const state = reactive({ const state = reactive({
columnsAsideList: [ columnsAsideList: [
{ {
@ -67,18 +69,31 @@ export default {
}, },
], ],
liIndex: 0, liIndex: 0,
difference: 0,
});
//
const setColumnsAsideStyle = computed(() => {
let { columnsAsideStyle } = store.state.themeConfig;
columnsAsideStyle === "columnsRound"
? (state.difference = 3)
: (state.difference = 0);
if (columnsAsideStyle === "columnsRound")
return "layout-columns-round-active";
else if (columnsAsideStyle === "columnsCard")
return "layout-columns-card-active";
}); });
// //
const onColumnsAsideDown = (v: Object, k: number) => { const onColumnsAsideDown = (v: Object, k: number) => {
state.liIndex = k; state.liIndex = k;
columnsAsideActiveRef.value.style.top = `${ columnsAsideActiveRef.value.style.top = `${
columnsAsideOffsetTopRefs.value[k].offsetTop + 3 columnsAsideOffsetTopRefs.value[k].offsetTop + state.difference
}px`; }px`;
}; };
return { return {
columnsAsideOffsetTopRefs, columnsAsideOffsetTopRefs,
columnsAsideActiveRef, columnsAsideActiveRef,
onColumnsAsideDown, onColumnsAsideDown,
setColumnsAsideStyle,
...toRefs(state), ...toRefs(state),
}; };
}, },
@ -113,7 +128,7 @@ export default {
color: #ffffff; color: #ffffff;
transition: 0.3s ease-in-out; transition: 0.3s ease-in-out;
} }
.layout-columns-aside-active { .layout-columns-round-active {
background: var(--color-primary); background: var(--color-primary);
color: #ffffff; color: #ffffff;
position: absolute; position: absolute;
@ -126,6 +141,13 @@ export default {
transition: 0.3s ease-in-out; transition: 0.3s ease-in-out;
border-radius: 5px; border-radius: 5px;
} }
.layout-columns-card-active {
@extend .layout-columns-round-active;
top: 0;
height: 50px;
width: 100%;
border-radius: 0;
}
} }
} }
</style> </style>

View File

@ -218,7 +218,7 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="layout-breadcrumb-seting-bar-flex mt15 mb27"> <div class="layout-breadcrumb-seting-bar-flex mt15">
<div class="layout-breadcrumb-seting-bar-flex-label">主页面切换动画</div> <div class="layout-breadcrumb-seting-bar-flex-label">主页面切换动画</div>
<div class="layout-breadcrumb-seting-bar-flex-value"> <div class="layout-breadcrumb-seting-bar-flex-value">
<el-select v-model="getThemeConfig.animation" placeholder="请选择" size="mini" style="width:90px;"> <el-select v-model="getThemeConfig.animation" placeholder="请选择" size="mini" style="width:90px;">
@ -228,6 +228,15 @@
</el-select> </el-select>
</div> </div>
</div> </div>
<div class="layout-breadcrumb-seting-bar-flex mt15 mb27">
<div class="layout-breadcrumb-seting-bar-flex-label">分栏高亮风格</div>
<div class="layout-breadcrumb-seting-bar-flex-value">
<el-select v-model="getThemeConfig.columnsAsideStyle" placeholder="请选择" size="mini" style="width:90px;">
<el-option label="圆角" value="columnsRound"></el-option>
<el-option label="卡片" value="columnsCard"></el-option>
</el-select>
</div>
</div>
<!-- 布局切换 --> <!-- 布局切换 -->
<el-divider content-position="left">布局切换</el-divider> <el-divider content-position="left">布局切换</el-divider>