图为表格树,在不调用接口的情况下,前端进行目录重编,上移、下移、升级、降级、插入目录功能。
插入子目录
// 插入子目录
reviewItemInsertChild(list, row){
if(list.some(item => row.id == item.id)){
list.forEach((element, i) => {
if(element.id == row.id){
list[i] = row;
}
});
}else{
list.forEach(element => {
if(element.children){
this.reviewItemInsertChild(element.children, row)
}
});
}
return list;
},
前后方插入目录
// 前方后方插入目录
reviewItemInsert(list, row, currentItem){
if(list.some(item => row.parentItemId == item.parentItemId)){
let _index = 0;
for (let i = 0; i < list.length; i++) {
if(currentItem.id == list[i].id){
_index = i;
break;
}
}
if(this.reviewItemsType == "rearInsert"){
_index++;
}
list.splice(_index, 0, row);
}else{
list.forEach(element => {
if(element.children){
this.reviewItemInsert(element.children, row, currentItem)
}
});
}
return this.reviewItemChildItemNo(list);
},
条目重拍
// 条目重排
reviewItemChildItemNo(list, itemNo){
list.forEach((element,i) => {
if(element.itemIndent == 0){
element.itemNo = i + 1;
}else{
element.itemNo = itemNo + '.' + (i+1);
}
if(element.children && element.children.length > 0){
this.reviewItemChildItemNo(element.children, element.itemNo)
}
});
return list;
},
上移下移
// 上移下移
reviewItemMove(list, currentItem){
for (let i = 0; i < list.length; i++) {
const element = list[i];
if(currentItem.id == element.id){
if(i != 0 && this.reviewItemsType == "moveUp"){
list[i] = list.splice(i-1, 1, list[i])[0];
}
if(i != list.length - 1 && this.reviewItemsType == "moveDown"){
list[i] = list.splice(i+1, 1, list[i])[0];
}
break;
}
if(element.children){
this.reviewItemMove(element.children, currentItem);
}
}
return this.reviewItemChildItemNo(list);
},
条目升级
// 条目升级
reviewItemUpgrade(list, currentItem, parentItemList, parentItemIndex){
if(list.some(item => item.id == currentItem.id)){
list.forEach((element,index) => {
if(element.id == currentItem.id){
list.splice(index,1);
}
});
currentItem.itemIndent--;
parentItemIndex++;
parentItemList.splice(parentItemIndex, 0, currentItem);
}else{
list.forEach((element,index) => {
this.reviewItemUpgrade(element.children, currentItem, list, index);
})
}
return this.reviewItemChildItemNo(list);
},
条目降级
// 条目降级
reviewItemDownGrade(list, currentItem){
if(list.some(item => item.id == currentItem.id)){
list.forEach((element,index) => {
if(element.id == currentItem.id){
list.splice(index,1);
if(!list[index-1].children){
list[index-1].children = [];
}
currentItem.itemIndent++
list[index-1].children.push(currentItem);
}
});
}else{
list.forEach((element,index) => {
this.reviewItemDownGrade(element.children, currentItem, list, index);
})
}
return this.reviewItemChildItemNo(list);
},
写的可能有点小瑕疵,请多多指正!!