diff --git a/.DS_Store b/.DS_Store
index 98abf3e..9c53772 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/web/.env b/web/.env
index 1ba2849..6bc4ce9 100644
--- a/web/.env
+++ b/web/.env
@@ -1,5 +1,5 @@
# port 端口号
-VITE_PORT = 8085
+VITE_PORT = 8080
# open 运行 npm run dev 时自动打开浏览器
VITE_OPEN = false
diff --git a/web/.env.development b/web/.env.development
index 2320baa..068a2be 100644
--- a/web/.env.development
+++ b/web/.env.development
@@ -3,7 +3,7 @@ ENV = 'development'
# 本地环境接口地址
#`VITE_API_URL = 'https://demo.dvadmin.com/api'
-VITE_API_URL = 'http://127.0.0.1:8000'
+VITE_API_URL = 'https://5b28686519.goho.co'
# 是否启用按钮权限
VITE_PM_ENABLED = true
diff --git a/web/src/stores/columnPermission.ts b/web/src/stores/columnPermission.ts
new file mode 100644
index 0000000..2d36737
--- /dev/null
+++ b/web/src/stores/columnPermission.ts
@@ -0,0 +1,20 @@
+import { defineStore } from 'pinia';
+
+export interface DataItemType {
+ field_name: string;
+ is_create: boolean;
+ is_query: boolean;
+ is_update: boolean;
+}
+
+export const useColumnPermission = defineStore('columnPermission', {
+ state: () => ({
+ permission: [] as DataItemType[],
+ }),
+
+ actions: {
+ setPermissionData(data: DataItemType[]) {
+ this.permission = data;
+ },
+ },
+});
diff --git a/web/src/utils/columnPermission.ts b/web/src/utils/columnPermission.ts
new file mode 100644
index 0000000..6a678fa
--- /dev/null
+++ b/web/src/utils/columnPermission.ts
@@ -0,0 +1,9 @@
+import { useColumnPermission } from '/@/stores/columnPermission';
+
+type permissionType = 'is_create' | 'is_query' | 'is_update';
+
+export const columnPermission = (key: string, type: permissionType): boolean => {
+ const permissions = useColumnPermission().permission || [];
+
+ return !!permissions.some((i) => i.field_name === key && i[type]);
+};
diff --git a/web/src/views/system/role/api.ts b/web/src/views/system/role/api.ts
index 0cef8f1..2212fbe 100644
--- a/web/src/views/system/role/api.ts
+++ b/web/src/views/system/role/api.ts
@@ -2,6 +2,14 @@ import { request } from '/@/utils/service';
import { PageQuery, AddReq, DelReq, EditReq, InfoReq } from '@fast-crud/fast-crud';
export const apiPrefix = '/api/system/role/';
+
+export function GetPermission() {
+ return request({
+ url: apiPrefix + 'field_permission/',
+ method: 'get',
+ });
+}
+
export function GetList(query: PageQuery) {
return request({
url: apiPrefix,
diff --git a/web/src/views/system/role/crud.tsx b/web/src/views/system/role/crud.tsx
index fe4eb3b..e9522af 100644
--- a/web/src/views/system/role/crud.tsx
+++ b/web/src/views/system/role/crud.tsx
@@ -1,9 +1,11 @@
import { CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose, compute } from '@fast-crud/fast-crud';
import * as api from './api';
import { dictionary } from '/@/utils/dictionary';
+import { columnPermission } from '../../../utils/columnPermission';
import { successMessage } from '../../../utils/message';
-import { inject } from 'vue';
+
interface CreateCrudOptionsTypes {
+ output: any;
crudOptions: CrudOptions;
}
@@ -12,10 +14,12 @@ export const createCrudOptions = function ({
crudExpose,
rolePermission,
handleDrawerOpen,
+ hasPermissions,
}: {
crudExpose: CrudExpose;
rolePermission: any;
handleDrawerOpen: Function;
+ hasPermissions: Function;
}): CreateCrudOptionsTypes {
const pageRequest = async (query: any) => {
return await api.GetList(query);
@@ -32,7 +36,6 @@ export const createCrudOptions = function ({
};
//权限判定
- const hasPermissions: any = inject('$hasPermissions');
// @ts-ignore
// @ts-ignore
@@ -58,7 +61,7 @@ export const createCrudOptions = function ({
remove: {
show: hasPermissions('role:Delete'),
},
- custom: {
+ /* custom: {
type: 'primary',
text: '权限配置',
show: hasPermissions('role:Update'),
@@ -73,10 +76,10 @@ export const createCrudOptions = function ({
rolePermission.value.editedRoleInfo = row;
rolePermission.value.initGet();
},
- },
+ }, */
customNew: {
type: 'primary',
- text: '权限配置新',
+ text: '权限配置',
show: hasPermissions('role:Update'),
tooltip: {
placement: 'top',
@@ -122,6 +125,13 @@ export const createCrudOptions = function ({
column: {
minWidth: 120,
sortable: 'custom',
+ show: columnPermission('name', 'is_query'),
+ },
+ addForm: {
+ show: columnPermission('name', 'is_create'),
+ },
+ editForm: {
+ show: columnPermission('name', 'is_update'),
},
form: {
rules: [{ required: true, message: '角色名称必填' }],
@@ -135,12 +145,22 @@ export const createCrudOptions = function ({
type: 'text',
search: { show: false },
column: {
- width: 120,
+ minWidth: 120,
sortable: 'custom',
+ show: columnPermission('key', 'is_query'),
+ columnSetDisabled: true,
+ },
+ addForm: {
+ show: columnPermission('key', 'is_create'),
+ },
+ editForm: {
+ show: columnPermission('key', 'is_update'),
},
form: {
rules: [{ required: true, message: '权限标识必填' }],
- placeholder: '输入权限标识',
+ component: {
+ placeholder: '输入权限标识',
+ },
},
},
sort: {
@@ -148,8 +168,15 @@ export const createCrudOptions = function ({
search: { show: false },
type: 'number',
column: {
- width: 90,
+ minWidth: 90,
sortable: 'custom',
+ show: columnPermission('sort', 'is_query'),
+ },
+ addForm: {
+ show: columnPermission('sort', 'is_create'),
+ },
+ editForm: {
+ show: columnPermission('sort', 'is_update'),
},
form: {
rules: [{ required: true, message: '排序必填' }],
@@ -175,8 +202,15 @@ export const createCrudOptions = function ({
],
}),
column: {
- width: 130,
+ minWidth: 130,
sortable: 'custom',
+ show: columnPermission('admin', 'is_query'),
+ },
+ addForm: {
+ show: columnPermission('admin', 'is_create'),
+ },
+ editForm: {
+ show: columnPermission('admin', 'is_update'),
},
form: {
rules: [{ required: true, message: '是否管理员必填' }],
@@ -202,6 +236,13 @@ export const createCrudOptions = function ({
};
}),
},
+ show: columnPermission('status', 'is_query'),
+ },
+ addForm: {
+ show: columnPermission('status', 'is_create'),
+ },
+ editForm: {
+ show: columnPermission('status', 'is_update'),
},
dict: dict({
data: dictionary('button_status_bool'),
@@ -212,8 +253,9 @@ export const createCrudOptions = function ({
type: 'text',
search: { show: false },
column: {
- width: 170,
+ minWidth: 170,
sortable: 'custom',
+ show: columnPermission('update_datetime', 'is_query'),
},
form: {
show: false,
@@ -228,7 +270,8 @@ export const createCrudOptions = function ({
search: { show: false },
column: {
sortable: 'custom',
- width: 170,
+ minWidth: 170,
+ show: columnPermission('create_datetime', 'is_query'),
},
form: {
show: false,
diff --git a/web/src/views/system/role/index.vue b/web/src/views/system/role/index.vue
index b2d4b35..8e2ef4f 100644
--- a/web/src/views/system/role/index.vue
+++ b/web/src/views/system/role/index.vue
@@ -8,14 +8,14 @@
-
-
-
+