mind-map/web/src/pages/Edit/Index.vue
2023-10-16 18:43:07 +08:00

227 lines
4.6 KiB
Vue

<template>
<div
class="container"
:class="{ isDark: isDark, activeSidebar: activeSidebar }"
>
<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,
activeSidebar: state => state.activeSidebar
})
},
watch: {
isDark() {
this.setBodyDark()
}
},
async created() {
this.initLocalConfig()
const loading = this.$loading({
lock: true,
text: this.$t('other.loading')
})
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-button */
.el-button {
background-color: #363b3f;
color: hsla(0, 0%, 100%, 0.9);
border-color: hsla(0, 0%, 100%, 0.1);
}
/* el-input */
.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%, 0.3);
}
.el-input-group__append,
.el-input-group__prepend {
background-color: #363b3f;
border-color: hsla(0, 0%, 100%, 0.1);
}
.el-input-group__append button.el-button {
color: hsla(0, 0%, 100%, 0.9);
}
/* 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;
}
}
/* el-dialog */
.el-dialog {
background-color: #262a2e;
.el-dialog__header {
border-bottom: 1px solid hsla(0, 0%, 100%, 0.1);
}
.el-dialog__title {
color: hsla(0, 0%, 100%, 0.9);
}
.el-dialog__body {
background-color: #262a2e;
}
.el-dialog__footer {
border-top: 1px solid hsla(0, 0%, 100%, 0.1);
}
}
/* el-upload */
.el-upload__tip {
color: #999;
}
/* 富文本编辑器 */
.toastui-editor-main-container {
background-color: #fff;
}
}
}
</style>