1.需求:form中营业单位需要展示一级单位及二级单位。
2.实现:
1)el-form中添加el-cascader
<el-cascader
style="width: 140px"
:change-on-select="true"
:props="defaultParams"
:options="options"
v-model="selectedOptions"
:clearable="true"
@change="handleCascader"
@visible-change="visibleChange">
</el-cascader>
2)data中声明变量
data () {
return {
options: [
{
'comName': '湖北分公司',
'comCode': '52',
'subComList': [
{
'comName': '湖北分公司宜昌区域中心',
'comCode': '5211',
'subComList': []
},
{
'comName': '湖北分公司襄阳区域中心',
'comCode': '5212',
'subComList': []
}
]
}
],
selectedOptions: [],
defaultParams: {
label: 'comName',
value: 'comCode',
children: 'subComList'
}
}
},
3)method中声明方法
methods: {
// 下拉框初始化数据
visibleChange (bol) {
if (bol) { // bol为true时表示下拉框出险
this.getManageData()
}
},
// 获取级联选择器选中值
handleCascader () {
if (this.selectedOptions.length === 2) {
this.comCode = this.selectedOptions[1]
}
},
// 获取营业单位数据
getManageData () {
// 加载loading
let datas = {
'tradeMap': {
'manageCom': '' // 管理机构
}
}
this.$axios({
baseURL: './',
url: '',
method: 'post',
data: datas
}).then(res => {
console.log('查询res:::::')
console.log(res)
if (res.data.tradeMap.resultCode === '0000') {
let datas = res.data.tradeMap.ldcoms
console.log(datas)
this.options = this.getTreeData(datas)
console.log(this.options)
} else {
let message = res.data.tradeMap.message
this.$message.error(message)
}
}).catch(() => {
this.$message.error('请求数据失败,请重试')
})
},
// 格式化营业单位数据
getTreeData (data) {
// 循环遍历json数据
for (let i = 0; i < data.length; i++) {
if (!data[i].subComList || data[i].subComList.length < 1) {
// children若为空数组,则将children设为undefined
data[i].subComList = undefined
} else {
// children若不为空数组,则继续 递归调用 本方法
this.getTreeData(data[i].subComList)
}
}
return data
}
}
4)实现效果