使用组件
cascader级联组件搭配Field和Popup组件,希望完成二级选择,选择公司后弹出对应部门,首先加载全部公司列表,然后根据选择的公司异步请求对应的部门
文档中第一级是一个对象,然后二级放在一级对象的children中
代码
const state = reactive({
show: false,
fieldValue: '',
cascaderValue: '',
options: [],
})
// 获取公司列表
const getCompantList = () => {
const data = []
fetchCompany().then(({items}) => {
items.forEach(item => {
data.push({text: item.name, value: item.id, children: []})
})
})
return data
}
state.options = getCompantList()
const onChange = ({ value, selectedOptions }) => {
console.log('selectedOptions',selectedOptions)
if (selectedOptions.length === 1) {
listQuery.comId = value
fetchDept({ com_id: listQuery.comId }).then(({ items }) => {
const deptList = []
items.forEach(item => {
deptList.push({text: item.name, value: item.id})
})
// 给options对应公司添加部门
state.options.forEach(item => {
if (item.value === listQuery.comId && item.children.length == 0) {
item.children = deptList
console.log('item', item)
}
})
console.log(state.options)
})
}
问题
第一次选择可以正确获取部门,对应公司的children里放入对应的部门,第二次再选择时,数据也放到对应公司的children中了,但是视图中展示的是上一个部门
如图所示,机械公司中放的是测试部门,我点击还是
我点击第三项,它还是会跳到第二项