update: 权限管理添加权限

This commit is contained in:
easy 2023-01-29 18:24:44 +08:00
parent 4badeb8d2a
commit 8bdc444957
4 changed files with 119 additions and 18 deletions

View File

@ -1,12 +1,15 @@
import server from '@/utils/request';
// 获取权限列表
export const getPermission_api = (data:object) => server.post(`/permission/_query/`,data);
export const getPermission_api = (data: object) => server.post(`/permission/_query/`, data);
// 新增时校验标识id是否可用
export const checkId_api = (data:object) => server.get(`/permission/id/_validate`,data);
// 修改权限
export const editPermission_api = (data:object) => server.patch(`/permission`,data);
export const checkId_api = (data: object) => server.get(`/permission/id/_validate`, data);
// 修改权限 | 导入文件内容
export const editPermission_api = (data: object) => server.patch(`/permission`, data);
// 添加权限
export const addPermission_api = (data:object) => server.post(`/permission`,data);
export const addPermission_api = (data: object) => server.post(`/permission`, data);
// 删除权限
export const delPermission_api = (id:string) => server.remove(`/permission/${id}`);
export const delPermission_api = (id: string) => server.remove(`/permission/${id}`);
// 导出权限数据
export const exportPermission_api = (data: object) => server.post(`/permission/_query/no-paging`, data);

View File

@ -83,4 +83,4 @@ export const dateFormat = (dateSouce:any):string|Error => {
seconds = (seconds < 10) ? '0' + seconds : seconds;
return year + "-" + month + "-" + day
+ " " + hour + ":" + minutes + ":" + seconds;
}
}

View File

@ -84,8 +84,8 @@ export const deviceStepDetails: recommendList[] = [
'对添加的测试设备进行功能调试,验证能否连接到平台,设备功能是否配置正确。',
iconUrl: '/images/home/bottom-2.png',
linkUrl: '/iot/device/Instance/detail',
auth: devicePermission('update'),
// auth: true,
// auth: devicePermission('update'),
auth: true,
dialogTag: 'funcTest',
},
{

View File

@ -11,9 +11,40 @@
:defaultParams="{ sorts: [{ name: 'id', order: 'asc' }] }"
>
<template #headerTitle>
<a-button type="primary" @click="table.openDialog(undefined)"
<a-button
type="primary"
@click="table.openDialog(undefined)"
style="margin-right: 10px"
><plus-outlined />新增</a-button
>
<a-dropdown trigger="hover">
<a-button>批量操作</a-button>
<template #overlay>
<a-menu>
<a-menu-item>
<a-upload
name="file"
action="#"
accept=".json"
:showUploadList="false"
:before-upload="table.clickImport"
>
<a-button>导入</a-button>
</a-upload>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title="确认导出?"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickExport"
>
<a-button>导出</a-button>
</a-popconfirm>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</template>
<template #status="slotProps">
<StatusLabel :status-value="slotProps.status" />
@ -51,18 +82,27 @@
</a-popconfirm>
<a-popconfirm
title="确定要删除吗?"
title="确认删除"
ok-text="确定"
cancel-text="取消"
@confirm="table.clickDel(slotProps)"
:disabled="slotProps.status"
>
<a-tooltip>
<template #title>删除</template>
<template #title>{{
systemPermission('delete')
? slotProps.status
? '请先禁用,再删除'
: '删除'
: '暂无权限,请联系管理员'
}}</template>
<a-button
style="padding: 0"
type="link"
:disabled="slotProps.status"
:disabled="
!systemPermission('delete') ||
slotProps.status
"
>
<delete-outlined />
</a-button>
@ -89,11 +129,22 @@ import {
StopOutlined,
PlayCircleOutlined,
} from '@ant-design/icons-vue';
import { getPermission_api, editPermission_api, delPermission_api } from '@/api/system/permission';
import {
getPermission_api,
editPermission_api,
delPermission_api,
exportPermission_api,
} from '@/api/system/permission';
import { downloadObject } from '@/utils/utils';
import { usePermissionStore } from '@/store/permission';
const editDialogRef = ref(); //
const tableRef = ref<Record<string, any>>({}); //
//
const hasPermission = usePermissionStore().hasPermission;
const systemPermission = (code: string) =>
hasPermission('system/Permission:${code}');
//
const query = reactive({
columns: [
@ -138,9 +189,9 @@ const query = reactive({
},
],
params: {},
search: (params:object)=>{
query.params = params
}
search: (params: object) => {
query.params = params;
},
});
//
@ -170,10 +221,55 @@ const table = reactive({
},
],
tableData: [],
//
openDialog: (row: object | undefined = {}) => {
editDialogRef.value.openDialog(true, row);
let permissionCode = '';
if (Object.keys(row).length < 1) permissionCode = 'add';
else permissionCode = 'update';
if (systemPermission(permissionCode))
editDialogRef.value.openDialog(true, row);
else message.warn('暂无权限,请联系管理员');
},
//
clickImport: (file: File) => {
if (file.type === 'application/json') {
const reader = new FileReader();
reader.readAsText(file);
reader.onload = (result: any) => {
try {
const data = JSON.parse(result.target.result);
editPermission_api(data).then((resp) => {
if (resp.status === 200) {
message.success('导入成功');
table.refresh();
}
});
} catch (error) {
message.error('导入失败,请重试!');
}
};
} else message.error('请上传json格式');
return false;
},
//
clickExport: () => {
const params = {
paging: false,
...query.params,
};
exportPermission_api(params).then((resp) => {
if (resp.status === 200) {
downloadObject(resp.result as any, '权限数据');
message.success('导出成功');
} else {
message.error('导出错误');
}
});
},
//
changeStatus: (row: any) => {
if (!systemPermission('action'))
return message.warn('暂无权限,请联系管理员');
const params = {
...row,
status: row.status ? 0 : 1,
@ -183,6 +279,7 @@ const table = reactive({
tableRef.value.reload();
});
},
//
clickDel: (row: any) => {
delPermission_api(row.id).then((resp: any) => {
if (resp.status === 200) {
@ -191,6 +288,7 @@ const table = reactive({
}
});
},
//
refresh: () => {
tableRef.value.reload();
},