import { unref } from 'vue';
import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage';
const { createConfirm } = useMessage();
enum Api {
treeList = '/sys/sysDepart/queryMyDeptTreeList',
queryIdTree = '/sys/sysDepart/queryIdTree',
searchBy = '/sys/sysDepart/searchBy',
}
// 部门用户API
enum DepartUserApi {
list = '/sys/user/departUserList',
link = '/sys/user/editSysDepartWithUser',
unlink = '/sys/user/deleteUserInDepartBatch',
}
// 部门角色API
enum DepartRoleApi {
list = '/sys/sysDepartRole/list',
deleteBatch = '/sys/sysDepartRole/deleteBatch',
save = '/sys/sysDepartRole/add',
edit = '/sys/sysDepartRole/edit',
queryTreeListForDeptRole = '/sys/sysDepartPermission/queryTreeListForDeptRole',
queryDeptRolePermission = '/sys/sysDepartPermission/queryDeptRolePermission',
saveDeptRolePermission = '/sys/sysDepartPermission/saveDeptRolePermission',
dataRule = '/sys/sysDepartRole/datarule',
getDeptRoleList = '/sys/sysDepartRole/getDeptRoleList',
getDeptRoleByUserId = '/sys/sysDepartRole/getDeptRoleByUserId',
saveDeptRoleUser = '/sys/sysDepartRole/deptRoleUserAdd',
}
/**
* 获取部门树列表
*/
export const queryMyDepartTreeList = (params?) => defHttp.get({ url: Api.treeList, params }, { isTransformResponse: false });
/**
* 查询数据,以树结构形式加载所有部门的名称
*/
export const queryIdTree = (params?) => defHttp.get({ url: Api.queryIdTree, params });
/**
* 根据关键字搜索部门
*/
export const searchByKeywords = (params) => defHttp.get({ url: Api.searchBy, params });
/**
* 查询部门下的用户信息
*/
export const departUserList = (params) => defHttp.get({ url: DepartUserApi.list, params });
/**
* 批量添加部门和用户的关联关系
*
* @param departId 部门ID
* @param userIdList 用户ID列表
*/
export const linkDepartUserBatch = (departId: string, userIdList: string[]) =>
defHttp.post({ url: DepartUserApi.link, params: { depId: departId, userIdList } });
/**
* 批量取消部门和用户的关联关系
*/
export const unlinkDepartUserBatch = (params, confirm = false) => {
return new Promise((resolve, reject) => {
const doDelete = () => {
resolve(defHttp.delete({ url: DepartUserApi.unlink, params }, { joinParamsToUrl: true }));
};
if (confirm) {
createConfirm({
iconType: 'warning',
title: '取消关联',
content: '确定要取消关联吗?',
onOk: () => doDelete(),
onCancel: () => reject(),
});
} else {
doDelete();
}
});
};
/**
* 查询部门角色信息
*/
export const departRoleList = (params) => defHttp.get({ url: DepartRoleApi.list, params });
/**
* 保存或者更新部门角色
*/
export const saveOrUpdateDepartRole = (params, isUpdate) => {
if (isUpdate) {
return defHttp.put({ url: DepartRoleApi.edit, params });
} else {
return defHttp.post({ url: DepartRoleApi.save, params });
}
};
/**
* 批量删除部门角色
*/
export const deleteBatchDepartRole = (params, confirm = false) => {
return new Promise((resolve, reject) => {
const doDelete = () => {
resolve(defHttp.delete({ url: DepartRoleApi.deleteBatch, params }, { joinParamsToUrl: true }));
};
if (confirm) {
createConfirm({
iconType: 'warning',
title: '删除',
content: '确定要删除吗?',
onOk: () => doDelete(),
onCancel: () => reject(),
});
} else {
doDelete();
}
});
};
/**
* 用户角色授权功能,查询菜单权限树
*/
export const queryTreeListForDeptRole = (params) => defHttp.get({ url: DepartRoleApi.queryTreeListForDeptRole, params });
/**
* 查询角色授权
*/
export const queryDeptRolePermission = (params) => defHttp.get({ url: DepartRoleApi.queryDeptRolePermission, params });
/**
* 保存角色授权
*/
export const saveDeptRolePermission = (params) => defHttp.post({ url: DepartRoleApi.saveDeptRolePermission, params });
/**
* 查询部门角色数据权限列表
*/
export const queryDepartRoleDataRule = (functionId, departId, roleId, params?) => {
let url = `${DepartRoleApi.dataRule}/${unref(functionId)}/${unref(departId)}/${unref(roleId)}`;
return defHttp.get({ url, params });
};
/**
* 保存部门角色数据权限
*/
export const saveDepartRoleDataRule = (params) => defHttp.post({ url: DepartRoleApi.dataRule, params });
/**
* 查询部门角色用户授权
*/
export const queryDepartRoleUserList = (params) => defHttp.get({ url: DepartRoleApi.getDeptRoleList, params });
/**
* 根据 userId 查询部门角色用户授权
*/
export const queryDepartRoleByUserId = (params) => defHttp.get({ url: DepartRoleApi.getDeptRoleByUserId, params });
/**
* 保存部门角色用户授权
*/
export const saveDepartRoleUser = (params) => defHttp.post({ url: DepartRoleApi.saveDeptRoleUser, params });