这里由于服务端入库需要传入string(其实是服务端那大哥懒得改,我也懒得费嘴了,不如自己写来得快)使用cascader级联选择器最终选择的lable,编辑操作回显写了一个map方法获取id 再 Push到array再updata v-model 实现。目前只支持两级,后期可以写一个递归函数以达到多级处理回显。cascader v-model只接收一个Array类型才支持回显
<el-cascader
v-model="addEditWorkerForm.department"
:options="departmentTree" :props="addWorkerPositionProps" @change="addWorkerDepartment" :show-all-levels="true">
<template slot-scope="{ node, data }">
<span>{{ data.label }}</span>
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
</template>
</el-cascader>
let departmentLable = data.department
let departmentArray = []
// cascader 回显部门处理,只处理两级,如果多于两级需要改写成递归函数
this.departmentTree.map(item => {
if(item.label == departmentLable){
departmentArray.push(item.id)
}else if(item.children && item.children.length > 0){
for( let i in item.children){
if(item.children[i].label == departmentLable){
departmentArray.push(item.children[i].parentId)
departmentArray.push(item.children[i].id)
}
}
}
})