mind-map/web/src/pages/Edit/Index.vue
2023-07-24 10:12:53 +08:00

173 lines
3.5 KiB
Vue

<template>
<div class="container" :class="{ isDark: isDark }">
<template v-if="show">
<Toolbar v-if="!isZenMode"></Toolbar>
<Edit></Edit>
</template>
</div>
</template>
<script>
import Toolbar from './components/Toolbar'
import Edit from './components/Edit'
import { mapState, mapActions, mapMutations } from 'vuex'
import { getLocalConfig } from '@/api'
export default {
name: 'Index',
components: {
Toolbar,
Edit
},
data() {
return {
show: false
}
},
computed: {
...mapState({
isZenMode: state => state.localConfig.isZenMode,
isDark: state => state.isDark
})
},
watch: {
isDark() {
this.setBodyDark()
}
},
async created() {
this.initLocalConfig()
const loading = this.$loading({
lock: true,
text: '正在加载,请稍后...'
})
await this.getUserMindMapData()
this.show = true
loading.close()
this.setBodyDark()
},
methods: {
...mapActions(['getUserMindMapData']),
...mapMutations(['setLocalConfig']),
/**
* @Author: 王林25
* @Date: 2022-11-14 19:07:03
* @Desc: 初始化本地配置
*/
initLocalConfig() {
let config = getLocalConfig()
if (config) {
this.setLocalConfig({
...this.$store.state.localConfig,
...config
})
}
},
setBodyDark() {
this.isDark
? document.body.classList.add('isDark')
: document.body.classList.remove('isDark')
}
}
}
</script>
<style lang="less">
.container {}
body {
&.isDark {
.el-input__inner {
background-color: #363b3f;
border-color: hsla(0, 0%, 100%, 0.1);
color: hsla(0, 0%, 100%, 0.9);
}
.el-input.is-disabled .el-input__inner {
background-color: #363b3f;
border-color: hsla(0, 0%, 100%, 0.1);
color: hsla(0,0%,100%,.3);
}
/* el-select */
.el-select-dropdown {
background-color: #36393d;
border-color: hsla(0, 0%, 100%, 0.1);
.el-select-dropdown__item {
color: hsla(0, 0%, 100%, 0.6);
}
.el-select-dropdown__item.selected {
color: #409eff;
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
background-color: hsla(0, 0%, 100%, 0.05);
}
}
.el-select .el-input.is-disabled .el-input__inner:hover {
border-color: hsla(0, 0%, 100%, 0.1);
}
/* el-popper*/
.el-popper {
background-color: #36393d;
border-color: hsla(0, 0%, 100%, 0.1);
}
.el-popper[x-placement^='bottom'] .popper__arrow {
background-color: #36393d;
}
.el-popper[x-placement^='bottom'] .popper__arrow::after {
border-bottom-color: #36393d;
}
.el-popper[x-placement^=top] .popper__arrow {
background-color: #36393d;
}
.el-popper[x-placement^=top] .popper__arrow::after {
border-top-color: #36393d;
}
/* el-tabs */
.el-tabs__item {
color: hsla(0, 0%, 100%, 0.6);
&:hover,
&.is-active {
color: #409EFF;
}
}
.el-tabs__nav-wrap::after {
background-color: hsla(0, 0%, 100%, 0.6);
}
/* el-slider */
.el-slider__runway {
background-color: hsla(0, 0%, 100%, 0.6);
}
/* el-radio-group */
.el-radio-group {
.el-radio-button__inner {
background-color: #36393d;
color: hsla(0, 0%, 100%, 0.6);
}
.el-radio-button__orig-radio:checked+.el-radio-button__inner {
color: #FFF;
background-color: #409EFF;
}
}
}
}
</style>