diff --git a/src/api/service/Api.ts b/src/api/service/Api.ts index 5692535..bcd3ec6 100644 --- a/src/api/service/Api.ts +++ b/src/api/service/Api.ts @@ -142,69 +142,50 @@ export interface UpdateUserDto { roleIds?: number[]; } -export interface Permission { - /** - * 权限名称 - * @example "文章列表" - */ - name: string; - /** - * 权限标识 - * @example "post:list" - */ - slug: string; - /** - * 权限类型 - * @example "menu" - */ - type: "menu" | "api"; - /** - * 权限描述 - * @example "文章列表" - */ - description: string; - /** - * 自增ID - * @example 1 - */ - id: number; - /** - * 创建时间 - * @format date-time - * @example "2022-01-01 10:10:10" - */ - createdAt: string; - /** - * 创建人 - * @example "绝弹" - */ - createdBy: string; - /** - * 更新时间 - * @format date-time - * @example "2022-01-02 11:11:11" - */ - updatedAt: string; - /** - * 更新人 - * @example "绝弹" - */ - updatedBy: string; -} - export interface CreateRoleDto { + /** + * 角色名称 + * @example "管理员" + */ name: string; + /** + * 角色标识 + * @example "admin" + */ slug: string; + /** + * 角色描述 + * @example "一段很长的描述" + */ description?: string; - permissions?: Permission[]; + /** + * 角色ID数组 + * @example [1] + */ + menuIds: number[]; } export interface UpdateRoleDto { - permissionIds?: number[]; + /** + * 角色名称 + * @example "管理员" + */ name?: string; + /** + * 角色标识 + * @example "admin" + */ slug?: string; + /** + * 角色描述 + * @example "一段很长的描述" + */ description?: string; - permissions?: Permission[]; + /** + * 角色ID数组 + * @example [1] + */ + menuIds?: number[]; } export interface AuthUserDto { @@ -301,48 +282,22 @@ export interface UpdateLogDto { demo?: string; } -export interface CreatePermissionDto { - /** - * 权限名称 - * @example "权限名称" - */ - name: string; - /** - * 权限标识 - * @example "permission:permission" - */ - slug: string; - /** 权限描述 */ - description?: string; -} - -export interface UpdatePermissionDto { - id: number; - /** - * 权限名称 - * @example "权限名称" - */ - name?: string; - /** - * 权限标识 - * @example "permission:permission" - */ - slug?: string; - /** 权限描述 */ - description?: string; -} - -export interface CreateUploadDto { +export interface CreateFileDto { /** @format binary */ file: File; } -export interface Upload { +export interface File { /** * 文件名 - * @example "xxx.jpg" + * @example "头像.jpg" */ name: string; + /** + * 描述 + * @example "一段很长的描述" + */ + description: string; /** * 文件大小 * @example 1024 @@ -397,6 +352,19 @@ export interface Upload { updatedBy: string; } +export interface UpdateFileDto { + /** + * 文件名 + * @example "头像.jpg" + */ + name: string; + /** + * 描述 + * @example "一段很长的描述" + */ + description?: string; +} + export interface CreatePostDto { /** 文章标题 */ title: string; @@ -816,6 +784,11 @@ export interface Dict { description: string; /** 字段类型 */ type: DictType; + /** + * 类型ID + * @example 1 + */ + typeId: number; /** * 自增ID * @example 1 @@ -862,6 +835,11 @@ export interface UpdateDictTypeDto { } export interface CreateDictDto { + /** + * 字典类型 + * @example 1 + */ + typeId: number; /** * 类型名称 * @example "性别" @@ -878,6 +856,11 @@ export interface CreateDictDto { export interface UpdateDictDto { id: number; + /** + * 字典类型 + * @example 1 + */ + typeId?: number; /** * 类型名称 * @example "性别" @@ -1127,10 +1110,10 @@ export interface GetDictTypesParams { export interface GetDictsParams { /** - * 字段描述(Swagger用途) - * @example "示例值" + * 类型ID + * @example 1 */ - demo?: string; + typeId: number; /** * 排序规则 * @default "id:desc" @@ -1667,17 +1650,17 @@ export namespace Log { } } -export namespace Permission { +export namespace File { /** - * @description 创建权限 - * @tags permission - * @name AddPermission - * @request POST:/api/v1/permissions + * @description 上传文件 + * @tags file + * @name AddFile + * @request POST:/api/v1/file */ - export namespace AddPermission { + export namespace AddFile { export type RequestParams = {}; export type RequestQuery = {}; - export type RequestBody = CreatePermissionDto; + export type RequestBody = CreateFileDto; export type RequestHeaders = {}; export type ResponseBody = { /** @@ -1694,119 +1677,6 @@ export namespace Permission { data?: number; }; } - /** - * @description 批量查询权限 - * @tags permission - * @name GetPermissions - * @request GET:/api/v1/permissions - */ - export namespace GetPermissions { - export type RequestParams = {}; - export type RequestQuery = {}; - export type RequestBody = never; - export type RequestHeaders = {}; - export type ResponseBody = Response; - } - /** - * @description 查询权限 - * @tags permission - * @name GetPermission - * @request GET:/api/v1/permissions/{id} - */ - export namespace GetPermission { - export type RequestParams = { - id: string; - }; - export type RequestQuery = {}; - export type RequestBody = never; - export type RequestHeaders = {}; - export type ResponseBody = { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: string; - }; - } - /** - * @description 更新权限 - * @tags permission - * @name SetPermission - * @request PATCH:/api/v1/permissions/{id} - */ - export namespace SetPermission { - export type RequestParams = { - id: string; - }; - export type RequestQuery = {}; - export type RequestBody = UpdatePermissionDto; - export type RequestHeaders = {}; - export type ResponseBody = Response; - } - /** - * @description 删除权限 - * @tags permission - * @name DelPermission - * @request DELETE:/api/v1/permissions/{id} - */ - export namespace DelPermission { - export type RequestParams = { - id: string; - }; - export type RequestQuery = {}; - export type RequestBody = never; - export type RequestHeaders = {}; - export type ResponseBody = { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: string; - }; - } -} - -export namespace File { - /** - * @description 上传文件 - * @tags file - * @name AddFile - * @request POST:/api/v1/file - */ - export namespace AddFile { - export type RequestParams = {}; - export type RequestQuery = {}; - export type RequestBody = CreateUploadDto; - export type RequestHeaders = {}; - export type ResponseBody = { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: Upload; - }; - } /** * @description 批量查询 * @tags file @@ -1845,7 +1715,7 @@ export namespace File { * @example "请求成功" */ message: string; - data?: Upload; + data?: File; }; } /** @@ -1856,10 +1726,10 @@ export namespace File { */ export namespace SetFile { export type RequestParams = { - id: string; + id: number; }; export type RequestQuery = {}; - export type RequestBody = never; + export type RequestBody = UpdateFileDto; export type RequestHeaders = {}; export type ResponseBody = { /** @@ -1892,7 +1762,7 @@ export namespace File { export type ResponseBody = Response; } /** - * @description 查询文件是否已存在 + * @description 根据哈希查询 * @tags file * @name GetFileByHash * @request GET:/api/v1/file/hash/{hash} @@ -1916,7 +1786,7 @@ export namespace File { * @example "请求成功" */ message: string; - data?: boolean; + data?: File; }; } } @@ -2525,10 +2395,10 @@ export namespace Dict { export type RequestParams = {}; export type RequestQuery = { /** - * 字段描述(Swagger用途) - * @example "示例值" + * 类型ID + * @example 1 */ - demo?: string; + typeId: number; /** * 排序规则 * @default "id:desc" @@ -3271,15 +3141,15 @@ export class Api extends HttpClient { + addFile: (data: CreateFileDto, params: RequestParams = {}) => { return this.request< { /** @@ -3296,139 +3166,6 @@ export class Api extends HttpClient({ - path: `/api/v1/permissions`, - method: "POST", - body: data, - type: ContentType.Json, - format: "json", - ...params, - }); - }, - - /** - * 批量查询权限 - * - * @tags permission - * @name GetPermissions - * @request GET:/api/v1/permissions - */ - getPermissions: (params: RequestParams = {}) => { - return this.request({ - path: `/api/v1/permissions`, - method: "GET", - format: "json", - ...params, - }); - }, - - /** - * 查询权限 - * - * @tags permission - * @name GetPermission - * @request GET:/api/v1/permissions/{id} - */ - getPermission: (id: string, params: RequestParams = {}) => { - return this.request< - { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: string; - }, - any - >({ - path: `/api/v1/permissions/${id}`, - method: "GET", - format: "json", - ...params, - }); - }, - - /** - * 更新权限 - * - * @tags permission - * @name SetPermission - * @request PATCH:/api/v1/permissions/{id} - */ - setPermission: (id: string, data: UpdatePermissionDto, params: RequestParams = {}) => { - return this.request({ - path: `/api/v1/permissions/${id}`, - method: "PATCH", - body: data, - type: ContentType.Json, - format: "json", - ...params, - }); - }, - - /** - * 删除权限 - * - * @tags permission - * @name DelPermission - * @request DELETE:/api/v1/permissions/{id} - */ - delPermission: (id: string, params: RequestParams = {}) => { - return this.request< - { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: string; - }, - any - >({ - path: `/api/v1/permissions/${id}`, - method: "DELETE", - format: "json", - ...params, - }); - }, - }; - file = { - /** - * 上传文件 - * - * @tags file - * @name AddFile - * @request POST:/api/v1/file - */ - addFile: (data: CreateUploadDto, params: RequestParams = {}) => { - return this.request< - { - /** - * 状态码 - * @format int32 - * @example 2000 - */ - code: number; - /** - * 提示信息 - * @example "请求成功" - */ - message: string; - data?: Upload; - }, - any >({ path: `/api/v1/file`, method: "POST", @@ -3476,7 +3213,7 @@ export class Api extends HttpClient({ @@ -3494,7 +3231,7 @@ export class Api extends HttpClient { + setFile: (id: number, data: UpdateFileDto, params: RequestParams = {}) => { return this.request< { /** @@ -3514,6 +3251,8 @@ export class Api extends HttpClient({ path: `/api/v1/file/${id}`, method: "PATCH", + body: data, + type: ContentType.Json, format: "json", ...params, }); @@ -3536,7 +3275,7 @@ export class Api extends HttpClient extends HttpClient({ diff --git a/src/components/breadcrumb/bread-page.vue b/src/components/breadcrumb/bread-page.vue index 34bcc86..c64828f 100644 --- a/src/components/breadcrumb/bread-page.vue +++ b/src/components/breadcrumb/bread-page.vue @@ -10,7 +10,7 @@ -
+
diff --git a/src/pages/_layout/components/userDropdown.vue b/src/pages/_layout/components/userDropdown.vue index 5386e42..23c731d 100644 --- a/src/pages/_layout/components/userDropdown.vue +++ b/src/pages/_layout/components/userDropdown.vue @@ -49,6 +49,7 @@ - - - - -{ - "meta": { - "sort": 10303, - "title": "权限管理", - "icon": "icon-park-outline-permissions" - } -} - diff --git a/src/pages/system/role/index.vue b/src/pages/system/role/index.vue index 7276a56..88cd4af 100644 --- a/src/pages/system/role/index.vue +++ b/src/pages/system/role/index.vue @@ -88,19 +88,19 @@ const [roleTable, roleCtx] = useAniTable({ required: true, }, { - field: "slug", + field: "code", label: "角色标识", type: "input", }, - { - field: "permissionIds", - label: "关联权限", - type: "select", - options: () => api.permission.getPermissions(), - nodeProps: { - multiple: true, - }, - }, + // { + // field: "menuIds", + // label: "关联权限", + // type: "select", + // options: () => api.menu.getMenus({ size: 0 }), + // nodeProps: { + // multiple: true, + // }, + // }, { field: "description", label: "个人描述", diff --git a/src/pages/system/user/index.vue b/src/pages/system/user/index.vue index eeb5db3..f948704 100644 --- a/src/pages/system/user/index.vue +++ b/src/pages/system/user/index.vue @@ -21,10 +21,9 @@ const table = useTable({ { title: "用户昵称", dataIndex: "username", - width: 180, render: ({ record }) => (
- + {record.avatar?.startsWith("/") ? : record.nickname?.[0]} @@ -34,10 +33,6 @@ const table = useTable({
), }, - { - title: "用户描述", - dataIndex: "description", - }, { title: "用户邮箱", dataIndex: "email", @@ -73,6 +68,17 @@ const table = useTable({ search: { button: true, items: [ + // { + // field: "nickname", + // label: "用户昵称", + // type: "input", + // nodeProps: { + // placeholder: '用户昵称' + // }, + // itemProps: { + // hideLabel: true + // } + // }, { field: "nickname", label: "用户昵称", diff --git a/src/styles/css-arco.less b/src/styles/css-arco.less index eb611c8..b21695d 100644 --- a/src/styles/css-arco.less +++ b/src/styles/css-arco.less @@ -3,7 +3,15 @@ @arcoblue-6: #08f; body { - // --border-radius-small: 4px; + --border-radius-small: 4px; + + div.arco-dropdown { + border: none; + } + + div.arco-divider-horizontal { + border-color: var(--color-neutral-2); + } li.arco-dropdown-option { line-height: 32px; @@ -23,7 +31,7 @@ body { overflow: hidden; } .arco-modal-header { - background: var(--color-fill-2); + background: var(--color-fill-3); border-bottom: none; } .arco-modal-footer { @@ -59,7 +67,7 @@ body { margin-top: 8px; } [class^="icon-"] { - font-size: 16px; + font-size: 14px; vertical-align: -2px; } .arco-menu-item { @@ -80,7 +88,7 @@ body { .arco-menu-inner { padding: 0; .arco-menu-icon { - margin-right: 8px; + margin-right: 10px; } .arco-menu-inline-header:hover { background-color: var(--color-fill-2); @@ -121,6 +129,10 @@ body { .arco-form-item-layout-inline:last-child { margin-right: 0; } + + .ani-form-modal .arco-modal-body { + padding-bottom: 8px; + } } .dark { .arco-menu-item.arco-menu-selected { diff --git a/src/types/auto-component.d.ts b/src/types/auto-component.d.ts index 62f3178..9b1fd92 100644 --- a/src/types/auto-component.d.ts +++ b/src/types/auto-component.d.ts @@ -17,6 +17,7 @@ declare module '@vue/runtime-core' { ACheckbox: typeof import('@arco-design/web-vue')['Checkbox'] ACheckboxGroup: typeof import('@arco-design/web-vue')['CheckboxGroup'] AConfigProvider: typeof import('@arco-design/web-vue')['ConfigProvider'] + ADatePicker: typeof import('@arco-design/web-vue')['DatePicker'] ADivider: typeof import('@arco-design/web-vue')['Divider'] ADoption: typeof import('@arco-design/web-vue')['Doption'] ADrawer: typeof import('@arco-design/web-vue')['Drawer'] @@ -67,7 +68,6 @@ declare module '@vue/runtime-core' { Editor: typeof import('./../components/editor/index.vue')['default'] Header: typeof import('./../components/editor/panel-main/components/header.vue')['default'] ImagePicker: typeof import('./../components/editor/components/ImagePicker.vue')['default'] - 'Index.dev1': typeof import('./../components/breadcrumb/index.dev1.vue')['default'] InputColor: typeof import('./../components/editor/components/InputColor.vue')['default'] InputImage: typeof import('./../components/editor/components/InputImage.vue')['default'] Marquee: typeof import('./../components/editor/blocks/text/marquee.vue')['default']