动态改变颜色

Former-commit-id: 1915e090833022dc051aa9cdc18547dbe38fa926 [formerly 1915e090833022dc051aa9cdc18547dbe38fa926 [formerly 1915e090833022dc051aa9cdc18547dbe38fa926 [formerly 1915e090833022dc051aa9cdc18547dbe38fa926 [formerly 27b9dffa48083e7d9838f32b8981c30abfc951f0 [formerly 06cbe3b2364c0a802527426b9fb2945c79521492]]]]]
Former-commit-id: 00c4123c1d7eb8c098d62f9d82c9fbe5286722bb
Former-commit-id: 8a034bad24ce45a2180974bec4bb98aa22136872
Former-commit-id: c208536ddbb4a1ee18d0b4c6985e02ec857bdf52 [formerly 1651b96ca9070d2cd743063fafb83dd06b31403e]
Former-commit-id: aec7f7119c7ac86d848dcb3226c4f018284a7470
Former-commit-id: ea29897c0709a4348a85161429003ba4405f59aa
Former-commit-id: 5161b39309ce5c69a4ba3ea37ad85b6bbbab258b
Former-commit-id: 0804b0bb33ea9e286fbde79c834e97952e86d63d
Former-commit-id: 487a27193d189c11d12a79d339a5c1800d157597
This commit is contained in:
rongxingsun 2019-06-07 15:21:47 +08:00
parent 76185a0055
commit 5f4abe1418
9 changed files with 112 additions and 5 deletions

1
.env
View File

@ -3,3 +3,4 @@ VUE_APP_API=/api/
VUE_APP_REPO=https://github.com/d2-projects/d2-admin VUE_APP_REPO=https://github.com/d2-projects/d2-admin
VUE_APP_I18N_LOCALE=zh-chs VUE_APP_I18N_LOCALE=zh-chs
VUE_APP_I18N_FALLBACK_LOCALE=en VUE_APP_I18N_FALLBACK_LOCALE=en
VUE_APP_ELEMENT_COLOR=#409EFF

View File

@ -25,7 +25,7 @@
"countup.js": "^2.0.4", "countup.js": "^2.0.4",
"dayjs": "^1.8.12", "dayjs": "^1.8.12",
"echarts": "^4.2.1", "echarts": "^4.2.1",
"element-ui": "^2.7.2", "element-ui": "^2.9.1",
"flex.css": "^1.1.7", "flex.css": "^1.1.7",
"fuse.js": "^3.4.4", "fuse.js": "^3.4.4",
"github-markdown-css": "^3.0.1", "github-markdown-css": "^3.0.1",
@ -72,6 +72,7 @@
"text-loader": "0.0.1", "text-loader": "0.0.1",
"uglifyjs-webpack-plugin": "^2.1.2", "uglifyjs-webpack-plugin": "^2.1.2",
"vue-cli-plugin-i18n": "^0.6.0", "vue-cli-plugin-i18n": "^0.6.0",
"vue-template-compiler": "^2.5.21" "vue-template-compiler": "^2.5.21",
"webpack-theme-color-replacer": "^1.2.1"
} }
} }

View File

@ -0,0 +1,41 @@
<template>
<el-color-picker :value="value" size="small" @change="changeColor"></el-color-picker>
</template>
<script>
import { mapState, mapActions } from 'vuex'
import client from 'webpack-theme-color-replacer/client'
import forElementUI from 'webpack-theme-color-replacer/forElementUI'
export default {
name: 'd2-header-color',
computed: {
...mapState('d2admin/color', [
'value'
])
},
watch: {
value (val, old) {
this.changeThemeColor(old, val)
}
},
created () {
this.changeThemeColor(process.env.VUE_APP_ELEMENT_COLOR, this.value)
},
methods: {
...mapActions({
colorSet: 'd2admin/color/set'
}),
changeColor (newColor) {
this.colorSet(newColor)
},
changeThemeColor (curColor, newColor) {
var options = {
oldColors: [...forElementUI.getElementUISeries(curColor)],
newColors: [...forElementUI.getElementUISeries(newColor)]
}
client.changer.changeColor(options, Promise)
}
}
}
</script>

View File

