|
@@ -12,15 +12,16 @@ var selectArea_temp = `<div id="selectArea_">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="right">
|
|
|
- <slot><slot>
|
|
|
- <p class="title_" v-text="rightTit"></p>
|
|
|
+ <div class="right" v-show = "!(type=='area'&& !login)">
|
|
|
+ <div class = "head_tit">
|
|
|
+ <p class="title_" v-text="rightTit"></p>
|
|
|
+ <img class="area-icon-vip" src="/images/biddingSearch/VIP.png" alt="" v-if="type=='area'&&login&&!vipState"/>
|
|
|
+ </div>
|
|
|
<div class="box_" >
|
|
|
<div class="item_" v-for= "(item1,index2) in rightList">
|
|
|
<el-checkbox v-model = "item1.selected" @change ="handleCheckChange_right($event,item1,index2)" :indeterminate="item1.indeterminate" :disabled="item1.disabled"></el-checkbox>
|
|
|
<p class="name_" v-text="item1.label"></p>
|
|
|
</div>
|
|
|
-
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -31,7 +32,7 @@ var selectArea_temp = `<div id="selectArea_">
|
|
|
var selectAreachoose = {
|
|
|
name: 'selectAreachoose',
|
|
|
template: selectArea_temp,
|
|
|
- props: ['listData','valueLabel','leftTit','rightTit','viplimit','vip'],
|
|
|
+ props: ['listData','valueLabel','leftTit','rightTit','viplimit','vip','login','type'],
|
|
|
data: function () {
|
|
|
return {
|
|
|
selectValue: '',
|
|
@@ -49,9 +50,6 @@ var selectAreachoose = {
|
|
|
watch: {
|
|
|
},
|
|
|
created: function () {
|
|
|
-
|
|
|
- },
|
|
|
- mounted: function () {
|
|
|
let list = this.listData
|
|
|
list.forEach((item, index) => {
|
|
|
if (item.children.length == 1) { // 只有一个全部
|
|
@@ -62,12 +60,14 @@ var selectAreachoose = {
|
|
|
this.rightList = this.leftList[0].children
|
|
|
this.getData()
|
|
|
},
|
|
|
+ mounted: function () {
|
|
|
+ },
|
|
|
beforeDestroy: function () {
|
|
|
|
|
|
},
|
|
|
methods: {
|
|
|
processingarea(area,city){
|
|
|
- console.log(area,city)
|
|
|
+ console.log(area,city,'地区组件调用回显获取的省市')
|
|
|
if(area || city){
|
|
|
let a = area?area.split(','):[]
|
|
|
let c = city?city.split(','):[]
|
|
@@ -77,8 +77,10 @@ var selectAreachoose = {
|
|
|
this.leftList.forEach(e =>{
|
|
|
if(item == e.value){
|
|
|
e.selected = true
|
|
|
+ e.initialSelect =true //增加initialSelect记录初始勾选 用于恢复非VIP勾选恢复原始按钮状态
|
|
|
e.children.forEach(ele=>{
|
|
|
ele.selected = true
|
|
|
+ ele.initialSelect =true
|
|
|
})
|
|
|
}
|
|
|
})
|
|
@@ -89,10 +91,12 @@ var selectAreachoose = {
|
|
|
c.forEach((item) => {
|
|
|
this.leftList.forEach(ele =>{
|
|
|
ele.forEach( items =>{
|
|
|
- if(items == item){
|
|
|
+ if(items == item){ // 回显市在多层级数据中的位置
|
|
|
items.selected = true
|
|
|
- ele.selected = false
|
|
|
+ ele.selected = false // 省级半选
|
|
|
ele.indeterminate = true
|
|
|
+ items.initialSelect = true
|
|
|
+ ele.initialSelect = false
|
|
|
}
|
|
|
})
|
|
|
})
|
|
@@ -103,13 +107,91 @@ var selectAreachoose = {
|
|
|
this.num = '全国'
|
|
|
this.leftList.forEach(ele =>{
|
|
|
ele.selected = true
|
|
|
+ ele.initialSelect = true
|
|
|
+ ele.indeterminate = false
|
|
|
ele.children.forEach(e =>{
|
|
|
e.selected = true
|
|
|
+ e.initialSelect = true
|
|
|
+ e.indeterminate = false
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
this.getData()
|
|
|
},
|
|
|
+ processingindustry(data){ // 行业回显
|
|
|
+ if(data){
|
|
|
+ let list
|
|
|
+ if(Array.isArray(data)){
|
|
|
+ list =data
|
|
|
+ }else{
|
|
|
+ list = data.toString().split(',')
|
|
|
+ }
|
|
|
+ let arr = list
|
|
|
+ // /_(.+)/.exec(ele)[1]
|
|
|
+ this.checkecho(arr) // 回显选中信息
|
|
|
+
|
|
|
+ }else{
|
|
|
+ this.reactAll()// 置为全选
|
|
|
+ }
|
|
|
+ this.getData()
|
|
|
+ },
|
|
|
+ reactAll(){
|
|
|
+ this.num = '全部'
|
|
|
+ this.leftList.forEach(ele =>{
|
|
|
+ ele.selected = true
|
|
|
+ ele.initialSelect = true
|
|
|
+ ele.indeterminate =false
|
|
|
+ ele.children.forEach(e =>{
|
|
|
+ e.selected = true
|
|
|
+ e.initialSelect = true
|
|
|
+ e.indeterminate =false
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ checkecho(arr){
|
|
|
+ arr.forEach(ele=>{
|
|
|
+ this.leftList.forEach(e=>{
|
|
|
+ e.children.forEach(item =>{
|
|
|
+ if(ele == item.id){
|
|
|
+ item.selected = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.leftList.forEach((ele,index) =>{
|
|
|
+ let choosed = []
|
|
|
+ let all = []
|
|
|
+ ele.children.forEach(item =>{
|
|
|
+ if( item.label != '全部'){
|
|
|
+ all.push(item.value)
|
|
|
+ }
|
|
|
+ if(item.selected && item.label != '全部'){
|
|
|
+ choosed.push(item.value)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(choosed.length == 0){ // 未选
|
|
|
+ ele.selected = false
|
|
|
+ ele.indeterminate = false
|
|
|
+ ele.children[0].selected =false
|
|
|
+ ele.children[0].indeterminate = false
|
|
|
+
|
|
|
+ }else if(choosed.length >= all.length){ // 全选
|
|
|
+
|
|
|
+ ele.selected = true
|
|
|
+ ele.indeterminate = false
|
|
|
+ ele.children[0].selected =true
|
|
|
+ ele.children[0].indeterminate = false
|
|
|
+
|
|
|
+ }else{ // 半选
|
|
|
+
|
|
|
+ ele.selected = false
|
|
|
+ ele.indeterminate = true
|
|
|
+ ele.children[0].selected = false
|
|
|
+ ele.children[0].indeterminate = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.allchoosestate()
|
|
|
+ },
|
|
|
change(val){
|
|
|
console.log(val,'change')
|
|
|
this.$emit('selectchange',val)
|
|
@@ -125,9 +207,11 @@ var selectAreachoose = {
|
|
|
if (e) { // 选中
|
|
|
if (item.value == '全国' || item.value == '全部') { // 全部选中
|
|
|
this.leftList.forEach(ele => {
|
|
|
+ ele.initialSelect = true // 记录不受双向绑定影响的选中状态
|
|
|
ele.selected = true
|
|
|
ele.indeterminate = false // 取消半选
|
|
|
ele.children.forEach(ele1 => {
|
|
|
+ ele1.initialSelect = true
|
|
|
ele1.selected = true
|
|
|
ele1.indeterminate = false // 取消半选
|
|
|
})
|
|
@@ -138,6 +222,7 @@ var selectAreachoose = {
|
|
|
item.indeterminate = false // 取消半选
|
|
|
item.children.forEach(ele => {
|
|
|
ele.selected = true
|
|
|
+ ele.initialSelect = true
|
|
|
if (ele.label == '全部') {
|
|
|
ele.indeterminate = false
|
|
|
}
|
|
@@ -147,14 +232,17 @@ var selectAreachoose = {
|
|
|
if (item.value == '全国' || item.value == '全部') { // 全部取消
|
|
|
this.leftList.forEach(ele => {
|
|
|
ele.selected = false
|
|
|
+ ele.initialSelect = false
|
|
|
ele.children.forEach(ele1 => {
|
|
|
ele1.selected = false
|
|
|
+ ele1.initialSelect = false
|
|
|
})
|
|
|
})
|
|
|
} else {
|
|
|
// 二级取消
|
|
|
item.children.forEach(ele => {
|
|
|
ele.selected = false
|
|
|
+ ele.initialSelect = false
|
|
|
})
|
|
|
}
|
|
|
}
|
|
@@ -166,28 +254,32 @@ var selectAreachoose = {
|
|
|
this.$emit('datachange',this.chooseData)
|
|
|
},
|
|
|
handleCheckChange_right(e, item, index) {
|
|
|
- let oneclick = e
|
|
|
if(this.viplimit&&!this.vip){
|
|
|
- item.selected = !e
|
|
|
- this.$emit('limit',item)
|
|
|
+ let initialSelect = item.initialSelect
|
|
|
+ item.selected = initialSelect
|
|
|
+ this.$emit('limit',item)
|
|
|
return
|
|
|
}
|
|
|
if (e) {
|
|
|
if (item.label == '全部') {
|
|
|
this.leftList[this.nowindex].children.forEach(ele => {
|
|
|
ele.selected = true
|
|
|
+ ele.indeterminate = false
|
|
|
})
|
|
|
} else {
|
|
|
item.selected = true
|
|
|
+ item.indeterminate = false
|
|
|
}
|
|
|
} else {
|
|
|
if (item.label == '全部') {
|
|
|
this.leftList[this.nowindex].children.forEach(ele => {
|
|
|
ele.selected = false
|
|
|
+ ele.indeterminate = false
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
item.selected = false
|
|
|
+ item.indeterminate = false
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -241,7 +333,6 @@ var selectAreachoose = {
|
|
|
}
|
|
|
// 控制最外部全选状态
|
|
|
this.allchoosestate()
|
|
|
- console.log(e, item, index, 'right')
|
|
|
this.getData()
|
|
|
this.$emit('datachange',this.chooseData)
|
|
|
},
|
|
@@ -251,7 +342,8 @@ var selectAreachoose = {
|
|
|
let area = [] // 省市规则选中省全部则只需要省市不用再传,选中省中的部分市则传选中的市,省不再传
|
|
|
let city = []
|
|
|
let oneAndtwo = []
|
|
|
- let noSecondlevel = [] //没有除全部外的二级选项的选中项
|
|
|
+ let noSecondlevel = [] //没有二级选项 的一级选中 如直辖市
|
|
|
+ let alltwo =[] // 全部数据的集合
|
|
|
this.leftList.forEach(ele => {
|
|
|
if (ele.selected) {
|
|
|
one.push(ele.value)
|
|
@@ -276,15 +368,23 @@ var selectAreachoose = {
|
|
|
oneAndtwo.push(e.parent + '_' + e.value)
|
|
|
}
|
|
|
}
|
|
|
+ if (e.value != '全部') {
|
|
|
+ alltwo.push(e.parent + '_' + e.value)
|
|
|
+ }
|
|
|
+
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
let one_noall = this.removeElements(one, '全部') // 去掉一级全部选项的所有选中
|
|
|
let two_noall = this.removeElements(two, '全部')// 去掉二级全部选项的所有选中
|
|
|
let arr_ = noSecondlevel.concat(two_noall)
|
|
|
- this.num = arr_.length
|
|
|
- this.chooseData = { one, two, one_noall, two_noall, area, city, oneAndtwo, noSecondlevel }
|
|
|
- console.log(this.chooseData, 'chooseData')
|
|
|
+ if((this.leftList[0].value=='全部'||this.leftList[0].value=='全国')&&this.leftList[0].selected){
|
|
|
+ this.num = this.leftList[0].value
|
|
|
+ }else{
|
|
|
+ this.num = arr_.length
|
|
|
+ }
|
|
|
+ this.chooseData = { one, two, one_noall, two_noall, area, city, oneAndtwo, noSecondlevel ,alltwo}
|
|
|
+ console.log(this.chooseData, '选中数据集合')
|
|
|
},
|
|
|
allchoosestate(){
|
|
|
// 控制最外部全选状态
|
|
@@ -318,6 +418,17 @@ var selectAreachoose = {
|
|
|
this.leftList[0].selected = false
|
|
|
this.leftList[0].indeterminate = true
|
|
|
}
|
|
|
+ if(this.leftList[0].selected){
|
|
|
+ this.leftList[0].children[0].selected = true
|
|
|
+ this.leftList[0].children[0].indeterminate = false
|
|
|
+ }else{
|
|
|
+ this.leftList[0].children[0].selected = false
|
|
|
+ this.leftList[0].children[0].indeterminate = false
|
|
|
+ }
|
|
|
+ if(this.leftList[0].indeterminate){
|
|
|
+ this.leftList[0].children[0].indeterminate = true
|
|
|
+ this.leftList[0].children[0].selected = false
|
|
|
+ }
|
|
|
},
|
|
|
removeElements(arr, element) {
|
|
|
return arr.filter(function (value) {
|