动态改变颜色
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:
parent
76185a0055
commit
5f4abe1418
1
.env
1
.env
|
|
@ -3,3 +3,4 @@ VUE_APP_API=/api/
|
|||
VUE_APP_REPO=https://github.com/d2-projects/d2-admin
|
||||
VUE_APP_I18N_LOCALE=zh-chs
|
||||
VUE_APP_I18N_FALLBACK_LOCALE=en
|
||||
VUE_APP_ELEMENT_COLOR=#409EFF
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
"countup.js": "^2.0.4",
|
||||
"dayjs": "^1.8.12",
|
||||
"echarts": "^4.2.1",
|
||||
"element-ui": "^2.7.2",
|
||||
"element-ui": "^2.9.1",
|
||||
"flex.css": "^1.1.7",
|
||||
"fuse.js": "^3.4.4",
|
||||
"github-markdown-css": "^3.0.1",
|
||||
|
|
@ -72,6 +72,7 @@
|
|||
"text-loader": "0.0.1",
|
||||
"uglifyjs-webpack-plugin": "^2.1.2",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -32,6 +32,7 @@
|
|||
<d2-header-theme/>
|
||||
<d2-header-size/>
|
||||
<d2-header-locales/>
|
||||
<d2-header-color></d2-header-color>
|
||||
<d2-header-user/>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -92,6 +93,7 @@ import d2HeaderSize from './components/header-size'
|
|||
import d2HeaderTheme from './components/header-theme'
|
||||
import d2HeaderUser from './components/header-user'
|
||||
import d2HeaderLog from './components/header-log'
|
||||
import d2HeaderColor from './components/header-color'
|
||||
import { mapState, mapGetters, mapActions } from 'vuex'
|
||||
import mixinSearch from './mixins/search'
|
||||
export default {
|
||||
|
|
@ -109,7 +111,8 @@ export default {
|
|||
d2HeaderSize,
|
||||
d2HeaderTheme,
|
||||
d2HeaderUser,
|
||||
d2HeaderLog
|
||||
d2HeaderLog,
|
||||
d2HeaderColor
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ export default {
|
|||
await dispatch('d2admin/menu/asideCollapseLoad', null, { root: true })
|
||||
// DB -> store 持久化数据加载全局尺寸
|
||||
await dispatch('d2admin/size/load', null, { root: true })
|
||||
await dispatch('d2admin/color/load', null, { root: true })
|
||||
// end
|
||||
resolve()
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
fa1ae9f9a7f3f62b11777f83150787d16a763359
|
||||
9c9dbaa47996b7dceac7c165fed90e73e4da0237
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
|
||||
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)
|
||||
|
||||
|
|
@ -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
|
||||
chainWebpack: config => {
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
8a273c9068198d1dcc8d6b9738808332f76dabcb
|
||||
12deef00e0a1116ba0392a3851989164ee601528
|
||||
Loading…
Reference in New Issue