实现效果多选单选联动主要代码一,html部分
e.stopPropagation()">
{{ item.name }}
二,js部分这里需求不止一个服务管理,所以是一个数组格式,可根据需求调整代码
const state = reactive({
scopeList: [
{
name: "服务管理",
checkedList: ref([] as any),
indeterminate: false,
checkAll: false,
children: [
{
name: "新增服务",
id: 0,
},
{
name: "分组管理",
id: 1,
},
{
name: "样式设置",
id: 2,
},
{
name: "批量操作",
id: 3,
},
{
name: "编辑",
id: 4,
},
{
name: "删除",
id: 5,
},
],
},
],
});三,多选方法
const checkAllChange = (event, index) => {
let withOutPmIds = state.scopeList[index].children.map((item) => {
return item.id;
});
state.scopeList[index].checkedList = event.target.checked
? withOutPmIds
: [];
};四,单选方法
const onCheckChange = (event, index) => {
const checkedLength = state.scopeList[index].checkedList.length;
const listLength = state.scopeList[index].children.length;
state.scopeList[index].indeterminate =
!!checkedLength && checkedLength < listLength;
state.scopeList[index].checkAll =
checkedLength > 0 && checkedLength === listLength;
};