mirror of https://github.com/halo-dev/halo
ui build
parent
551a2946a7
commit
0cdc6ae5b4
|
@ -504,7 +504,4 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.ant-card-body{
|
|
||||||
padding: 16px!important;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -67,7 +67,6 @@
|
||||||
<a-layout-footer style="padding: 0">
|
<a-layout-footer style="padding: 0">
|
||||||
<global-footer />
|
<global-footer />
|
||||||
</a-layout-footer>
|
</a-layout-footer>
|
||||||
<setting-drawer></setting-drawer>
|
|
||||||
</a-layout>
|
</a-layout>
|
||||||
</a-layout>
|
</a-layout>
|
||||||
</template>
|
</template>
|
||||||
|
@ -76,7 +75,6 @@
|
||||||
import SideMenu from '@/components/menu/SideMenu'
|
import SideMenu from '@/components/menu/SideMenu'
|
||||||
import GlobalHeader from '@/components/page/GlobalHeader'
|
import GlobalHeader from '@/components/page/GlobalHeader'
|
||||||
import GlobalFooter from '@/components/page/GlobalFooter'
|
import GlobalFooter from '@/components/page/GlobalFooter'
|
||||||
import SettingDrawer from '@/components/setting/SettingDrawer'
|
|
||||||
import { asyncRouterMap } from '@/config/router.config.js'
|
import { asyncRouterMap } from '@/config/router.config.js'
|
||||||
import { triggerWindowResizeEvent } from '@/utils/util'
|
import { triggerWindowResizeEvent } from '@/utils/util'
|
||||||
import { mapState, mapActions } from 'vuex'
|
import { mapState, mapActions } from 'vuex'
|
||||||
|
@ -87,8 +85,7 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
SideMenu,
|
SideMenu,
|
||||||
GlobalHeader,
|
GlobalHeader,
|
||||||
GlobalFooter,
|
GlobalFooter
|
||||||
SettingDrawer
|
|
||||||
},
|
},
|
||||||
mixins: [mixin, mixinDevice],
|
mixins: [mixin, mixinDevice],
|
||||||
data() {
|
data() {
|
||||||
|
|
|
@ -8,21 +8,20 @@
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
:getContainer="() => $refs.settingDrawer"
|
:getContainer="() => $refs.settingDrawer"
|
||||||
:style="{}"
|
:style="{}"
|
||||||
|
:mask="false"
|
||||||
>
|
>
|
||||||
<div class="setting-drawer-index-content">
|
<div class="setting-drawer-index-content">
|
||||||
|
|
||||||
<div :style="{ marginBottom: '24px' }">
|
<div :style="{ marginBottom: '24px' }">
|
||||||
<h3 class="setting-drawer-index-title">整体风格设置</h3>
|
<h3 class="setting-drawer-index-title">整体风格设置</h3>
|
||||||
|
|
||||||
<div class="setting-drawer-index-blockChecbox">
|
<div class="setting-drawer-index-blockChecbox">
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
暗色菜单风格
|
暗色菜单风格
|
||||||
</template>
|
</template>
|
||||||
<div class="setting-drawer-index-item" @click="handleMenuTheme('dark')">
|
<div class="setting-drawer-index-item" @click="handleMenuTheme('dark')">
|
||||||
<img src="https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg" alt="dark">
|
<img src="https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg" alt="dark" />
|
||||||
<div class="setting-drawer-index-selectIcon" v-if="navTheme === 'dark'">
|
<div class="setting-drawer-index-selectIcon" v-if="navTheme === 'dark'">
|
||||||
<a-icon type="check"/>
|
<a-icon type="check" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
@ -32,9 +31,9 @@
|
||||||
亮色菜单风格
|
亮色菜单风格
|
||||||
</template>
|
</template>
|
||||||
<div class="setting-drawer-index-item" @click="handleMenuTheme('light')">
|
<div class="setting-drawer-index-item" @click="handleMenuTheme('light')">
|
||||||
<img src="https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg" alt="light">
|
<img src="https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg" alt="light" />
|
||||||
<div class="setting-drawer-index-selectIcon" v-if="navTheme !== 'dark'">
|
<div class="setting-drawer-index-selectIcon" v-if="navTheme !== 'dark'">
|
||||||
<a-icon type="check"/>
|
<a-icon type="check" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
@ -43,7 +42,6 @@
|
||||||
|
|
||||||
<div :style="{ marginBottom: '24px' }">
|
<div :style="{ marginBottom: '24px' }">
|
||||||
<h3 class="setting-drawer-index-title">主题色</h3>
|
<h3 class="setting-drawer-index-title">主题色</h3>
|
||||||
|
|
||||||
<div style="height: 20px">
|
<div style="height: 20px">
|
||||||
<a-tooltip class="setting-drawer-theme-color-colorBlock" v-for="(item, index) in colorList" :key="index">
|
<a-tooltip class="setting-drawer-theme-color-colorBlock" v-for="(item, index) in colorList" :key="index">
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
|
@ -53,7 +51,6 @@
|
||||||
<a-icon type="check" v-if="item.color === primaryColor"></a-icon>
|
<a-icon type="check" v-if="item.color === primaryColor"></a-icon>
|
||||||
</a-tag>
|
</a-tag>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-divider />
|
<a-divider />
|
||||||
|
@ -62,29 +59,19 @@
|
||||||
<h3 class="setting-drawer-index-title">导航模式</h3>
|
<h3 class="setting-drawer-index-title">导航模式</h3>
|
||||||
|
|
||||||
<div class="setting-drawer-index-blockChecbox">
|
<div class="setting-drawer-index-blockChecbox">
|
||||||
<a-tooltip>
|
<div class="setting-drawer-index-item" @click="handleLayout('sidemenu')">
|
||||||
<template slot="title">
|
<img src="https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg" alt="sidemenu" />
|
||||||
侧边栏导航
|
<div class="setting-drawer-index-selectIcon" v-if="layoutMode === 'sidemenu'">
|
||||||
</template>
|
<a-icon type="check" />
|
||||||
<div class="setting-drawer-index-item" @click="handleLayout('sidemenu')">
|
|
||||||
<img src="https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg" alt="sidemenu">
|
|
||||||
<div class="setting-drawer-index-selectIcon" v-if="layoutMode === 'sidemenu'">
|
|
||||||
<a-icon type="check"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</div>
|
||||||
|
|
||||||
<a-tooltip>
|
<div class="setting-drawer-index-item" @click="handleLayout('topmenu')">
|
||||||
<template slot="title">
|
<img src="https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg" alt="topmenu" />
|
||||||
顶部栏导航
|
<div class="setting-drawer-index-selectIcon" v-if="layoutMode !== 'sidemenu'">
|
||||||
</template>
|
<a-icon type="check" />
|
||||||
<div class="setting-drawer-index-item" @click="handleLayout('topmenu')">
|
|
||||||
<img src="https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg" alt="topmenu">
|
|
||||||
<div class="setting-drawer-index-selectIcon" v-if="layoutMode !== 'sidemenu'">
|
|
||||||
<a-icon type="check"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</a-tooltip>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div :style="{ marginTop: '24px' }">
|
<div :style="{ marginTop: '24px' }">
|
||||||
<a-list :split="false">
|
<a-list :split="false">
|
||||||
|
@ -93,7 +80,12 @@
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
该设定仅 [顶部栏导航] 时有效
|
该设定仅 [顶部栏导航] 时有效
|
||||||
</template>
|
</template>
|
||||||
<a-select size="small" style="width: 80px;" :defaultValue="contentWidth" @change="handleContentWidthChange">
|
<a-select
|
||||||
|
size="small"
|
||||||
|
style="width: 80px;"
|
||||||
|
:defaultValue="contentWidth"
|
||||||
|
@change="handleContentWidthChange"
|
||||||
|
>
|
||||||
<a-select-option value="Fixed">固定</a-select-option>
|
<a-select-option value="Fixed">固定</a-select-option>
|
||||||
<a-select-option value="Fluid" v-if="layoutMode !== 'sidemenu'">流式</a-select-option>
|
<a-select-option value="Fluid" v-if="layoutMode !== 'sidemenu'">流式</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
@ -109,36 +101,31 @@
|
||||||
</a-list-item-meta>
|
</a-list-item-meta>
|
||||||
</a-list-item>
|
</a-list-item>
|
||||||
<a-list-item>
|
<a-list-item>
|
||||||
<a-switch slot="actions" size="small" :disabled="!fixedHeader" :defaultChecked="autoHideHeader" @change="handleFixedHeaderHidden" />
|
<a-switch
|
||||||
|
slot="actions"
|
||||||
|
size="small"
|
||||||
|
:disabled="!fixedHeader"
|
||||||
|
:defaultChecked="autoHideHeader"
|
||||||
|
@change="handleFixedHeaderHidden"
|
||||||
|
/>
|
||||||
<a-list-item-meta>
|
<a-list-item-meta>
|
||||||
<div slot="title" :style="{ textDecoration: !fixedHeader ? 'line-through' : 'unset' }">下滑时隐藏 Header</div>
|
<div slot="title" :style="{ textDecoration: !fixedHeader ? 'line-through' : 'unset' }">
|
||||||
</a-list-item-meta>
|
下滑时隐藏 Header
|
||||||
</a-list-item>
|
</div>
|
||||||
<a-list-item >
|
|
||||||
<a-switch slot="actions" size="small" :disabled="(layoutMode === 'topmenu')" :defaultChecked="fixSiderbar" @change="handleFixSiderbar" />
|
|
||||||
<a-list-item-meta>
|
|
||||||
<div slot="title" :style="{ textDecoration: layoutMode === 'topmenu' ? 'line-through' : 'unset' }">固定侧边菜单</div>
|
|
||||||
</a-list-item-meta>
|
|
||||||
</a-list-item>
|
|
||||||
</a-list>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<a-divider />
|
|
||||||
|
|
||||||
<div :style="{ marginBottom: '24px' }">
|
|
||||||
<h3 class="setting-drawer-index-title">其他设置</h3>
|
|
||||||
<div>
|
|
||||||
<a-list :split="false">
|
|
||||||
<a-list-item>
|
|
||||||
<a-switch slot="actions" size="small" :defaultChecked="colorWeak" @change="onColorWeak" />
|
|
||||||
<a-list-item-meta>
|
|
||||||
<div slot="title">色弱模式</div>
|
|
||||||
</a-list-item-meta>
|
</a-list-item-meta>
|
||||||
</a-list-item>
|
</a-list-item>
|
||||||
<a-list-item>
|
<a-list-item>
|
||||||
<a-switch slot="actions" size="small" :defaultChecked="multiTab" @change="onMultiTab" />
|
<a-switch
|
||||||
|
slot="actions"
|
||||||
|
size="small"
|
||||||
|
:disabled="layoutMode === 'topmenu'"
|
||||||
|
:defaultChecked="fixSiderbar"
|
||||||
|
@change="handleFixSiderbar"
|
||||||
|
/>
|
||||||
<a-list-item-meta>
|
<a-list-item-meta>
|
||||||
<div slot="title">多页签模式</div>
|
<div slot="title" :style="{ textDecoration: layoutMode === 'topmenu' ? 'line-through' : 'unset' }">
|
||||||
|
固定侧边菜单
|
||||||
|
</div>
|
||||||
</a-list-item-meta>
|
</a-list-item-meta>
|
||||||
</a-list-item>
|
</a-list-item>
|
||||||
</a-list>
|
</a-list>
|
||||||
|
@ -146,23 +133,13 @@
|
||||||
</div>
|
</div>
|
||||||
<a-divider />
|
<a-divider />
|
||||||
<div :style="{ marginBottom: '24px' }">
|
<div :style="{ marginBottom: '24px' }">
|
||||||
<a-button
|
<a-list :split="false">
|
||||||
@click="doCopy"
|
<a-list-item>
|
||||||
icon="copy"
|
<a-icon type="double-right" @click="toggle" class="iconClose"/>
|
||||||
block
|
</a-list-item>
|
||||||
>拷贝设置</a-button>
|
</a-list>
|
||||||
<a-alert type="warning" :style="{ marginTop: '24px' }">
|
|
||||||
<span slot="message">
|
|
||||||
配置栏只在开发环境用于预览,生产环境不会展现,请手动修改配置文件
|
|
||||||
<a href="https://github.com/sendya/ant-design-pro-vue/blob/master/src/config/defaultSettings.js" target="_blank">src/config/defaultSettings.js</a>
|
|
||||||
</span>
|
|
||||||
</a-alert>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-drawer-index-handle" @click="toggle">
|
|
||||||
<a-icon type="setting" v-if="!visible"/>
|
|
||||||
<a-icon type="close" v-else/>
|
|
||||||
</div>
|
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -171,7 +148,7 @@
|
||||||
import DetailList from '@/components/tools/DetailList'
|
import DetailList from '@/components/tools/DetailList'
|
||||||
import SettingItem from '@/components/setting/SettingItem'
|
import SettingItem from '@/components/setting/SettingItem'
|
||||||
import config from '@/config/defaultSettings'
|
import config from '@/config/defaultSettings'
|
||||||
import { updateTheme, updateColorWeak, colorList } from '@/components/tools/setting'
|
import { updateTheme, colorList } from '@/components/tools/setting'
|
||||||
import { mixin, mixinDevice } from '@/utils/mixin'
|
import { mixin, mixinDevice } from '@/utils/mixin'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -187,9 +164,7 @@ export default {
|
||||||
baseConfig: Object.assign({}, config)
|
baseConfig: Object.assign({}, config)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {},
|
||||||
|
|
||||||
},
|
|
||||||
mounted() {
|
mounted() {
|
||||||
const vm = this
|
const vm = this
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -199,9 +174,6 @@ export default {
|
||||||
if (this.primaryColor !== config.primaryColor) {
|
if (this.primaryColor !== config.primaryColor) {
|
||||||
updateTheme(this.primaryColor)
|
updateTheme(this.primaryColor)
|
||||||
}
|
}
|
||||||
if (this.colorWeak !== config.colorWeak) {
|
|
||||||
updateColorWeak(this.colorWeak)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showDrawer() {
|
showDrawer() {
|
||||||
|
@ -213,45 +185,10 @@ export default {
|
||||||
toggle() {
|
toggle() {
|
||||||
this.visible = !this.visible
|
this.visible = !this.visible
|
||||||
},
|
},
|
||||||
onColorWeak(checked) {
|
|
||||||
this.baseConfig.colorWeak = checked
|
|
||||||
this.$store.dispatch('ToggleWeak', checked)
|
|
||||||
updateColorWeak(checked)
|
|
||||||
},
|
|
||||||
onMultiTab(checked) {
|
|
||||||
this.baseConfig.multiTab = checked
|
|
||||||
this.$store.dispatch('ToggleMultiTab', checked)
|
|
||||||
},
|
|
||||||
handleMenuTheme(theme) {
|
handleMenuTheme(theme) {
|
||||||
this.baseConfig.navTheme = theme
|
this.baseConfig.navTheme = theme
|
||||||
this.$store.dispatch('ToggleTheme', theme)
|
this.$store.dispatch('ToggleTheme', theme)
|
||||||
},
|
},
|
||||||
doCopy() {
|
|
||||||
const text = `export default {
|
|
||||||
primaryColor: '${this.baseConfig.primaryColor}', // primary color of ant design
|
|
||||||
navTheme: '${this.baseConfig.navTheme}', // theme for nav menu
|
|
||||||
layout: '${this.baseConfig.layout}', // nav menu position: sidemenu or topmenu
|
|
||||||
contentWidth: '${this.baseConfig.contentWidth}', // layout of content: Fluid or Fixed, only works when layout is topmenu
|
|
||||||
fixedHeader: ${this.baseConfig.fixedHeader}, // sticky header
|
|
||||||
fixSiderbar: ${this.baseConfig.fixSiderbar}, // sticky siderbar
|
|
||||||
autoHideHeader: ${this.baseConfig.autoHideHeader}, // auto hide header
|
|
||||||
colorWeak: ${this.baseConfig.colorWeak},
|
|
||||||
multiTab: ${this.baseConfig.multiTab},
|
|
||||||
// vue-ls options
|
|
||||||
storageOptions: {
|
|
||||||
namespace: 'pro__',
|
|
||||||
name: 'ls',
|
|
||||||
storage: 'local',
|
|
||||||
}
|
|
||||||
}`
|
|
||||||
this.$copyText(text).then(message => {
|
|
||||||
console.log('copy', message)
|
|
||||||
this.$message.success('复制完毕')
|
|
||||||
}).catch(err => {
|
|
||||||
console.log('copy.err', err)
|
|
||||||
this.$message.error('复制失败')
|
|
||||||
})
|
|
||||||
},
|
|
||||||
handleLayout(mode) {
|
handleLayout(mode) {
|
||||||
this.baseConfig.layout = mode
|
this.baseConfig.layout = mode
|
||||||
this.$store.dispatch('ToggleLayoutMode', mode)
|
this.$store.dispatch('ToggleLayoutMode', mode)
|
||||||
|
@ -292,75 +229,77 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
.setting-drawer-index-content {
|
||||||
|
.setting-drawer-index-blockChecbox {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
.setting-drawer-index-content {
|
.setting-drawer-index-item {
|
||||||
|
margin-right: 16px;
|
||||||
.setting-drawer-index-blockChecbox {
|
position: relative;
|
||||||
display: flex;
|
border-radius: 4px;
|
||||||
|
|
||||||
.setting-drawer-index-item {
|
|
||||||
margin-right: 16px;
|
|
||||||
position: relative;
|
|
||||||
border-radius: 4px;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 48px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.setting-drawer-index-selectIcon {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 100%;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-left: 24px;
|
|
||||||
height: 100%;
|
|
||||||
color: #1890ff;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.setting-drawer-theme-color-colorBlock {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
border-radius: 2px;
|
|
||||||
float: left;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-right: 8px;
|
|
||||||
padding-left: 0px;
|
|
||||||
padding-right: 0px;
|
|
||||||
text-align: center;
|
|
||||||
color: #fff;
|
|
||||||
font-weight: 700;
|
|
||||||
|
|
||||||
i {
|
img {
|
||||||
|
width: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-drawer-index-selectIcon {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 100%;
|
||||||
|
padding-top: 15px;
|
||||||
|
padding-left: 24px;
|
||||||
|
height: 100%;
|
||||||
|
color: #1890ff;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.setting-drawer-theme-color-colorBlock {
|
||||||
.setting-drawer-index-handle {
|
width: 20px;
|
||||||
position: absolute;
|
height: 20px;
|
||||||
top: 240px;
|
border-radius: 2px;
|
||||||
background: #1890ff;
|
float: left;
|
||||||
width: 48px;
|
|
||||||
height: 48px;
|
|
||||||
right: 300px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
pointer-events: auto;
|
margin-right: 8px;
|
||||||
z-index: 1001;
|
padding-left: 0px;
|
||||||
|
padding-right: 0px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 16px;
|
color: #fff;
|
||||||
border-radius: 4px 0 0 4px;
|
font-weight: 700;
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color: rgb(255, 255, 255);
|
font-size: 14px;
|
||||||
font-size: 20px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.iconClose{
|
||||||
|
font-size: 24px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.setting-drawer-index-handle {
|
||||||
|
position: absolute;
|
||||||
|
top: 240px;
|
||||||
|
background: #1890ff;
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
right: 300px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
pointer-events: auto;
|
||||||
|
z-index: 1001;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
border-radius: 4px 0 0 4px;
|
||||||
|
|
||||||
|
i {
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
</template>
|
</template>
|
||||||
<span @click="fetchComment" class="header-comment">
|
<span @click="fetchComment" class="header-comment">
|
||||||
<a-badge dot>
|
<a-badge dot>
|
||||||
<a-icon type="bell"/>
|
<a-icon type="bell" />
|
||||||
</a-badge>
|
</a-badge>
|
||||||
</span>
|
</span>
|
||||||
</a-popover>
|
</a-popover>
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
<div class="user-wrapper">
|
<div class="user-wrapper">
|
||||||
<a href="/" target="_blank">
|
<a href="/" target="_blank">
|
||||||
<span class="action">
|
<span class="action">
|
||||||
<a-icon type="link"></a-icon>
|
<a-icon type="link" />
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<a href="javascript:void(0)" @click="showOptionModal">
|
<a href="javascript:void(0)" @click="showOptionModal">
|
||||||
<span class="action">
|
<span class="action">
|
||||||
<a-icon type="setting"></a-icon>
|
<a-icon type="setting" />
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<header-comment class="action"/>
|
<header-comment class="action"/>
|
||||||
|
@ -31,25 +31,30 @@
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
<a-modal title="样式设置" v-model="optionVisible"></a-modal>
|
<setting-drawer ref="drawer"></setting-drawer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import HeaderComment from './HeaderComment'
|
import HeaderComment from './HeaderComment'
|
||||||
|
import SettingDrawer from '@/components/setting/SettingDrawer'
|
||||||
import { mapActions, mapGetters } from 'vuex'
|
import { mapActions, mapGetters } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'UserMenu',
|
name: 'UserMenu',
|
||||||
components: {
|
components: {
|
||||||
HeaderComment
|
HeaderComment,
|
||||||
|
SettingDrawer
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
optionVisible: false,
|
optionVisible: true,
|
||||||
avatar: 'https://gravatar.loli.net/avatar/?s=256&d=mm'
|
avatar: 'https://gravatar.loli.net/avatar/?s=256&d=mm'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
this.optionVisible = this.$refs.drawer.visible
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapActions(['Logout']),
|
...mapActions(['Logout']),
|
||||||
...mapGetters(['nickname']),
|
...mapGetters(['nickname']),
|
||||||
|
@ -76,7 +81,8 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
showOptionModal() {
|
showOptionModal() {
|
||||||
this.optionVisible = true
|
this.optionVisible = this.$refs.drawer.visible
|
||||||
|
this.$refs.drawer.toggle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,11 @@ let lessNodesAppended
|
||||||
|
|
||||||
const colorList = [
|
const colorList = [
|
||||||
{
|
{
|
||||||
key: '薄暮',
|
key: '红色',
|
||||||
color: '#F5222D'
|
color: '#F5222D'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '火山',
|
key: '浅红色',
|
||||||
color: '#FA541C'
|
color: '#FA541C'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -17,23 +17,23 @@ const colorList = [
|
||||||
color: '#FAAD14'
|
color: '#FAAD14'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '明青',
|
key: '青色',
|
||||||
color: '#13C2C2'
|
color: '#13C2C2'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '极光绿',
|
key: '绿色',
|
||||||
color: '#52C41A'
|
color: '#52C41A'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '拂晓蓝(默认)',
|
key: '默认',
|
||||||
color: '#1890FF'
|
color: '#1890FF'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '极客蓝',
|
key: '蓝色',
|
||||||
color: '#2F54EB'
|
color: '#2F54EB'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: '酱紫',
|
key: '紫色',
|
||||||
color: '#722ED1'
|
color: '#722ED1'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -95,9 +95,4 @@ const updateTheme = primaryColor => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateColorWeak = colorWeak => {
|
export { updateTheme, colorList }
|
||||||
// document.body.className = colorWeak ? 'colorWeak' : '';
|
|
||||||
colorWeak ? document.body.classList.add('colorWeak') : document.body.classList.remove('colorWeak')
|
|
||||||
}
|
|
||||||
|
|
||||||
export { updateTheme, colorList, updateColorWeak }
|
|
||||||
|
|
|
@ -600,16 +600,16 @@ export default {
|
||||||
},
|
},
|
||||||
handleAttachChange(e) {
|
handleAttachChange(e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case '0':
|
case 'local':
|
||||||
case '3':
|
case 'smms':
|
||||||
this.upyunFormHidden = false
|
this.upyunFormHidden = false
|
||||||
this.qiniuFormHidden = false
|
this.qiniuFormHidden = false
|
||||||
break
|
break
|
||||||
case '1':
|
case 'ypyun':
|
||||||
this.upyunFormHidden = true
|
this.upyunFormHidden = true
|
||||||
this.qiniuFormHidden = false
|
this.qiniuFormHidden = false
|
||||||
break
|
break
|
||||||
case '2':
|
case 'qnyun':
|
||||||
this.qiniuFormHidden = true
|
this.qiniuFormHidden = true
|
||||||
this.upyunFormHidden = false
|
this.upyunFormHidden = false
|
||||||
break
|
break
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="page-header-index-wide page-header-wrapper-grid-content-main">
|
<div class="page-header-index-wide page-header-wrapper-grid-content-main">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col
|
<a-col :md="24" :lg="10">
|
||||||
:md="24"
|
<a-card :bordered="false" :bodyStyle="{ padding: '16' }">
|
||||||
:lg="10"
|
|
||||||
>
|
|
||||||
<a-card :bordered="false">
|
|
||||||
<div class="profile-center-avatarHolder">
|
<div class="profile-center-avatarHolder">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
<img :src="user.avatar || 'https://gravatar.loli.net/avatar/?s=256&d=mm'">
|
<img :src="user.avatar || 'https://gravatar.loli.net/avatar/?s=256&d=mm'" />
|
||||||
</div>
|
</div>
|
||||||
<div class="username">{{ user.nickname }}</div>
|
<div class="username">{{ user.nickname }}</div>
|
||||||
<div class="bio">{{ user.description }}</div>
|
<div class="bio">{{ user.description }}</div>
|
||||||
|
@ -25,10 +22,7 @@
|
||||||
</div>
|
</div>
|
||||||
<a-divider />
|
<a-divider />
|
||||||
<div class="general-profile">
|
<div class="general-profile">
|
||||||
<a-list
|
<a-list itemLayout="horizontal" :loading="countsLoading">
|
||||||
itemLayout="horizontal"
|
|
||||||
:loading="countsLoading"
|
|
||||||
>
|
|
||||||
<a-list-item>累计发表了 {{ counts.postCount || 0 }} 篇文章。</a-list-item>
|
<a-list-item>累计发表了 {{ counts.postCount || 0 }} 篇文章。</a-list-item>
|
||||||
<a-list-item>累计创建了 {{ counts.linkCount || 0 }} 个标签。</a-list-item>
|
<a-list-item>累计创建了 {{ counts.linkCount || 0 }} 个标签。</a-list-item>
|
||||||
<a-list-item>累计获得了 {{ counts.commentCount || 0 }} 条评论。</a-list-item>
|
<a-list-item>累计获得了 {{ counts.commentCount || 0 }} 条评论。</a-list-item>
|
||||||
|
@ -39,21 +33,11 @@
|
||||||
</div>
|
</div>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col
|
<a-col :md="24" :lg="14">
|
||||||
:md="24"
|
<a-card :bordered="false" title="个人资料" :bodyStyle="{ padding: '0' }">
|
||||||
:lg="14"
|
|
||||||
>
|
|
||||||
<a-card
|
|
||||||
:bordered="false"
|
|
||||||
title="个人资料"
|
|
||||||
:bodyStyle="{ padding: '0' }"
|
|
||||||
>
|
|
||||||
<div class="card-container">
|
<div class="card-container">
|
||||||
<a-tabs type="card">
|
<a-tabs type="card">
|
||||||
<a-tab-pane
|
<a-tab-pane tab="基本资料" key="1">
|
||||||
tab="基本资料"
|
|
||||||
key="1"
|
|
||||||
>
|
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="用户名:">
|
<a-form-item label="用户名:">
|
||||||
<a-input v-model="user.username" />
|
<a-input v-model="user.username" />
|
||||||
|
@ -65,49 +49,31 @@
|
||||||
<a-input v-model="user.email" />
|
<a-input v-model="user.email" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="个人说明:">
|
<a-form-item label="个人说明:">
|
||||||
<a-input
|
<a-input type="textarea" :autosize="{ minRows: 5 }" v-model="user.description" />
|
||||||
type="textarea"
|
|
||||||
:autosize="{ minRows: 5 }"
|
|
||||||
v-model="user.description"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-button
|
<a-button type="primary" @click="updateProfile">保存</a-button>
|
||||||
type="primary"
|
|
||||||
@click="updateProfile"
|
|
||||||
>保存</a-button>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane
|
<a-tab-pane tab="密码" key="2">
|
||||||
tab="密码"
|
|
||||||
key="2"
|
|
||||||
>
|
|
||||||
<a-form layout="vertical">
|
<a-form layout="vertical">
|
||||||
<a-form-item label="原密码:">
|
<a-form-item label="原密码:">
|
||||||
<a-input
|
<a-input v-model="passwordParam.oldPassword" type="password" />
|
||||||
v-model="passwordParam.oldPassword"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="新密码:">
|
<a-form-item label="新密码:">
|
||||||
<a-input
|
<a-input v-model="passwordParam.newPassword" type="password" />
|
||||||
v-model="passwordParam.newPassword"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="确认密码:">
|
<a-form-item label="确认密码:">
|
||||||
<a-input
|
<a-input v-model="passwordParam.confirmPassword" type="password" />
|
||||||
v-model="passwordParam.confirmPassword"
|
|
||||||
type="password"
|
|
||||||
/>
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-button
|
<a-button
|
||||||
type="primary"
|
type="primary"
|
||||||
:disabled="passwordUpdateButtonDisabled"
|
:disabled="passwordUpdateButtonDisabled"
|
||||||
@click="updatePassword"
|
@click="updatePassword"
|
||||||
>确认更改</a-button>
|
>确认更改</a-button
|
||||||
|
>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
Loading…
Reference in New Issue