diff --git a/orion-ops-ui/src/api/user/role.ts b/orion-ops-ui/src/api/user/role.ts new file mode 100644 index 00000000..4409a61c --- /dev/null +++ b/orion-ops-ui/src/api/user/role.ts @@ -0,0 +1,114 @@ +import axios from 'axios'; +import { DataGrid, Pagination } from '@/types/global'; + +/** + * 角色创建请求 + */ +export interface RoleCreateRequest { + name?: string; + code?: string; + status?: number; +} + +/** + * 角色更新请求 + */ +export interface RoleUpdateRequest extends RoleCreateRequest { + id: number; +} + +/** + * 角色 菜单绑定请求 + */ +export interface RoleMenuBindRequest extends RoleCreateRequest { + roleId: number; + menuIdList: Array; +} + +/** + * 角色查询请求 + */ +export interface RoleQueryRequest extends Pagination { + id?: number; + name?: string; + code?: string; + status?: number; +} + +/** + * 角色查询响应 + */ +export interface RoleQueryResponse { + id?: number; + name?: string; + code?: string; + status?: number; + createTime: number; + updateTime: number; + creator: string; + updater: string; +} + +/** + * 创建角色 + */ +export function createRole(request: RoleCreateRequest) { + return axios.post('/infra/system-role/create', request); +} + +/** + * 通过 id 更新角色 + */ +export function updateRole(request: RoleUpdateRequest) { + return axios.put('/infra/system-role/update', request); +} + +/** + * 通过 id 更新角色状态 + */ +export function updateRoleStatus(request: RoleUpdateRequest) { + return axios.put('/infra/system-role/update-status', request); +} + +/** + * 通过 id 查询角色 + */ +export function getRole(id: number) { + return axios.get('/infra/system-role/get', { params: { id } }); +} + +/** + * 查询所有角色 + */ +export function getRoleList() { + return axios.get('/infra/system-role/list'); +} + +/** + * 分页查询角色 + */ +export function getRolePage(request: RoleQueryRequest) { + return axios.post>('/infra/system-role/query', request); +} + +/** + * 通过 id 删除角色 + */ +export function deleteRole(id: number) { + return axios.delete('/infra/system-role/delete', { params: { id } }); +} + +/** + * 绑定角色菜单 + */ +export function bindRoleMenu(request: RoleMenuBindRequest) { + return axios.put('/infra/system-role/bind', request); +} + +/** + * 获取角色菜单id + */ +export function getRoleMenuId(roleId: number) { + return axios.get>('/infra/system-role/get-menu-id', { params: { roleId } }); +} + diff --git a/orion-ops-ui/src/components/menu/selector/menu-selector-tree.vue b/orion-ops-ui/src/components/menu/selector/menu-selector-tree.vue new file mode 100644 index 00000000..34e68972 --- /dev/null +++ b/orion-ops-ui/src/components/menu/selector/menu-selector-tree.vue @@ -0,0 +1,147 @@ + + + + + + +; diff --git a/orion-ops-ui/src/views/user/child1/index.vue b/orion-ops-ui/src/views/user/child1/index.vue deleted file mode 100644 index 7ba4a8c7..00000000 --- a/orion-ops-ui/src/views/user/child1/index.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/orion-ops-ui/src/views/user/child2/index.vue b/orion-ops-ui/src/views/user/child2/index.vue deleted file mode 100644 index 3eec76f7..00000000 --- a/orion-ops-ui/src/views/user/child2/index.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/orion-ops-ui/src/views/user/role/components/role-form-modal.vue b/orion-ops-ui/src/views/user/role/components/role-form-modal.vue new file mode 100644 index 00000000..b44dc04d --- /dev/null +++ b/orion-ops-ui/src/views/user/role/components/role-form-modal.vue @@ -0,0 +1,138 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/user/role/components/role-menu-bind-modal.vue b/orion-ops-ui/src/views/user/role/components/role-menu-bind-modal.vue new file mode 100644 index 00000000..16e398e4 --- /dev/null +++ b/orion-ops-ui/src/views/user/role/components/role-menu-bind-modal.vue @@ -0,0 +1,151 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/user/role/components/role-table.vue b/orion-ops-ui/src/views/user/role/components/role-table.vue new file mode 100644 index 00000000..6fb97092 --- /dev/null +++ b/orion-ops-ui/src/views/user/role/components/role-table.vue @@ -0,0 +1,215 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/user/role/index.vue b/orion-ops-ui/src/views/user/role/index.vue new file mode 100644 index 00000000..af7ce106 --- /dev/null +++ b/orion-ops-ui/src/views/user/role/index.vue @@ -0,0 +1,44 @@ + + + + + + + diff --git a/orion-ops-ui/src/views/user/role/types/enum.types.ts b/orion-ops-ui/src/views/user/role/types/enum.types.ts new file mode 100644 index 00000000..df8da7e0 --- /dev/null +++ b/orion-ops-ui/src/views/user/role/types/enum.types.ts @@ -0,0 +1,18 @@ +/** + * 角色状态 + */ +export const ROLE_STATUS_ENUM = { + DISABLED: { + value: 0, + label: '停用', + color: 'orange', + status: 'danger', + }, + ENABLED: { + value: 1, + label: '启用', + color: 'blue', + status: 'default', + }, +}; + diff --git a/orion-ops-ui/src/views/user/role/types/form.rules.ts b/orion-ops-ui/src/views/user/role/types/form.rules.ts new file mode 100644 index 00000000..91d2209d --- /dev/null +++ b/orion-ops-ui/src/views/user/role/types/form.rules.ts @@ -0,0 +1,22 @@ +import { FieldRule } from '@arco-design/web-vue'; + +export const name = [{ + required: true, + message: '请输入角色名称' +}, { + maxLength: 32, + message: '角色名称长度不能大于32位' +}] as FieldRule[]; + +export const code = [{ + required: true, + message: '请输入角色编码' +}, { + maxLength: 32, + message: '角色编码长度不能大于32位' +}] as FieldRule[]; + +export default { + name, + code, +} as Record; diff --git a/orion-ops-ui/src/views/user/role/types/table.columns.ts b/orion-ops-ui/src/views/user/role/types/table.columns.ts new file mode 100644 index 00000000..786705db --- /dev/null +++ b/orion-ops-ui/src/views/user/role/types/table.columns.ts @@ -0,0 +1,42 @@ +import { TableColumnData } from '@arco-design/web-vue/es/table/interface'; +import { dateFormat } from '@/utils'; + +const columns = [ + { + title: 'id', + dataIndex: 'id', + slotName: 'id', + width: 70, + align: 'left', + fixed: 'left', + }, { + title: '角色名称', + dataIndex: 'name', + slotName: 'name', + }, { + title: '角色编码', + dataIndex: 'code', + slotName: 'code', + }, { + title: '角色状态', + dataIndex: 'status', + slotName: 'status', + align: 'center', + }, { + title: '创建时间', + dataIndex: 'createTime', + slotName: 'createTime', + align: 'center', + render: ({ record }) => { + return dateFormat(new Date(record.createTime)); + }, + }, { + title: '操作', + slotName: 'handle', + width: 240, + align: 'center', + fixed: 'right', + }, +] as TableColumnData[]; + +export default columns;