95 lines
1.9 KiB
Java
95 lines
1.9 KiB
Java
<template>
|
|
<div>
|
|
<a-select
|
|
v-if="query"
|
|
style="width: 100%"
|
|
@change="handleSelectChange"
|
|
v-bind="$attrs"
|
|
v-on="$listeners">
|
|
<a-select-option v-for="(item, index) in queryOption" :key="index" :value="item.value">
|
|
{{ item.text }}
|
|
</a-select-option>
|
|
</a-select>
|
|
<a-switch
|
|
v-else
|
|
v-model="checkStatus"
|
|
:disabled="disabled"
|
|
@change="handleChange"
|
|
v-bind="$attrs"
|
|
v-on="$listeners"/>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
|
|
export default {
|
|
name: 'JSwitch',
|
|
props: {
|
|
value:{
|
|
type: String | Number,
|
|
required: false
|
|
},
|
|
disabled:{
|
|
type: Boolean,
|
|
required: false,
|
|
default: false
|
|
},
|
|
options:{
|
|
type:Array,
|
|
required:false,
|
|
default:()=>['Y','N']
|
|
},
|
|
query:{
|
|
type: Boolean,
|
|
required: false,
|
|
default: false
|
|
}
|
|
},
|
|
data () {
|
|
return {
|
|
checkStatus: false
|
|
}
|
|
},
|
|
watch: {
|
|
value:{
|
|
immediate: true,
|
|
handler(val){
|
|
if(!this.query){
|
|
if(!val){
|
|
this.checkStatus = false
|
|
this.$emit('check-change', this.options[1]);
|
|
}else{
|
|
if(this.options[0]==val){
|
|
this.checkStatus = true
|
|
}else{
|
|
this.checkStatus = false
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
},
|
|
computed:{
|
|
queryOption(){
|
|
let arr = []
|
|
arr.push({value:this.options[0],text:'是'})
|
|
arr.push({value:this.options[1],text:'否'})
|
|
return arr;
|
|
}
|
|
},
|
|
methods: {
|
|
handleChange(checked){
|
|
let flag = checked===false?this.options[1]:this.options[0];
|
|
this.$emit('check-change', flag);
|
|
},
|
|
handleSelectChange(value){
|
|
this.$emit('check-change', value);
|
|
}
|
|
},
|
|
model: {
|
|
prop: 'value',
|
|
event: 'check-change'
|
|
}
|
|
}
|
|
</script>
|