Demo:结构侧边栏样式调整
BIN
web/src/assets/.DS_Store
vendored
BIN
web/src/assets/img/structures/catalogOrganization.jpg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
BIN
web/src/assets/img/structures/fishbone.jpg
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
BIN
web/src/assets/img/structures/fishbone2.jpg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
web/src/assets/img/structures/logicalStructure.jpg
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 5.5 KiB |
BIN
web/src/assets/img/structures/mindMap.jpg
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 7.0 KiB |
BIN
web/src/assets/img/structures/organizationStructure.jpg
Normal file
|
After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
BIN
web/src/assets/img/structures/rightFishbone.jpg
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
web/src/assets/img/structures/rightFishbone2.jpg
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
web/src/assets/img/structures/timeline.jpg
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |
BIN
web/src/assets/img/structures/timeline2.jpg
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 6.6 KiB |
BIN
web/src/assets/img/structures/verticalTimeline.jpg
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 7.2 KiB |
BIN
web/src/assets/img/structures/verticalTimeline2.jpg
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
web/src/assets/img/structures/verticalTimeline3.jpg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
@ -1,14 +1,19 @@
|
|||||||
// 布局结构图片映射
|
// 布局结构图片映射
|
||||||
export const layoutImgMap = {
|
export const layoutImgMap = {
|
||||||
logicalStructure: require('../assets/img/structures/logicalStructure.png'),
|
logicalStructure: require('../assets/img/structures/logicalStructure.jpg'),
|
||||||
logicalStructureLeft: require('../assets/img/structures/logicalStructureLeft.jpg'),
|
logicalStructureLeft: require('../assets/img/structures/logicalStructureLeft.jpg'),
|
||||||
mindMap: require('../assets/img/structures/mindMap.png'),
|
mindMap: require('../assets/img/structures/mindMap.jpg'),
|
||||||
organizationStructure: require('../assets/img/structures/organizationStructure.png'),
|
organizationStructure: require('../assets/img/structures/organizationStructure.jpg'),
|
||||||
catalogOrganization: require('../assets/img/structures/catalogOrganization.png'),
|
catalogOrganization: require('../assets/img/structures/catalogOrganization.jpg'),
|
||||||
timeline: require('../assets/img/structures/timeline.png'),
|
timeline: require('../assets/img/structures/timeline.jpg'),
|
||||||
timeline2: require('../assets/img/structures/timeline2.png'),
|
timeline2: require('../assets/img/structures/timeline2.jpg'),
|
||||||
fishbone: require('../assets/img/structures/fishbone.png'),
|
fishbone: require('../assets/img/structures/fishbone.jpg'),
|
||||||
verticalTimeline: require('../assets/img/structures/verticalTimeline.png')
|
fishbone2: require('../assets/img/structures/fishbone2.jpg'),
|
||||||
|
rightFishbone: require('../assets/img/structures/rightFishbone.jpg'),
|
||||||
|
rightFishbone2: require('../assets/img/structures/rightFishbone2.jpg'),
|
||||||
|
verticalTimeline: require('../assets/img/structures/verticalTimeline.jpg'),
|
||||||
|
verticalTimeline2: require('../assets/img/structures/verticalTimeline2.jpg'),
|
||||||
|
verticalTimeline3: require('../assets/img/structures/verticalTimeline3.jpg')
|
||||||
}
|
}
|
||||||
|
|
||||||
// 公式列表
|
// 公式列表
|
||||||
|
|||||||
@ -648,3 +648,37 @@ export const alignList = [
|
|||||||
value: 'right'
|
value: 'right'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 结构列表
|
||||||
|
export const layoutGroupList = [
|
||||||
|
{
|
||||||
|
name: 'Logical structure',
|
||||||
|
list: ['logicalStructure', 'logicalStructureLeft']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Mind map',
|
||||||
|
list: ['mindMap']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Organization structure',
|
||||||
|
list: ['organizationStructure']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Catalog organization',
|
||||||
|
list: ['catalogOrganization']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Timeline',
|
||||||
|
list: [
|
||||||
|
'timeline',
|
||||||
|
'timeline2',
|
||||||
|
'verticalTimeline2',
|
||||||
|
'verticalTimeline3',
|
||||||
|
'verticalTimeline'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Fishbone',
|
||||||
|
list: ['fishbone', 'fishbone2', 'rightFishbone', 'rightFishbone2']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@ -23,7 +23,8 @@ import {
|
|||||||
numberTypeList as numberTypeListZh,
|
numberTypeList as numberTypeListZh,
|
||||||
numberLevelList as numberLevelListZh,
|
numberLevelList as numberLevelListZh,
|
||||||
linearGradientDirList as linearGradientDirListZh,
|
linearGradientDirList as linearGradientDirListZh,
|
||||||
alignList as alignListZh
|
alignList as alignListZh,
|
||||||
|
layoutGroupList as layoutGroupListZh
|
||||||
} from './zh'
|
} from './zh'
|
||||||
import {
|
import {
|
||||||
fontFamilyList as fontFamilyListEn,
|
fontFamilyList as fontFamilyListEn,
|
||||||
@ -40,7 +41,8 @@ import {
|
|||||||
numberTypeList as numberTypeListEn,
|
numberTypeList as numberTypeListEn,
|
||||||
numberLevelList as numberLevelListEn,
|
numberLevelList as numberLevelListEn,
|
||||||
linearGradientDirList as linearGradientDirListEn,
|
linearGradientDirList as linearGradientDirListEn,
|
||||||
alignList as alignListEn
|
alignList as alignListEn,
|
||||||
|
layoutGroupList as layoutGroupListEn
|
||||||
} from './en'
|
} from './en'
|
||||||
import {
|
import {
|
||||||
fontFamilyList as fontFamilyListZhtw,
|
fontFamilyList as fontFamilyListZhtw,
|
||||||
@ -57,7 +59,8 @@ import {
|
|||||||
numberTypeList as numberTypeListZhtw,
|
numberTypeList as numberTypeListZhtw,
|
||||||
numberLevelList as numberLevelListZhtw,
|
numberLevelList as numberLevelListZhtw,
|
||||||
linearGradientDirList as linearGradientDirListZhtw,
|
linearGradientDirList as linearGradientDirListZhtw,
|
||||||
alignList as alignListZhtw
|
alignList as alignListZhtw,
|
||||||
|
layoutGroupList as layoutGroupListZhtw
|
||||||
} from './zhtw'
|
} from './zhtw'
|
||||||
|
|
||||||
const fontFamilyList = {
|
const fontFamilyList = {
|
||||||
@ -162,6 +165,12 @@ const alignList = {
|
|||||||
zhtw: alignListZhtw
|
zhtw: alignListZhtw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const layoutGroupList = {
|
||||||
|
zh: layoutGroupListZh,
|
||||||
|
en: layoutGroupListEn,
|
||||||
|
zhtw: layoutGroupListZhtw
|
||||||
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
fontSizeList,
|
fontSizeList,
|
||||||
borderWidthList,
|
borderWidthList,
|
||||||
@ -187,5 +196,6 @@ export {
|
|||||||
numberTypeList,
|
numberTypeList,
|
||||||
numberLevelList,
|
numberLevelList,
|
||||||
linearGradientDirList,
|
linearGradientDirList,
|
||||||
alignList
|
alignList,
|
||||||
|
layoutGroupList
|
||||||
}
|
}
|
||||||
|
|||||||
@ -745,3 +745,37 @@ export const alignList = [
|
|||||||
value: 'right'
|
value: 'right'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 结构列表
|
||||||
|
export const layoutGroupList = [
|
||||||
|
{
|
||||||
|
name: '逻辑结构图',
|
||||||
|
list: ['logicalStructure', 'logicalStructureLeft']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '思维导图',
|
||||||
|
list: ['mindMap']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '组织结构图',
|
||||||
|
list: ['organizationStructure']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '目录组织图',
|
||||||
|
list: ['catalogOrganization']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '时间轴',
|
||||||
|
list: [
|
||||||
|
'timeline',
|
||||||
|
'timeline2',
|
||||||
|
'verticalTimeline2',
|
||||||
|
'verticalTimeline3',
|
||||||
|
'verticalTimeline'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '鱼骨图',
|
||||||
|
list: ['fishbone', 'fishbone2', 'rightFishbone', 'rightFishbone2']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@ -647,3 +647,37 @@ export const alignList = [
|
|||||||
value: 'right'
|
value: 'right'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// 结构列表
|
||||||
|
export const layoutGroupList = [
|
||||||
|
{
|
||||||
|
name: '邏輯結構圖',
|
||||||
|
list: ['logicalStructure', 'logicalStructureLeft']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '思維導圖',
|
||||||
|
list: ['mindMap']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '組織結構圖',
|
||||||
|
list: ['organizationStructure']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '目錄組織圖',
|
||||||
|
list: ['catalogOrganization']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '時間軸',
|
||||||
|
list: [
|
||||||
|
'timeline',
|
||||||
|
'timeline2',
|
||||||
|
'verticalTimeline2',
|
||||||
|
'verticalTimeline3',
|
||||||
|
'verticalTimeline'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '魚骨圖',
|
||||||
|
list: ['fishbone', 'fishbone2', 'rightFishbone', 'rightFishbone2']
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|||||||
@ -528,24 +528,25 @@ export default {
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
&.isDark {
|
&.isDark {
|
||||||
.panel {
|
.panelHeader {
|
||||||
background-color: #262a2e;
|
.name {
|
||||||
border-left-color: hsla(0, 0%, 100%, 0.1);
|
color: #fff;
|
||||||
|
|
||||||
.panelHeader {
|
|
||||||
.name {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.panelBody {
|
.panelBody {
|
||||||
.row {
|
.row {
|
||||||
.rowItem {
|
.rowItem {
|
||||||
.name {
|
.name {
|
||||||
color: hsla(0, 0%, 100%, 0.6);
|
color: hsla(0, 0%, 100%, 0.6);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.styleBtn {
|
||||||
|
background-color: #363b3f;
|
||||||
|
color: hsla(0, 0%, 100%, 0.6);
|
||||||
|
border-color: hsla(0, 0%, 100%, 0.1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<Sidebar ref="sidebar" :title="$t('strusture.title')">
|
<Sidebar ref="sidebar" :title="$t('strusture.title')">
|
||||||
<div class="layoutList" :class="{ isDark: isDark }">
|
<div class="layoutGroupList" :class="{ isDark: isDark }">
|
||||||
<div
|
<div
|
||||||
class="layoutItem"
|
class="laytouGroup"
|
||||||
v-for="item in layoutList"
|
v-for="group in layoutGroupList"
|
||||||
:key="item.value"
|
:key="group.name"
|
||||||
@click="useLayout(item)"
|
|
||||||
:class="{ active: item.value === layout }"
|
|
||||||
>
|
>
|
||||||
<div class="imgBox">
|
<div class="groupName">{{ group.name }}</div>
|
||||||
<img :src="layoutImgMap[item.value]" alt="" />
|
<div class="layoutList">
|
||||||
|
<div
|
||||||
|
class="layoutItem"
|
||||||
|
v-for="item in group.list"
|
||||||
|
:key="item"
|
||||||
|
@click="useLayout(item)"
|
||||||
|
:class="{ active: item === layout }"
|
||||||
|
>
|
||||||
|
<img :src="layoutImgMap[item]" alt="" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="name">{{ item.name }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Sidebar>
|
</Sidebar>
|
||||||
@ -19,10 +25,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Sidebar from './Sidebar.vue'
|
import Sidebar from './Sidebar.vue'
|
||||||
import { layoutList } from 'simple-mind-map/src/constants/constant'
|
|
||||||
import { storeData } from '@/api'
|
import { storeData } from '@/api'
|
||||||
import { mapState } from 'vuex'
|
import { mapState } from 'vuex'
|
||||||
import { layoutImgMap } from '@/config/constant.js'
|
import { layoutImgMap } from '@/config/constant.js'
|
||||||
|
import { layoutGroupList } from '@/config'
|
||||||
|
|
||||||
// 结构
|
// 结构
|
||||||
export default {
|
export default {
|
||||||
@ -36,7 +42,6 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
layoutList,
|
|
||||||
layoutImgMap,
|
layoutImgMap,
|
||||||
layout: ''
|
layout: ''
|
||||||
}
|
}
|
||||||
@ -45,7 +50,11 @@ export default {
|
|||||||
...mapState({
|
...mapState({
|
||||||
isDark: state => state.localConfig.isDark,
|
isDark: state => state.localConfig.isDark,
|
||||||
activeSidebar: state => state.activeSidebar
|
activeSidebar: state => state.activeSidebar
|
||||||
})
|
}),
|
||||||
|
|
||||||
|
layoutGroupList() {
|
||||||
|
return layoutGroupList[this.$i18n.locale] || layoutGroupList.zh
|
||||||
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
activeSidebar(val) {
|
activeSidebar(val) {
|
||||||
@ -59,10 +68,10 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
useLayout(layout) {
|
useLayout(layout) {
|
||||||
this.layout = layout.value
|
this.layout = layout
|
||||||
this.mindMap.setLayout(layout.value)
|
this.mindMap.setLayout(layout)
|
||||||
storeData({
|
storeData({
|
||||||
layout: layout.value
|
layout: layout
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,48 +79,62 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.layoutList {
|
.layoutGroupList {
|
||||||
|
width: 100%;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
|
||||||
&.isDark {
|
&.isDark {
|
||||||
.name {
|
.laytouGroup {
|
||||||
color: #fff;
|
.groupName {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.layoutItem {
|
.laytouGroup {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
cursor: pointer;
|
margin-bottom: 12px;
|
||||||
border-bottom: 1px solid #e9e9e9;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
transition: all 0.2s;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
|
|
||||||
&:last-of-type {
|
.groupName {
|
||||||
border: none;
|
font-weight: 500;
|
||||||
}
|
color: #303133;
|
||||||
|
margin-bottom: 8px;
|
||||||
&:hover {
|
|
||||||
box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16),
|
|
||||||
0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
border: 1px solid #67c23a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.imgBox {
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.name {
|
|
||||||
text-align: center;
|
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.layoutList {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.layoutItem {
|
||||||
|
width: 120px;
|
||||||
|
height: 70px;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
transition: all 0.2s;
|
||||||
|
overflow: hidden;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16),
|
||||||
|
0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09);
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
border: 1px solid #409eff;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||