|
@@ -5,11 +5,14 @@
|
|
|
<div>
|
|
|
<div class="clearfix">
|
|
|
<span><el-checkbox v-model="checked" @change="change">全部国家地区</el-checkbox></span>
|
|
|
- <span style="float: right; padding: 3px 0" type="text">{{ checkList.length }}/{{countryList.length}}</span>
|
|
|
+ <span style="float: right; padding: 3px 0" type="text">{{ checkList.length }}/{{countryList1.length}}</span>
|
|
|
</div>
|
|
|
- <div style="overflow-y:auto;overflow-x:hidden;" :style="{height:height-120+'px'}">
|
|
|
+ <div style="padding:10px">
|
|
|
+ <el-input style="width:100%" v-model="suggest" @input="querySearch" placeholder="请输入内容"></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="overflow-y:auto;overflow-x:hidden;" :style="{height:height-180+'px'}">
|
|
|
<el-checkbox-group v-model="checkList">
|
|
|
- <div v-for="item in countryList" :key="item.value" class="item">
|
|
|
+ <div v-for="item in countryList1" :key="item.value" class="item">
|
|
|
<el-checkbox :label="item.value">{{ item.label }}({{ item.value }})</el-checkbox>
|
|
|
</div>
|
|
|
|
|
@@ -31,7 +34,7 @@
|
|
|
export default {
|
|
|
components: {
|
|
|
},
|
|
|
- props: ['countryList','DBType'],
|
|
|
+ props: ['countryList','DBType','selected'],
|
|
|
data() {
|
|
|
return {
|
|
|
height:document.getElementsByClassName('el-main')[0].clientHeight,
|
|
@@ -77,11 +80,13 @@ export default {
|
|
|
],
|
|
|
//搜索值
|
|
|
field:JSON.parse(JSON.stringify(this.$constants.searchField)),
|
|
|
+ countryList1:[],
|
|
|
+ suggest:''
|
|
|
};
|
|
|
},
|
|
|
watch: {
|
|
|
'checkList'(val){
|
|
|
- if(val.length == this.countryList.length){
|
|
|
+ if(val.length == this.countryList1.length){
|
|
|
this.checked = true
|
|
|
}else{
|
|
|
this.checked = false
|
|
@@ -94,19 +99,55 @@ export default {
|
|
|
computed: {},
|
|
|
created() {},
|
|
|
mounted() {
|
|
|
+ if(this.selected){
|
|
|
+ this.checkList = JSON.parse(JSON.stringify(this.selected))
|
|
|
+ }
|
|
|
+ this.countryList1 = this.countryList.filter(item=>item.value!='CN')
|
|
|
this.getField()
|
|
|
},
|
|
|
methods: {
|
|
|
+ querySearch() {
|
|
|
+ var restaurants = this.countryList.filter(item=>item.value!='CN')
|
|
|
+ var results = this.suggest ? restaurants.filter(this.createFilter(this.suggest)) : restaurants;
|
|
|
+ this.countryList1 = results
|
|
|
+
|
|
|
+ },
|
|
|
+ createFilter(queryString) {
|
|
|
+ return (restaurant) => {
|
|
|
+ return (restaurant.label.indexOf(queryString) !== -1 || restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1);
|
|
|
+ };
|
|
|
+ },
|
|
|
getField(){
|
|
|
+ // var a = JSON.parse(JSON.stringify(this.$constants.searchField))
|
|
|
+ // this.field = a.map(item=>{
|
|
|
+ // item.children = item.children.filter(item1 =>{return item1.value!='GJ' && item1.type != (this.DBType != 'WD'?'2':'1')})
|
|
|
+ // return item
|
|
|
+ // })
|
|
|
+
|
|
|
var a = JSON.parse(JSON.stringify(this.$constants.searchField))
|
|
|
this.field = a.map(item=>{
|
|
|
item.children = item.children.filter(item1 =>{return item1.value!='GJ' && item1.type != (this.DBType != 'WD'?'2':'1')})
|
|
|
return item
|
|
|
+ }).filter(item=>{
|
|
|
+ return item.children.length>0
|
|
|
})
|
|
|
},
|
|
|
search(val){
|
|
|
if(this.DBType == 'WD' && this.checkList.length>0){
|
|
|
- var str = `${val} AND (GJ=${this.checkList})`
|
|
|
+ if(val){
|
|
|
+ if(this.checkList.length==1){
|
|
|
+ var a = `GJ=${this.checkList[0]}`
|
|
|
+ }else{
|
|
|
+ var a = `GJ=(${this.checkList.join(" OR ")})`
|
|
|
+ }
|
|
|
+ var str = `${val} AND ${a}`
|
|
|
+ }else{
|
|
|
+ if(this.checkList.length==1){
|
|
|
+ var str = `GJ=${this.checkList[0]}`
|
|
|
+ }else{
|
|
|
+ var str = `GJ=(${this.checkList.join(" OR ")})`
|
|
|
+ }
|
|
|
+ }
|
|
|
this.$emit('search',str)
|
|
|
}else{
|
|
|
this.$emit('search',`${val}`)
|
|
@@ -115,7 +156,7 @@ export default {
|
|
|
},
|
|
|
change(val){
|
|
|
if(val){
|
|
|
- this.checkList = this.countryList.map(item=>item.value)
|
|
|
+ this.checkList = this.countryList1.filter(item=>item.value!='CN').map(item=>item.value)
|
|
|
}else{
|
|
|
this.checkList = []
|
|
|
}
|
|
@@ -129,6 +170,9 @@ export default {
|
|
|
// padding-left:20px ;
|
|
|
padding:10px 20px ;
|
|
|
border-bottom: 1px solid #eeeeee;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
}
|
|
|
.item{
|
|
|
padding:10px 20px;
|