|
@@ -23,15 +23,16 @@
|
|
|
id="marketingDivisionSetEdit-subareaName"
|
|
|
:maxLength="30"
|
|
|
v-model="form.subareaName"
|
|
|
+ @change="filterEmpty"
|
|
|
placeholder="请输入分区名称(最多30个字符)"
|
|
|
allowClear />
|
|
|
</a-form-model-item>
|
|
|
<a-form-model-item label="省份/市">
|
|
|
- <div class="tree-node">
|
|
|
+ <div class="tree-node" id="treeNode">
|
|
|
<div class="tree-box" v-for="item in addrProvinceList" :key="item.id">
|
|
|
<div class="tree-parent">
|
|
|
<span>
|
|
|
- <a-checkbox style="width: 100%;" v-model="item.checked" @change="onChange(item,$event)">
|
|
|
+ <a-checkbox style="width: 100%;" :indeterminate="item.indeterminate" v-model="item.checked" @change="onChange(item,$event)">
|
|
|
{{ item.name }}
|
|
|
<!-- <i style="font-size: 12px;color: #999;font-style: normal;">(已选 {{ item.children | hasCheckChild }} 个市区)</i> -->
|
|
|
</a-checkbox>
|
|
@@ -111,6 +112,13 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
+ filterEmpty () {
|
|
|
+ let str = this.form.subareaName
|
|
|
+ str = str.replace(/\ +/g, '')
|
|
|
+ str = str.replace(/[ ]/g, '')
|
|
|
+ str = str.replace(/[\r\n]/g, '')
|
|
|
+ this.form.subareaName = str
|
|
|
+ },
|
|
|
onChange (item, e, parent) {
|
|
|
console.log(item, `checked = ${e.target.checked}`)
|
|
|
item.checked = e.target.checked
|
|
@@ -120,6 +128,7 @@ export default {
|
|
|
item.children && item.children.map(d => {
|
|
|
d.checked = item.checked
|
|
|
})
|
|
|
+ item.indeterminate = false
|
|
|
}
|
|
|
// 子级
|
|
|
if (item.type == 3) {
|
|
@@ -128,6 +137,7 @@ export default {
|
|
|
// 是否全选
|
|
|
parent.checked = hasCheckd.length == parent.children.length
|
|
|
parent.children.map(d => d.noSave = parent.checked)
|
|
|
+ parent.indeterminate = !parent.checked
|
|
|
}
|
|
|
this.addrProvinceList = JSON.parse(JSON.stringify(this.addrProvinceList))
|
|
|
},
|
|
@@ -156,11 +166,13 @@ export default {
|
|
|
item.noSave = true
|
|
|
item.checked = false
|
|
|
item.children = []
|
|
|
+ item.indeterminate = false
|
|
|
})
|
|
|
// 编辑时获取已选数据
|
|
|
if (this.itemId) {
|
|
|
this.getChecked()
|
|
|
}
|
|
|
+ document.getElementById('treeNode').scrollTop = 0
|
|
|
} else if (leve == 'city') {
|
|
|
item.children = res.data || []
|
|
|
item.children.map(d => {
|
|
@@ -179,6 +191,7 @@ export default {
|
|
|
this.addrProvinceList = JSON.parse(JSON.stringify(this.addrProvinceList))
|
|
|
} else {
|
|
|
item.isOpen = 1
|
|
|
+ item.indeterminate = true
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -252,6 +265,7 @@ export default {
|
|
|
this.addrProvinceList.map(item => {
|
|
|
item.checked = !!this.subareaAreaList.find(d => d.areaSn == item.areaSn)
|
|
|
item.noSave = false
|
|
|
+ item.indeterminate = false
|
|
|
})
|
|
|
// 市回显
|
|
|
const hasCity = this.nowData.subareaAreaList.filter(item => item.citySubareaAreaList && item.citySubareaAreaList.length)
|