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)实现效果