@ -32,6 +32,7 @@
<d2-header-theme/> <d2-header-theme/>
<d2-header-size/> <d2-header-size/>
<d2-header-locales/> <d2-header-locales/>
<d2-header-color></d2-header-color>
<d2-header-user/> <d2-header-user/>
</div> </div>
</div> </div>
@ -92,6 +93,7 @@ import d2HeaderSize from './components/header-size'
import d2HeaderTheme from './components/header-theme' import d2HeaderTheme from './components/header-theme'
import d2HeaderUser from './components/header-user' import d2HeaderUser from './components/header-user'
import d2HeaderLog from './components/header-log' import d2HeaderLog from './components/header-log'
import d2HeaderColor from './components/header-color'
import { mapState, mapGetters, mapActions } from 'vuex' import { mapState, mapGetters, mapActions } from 'vuex'
import mixinSearch from './mixins/search' import mixinSearch from './mixins/search'
export default { export default {
@ -109,7 +111,8 @@ export default {
d2HeaderSize, d2HeaderSize,
d2HeaderTheme, d2HeaderTheme,
d2HeaderUser, d2HeaderUser,
d2HeaderLog d2HeaderLog,
d2HeaderColor
}, },
data () { data () {
return { return {

View File

@ -107,6 +107,7 @@ export default {
await dispatch('d2admin/menu/asideCollapseLoad', null, { root: true }) await dispatch('d2admin/menu/asideCollapseLoad', null, { root: true })
// DB -> store 持久化数据加载全局尺寸 // DB -> store 持久化数据加载全局尺寸
await dispatch('d2admin/size/load', null, { root: true }) await dispatch('d2admin/size/load', null, { root: true })
await dispatch('d2admin/color/load', null, { root: true })
// end // end
resolve() resolve()
}) })

View File

@ -0,0 +1,46 @@
export default {
namespaced: true,
state: {
// 颜色
value: process.env.VUE_APP_ELEMENT_COLOR
},
actions: {
/**
* @description 设置颜色
* @param {Object} state vuex state
* @param {String} color 尺寸
*/
set ({ state, dispatch }, color) {
return new Promise(async resolve => {
// store 赋值
state.value = color
// 持久化
await dispatch('d2admin/db/set', {
dbName: 'sys',
path: 'color.value',
value: state.value,
user: true
}, { root: true })
// end
resolve()
})
},
/**
* @description 从持久化数据读取颜色设置
* @param {Object} state vuex state
*/
load ({ state, dispatch }) {
return new Promise(async resolve => {
// store 赋值
state.value = await dispatch('d2admin/db/get', {
dbName: 'sys',
path: 'color.value',
defaultValue: process.env.VUE_APP_ELEMENT_COLOR,
user: true
}, { root: true })
// end
resolve()
})
}
}
}

View File

@ -1 +1 @@
fa1ae9f9a7f3f62b11777f83150787d16a763359 9c9dbaa47996b7dceac7c165fed90e73e4da0237

View File

@ -1,6 +1,9 @@
const UglifyJsPlugin = require('uglifyjs-webpack-plugin') const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const VueFilenameInjector = require('./tools/vue-filename-injector') const VueFilenameInjector = require('./tools/vue-filename-injector')
const ThemeColorReplacer = require('webpack-theme-color-replacer')
const forElementUI = require('webpack-theme-color-replacer/forElementUI')
// 拼接路径 // 拼接路径
const resolve = dir => require('path').join(__dirname, dir) const resolve = dir => require('path').join(__dirname, dir)
@ -26,6 +29,17 @@ module.exports = {
} }
} }
}, },
configureWebpack: {
plugins: [
new ThemeColorReplacer({
fileName: 'css/theme-colors.[contenthash:8].css',
matchColors: [
...forElementUI.getElementUISeries(process.env.VUE_APP_ELEMENT_COLOR) // Element-ui主色系列
],
changeSelector: forElementUI.changeSelector
})
]
},
// 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-service/lib/config/base.js // 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-service/lib/config/base.js
chainWebpack: config => { chainWebpack: config => {
/** /**

View File

@ -1 +1 @@
8a273c9068198d1dcc8d6b9738808332f76dabcb 12deef00e0a1116ba0392a3851989164ee601528