Browse Source

Merge pull request 'zq-slider-menu' (#47) from zq-slider-menu into master

Reviewed-on: #47
pull/51/head
zhangqi 2 weeks ago
parent
commit
66c1d6e9e2
  1. 96
      src/components/GuipSelect.vue

96
src/components/GuipSelect.vue

@ -1,12 +1,12 @@
<template>
<el-form-item :style="{ ...style, height: height, ...styleObject }"
:class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']" :label="label"
:prop="prop" :rules="rules">
:class="[{ 'column': column }, { 'w510': addClass == 'w510' }, { 'w388': addClass == 'w388' }, 'form-item']"
:label="label" :prop="prop" :rules="rules">
<p v-if="desc" class="desc_right">{{ desc }}</p>
<el-select :style="{ width: width }" :placeholder="placeholder1" @change="handleChange" v-model="selectedValue" v-bind="$attrs">
<el-option v-for="item in options" :key="item.value" :label="item.label" :disabled="item.disabled"
:value="item.value">
<el-select :style="{ width: width }" :placeholder="placeholder1" @change="handleChange" v-model="selectedValue"
v-bind="$attrs">
<el-option v-for="item in processedOptions" :key="getItemValue(item)" :label="getItemLabel(item)"
:disabled="item.disabled" :value="getItemValue(item)">
</el-option>
</el-select>
</el-form-item>
@ -14,9 +14,36 @@
<script>
export default {
name: 'GuipTextarea',
props: ['value','options', 'styleObject', 'disabled', 'defaultValue', 'placeholder',
'width', 'height', 'label', 'type', 'prop', 'rules', 'column', 'addClass', 'desc'],
name: 'GuipSelect',
props: {
value: [String, Number, Array],
options: {
type: Array,
default: () => []
},
//
valueKey: {
type: String,
default: 'value'
},
labelKey: {
type: String,
default: 'label'
},
styleObject: Object,
disabled: Boolean,
defaultValue: [String, Number, Array],
placeholder: String,
width: String,
height: String,
label: String,
type: String,
prop: String,
rules: [Object, Array],
column: Boolean,
addClass: String,
desc: String
},
data() {
return {
selectedValue: '',
@ -24,43 +51,48 @@ export default {
placeholder1: '请选择',
}
},
computed: {
// options
processedOptions() {
return this.options || []
}
},
watch: {
value(newVal) {
this.selectedValue = newVal;
this.selectedValue = newVal
},
// defaultValue(newVal) {
// this.selectedValue = newVal;
// }
defaultValue(newVal) {
if (newVal !== undefined && newVal !== null) {
this.selectedValue = newVal
}
}
},
mounted() {
//
if (this.defaultValue != null) {
this.selectedValue = this.defaultValue;
if (this.defaultValue !== undefined && this.defaultValue !== null) {
this.selectedValue = this.defaultValue
}
if (this.value != null) {
this.selectedValue = this.value;
if (this.value !== undefined && this.value !== null) {
this.selectedValue = this.value
}
//
if (this.placeholder) {
this.placeholder1 = this.placeholder;
this.placeholder1 = this.placeholder
}
this.$nextTick(() => {
// let els = document.querySelectorAll('.el-select .el-input');
// els.forEach(item => {
// item.onmouseover = function () {
// item.classList.add("hoverclass")
// }
// item.onmouseout = function () {
// item.classList.remove("hoverclass")
// }
// })
})
},
methods: {
handleChange(value) {
this.$emit('input', value);
this.$emit('change', value);
// value
getItemValue(item) {
return item[this.valueKey]
},
// label
getItemLabel(item) {
return item[this.labelKey]
},
handleChange(value) {
this.$emit('input', value)
this.$emit('change', value)
}
}
}
</script>
Loading…
Cancel
Save