111 lines
2.6 KiB
Vue
111 lines
2.6 KiB
Vue
<template>
|
|
<a-input :placeholder="placeholder" :value="inputVal" @input="backValue"></a-input>
|
|
</template>
|
|
|
|
<script>
|
|
const JINPUT_QUERY_LIKE = 'like';
|
|
const JINPUT_QUERY_NE = 'ne';
|
|
const JINPUT_QUERY_GE = 'ge'; //大于等于
|
|
const JINPUT_QUERY_LE = 'le'; //小于等于
|
|
|
|
export default {
|
|
name: 'JInput',
|
|
props:{
|
|
value:{
|
|
type:String,
|
|
required:false
|
|
},
|
|
type:{
|
|
type:String,
|
|
required:false,
|
|
default:JINPUT_QUERY_LIKE
|
|
},
|
|
placeholder:{
|
|
type:String,
|
|
required:false,
|
|
default:''
|
|
},
|
|
trim:{
|
|
type: Boolean,
|
|
required: false,
|
|
default:false
|
|
}
|
|
},
|
|
watch:{
|
|
value:{
|
|
immediate:true,
|
|
handler:function(){
|
|
this.initVal();
|
|
}
|
|
},
|
|
// update-begin author:sunjianlei date:20200225 for:当 type 变化的时候重新计算值 ------
|
|
type() {
|
|
this.backValue({ target: { value: this.inputVal } })
|
|
},
|
|
// update-end author:sunjianlei date:20200225 for:当 type 变化的时候重新计算值 ------
|
|
},
|
|
model: {
|
|
prop: 'value',
|
|
event: 'change'
|
|
},
|
|
data(){
|
|
return {
|
|
inputVal:''
|
|
}
|
|
},
|
|
methods:{
|
|
initVal(){
|
|
if(!this.value){
|
|
this.inputVal = ''
|
|
}else{
|
|
let text = this.value
|
|
switch (this.type) {
|
|
case JINPUT_QUERY_LIKE:
|
|
//修复路由传参的值传送到jinput框被前后各截取了一位 #1336
|
|
if(text.indexOf("*") != -1){
|
|
text = text.substring(1,text.length-1);
|
|
}
|
|
break;
|
|
case JINPUT_QUERY_NE:
|
|
text = text.substring(1);
|
|
break;
|
|
case JINPUT_QUERY_GE:
|
|
text = text.substring(2);
|
|
break;
|
|
case JINPUT_QUERY_LE:
|
|
text = text.substring(2);
|
|
break;
|
|
default:
|
|
}
|
|
this.inputVal = text
|
|
}
|
|
},
|
|
backValue(e){
|
|
let text = e.target.value
|
|
if(text && this.trim===true){
|
|
text = text.trim()
|
|
}
|
|
switch (this.type) {
|
|
case JINPUT_QUERY_LIKE:
|
|
text = "*"+text+"*";
|
|
break;
|
|
case JINPUT_QUERY_NE:
|
|
text = "!"+text;
|
|
break;
|
|
case JINPUT_QUERY_GE:
|
|
text = ">="+text;
|
|
break;
|
|
case JINPUT_QUERY_LE:
|
|
text = "<="+text;
|
|
break;
|
|
default:
|
|
}
|
|
this.$emit("change",text)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
</style> |