From 8bdc44495701d1ebf4a5fb75991186fd89d0ed3c Mon Sep 17 00:00:00 2001
From: easy <1358086367@qq.com>
Date: Sun, 29 Jan 2023 18:24:44 +0800
Subject: [PATCH] =?UTF-8?q?update:=20=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/system/permission.ts | 15 ++--
src/utils/comm.ts | 2 +-
src/views/home/modules/config.ts | 4 +-
src/views/system/Permission/index.vue | 116 ++++++++++++++++++++++++--
4 files changed, 119 insertions(+), 18 deletions(-)
diff --git a/src/api/system/permission.ts b/src/api/system/permission.ts
index 13a7e037..659abbed 100644
--- a/src/api/system/permission.ts
+++ b/src/api/system/permission.ts
@@ -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}`);
\ No newline at end of file
+export const delPermission_api = (id: string) => server.remove(`/permission/${id}`);
+
+// 导出权限数据
+export const exportPermission_api = (data: object) => server.post(`/permission/_query/no-paging`, data);
diff --git a/src/utils/comm.ts b/src/utils/comm.ts
index d78696d8..3c032a79 100644
--- a/src/utils/comm.ts
+++ b/src/utils/comm.ts
@@ -83,4 +83,4 @@ export const dateFormat = (dateSouce:any):string|Error => {
seconds = (seconds < 10) ? '0' + seconds : seconds;
return year + "-" + month + "-" + day
+ " " + hour + ":" + minutes + ":" + seconds;
-}
\ No newline at end of file
+}
diff --git a/src/views/home/modules/config.ts b/src/views/home/modules/config.ts
index 49b1d104..377db512 100644
--- a/src/views/home/modules/config.ts
+++ b/src/views/home/modules/config.ts
@@ -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',
},
{
diff --git a/src/views/system/Permission/index.vue b/src/views/system/Permission/index.vue
index baa12918..d221cc98 100644
--- a/src/views/system/Permission/index.vue
+++ b/src/views/system/Permission/index.vue
@@ -11,9 +11,40 @@
:defaultParams="{ sorts: [{ name: 'id', order: 'asc' }] }"
>
- 新增
+
+ 批量操作
+
+
+
+
+ 导入
+
+
+
+
+ 导出
+
+
+
+
+
@@ -51,18 +82,27 @@
- 删除
+ {{
+ systemPermission('delete')
+ ? slotProps.status
+ ? '请先禁用,再删除'
+ : '删除'
+ : '暂无权限,请联系管理员'
+ }}
@@ -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>({}); // 表格实例
+// 按钮权限控制
+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();
},