From 2673aeced6c6ad222d391b82e35b3f3462bfc29d Mon Sep 17 00:00:00 2001 From: "liu.shiyi" Date: Thu, 12 Oct 2023 10:39:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BC=98=E5=8C=96=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E5=99=A8=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/ColorMultipleSelect/index.vue | 131 ++++++++++-------- 1 file changed, 74 insertions(+), 57 deletions(-) diff --git a/data-room-ui/packages/ColorMultipleSelect/index.vue b/data-room-ui/packages/ColorMultipleSelect/index.vue index 0bd81492..98001ca2 100644 --- a/data-room-ui/packages/ColorMultipleSelect/index.vue +++ b/data-room-ui/packages/ColorMultipleSelect/index.vue @@ -7,47 +7,28 @@ -
- - - - - - -  ... - - -
- - -   + {{ item.label }} + + + +   +
@@ -61,18 +42,6 @@ export default { event: 'update' }, props: { - // 颜色数组 - colorList: { - type: Array, - default: () => { - return [ - ['#5B8FF9', '#61DDAA', '#5D7092', '#F6BD16', '#6F5EF9', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3'], - ['#FF6B3B', '#626681', '#FFC100', '#9FB40F', '#76523B', '#DAD5B5', '#0E8E89', '#E19348', '#F383A2', '#247FEA'], - ['#025DF4', '#DB6BCF', '#2498D1', '#BBBDE6', '#4045B2', '#21A97A', '#FF745A', '#007E99', '#FFA8A8', '#2391FF'], - ['#FF4500', '#1AAF8B', '#406C85', '#F6BD16', '#B40F0F', '#2FB8FC', '#4435FF', '#FF5CA2', '#BBE800', '#FE8A26'] - ] - } - }, // 父组件绑定的值 color: { type: Array, @@ -81,32 +50,80 @@ export default { }, data () { return { - colorValue: [], - myColor: undefined + colorList: [ + { + label: '配色1', + value: JSON.stringify(['#5B8FF9', '#61DDAA', '#5D7092', '#F6BD16', '#6F5EF9', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3']) + }, + { + label: '配色2', + value: JSON.stringify(['#FF6B3B', '#626681', '#FFC100', '#9FB40F', '#76523B', '#DAD5B5', '#0E8E89', '#E19348', '#F383A2', '#247FEA']) + }, + { + label: '配色3', + value: JSON.stringify(['#025DF4', '#DB6BCF', '#2498D1', '#BBBDE6', '#4045B2', '#21A97A', '#FF745A', '#007E99', '#FFA8A8', '#2391FF']) + }, + { + label: '配色4', + value: JSON.stringify(['#FF4500', '#1AAF8B', '#406C85', '#F6BD16', '#B40F0F', '#2FB8FC', '#4435FF', '#FF5CA2', '#BBE800', '#FE8A26']) + } + ], + colorValue: [] + // myColor: undefined } }, watch: { color: function (val) { - this.setSelectColor(val) + this.init(val) } }, - created () { - if (this.color) { - this.myColor = this.color - this.setSelectColor(this.color) + computed: { + myColor: { + get () { + return JSON.stringify(this.color) || JSON.stringify(['#5B8FF9', '#61DDAA', '#5D7092', '#F6BD16', '#6F5EF9', '#6DC8EC', '#945FB9', '#FF9845', '#1E9493', '#FF99C3']) + }, + set (val) { + + } + } }, + created () { + }, + mounted () { + this.init(this.color) + }, methods: { - // 设置颜色选择框中颜色 - setSelectColor (color) { - this.$nextTick(() => { - this.colorValue = this.color - }) + // 初始化colorList,当绑定的颜色跟预设的颜色不一致时 + init (color) { + // ,当绑定的颜色跟预设的颜色是否一致 + const flag = this.colorList.some(co => co.value === JSON.stringify(color)) + // colorList是否存在自定义选项 + const f = this.colorList.some(co => co.label === '自定义') + if (!flag) { + if (f) { + this.colorList = this.colorList.map(co => { + if (co.label === '自定义') { + return { + label: '自定义', + value: JSON.stringify(color) + } + } else { + return co + } + }) + } else { + this.colorList.push({ + label: '自定义', + value: JSON.stringify(color) + }) + } + } }, handleChange (val) { - this.setSelectColor(val) + const colors = JSON.parse(val) // 触发update事件更新父组件绑定值 - this.$emit('update', val) + this.$emit('update', colors) } } }