123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /**
- * @Description: 颜色选择器
- * @author liu.shiyi
- * @date 2023/3/31 10:31
- */
- <template>
- <el-select
- ref="colorSelect"
- v-model="myColor"
- class="bs-el-select select"
- popper-class="bs-el-select"
- placeholder=""
- style="width: 100%"
- @change="handleChange"
- >
- <div slot="prefix">
- <span style="float: left"></span>
- <span
- v-for="(item, index) in colorValue"
- :key="index"
- >
- <span
- v-if="index <= 14"
- :style="'float: left ;background-color:' + item + ';width:15px;border-radius:1px;display:inline-block;height:15px;margin-top:8px;'"
- />
- <span
- v-if="index <= 14"
- style="float: left"
- >
- </span>
- <span
- v-if="index === 15"
- style="float: left"
- >
- ...
- </span>
- </span>
- </div>
- <el-option
- v-for="(item, index) in colorList"
- :key="index"
- label=" "
- :value="item"
- >
- <span
- v-for="(co, ind) in item"
- :key="ind"
- >
- <span :style="'float: left ;background-color:' + co + ';width:15px;border-radius:1px;display:inline-block;height:15px;margin-top:9px;'" />
- <span style="float: left"> </span>
- </span>
- </el-option>
- </el-select>
- </template>
- <script>
- export default {
- name: 'ColorSelect',
- model: {
- prop: 'color',
- 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,
- default: undefined
- }
- },
- data () {
- return {
- colorValue: [],
- myColor: undefined
- }
- },
- watch: {
- color: function (val) {
- this.setSelectColor(val)
- }
- },
- created () {
- if (this.color) {
- this.myColor = this.color
- this.setSelectColor(this.color)
- }
- },
- methods: {
- // 设置颜色选择框中颜色
- setSelectColor (color) {
- this.$nextTick(() => {
- this.colorValue = this.color
- })
- },
- handleChange (val) {
- this.setSelectColor(val)
- // 触发update事件更新父组件绑定值
- this.$emit('update', val)
- }
- }
- }
- </script>
- <style scoped>
- </style>
|