feat(部门管理): 上移下移实现
This commit is contained in:
@@ -49,6 +49,25 @@ export function lazyLoadDept(query: UserPageQuery) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上下移动
|
||||||
|
*/
|
||||||
|
export function deptMoveUp(obj: AddReq) {
|
||||||
|
return request({
|
||||||
|
url: apiPrefix + 'move_up/',
|
||||||
|
method: 'post',
|
||||||
|
data: obj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deptMoveDown(obj: AddReq) {
|
||||||
|
return request({
|
||||||
|
url: apiPrefix + 'move_down/',
|
||||||
|
method: 'post',
|
||||||
|
data: obj,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户相关接口
|
* 用户相关接口
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ import { ref, watch, toRaw, h } from 'vue';
|
|||||||
import { ElTree } from 'element-plus';
|
import { ElTree } from 'element-plus';
|
||||||
import { getElementLabelLine } from 'element-tree-line';
|
import { getElementLabelLine } from 'element-tree-line';
|
||||||
import { Search } from '@element-plus/icons-vue';
|
import { Search } from '@element-plus/icons-vue';
|
||||||
import { lazyLoadDept } from '../api';
|
import { lazyLoadDept, deptMoveUp, deptMoveDown } from '../api';
|
||||||
import { warningNotification } from '../../../../utils/message';
|
import { warningNotification } from '../../../../utils/message';
|
||||||
import { TreeItemType, APIResponseData } from '../types';
|
import { TreeItemType, APIResponseData } from '../types';
|
||||||
import type Node from 'element-plus/es/components/tree/src/model/node';
|
import type Node from 'element-plus/es/components/tree/src/model/node';
|
||||||
@@ -97,7 +97,9 @@ const emit = defineEmits(['treeClick', 'deleteDept', 'updateDept']);
|
|||||||
|
|
||||||
let filterVal = ref('');
|
let filterVal = ref('');
|
||||||
let showTotalNum = ref(false);
|
let showTotalNum = ref(false);
|
||||||
|
let sortDisable = ref(false);
|
||||||
let treeSelectDept = ref<TreeItemType>({});
|
let treeSelectDept = ref<TreeItemType>({});
|
||||||
|
let treeSelectNode = ref<Node | null>(null);
|
||||||
const treeRef = ref<InstanceType<typeof ElTree>>();
|
const treeRef = ref<InstanceType<typeof ElTree>>();
|
||||||
|
|
||||||
watch(filterVal, (val) => {
|
watch(filterVal, (val) => {
|
||||||
@@ -126,8 +128,9 @@ const handleLoadNode = (node: Node, resolve: Function) => {
|
|||||||
/**
|
/**
|
||||||
* 部门的点击事件
|
* 部门的点击事件
|
||||||
*/
|
*/
|
||||||
const handleNodeClick = (data: TreeItemType) => {
|
const handleNodeClick = (data: TreeItemType, node: Node) => {
|
||||||
treeSelectDept.value = data;
|
treeSelectDept.value = data;
|
||||||
|
treeSelectNode.value = node;
|
||||||
emit('treeClick', data.id);
|
emit('treeClick', data.id);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -162,7 +165,33 @@ const handleDeleteDept = () => {
|
|||||||
/**
|
/**
|
||||||
* 部门上下移动操作
|
* 部门上下移动操作
|
||||||
*/
|
*/
|
||||||
const handleSort = (type: string) => {};
|
const handleSort = async (type: string) => {
|
||||||
|
if (!treeSelectDept.value.id) {
|
||||||
|
warningNotification('请选择菜单!');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (sortDisable.value) return;
|
||||||
|
|
||||||
|
const parentList = treeSelectNode.value?.parent.childNodes || [];
|
||||||
|
const index = parentList.findIndex((i) => i.data.id === treeSelectDept.value.id);
|
||||||
|
const record = parentList.find((i) => i.data.id === treeSelectDept.value.id);
|
||||||
|
|
||||||
|
if (type === 'up') {
|
||||||
|
if (index === 0) return;
|
||||||
|
parentList.splice(index - 1, 0, record as any);
|
||||||
|
parentList.splice(index + 1, 1);
|
||||||
|
sortDisable.value = true;
|
||||||
|
await deptMoveUp({ dept_id: treeSelectDept.value.id });
|
||||||
|
sortDisable.value = false;
|
||||||
|
}
|
||||||
|
if (type === 'down') {
|
||||||
|
parentList.splice(index + 2, 0, record as any);
|
||||||
|
parentList.splice(index, 1);
|
||||||
|
sortDisable.value = true;
|
||||||
|
await deptMoveDown({ dept_id: treeSelectDept.value.id });
|
||||||
|
sortDisable.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
Reference in New Issue
Block a user