动态改变颜色
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_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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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-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 {
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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 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 => {
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
8a273c9068198d1dcc8d6b9738808332f76dabcb
|
12deef00e0a1116ba0392a3851989164ee601528
|
||||||
Loading…
Reference in New Issue