Browse Source

Merge branch 'feature/应用授权' into develop

Zhenghanjv 7 months ago
parent
commit
1857a0db4b

+ 1 - 0
admin.ui.plus-master/.env.development

@@ -4,6 +4,7 @@ ENV = 'development'
 # 本地环境接口地址
 # VITE_API_URL = 'http://ipos.biz:8070'
 #  VITE_API_URL = 'http://192.168.0.202:8003'
+# VITE_API_URL = 'http://localhost:8003'
 VITE_API_URL = 'http://dev.hsfuel.com:8070'
 # VITE_API_URL = 'http://47.101.220.106:8070'
 # VITE_API_URL = 'http://ipos.biz:8070'

+ 1 - 0
admin.ui.plus-master/.env.production

@@ -10,6 +10,7 @@ VITE_PUBLIC_PATH = '/'
 # 线上环境接口地址
 # VITE_API_URL = 'http://ipos.biz:8070'
 # VITE_API_URL = 'http://localhost:8000'
+# VITE_API_URL = 'http://localhost:8003'
 VITE_API_URL = 'http://dev.hsfuel.com:8070'
 # VITE_API_URL = 'http://47.101.220.106:8070'
 # VITE_API_URL = 'http://ipos.biz:8070'

+ 800 - 740
admin.ui.plus-master/src/api/admin/Permission.ts

@@ -1,740 +1,800 @@
-/* eslint-disable */
-/* tslint:disable */
-/*
- * ---------------------------------------------------------------
- * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##
- * ##                                                           ##
- * ## AUTHOR: acacode                                           ##
- * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
- * ---------------------------------------------------------------
- */
-
-import { AxiosResponse } from 'axios'
-import {
-  PermissionAddApiInput,
-  PermissionAddDotInput,
-  PermissionAddGroupInput,
-  PermissionAddMenuInput,
-  PermissionAssignInput,
-  PermissionSaveTenantPermissionsInput,
-  PermissionUpdateApiInput,
-  PermissionUpdateDotInput,
-  PermissionUpdateGroupInput,
-  PermissionUpdateMenuInput,
-  ResultOutputIEnumerableObject,
-  ResultOutputInt64,
-  ResultOutputListInt64,
-  ResultOutputListPermissionListOutput,
-  ResultOutputPermissionGetApiOutput,
-  ResultOutputPermissionGetDotOutput,
-  ResultOutputPermissionGetGroupOutput,
-  ResultOutputPermissionGetMenuOutput,
-  oauthPermissionDto,
-  OauthApplyDto,
-  OauthViewDto,
-  OauthRoleDto
-} from './data-contracts'
-import { ContentType, HttpClient, RequestParams } from './http-client'
-
-export class PermissionApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetGroup
-   * @summary 查询分组
-   * @request GET:/api/admin/permission/get-group
-   * @secure
-   */
-  getGroup = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputPermissionGetGroupOutput, any>({
-      path: `/api/admin/permission/get-group`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetMenu
-   * @summary 查询菜单
-   * @request GET:/api/admin/permission/get-menu
-   * @secure
-   */
-  getMenu = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputPermissionGetMenuOutput, any>({
-      path: `/api/admin/permission/get-menu`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetApi
-   * @summary 查询接口
-   * @request GET:/api/admin/permission/get-api
-   * @secure
-   */
-  getApi = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputPermissionGetApiOutput, any>({
-      path: `/api/admin/permission/get-api`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetDot
-   * @summary 查询权限点
-   * @request GET:/api/admin/permission/get-dot
-   * @secure
-   */
-  getDot = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputPermissionGetDotOutput, any>({
-      path: `/api/admin/permission/get-dot`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetList
-   * @summary 查询权限列表
-   * @request GET:/api/admin/permission/get-list
-   * @secure
-   */
-  getList = (
-    query?: {
-      key?: string
-      /** @format date-time */
-      start?: string
-      /** @format date-time */
-      end?: string
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputListPermissionListOutput, any>({
-      path: `/api/admin/permission/get-list`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetPermissionList
-   * @summary 查询授权权限列表
-   * @request GET:/api/admin/permission/get-permission-list
-   * @secure
-   */
-  getPermissionList = (params: RequestParams = {}) =>
-    this.request<ResultOutputIEnumerableObject, any>({
-      path: `/api/admin/permission/get-permission-list`,
-      method: 'GET',
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetRolePermissionList
-   * @summary 查询角色权限列表
-   * @request GET:/api/admin/permission/get-role-permission-list
-   * @secure
-   */
-  getRolePermissionList = (
-    query?: {
-      /**
-       * @format int64
-       * @default 0
-       */
-      roleId?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputListInt64, any>({
-      path: `/api/admin/permission/get-role-permission-list`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name GetTenantPermissionList
-   * @summary 查询租户权限列表
-   * @request GET:/api/admin/permission/get-tenant-permission-list
-   * @deprecated
-   * @secure
-   */
-  getTenantPermissionList = (
-    query?: {
-      /** @format int64 */
-      tenantId?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<ResultOutputListInt64, any>({
-      path: `/api/admin/permission/get-tenant-permission-list`,
-      method: 'GET',
-      query: query,
-      secure: true,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name AddGroup
-   * @summary 新增分组
-   * @request POST:/api/admin/permission/add-group
-   * @secure
-   */
-  addGroup = (data: PermissionAddGroupInput, params: RequestParams = {}) =>
-    this.request<ResultOutputInt64, any>({
-      path: `/api/admin/permission/add-group`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name AddMenu
-   * @summary 新增菜单
-   * @request POST:/api/admin/permission/add-menu
-   * @secure
-   */
-  addMenu = (data: PermissionAddMenuInput, params: RequestParams = {}) =>
-    this.request<ResultOutputInt64, any>({
-      path: `/api/admin/permission/add-menu`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name AddApi
-   * @summary 新增接口
-   * @request POST:/api/admin/permission/add-api
-   * @secure
-   */
-  addApi = (data: PermissionAddApiInput, params: RequestParams = {}) =>
-    this.request<ResultOutputInt64, any>({
-      path: `/api/admin/permission/add-api`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name AddDot
-   * @summary 新增权限点
-   * @request POST:/api/admin/permission/add-dot
-   * @secure
-   */
-  addDot = (data: PermissionAddDotInput, params: RequestParams = {}) =>
-    this.request<ResultOutputInt64, any>({
-      path: `/api/admin/permission/add-dot`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name UpdateGroup
-   * @summary 修改分组
-   * @request PUT:/api/admin/permission/update-group
-   * @secure
-   */
-  updateGroup = (data: PermissionUpdateGroupInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/update-group`,
-      method: 'PUT',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name UpdateMenu
-   * @summary 修改菜单
-   * @request PUT:/api/admin/permission/update-menu
-   * @secure
-   */
-  updateMenu = (data: PermissionUpdateMenuInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/update-menu`,
-      method: 'PUT',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name UpdateApi
-   * @summary 修改接口
-   * @request PUT:/api/admin/permission/update-api
-   * @secure
-   */
-  updateApi = (data: PermissionUpdateApiInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/update-api`,
-      method: 'PUT',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name UpdateDot
-   * @summary 修改权限点
-   * @request PUT:/api/admin/permission/update-dot
-   * @secure
-   */
-  updateDot = (data: PermissionUpdateDotInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/update-dot`,
-      method: 'PUT',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name Delete
-   * @summary 彻底删除
-   * @request DELETE:/api/admin/permission/delete
-   * @secure
-   */
-  delete = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/delete`,
-      method: 'DELETE',
-      query: query,
-      secure: true,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name SoftDelete
-   * @summary 删除
-   * @request DELETE:/api/admin/permission/soft-delete
-   * @secure
-   */
-  softDelete = (
-    query?: {
-      /** @format int64 */
-      id?: number
-    },
-    params: RequestParams = {}
-  ) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/soft-delete`,
-      method: 'DELETE',
-      query: query,
-      secure: true,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name Assign
-   * @summary 保存角色权限
-   * @request POST:/api/admin/permission/assign
-   * @secure
-   */
-  assign = (data: PermissionAssignInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/assign`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-   * No description
-   *
-   * @tags permission
-   * @name SaveTenantPermissions
-   * @summary 保存租户权限
-   * @request POST:/api/admin/permission/save-tenant-permissions
-   * @deprecated
-   * @secure
-   */
-  saveTenantPermissions = (data: PermissionSaveTenantPermissionsInput, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/admin/permission/save-tenant-permissions`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags permission
-  * @name addAppPermission
-  * @summary 应用权限-新增分组、菜单、权限点
-  * @request POST:/api/app/permission/upload-permission
-  * @secure
-  */
-  addAppPermission = (data: oauthPermissionDto, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/permission/upload-permission`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getPermissionInfo
-  * @summary  获取应用权限信息
-  * @request GET:/api/app/permission/get-permission
-  * @secure
-  */
-  getPermissionInfo = (query:any ,params: RequestParams = {}) : any  =>
-    this.request<AxiosResponse,any>({
-      path:'/api/app/permission/get-permission',
-      method: 'GET',
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      query:query,
-      ...params
-    })
-  /**
-  * No description
-  *
-  * @tags permission
-  * @name permissionDelete
-  * @summary 彻底删除应用权限
-  * @request POST:/api/app/permission/delete-permission
-  * @secure
-  */
-  permissionDelete = ( query:oauthPermissionDto,params: RequestParams = {}):any =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/permission/delete-permission`,
-      method: 'POST',
-      body: query,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getApplyInfo
-  * @summary  获取应用信息
-  * @request GET:/api/app/apply/get-apply
-  * @secure
-  */
-  getApplyInfo = (query:any ,params: RequestParams = {}) : any  =>
-    this.request<AxiosResponse,any>({
-      path:'/api/app/apply/get-apply',
-      method: 'GET',
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      query:query,
-      ...params
-    })
-   /**
-   * No description
-   *
-   * @tags apply
-   * @name addApply
-   * @summary 新增、编辑应用
-   * @request POST:/api/app/permission/upload-permission
-   * @secure
-   */
-  addApply = (data: OauthApplyDto, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/apply/upload-apply`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
- /**
-  * No description
-  *
-  * @tags apply
-  * @name applyDelete
-  * @summary 删除应用
-  * @request POST:/api/app/permission/delete-permission
-  * @secure
-  */
-  applyDelete = ( query:any,params: RequestParams = {}):any =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/apply/delete-apply`,
-      method: 'POST',
-      body: query,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getViewInfo
-  * @summary  获取视图信息
-  * @request GET:/api/app/view/get-permission
-  * @secure
-  */
-  getViewInfo = (query:any ,params: RequestParams = {}) : any  =>
-    this.request<AxiosResponse,any>({
-      path:'/api/app/view/get-permission',
-      method: 'GET',
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      query:query,
-      ...params
-    })
-  /**
-  * No description
-  *
-  * @tags view
-  * @name addView
-  * @summary 新增、编辑视图
-  * @request POST:/api/app/view/upload-view
-  * @secure
-  */
-  addView = (data: OauthViewDto, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/view/upload-view`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags view
-  * @name viewDelete
-  * @summary 删除视图
-  * @request POST:/api/app/view/delete-permission
-  * @secure
-  */
-  viewDelete = ( query:any,params: RequestParams = {}):any =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/view/delete-permission`,
-      method: 'POST',
-      body: query,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getRoleInfo
-  * @summary  获取角色信息
-  * @request GET:/api/app/role/get-role
-  * @secure
-  */
-  getRoleInfo = (query:any ,params: RequestParams = {}) : any  =>
-    this.request<AxiosResponse,any>({
-      path:'/api/app/role/get-role',
-      method: 'GET',
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      query:query,
-      ...params
-    })
-  /**
-  * No description
-  *
-  * @tags role
-  * @name addRole
-  * @summary 新增、编辑角色
-  * @request POST:/api/app/role/upload-role
-  * @secure
-  */
-  addRole = (data: OauthRoleDto, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/role/upload-role`,
-      method: 'POST',
-      body: data,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags role
-  * @name roleDelete
-  * @summary 删除角色
-  * @request POST:/api/app/role/delete-role
-  * @secure
-  */
-  roleDelete = ( query:any,params: RequestParams = {}):any =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/role/delete-role`,
-      method: 'POST',
-      body: query,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-  })
-  /**
-  * No description
-  *
-  * @tags role
-  * @name roleMenuAssign
-  * @summary 角色菜单权限
-  * @request POST:/api/app/role/assign
-  * @secure
-  */
-  roleMenuAssign = (data: any,query:any, params: RequestParams = {}) =>
-    this.request<AxiosResponse, any>({
-      path: `/api/app/role/assign`,
-      method: 'POST',
-      body: data,
-      query:query,
-      secure: true,
-      type: ContentType.Json,
-      ...params,
-    })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getOperationInfo
-  * @summary  获取操作日志信息
-  * @request POST:/api/app/operation-record/get-page
-  * @secure
-  */
-  getOperationInfo = (query:any ,params: RequestParams = {}) : any  =>
-  this.request<AxiosResponse,any>({
-    path:'/api/app/operation-record/get-page',
-    method: 'POST',
-    secure: true,
-    type: ContentType.Json,
-    format: 'json',
-    body:query,
-    ...params
-  })
-  /**
-  * No description
-  *
-  * @tags data
-  * @name getMenuInfo
-  * @summary  获取角色应用权限菜单信息
-  * @request GET:/api/app/role/get-role
-  * @secure
-  */
-  getMenuInfo = (query:any ,params: RequestParams = {}) : any  =>
-    this.request<AxiosResponse,any>({
-      path:'/api/app/role/get-permission',
-      method: 'GET',
-      secure: true,
-      type: ContentType.Json,
-      format: 'json',
-      query:query,
-      ...params
-    })
-}
+/* eslint-disable */
+/* tslint:disable */
+/*
+ * ---------------------------------------------------------------
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##
+ * ##                                                           ##
+ * ## AUTHOR: acacode                                           ##
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
+ * ---------------------------------------------------------------
+ */
+
+import { AxiosResponse } from 'axios'
+import {
+  PermissionAddApiInput,
+  PermissionAddDotInput,
+  PermissionAddGroupInput,
+  PermissionAddMenuInput,
+  PermissionAssignInput,
+  PermissionSaveTenantPermissionsInput,
+  PermissionUpdateApiInput,
+  PermissionUpdateDotInput,
+  PermissionUpdateGroupInput,
+  PermissionUpdateMenuInput,
+  ResultOutputIEnumerableObject,
+  ResultOutputInt64,
+  ResultOutputListInt64,
+  ResultOutputListPermissionListOutput,
+  ResultOutputPermissionGetApiOutput,
+  ResultOutputPermissionGetDotOutput,
+  ResultOutputPermissionGetGroupOutput,
+  ResultOutputPermissionGetMenuOutput,
+  oauthPermissionDto,
+  OauthApplyDto,
+  OauthViewDto,
+  OauthRoleDto
+} from './data-contracts'
+import { ContentType, HttpClient, RequestParams } from './http-client'
+
+export class PermissionApi<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetGroup
+   * @summary 查询分组
+   * @request GET:/api/admin/permission/get-group
+   * @secure
+   */
+  getGroup = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputPermissionGetGroupOutput, any>({
+      path: `/api/admin/permission/get-group`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetMenu
+   * @summary 查询菜单
+   * @request GET:/api/admin/permission/get-menu
+   * @secure
+   */
+  getMenu = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputPermissionGetMenuOutput, any>({
+      path: `/api/admin/permission/get-menu`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetApi
+   * @summary 查询接口
+   * @request GET:/api/admin/permission/get-api
+   * @secure
+   */
+  getApi = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputPermissionGetApiOutput, any>({
+      path: `/api/admin/permission/get-api`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetDot
+   * @summary 查询权限点
+   * @request GET:/api/admin/permission/get-dot
+   * @secure
+   */
+  getDot = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputPermissionGetDotOutput, any>({
+      path: `/api/admin/permission/get-dot`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetList
+   * @summary 查询权限列表
+   * @request GET:/api/admin/permission/get-list
+   * @secure
+   */
+  getList = (
+    query?: {
+      key?: string
+      /** @format date-time */
+      start?: string
+      /** @format date-time */
+      end?: string
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputListPermissionListOutput, any>({
+      path: `/api/admin/permission/get-list`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetPermissionList
+   * @summary 查询授权权限列表
+   * @request GET:/api/admin/permission/get-permission-list
+   * @secure
+   */
+  getPermissionList = (params: RequestParams = {}) =>
+    this.request<ResultOutputIEnumerableObject, any>({
+      path: `/api/admin/permission/get-permission-list`,
+      method: 'GET',
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetRolePermissionList
+   * @summary 查询角色权限列表
+   * @request GET:/api/admin/permission/get-role-permission-list
+   * @secure
+   */
+  getRolePermissionList = (
+    query?: {
+      /**
+       * @format int64
+       * @default 0
+       */
+      roleId?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputListInt64, any>({
+      path: `/api/admin/permission/get-role-permission-list`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name GetTenantPermissionList
+   * @summary 查询租户权限列表
+   * @request GET:/api/admin/permission/get-tenant-permission-list
+   * @deprecated
+   * @secure
+   */
+  getTenantPermissionList = (
+    query?: {
+      /** @format int64 */
+      tenantId?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<ResultOutputListInt64, any>({
+      path: `/api/admin/permission/get-tenant-permission-list`,
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name AddGroup
+   * @summary 新增分组
+   * @request POST:/api/admin/permission/add-group
+   * @secure
+   */
+  addGroup = (data: PermissionAddGroupInput, params: RequestParams = {}) =>
+    this.request<ResultOutputInt64, any>({
+      path: `/api/admin/permission/add-group`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name AddMenu
+   * @summary 新增菜单
+   * @request POST:/api/admin/permission/add-menu
+   * @secure
+   */
+  addMenu = (data: PermissionAddMenuInput, params: RequestParams = {}) =>
+    this.request<ResultOutputInt64, any>({
+      path: `/api/admin/permission/add-menu`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name AddApi
+   * @summary 新增接口
+   * @request POST:/api/admin/permission/add-api
+   * @secure
+   */
+  addApi = (data: PermissionAddApiInput, params: RequestParams = {}) =>
+    this.request<ResultOutputInt64, any>({
+      path: `/api/admin/permission/add-api`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name AddDot
+   * @summary 新增权限点
+   * @request POST:/api/admin/permission/add-dot
+   * @secure
+   */
+  addDot = (data: PermissionAddDotInput, params: RequestParams = {}) =>
+    this.request<ResultOutputInt64, any>({
+      path: `/api/admin/permission/add-dot`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name UpdateGroup
+   * @summary 修改分组
+   * @request PUT:/api/admin/permission/update-group
+   * @secure
+   */
+  updateGroup = (data: PermissionUpdateGroupInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/update-group`,
+      method: 'PUT',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name UpdateMenu
+   * @summary 修改菜单
+   * @request PUT:/api/admin/permission/update-menu
+   * @secure
+   */
+  updateMenu = (data: PermissionUpdateMenuInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/update-menu`,
+      method: 'PUT',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name UpdateApi
+   * @summary 修改接口
+   * @request PUT:/api/admin/permission/update-api
+   * @secure
+   */
+  updateApi = (data: PermissionUpdateApiInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/update-api`,
+      method: 'PUT',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name UpdateDot
+   * @summary 修改权限点
+   * @request PUT:/api/admin/permission/update-dot
+   * @secure
+   */
+  updateDot = (data: PermissionUpdateDotInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/update-dot`,
+      method: 'PUT',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name Delete
+   * @summary 彻底删除
+   * @request DELETE:/api/admin/permission/delete
+   * @secure
+   */
+  delete = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/delete`,
+      method: 'DELETE',
+      query: query,
+      secure: true,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name SoftDelete
+   * @summary 删除
+   * @request DELETE:/api/admin/permission/soft-delete
+   * @secure
+   */
+  softDelete = (
+    query?: {
+      /** @format int64 */
+      id?: number
+    },
+    params: RequestParams = {}
+  ) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/soft-delete`,
+      method: 'DELETE',
+      query: query,
+      secure: true,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name Assign
+   * @summary 保存角色权限
+   * @request POST:/api/admin/permission/assign
+   * @secure
+   */
+  assign = (data: PermissionAssignInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/assign`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags permission
+   * @name SaveTenantPermissions
+   * @summary 保存租户权限
+   * @request POST:/api/admin/permission/save-tenant-permissions
+   * @deprecated
+   * @secure
+   */
+  saveTenantPermissions = (data: PermissionSaveTenantPermissionsInput, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/admin/permission/save-tenant-permissions`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags permission
+  * @name addAppPermission
+  * @summary 应用权限-新增分组、菜单、权限点
+  * @request POST:/api/app/permission/upload-permission
+  * @secure
+  */
+  addAppPermission = (data: oauthPermissionDto, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/permission/upload-permission`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getPermissionInfo
+  * @summary  获取应用权限信息
+  * @request GET:/api/app/permission/get-permission
+  * @secure
+  */
+  getPermissionInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/permission/get-permission',
+      method: 'GET',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      query: query,
+      ...params
+    })
+  /**
+  * No description
+  *
+  * @tags permission
+  * @name permissionDelete
+  * @summary 彻底删除应用权限
+  * @request POST:/api/app/permission/delete-permission
+  * @secure
+  */
+  permissionDelete = (query: oauthPermissionDto, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/permission/delete-permission`,
+      method: 'POST',
+      body: query,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getApplyInfo
+  * @summary  获取应用信息
+  * @request GET:/api/app/apply/get-apply
+  * @secure
+  */
+  getApplyInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/apply/get-apply',
+      method: 'GET',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      query: query,
+      ...params
+    })
+  /**
+  * No description
+  *
+  * @tags apply
+  * @name addApply
+  * @summary 新增、编辑应用
+  * @request POST:/api/app/permission/upload-permission
+  * @secure
+  */
+  addApply = (data: OauthApplyDto, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/apply/upload-apply`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+   * No description
+   *
+   * @tags apply
+   * @name applyDelete
+   * @summary 删除应用
+   * @request POST:/api/app/permission/delete-permission
+   * @secure
+   */
+  applyDelete = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/apply/delete-apply`,
+      method: 'POST',
+      body: query,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getViewInfo
+  * @summary  获取视图信息
+  * @request GET:/api/app/view/get-permission
+  * @secure
+  */
+  getViewInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/view/get-permission',
+      method: 'GET',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      query: query,
+      ...params
+    })
+  /**
+  * No description
+  *
+  * @tags view
+  * @name addView
+  * @summary 新增、编辑视图
+  * @request POST:/api/app/view/upload-view
+  * @secure
+  */
+  addView = (data: OauthViewDto, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/view/upload-view`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags view
+  * @name viewDelete
+  * @summary 删除视图
+  * @request POST:/api/app/view/delete-permission
+  * @secure
+  */
+  viewDelete = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/view/delete-permission`,
+      method: 'POST',
+      body: query,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getRoleInfo
+  * @summary  获取角色信息
+  * @request GET:/api/app/role/get-role
+  * @secure
+  */
+  getRoleInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/role/get-role',
+      method: 'GET',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      query: query,
+      ...params
+    })
+  /**
+  * No description
+  *
+  * @tags role
+  * @name addRole
+  * @summary 新增、编辑角色
+  * @request POST:/api/app/role/upload-role
+  * @secure
+  */
+  addRole = (data: OauthRoleDto, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/role/upload-role`,
+      method: 'POST',
+      body: data,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags role
+  * @name roleDelete
+  * @summary 删除角色
+  * @request POST:/api/app/role/delete-role
+  * @secure
+  */
+  roleDelete = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/role/delete-role`,
+      method: 'POST',
+      body: query,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags role
+  * @name roleMenuAssign
+  * @summary 角色菜单权限
+  * @request POST:/api/app/role/assign
+  * @secure
+  */
+  roleMenuAssign = (data: any, query: any, params: RequestParams = {}) =>
+    this.request<AxiosResponse, any>({
+      path: `/api/app/role/assign`,
+      method: 'POST',
+      body: data,
+      query: query,
+      secure: true,
+      type: ContentType.Json,
+      ...params,
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getOperationInfo
+  * @summary  获取操作日志信息
+  * @request POST:/api/app/operation-record/get-page
+  * @secure
+  */
+  getOperationInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/operation-record/get-page',
+      method: 'POST',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      body: query,
+      ...params
+    })
+  /**
+  * No description
+  *
+  * @tags data
+  * @name getMenuInfo
+  * @summary  获取角色应用权限菜单信息
+  * @request GET:/api/app/role/get-role
+  * @secure
+  */
+  getMenuInfo = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/role/get-permission',
+      method: 'GET',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      query: query,
+      ...params
+    })
+
+
+  /**
+  * No description
+  *
+  * @tags
+  * @name GetList
+  * @summary 查询设备列表
+  * @request GET:'/api/app/equipment/get-list-page'
+  * @secure
+  */
+  getEquipmentList = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/equipment/get-list-page',
+      method: 'GET',
+      query: query,
+      secure: true,
+      format: 'json',
+      ...params
+    })
+
+    /**
+  * No description
+  *
+  * @tags
+  * @name GetList
+  * @summary 添加或修改设备
+  * @request POST:'/api/app/equipment/upload'
+  * @secure
+  */
+  uploadEquipment = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/equipment/upload',
+      method: 'POST',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      body: query,
+      ...params
+    })
+
+    /**
+  * No description
+  *
+  * @tags
+  * @name GetList
+  * @summary 删除设备
+  * @request POST:'/api/app/equipment/delete'
+  * @secure
+  */
+  deleteEquipment = (query: any, params: RequestParams = {}): any =>
+    this.request<AxiosResponse, any>({
+      path: '/api/app/equipment/delete',
+      method: 'POST',
+      secure: true,
+      type: ContentType.Json,
+      format: 'json',
+      body: query,
+      ...params
+    })
+}

+ 4797 - 4746
admin.ui.plus-master/src/api/admin/data-contracts.ts

@@ -1,4746 +1,4797 @@
-/* eslint-disable */
-/* tslint:disable */
-/*
- * ---------------------------------------------------------------
- * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##
- * ##                                                           ##
- * ## AUTHOR: acacode                                           ##
- * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
- * ---------------------------------------------------------------
- */
-
-/** 添加 */
-export interface ApiAddInput {
-  /**
-   * 所属模块
-   * @format int64
-   */
-  parentId?: number | null
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-/** 接口管理 */
-export interface ApiEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 所属模块
-   * @format int64
-   */
-  parentId?: number
-  /** 接口命名 */
-  name?: string | null
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  childs?: ApiEntity[] | null
-  permissions?: PermissionEntity[] | null
-}
-
-export interface ApiGetOutput {
-  /**
-   * 所属模块
-   * @format int64
-   */
-  parentId?: number | null
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 接口Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface ApiGetPageDto {
-  /** 接口名称 */
-  label?: string | null
-}
-
-export interface ApiListOutput {
-  /**
-   * 接口Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 接口父级
-   * @format int64
-   */
-  parentId?: number | null
-  /** 接口命名 */
-  name?: string | null
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-/** 接口同步Dto */
-export interface ApiSyncDto {
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 父级路径 */
-  parentPath?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-}
-
-/** 接口同步 */
-export interface ApiSyncInput {
-  apis?: ApiSyncDto[] | null
-}
-
-/** 修改 */
-export interface ApiUpdateInput {
-  /**
-   * 所属模块
-   * @format int64
-   */
-  parentId?: number | null
-  /** 接口名称 */
-  label?: string | null
-  /** 接口地址 */
-  path?: string | null
-  /** 接口提交方法 */
-  httpMethods?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 接口Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface AuthGetPasswordEncryptKeyOutput {
-  /** 缓存键 */
-  key?: string | null
-  /** 密码加密密钥 */
-  encyptKey?: string | null
-}
-
-export interface AuthGetUserInfoOutput {
-  /** 用户个人信息 */
-  user?: AuthUserProfileDto
-  /** 用户菜单列表 */
-  menus?: AuthUserMenuDto[] | null
-  /** 用户权限列表 */
-  permissions?: string[] | null
-}
-
-export interface AuthGetUserPermissionsOutput {
-  /** 用户个人信息 */
-  user?: AuthUserProfileDto
-  /** 用户权限列表 */
-  permissions?: string[] | null
-}
-
-/** 登录信息 */
-export interface AuthLoginInput {
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /**
-   * 密码
-   * @minLength 1
-   */
-  password: string
-  /** 密码键 */
-  passwordKey?: string | null
-  /** 验证码Id */
-  captchaId?: string | null
-  /** 验证码数据 */
-  captchaData?: string | null
-}
-
-/** 手机号登录信息 */
-export interface AuthMobileLoginInput {
-  /**
-   * 手机号
-   * @minLength 1
-   */
-  mobile: string
-  /**
-   * 验证码
-   * @minLength 1
-   */
-  code: string
-  /**
-   * 验证码Id
-   * @minLength 1
-   */
-  codeId: string
-}
-
-export interface AuthUserMenuDto {
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 路由地址 */
-  path?: string | null
-  /** 路由命名 */
-  name?: string | null
-  /** 视图地址 */
-  viewPath?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 图标 */
-  icon?: string | null
-  /** 打开 */
-  opened?: boolean | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 打开新窗口 */
-  newWindow?: boolean | null
-  /** 链接外显 */
-  external?: boolean | null
-  /** 是否缓存 */
-  isKeepAlive?: boolean
-  /** 是否固定 */
-  isAffix?: boolean
-  /** 链接地址 */
-  link?: string | null
-  /** 是否内嵌窗口 */
-  isIframe?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number | null
-}
-
-/** 用户个人信息 */
-export interface AuthUserProfileDto {
-  /** 账号 */
-  userName?: string | null
-  /** 姓名 */
-  name?: string | null
-  /** 昵称 */
-  nickName?: string | null
-  /** 头像 */
-  avatar?: string | null
-}
-
-export interface CaptchaData {
-  id?: string | null
-  backgroundImage?: string | null
-  sliderImage?: string | null
-}
-
-/**
- * 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5
- * @format int32
- */
-export type DataScope = 1 | 2 | 3 | 4 | 5
-
-/**
- * MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25
- * @format int32
- */
-export type DataType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25
-
-/** 添加字典 */
-export interface DictAddInput {
-  /**
-   * 字典类型Id
-   * @format int64
-   */
-  dictTypeId?: number
-  /**
-   * 字典名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典编码 */
-  code?: string | null
-  /** 字典值 */
-  value?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-}
-
-export interface DictGetListDto {
-  /** 字典类型编码 */
-  dictTypeCode?: string | null
-  /** 字典类型名称 */
-  dictTypeName?: string | null
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 字典名称 */
-  name?: string | null
-  /** 字典编码 */
-  code?: string | null
-  /** 字典值 */
-  value?: string | null
-}
-
-export interface DictGetOutput {
-  /**
-   * 字典类型Id
-   * @format int64
-   */
-  dictTypeId?: number
-  /**
-   * 字典名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典编码 */
-  code?: string | null
-  /** 字典值 */
-  value?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface DictGetPageDto {
-  /**
-   * 字典类型Id
-   * @format int64
-   */
-  dictTypeId?: number
-  /** 字典名称 */
-  name?: string | null
-}
-
-export interface DictGetPageOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 字典名称 */
-  name?: string | null
-  /** 字典编码 */
-  code?: string | null
-  /** 字典值 */
-  value?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-}
-
-/** 添加字典类型 */
-export interface DictTypeAddInput {
-  /**
-   * 字典类型名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典类型编码 */
-  code?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-}
-
-export interface DictTypeGetOutput {
-  /**
-   * 字典类型名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典类型编码 */
-  code?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface DictTypeGetPageDto {
-  /** 字典名称 */
-  name?: string | null
-}
-
-export interface DictTypeGetPageOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 字典名称 */
-  name?: string | null
-  /** 字典编码 */
-  code?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-}
-
-/** 修改 */
-export interface DictTypeUpdateInput {
-  /**
-   * 字典类型名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典类型编码 */
-  code?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 修改 */
-export interface DictUpdateInput {
-  /**
-   * 字典类型Id
-   * @format int64
-   */
-  dictTypeId?: number
-  /**
-   * 字典名称
-   * @minLength 1
-   */
-  name: string
-  /** 字典编码 */
-  code?: string | null
-  /** 字典值 */
-  value?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface DocumentAddGroupInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 名称 */
-  label?: string | null
-  /** 命名 */
-  name?: string | null
-  /** 打开 */
-  opened?: boolean | null
-}
-
-export interface DocumentAddImageInput {
-  /**
-   * 用户Id
-   * @format int64
-   */
-  documentId?: number
-  /** 请求路径 */
-  url?: string | null
-}
-
-export interface DocumentAddMenuInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 命名 */
-  name?: string | null
-  /** 名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-}
-
-export interface DocumentGetContentOutput {
-  /**
-   * 编号
-   * @format int64
-   */
-  id?: number
-  /** 名称 */
-  label?: string | null
-  /** 内容 */
-  content?: string | null
-}
-
-export interface DocumentGetGroupOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 名称 */
-  label?: string | null
-  /** 命名 */
-  name?: string | null
-  /** 打开 */
-  opened?: boolean | null
-  /**
-   * 编号
-   * @format int64
-   */
-  id: number
-}
-
-export interface DocumentGetMenuOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 命名 */
-  name?: string | null
-  /** 名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 编号
-   * @format int64
-   */
-  id: number
-}
-
-export interface DocumentListOutput {
-  /**
-   * 编号
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  label?: string | null
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 命名 */
-  name?: string | null
-  /** 描述 */
-  description?: string | null
-  /** 组打开 */
-  opened?: boolean | null
-}
-
-/**
- * 文档类型:Group=1,Markdown=2
- * @format int32
- */
-export type DocumentType = 1 | 2
-
-export interface DocumentUpdateContentInput {
-  /**
-   * 编号
-   * @format int64
-   */
-  id: number
-  /** 名称 */
-  label?: string | null
-  /** 内容 */
-  content?: string | null
-  /** Html */
-  html?: string | null
-}
-
-export interface DocumentUpdateGroupInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 名称 */
-  label?: string | null
-  /** 命名 */
-  name?: string | null
-  /** 打开 */
-  opened?: boolean | null
-  /**
-   * 编号
-   * @format int64
-   */
-  id: number
-}
-
-export interface DocumentUpdateMenuInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 文档类型:Group=1,Markdown=2 */
-  type?: DocumentType
-  /** 命名 */
-  name?: string | null
-  /** 名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 编号
-   * @format int64
-   */
-  id: number
-}
-
-
-export interface FileGetPageOutput {
-  /**
-   * 文件Id
-   * @format int64
-   */
-  id?: number
-  /** OSS供应商 */
-  providerName?: string | null
-  /** 存储桶名称 */
-  bucketName?: string | null
-  /** 文件目录 */
-  fileDirectory?: string | null
-  /**
-   * 文件Guid
-   * @format uuid
-   */
-  fileGuid?: string
-  /** 文件名 */
-  fileName?: string | null
-  /** 文件扩展名 */
-  extension?: string | null
-  /** 文件大小格式化 */
-  sizeFormat?: string | null
-  /** 链接地址 */
-  linkUrl?: string | null
-  /** 创建者 */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /** 修改者 */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-}
-
-export interface LogGetPageDto {
-  /** 创建者 */
-  createdUserName?: string | null
-}
-
-/** 添加 */
-export interface LoginLogAddInput {
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number | null
-  /** 姓名 */
-  name?: string | null
-  /** IP */
-  ip?: string | null
-  /** 浏览器 */
-  browser?: string | null
-  /** 操作系统 */
-  os?: string | null
-  /** 设备 */
-  device?: string | null
-  /** 浏览器信息 */
-  browserInfo?: string | null
-  /**
-   * 耗时(毫秒)
-   * @format int64
-   */
-  elapsedMilliseconds?: number
-  /** 操作状态 */
-  status?: boolean | null
-  /** 操作消息 */
-  msg?: string | null
-  /** 操作结果 */
-  result?: string | null
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /** 创建者 */
-  createdUserName?: string | null
-}
-
-export interface LoginLogListOutput {
-  /**
-   * 编号
-   * @format int64
-   */
-  id?: number
-  /** 昵称 */
-  nickName?: string | null
-  /** 创建者 */
-  createdUserName?: string | null
-  /** IP */
-  ip?: string | null
-  /** 浏览器 */
-  browser?: string | null
-  /** 操作系统 */
-  os?: string | null
-  /** 设备 */
-  device?: string | null
-  /**
-   * 耗时(毫秒)
-   * @format int64
-   */
-  elapsedMilliseconds?: number
-  /** 操作状态 */
-  status?: boolean
-  /** 操作消息 */
-  msg?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-
-
-/** 添加 */
-export interface OprationLogAddInput {
-  /** 姓名 */
-  name?: string | null
-  /** 接口名称 */
-  apiLabel?: string | null
-  /** 接口地址 */
-  apiPath?: string | null
-  /** 接口提交方法 */
-  apiMethod?: string | null
-  /** IP */
-  ip?: string | null
-  /** 浏览器 */
-  browser?: string | null
-  /** 操作系统 */
-  os?: string | null
-  /** 设备 */
-  device?: string | null
-  /** 浏览器信息 */
-  browserInfo?: string | null
-  /**
-   * 耗时(毫秒)
-   * @format int64
-   */
-  elapsedMilliseconds?: number
-  /** 操作状态 */
-  status?: boolean | null
-  /** 操作消息 */
-  msg?: string | null
-  /** 操作参数 */
-  params?: string | null
-  /** 操作结果 */
-  result?: string | null
-}
-
-export interface OprationLogListOutput {
-  /**
-   * 编号
-   * @format int64
-   */
-  id?: number
-  /** 昵称 */
-  nickName?: string | null
-  /** 创建者 */
-  createdUserName?: string | null
-  /** 接口名称 */
-  apiLabel?: string | null
-  /** 接口地址 */
-  apiPath?: string | null
-  /** 接口提交方法 */
-  apiMethod?: string | null
-  /** IP */
-  ip?: string | null
-  /** 浏览器 */
-  browser?: string | null
-  /** 操作系统 */
-  os?: string | null
-  /** 设备 */
-  device?: string | null
-  /**
-   * 耗时(毫秒)
-   * @format int64
-   */
-  elapsedMilliseconds?: number
-  /** 操作状态 */
-  status?: boolean
-  /** 操作消息 */
-  msg?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-/** 添加 */
-export interface OrgAddInput {
-  /**
-   * 父级
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 值 */
-  value?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-}
-
-/** 组织架构 */
-export interface OrgEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number | null
-  /**
-   * 父级
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 值 */
-  value?: string | null
-  /**
-   * 成员数
-   * @format int32
-   */
-  memberCount?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /** 员工列表 */
-  staffs?: UserStaffEntity[] | null
-  /** 用户列表 */
-  users?: UserEntity[] | null
-  /** 角色列表 */
-  roles?: RoleEntity[] | null
-  /** 子级列表 */
-  childs?: OrgEntity[] | null
-}
-
-export interface OrgGetOutput {
-  /**
-   * 父级
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 值 */
-  value?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface OrgListOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 值 */
-  value?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-/** 修改 */
-export interface OrgUpdateInput {
-  /**
-   * 父级
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 值 */
-  value?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 分页信息输入 */
-export interface PageInputApiGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: ApiGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputDictGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: DictGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputDictTypeGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: DictTypeGetPageDto
-}
-
-
-
-/** 分页信息输入 */
-export interface PageInputLogGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: LogGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputPkgGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: PkgGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputPkgGetPkgTenantListInput {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: PkgGetPkgTenantListInput
-}
-
-/** 分页信息输入 */
-export interface PageInputRoleGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: RoleGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputTaskGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: TaskGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputTaskLogGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: TaskLogGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputTenantGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  filter?: TenantGetPageDto
-}
-
-/** 分页信息输入 */
-export interface PageInputUserGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  dynamicFilter?: DynamicFilterInfo
-  /** 用户分页查询条件 */
-  filter?: UserGetPageDto
-}
-
-/** 分页信息输出 */
-export interface PageOutputApiEntity {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: ApiEntity[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputDictGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: DictGetPageOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputDictTypeGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: DictTypeGetPageOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputFileGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: FileGetPageOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputLoginLogListOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: LoginLogListOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputOprationLogListOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: OprationLogListOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputPkgGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: PkgGetPageOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputPkgGetPkgTenantListOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: PkgGetPkgTenantListOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputRoleGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: RoleGetPageOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputTaskListOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: TaskListOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputTaskLog {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: TaskLog[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputTenantListOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: TenantListOutput[] | null
-}
-
-/** 分页信息输出 */
-export interface PageOutputUserGetPageOutput {
-  /**
-   * 数据总数
-   * @format int64
-   */
-  total?: number
-  /** 数据 */
-  list?: UserGetPageOutput[] | null
-}
-
-/**
- * 密码加密类型:MD5Encrypt32=0,PasswordHasher=1
- * @format int32
- */
-export type PasswordEncryptType = 0 | 1
-
-export interface PermissionAddApiInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 接口
-   * @format int64
-   */
-  apiId?: number | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-export interface PermissionAddDotInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 关联接口 */
-  apiIds?: number[] | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-export interface PermissionAddGroupInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 访问路由地址 */
-  path?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 展开 */
-  opened?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-export interface PermissionAddMenuInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 路由地址 */
-  path?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 打开新窗口 */
-  newWindow?: boolean
-  /** 链接外显 */
-  external?: boolean
-  /** 是否缓存 */
-  isKeepAlive?: boolean
-  /** 是否固定 */
-  isAffix?: boolean
-  /** 链接地址 */
-  link?: string | null
-  /** 是否内嵌窗口 */
-  isIframe?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-export interface PermissionAssignInput {
-  /** @format int64 */
-  roleId: number
-  permissionIds: number[]
-}
-
-/** 权限 */
-export interface PermissionEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 权限类型:Group=1,Menu=2,Dot=3 */
-  type?: PermissionType
-  /**
-   * 视图Id
-   * @format int64
-   */
-  viewId?: number | null
-  /** 视图管理 */
-  view?: ViewEntity
-  /** 路由命名 */
-  name?: string | null
-  /** 路由地址 */
-  path?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 图标 */
-  icon?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 展开分组 */
-  opened?: boolean
-  /** 打开新窗口 */
-  newWindow?: boolean
-  /** 链接外显 */
-  external?: boolean
-  /** 是否缓存 */
-  isKeepAlive?: boolean
-  /** 是否固定 */
-  isAffix?: boolean
-  /** 链接地址 */
-  link?: string | null
-  /** 是否内嵌窗口 */
-  isIframe?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  apis?: ApiEntity[] | null
-  childs?: PermissionEntity[] | null
-}
-
-export interface PermissionGetApiOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 接口
-   * @format int64
-   */
-  apiId?: number | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionGetDotOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 关联接口 */
-  apiIds?: number[] | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionGetGroupOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 访问路由地址 */
-  path?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 展开 */
-  opened?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionGetMenuOutput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 路由地址 */
-  path?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 打开新窗口 */
-  newWindow?: boolean
-  /** 链接外显 */
-  external?: boolean
-  /** 是否缓存 */
-  isKeepAlive?: boolean
-  /** 是否固定 */
-  isAffix?: boolean
-  /** 链接地址 */
-  link?: string | null
-  /** 是否内嵌窗口 */
-  isIframe?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionListOutput {
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 权限名称 */
-  label?: string | null
-  /** 权限类型:Group=1,Menu=2,Dot=3 */
-  type?: PermissionType
-  /** 路由地址 */
-  path?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 视图地址 */
-  viewPath?: string | null
-  /** 链接地址 */
-  link?: string | null
-  /** 接口路径 */
-  apiPaths?: string | null
-  /** 图标 */
-  icon?: string | null
-  /** 展开 */
-  opened?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number | null
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-}
-
-export interface PermissionSaveTenantPermissionsInput {
-  /** @format int64 */
-  tenantId: number
-  permissionIds: number[]
-}
-
-/**
- * 权限类型:Group=1,Menu=2,Dot=3
- * @format int32
- */
-export type PermissionType = 1 | 2 | 3
-
-export interface PermissionUpdateApiInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 接口
-   * @format int64
-   */
-  apiId?: number | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionUpdateDotInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /** 关联接口 */
-  apiIds?: number[] | null
-  /** 权限名称 */
-  label?: string | null
-  /** 权限编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 图标 */
-  icon?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionUpdateGroupInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 访问路由地址 */
-  path?: string | null
-  /** 重定向地址 */
-  redirect?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 展开 */
-  opened?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PermissionUpdateMenuInput {
-  /**
-   * 父级节点
-   * @format int64
-   */
-  parentId?: number
-  /**
-   * 视图
-   * @format int64
-   */
-  viewId?: number | null
-  /** 路由命名 */
-  name?: string | null
-  /** 路由地址 */
-  path?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /** 图标 */
-  icon?: string | null
-  /** 打开新窗口 */
-  newWindow?: boolean
-  /** 链接外显 */
-  external?: boolean
-  /** 是否缓存 */
-  isKeepAlive?: boolean
-  /** 是否固定 */
-  isAffix?: boolean
-  /** 链接地址 */
-  link?: string | null
-  /** 是否内嵌窗口 */
-  isIframe?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 权限Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 添加 */
-export interface PkgAddInput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-/** 添加套餐租户列表 */
-export interface PkgAddPkgTenantListInput {
-  /**
-   * 套餐
-   * @format int64
-   */
-  pkgId: number
-  /** 租户列表 */
-  tenantIds?: number[] | null
-}
-
-/** 套餐 */
-export interface PkgEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 子级列表 */
-  childs?: PkgEntity[] | null
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 租户列表 */
-  tenants?: TenantEntity[] | null
-  /** 权限列表 */
-  permissions?: PermissionEntity[] | null
-}
-
-export interface PkgGetListOutput {
-  /**
-   * 主键
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-export interface PkgGetOutput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 套餐Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface PkgGetPageDto {
-  /** 名称 */
-  name?: string | null
-}
-
-export interface PkgGetPageOutput {
-  /**
-   * 主键
-   * @format int64
-   */
-  id?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-export interface PkgGetPkgTenantListInput {
-  /** 租户名 */
-  tenantName?: string | null
-  /**
-   * 套餐Id
-   * @format int64
-   */
-  pkgId?: number | null
-}
-
-export interface PkgGetPkgTenantListOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 租户名 */
-  name?: string | null
-  /** 租户编码 */
-  code?: string | null
-}
-
-export interface PkgSetPkgPermissionsInput {
-  /** @format int64 */
-  pkgId: number
-  permissionIds: number[]
-}
-
-/** 修改 */
-export interface PkgUpdateInput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 套餐Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 结果输出 */
-export interface ResultOutputApiGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: ApiGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputAuthGetPasswordEncryptKeyOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: AuthGetPasswordEncryptKeyOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputAuthGetUserInfoOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: AuthGetUserInfoOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputAuthGetUserPermissionsOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: AuthGetUserPermissionsOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputAuthUserProfileDto {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 用户个人信息 */
-  data?: AuthUserProfileDto
-}
-
-/** 结果输出 */
-export interface ResultOutputBoolean {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: boolean
-}
-
-/** 结果输出 */
-export interface ResultOutputCaptchaData {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: CaptchaData
-}
-
-/** 结果输出 */
-export interface ResultOutputDictGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: DictGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputDictTypeGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: DictTypeGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputDictionaryStringListDictGetListDto {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: Record<string, DictGetListDto[] | null>
-}
-
-/** 结果输出 */
-export interface ResultOutputDocumentGetContentOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: DocumentGetContentOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputDocumentGetGroupOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: DocumentGetGroupOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputDocumentGetMenuOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: DocumentGetMenuOutput
-}
-
-
-
-/** 结果输出 */
-export interface ResultOutputIEnumerableObject {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: any[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputIListUserPermissionsOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: UserPermissionsOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputInt64 {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /**
-   * 数据
-   * @format int64
-   */
-  data?: number
-}
-
-/** 结果输出 */
-export interface ResultOutputListApiListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: ApiListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListAuthUserMenuDto {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: AuthUserMenuDto[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListDocumentListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: DocumentListOutput[] | null
-}
-
-
-
-/** 结果输出 */
-export interface ResultOutputListInt64 {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: number[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListObject {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: any[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListOrgListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: OrgListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListPermissionListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: PermissionListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListPkgGetListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: PkgGetListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListPkgGetPkgTenantListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: PkgGetPkgTenantListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListRoleGetListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: RoleGetListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListRoleGetRoleUserListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: RoleGetRoleUserListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListString {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: string[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputListViewListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: ViewListOutput[] | null
-}
-
-/** 结果输出 */
-export interface ResultOutputObject {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: any
-}
-
-/** 结果输出 */
-export interface ResultOutputOrgGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: OrgGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputApiEntity {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputApiEntity
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputDictGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputDictGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputDictTypeGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputDictTypeGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputFileGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputFileGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputLoginLogListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputLoginLogListOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputOprationLogListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputOprationLogListOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputPkgGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputPkgGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputPkgGetPkgTenantListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputPkgGetPkgTenantListOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputRoleGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputRoleGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputTaskListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputTaskListOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputTaskLog {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputTaskLog
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputTenantListOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputTenantListOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPageOutputUserGetPageOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 分页信息输出 */
-  data?: PageOutputUserGetPageOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPermissionGetApiOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: PermissionGetApiOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPermissionGetDotOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: PermissionGetDotOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPermissionGetGroupOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: PermissionGetGroupOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPermissionGetMenuOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: PermissionGetMenuOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputPkgGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: PkgGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputRoleGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: RoleGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputString {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: string | null
-}
-
-/** 结果输出 */
-export interface ResultOutputTaskGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: TaskGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputTenantGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: TenantGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputUserGetBasicOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: UserGetBasicOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputUserGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: UserGetOutput
-}
-
-/** 结果输出 */
-export interface ResultOutputValidateResult {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: ValidateResult
-}
-
-/** 结果输出 */
-export interface ResultOutputViewGetOutput {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  data?: ViewGetOutput
-}
-
-/** 添加 */
-export interface RoleAddInput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 角色类型:Group=1,Role=2 */
-  type?: RoleType
-  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
-  dataScope?: DataScope
-  /** 指定部门 */
-  orgIds?: number[] | null
-  /** 部门列表 */
-  orgs?: OrgEntity[] | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-}
-
-/** 添加角色用户列表 */
-export interface RoleAddRoleUserListInput {
-  /**
-   * 角色
-   * @format int64
-   */
-  roleId: number
-  /** 用户 */
-  userIds?: number[] | null
-}
-
-/** 角色 */
-export interface RoleEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number | null
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 子级列表 */
-  childs?: RoleEntity[] | null
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 角色类型:Group=1,Role=2 */
-  type?: RoleType
-  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
-  dataScope?: DataScope
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 用户列表 */
-  users?: UserEntity[] | null
-  /** 部门列表 */
-  orgs?: OrgEntity[] | null
-  /** 权限列表 */
-  permissions?: PermissionEntity[] | null
-}
-
-export interface RoleGetListOutput {
-  /**
-   * 主键
-   * @format int64
-   */
-  id?: number
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 角色类型:Group=1,Role=2 */
-  type?: RoleType
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 描述 */
-  description?: string | null
-}
-
-export interface RoleGetOutput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 角色类型:Group=1,Role=2 */
-  type?: RoleType
-  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
-  dataScope?: DataScope
-  /** 指定部门 */
-  orgIds?: number[] | null
-  /** 部门列表 */
-  orgs?: OrgEntity[] | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 角色Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface RoleGetPageDto {
-  /** 名称 */
-  name?: string | null
-}
-
-export interface RoleGetPageOutput {
-  /**
-   * 主键
-   * @format int64
-   */
-  id?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 隐藏 */
-  hidden?: boolean
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-export interface RoleGetRoleUserListOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 姓名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-}
-
-/** 设置数据范围 */
-export interface RoleSetDataScopeInput {
-  /**
-   * 角色Id
-   * @format int64
-   */
-  roleId: number
-  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
-  dataScope?: DataScope
-  /** 指定部门 */
-  orgIds?: number[] | null
-}
-
-/**
- * 角色类型:Group=1,Role=2
- * @format int32
- */
-export type RoleType = 1 | 2
-
-/** 修改 */
-export interface RoleUpdateInput {
-  /**
-   * 父级Id
-   * @format int64
-   */
-  parentId?: number
-  /** 名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 角色类型:Group=1,Role=2 */
-  type?: RoleType
-  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
-  dataScope?: DataScope
-  /** 指定部门 */
-  orgIds?: number[] | null
-  /** 部门列表 */
-  orgs?: OrgEntity[] | null
-  /** 说明 */
-  description?: string | null
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /**
-   * 角色Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 发送短信验证码 */
-export interface SendSmsCodeInput {
-  /**
-   * 手机号
-   * @minLength 1
-   */
-  mobile: string
-  /** 验证码Id */
-  codeId?: string | null
-  /**
-   * 验证码Id
-   * @minLength 1
-   */
-  captchaId: string
-  track: SlideTrack
-}
-
-/**
- * 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2
- * @format int32
- */
-export type Sex = 0 | 1 | 2
-
-export interface SlideTrack {
-  /** @format int32 */
-  backgroundImageWidth?: number
-  /** @format int32 */
-  backgroundImageHeight?: number
-  /** @format int32 */
-  sliderImageWidth?: number
-  /** @format int32 */
-  sliderImageHeight?: number
-  /** @format date-time */
-  startTime?: string
-  /** @format date-time */
-  endTime?: string
-  tracks?: Track[] | null
-  /** @format float */
-  percent?: number
-}
-
-/** 员工添加 */
-export interface StaffAddInput {
-  /** 工号 */
-  jobNumber?: string | null
-  /** 职位 */
-  position?: string | null
-  /** 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2 */
-  sex?: Sex
-  /**
-   * 入职时间
-   * @format date-time
-   */
-  entryTime?: string | null
-  /** 企业微信名片 */
-  workWeChatCard?: string | null
-  /** 个人简介 */
-  introduce?: string | null
-}
-
-/** 添加 */
-export interface TaskAddInput {
-  /** 任务标题 */
-  topic?: string | null
-  /** 任务数据 */
-  body?: string | null
-  /**
-   * 任务执行多少轮,-1为永久循环
-   * @format int32
-   */
-  round?: number
-  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
-  interval?: TaskInterval
-  /** 定时参数值 60,60,60,120,120,1200,1200 */
-  intervalArgument?: string | null
-}
-
-export interface TaskGetOutput {
-  /** 任务标题 */
-  topic?: string | null
-  /** 任务数据 */
-  body?: string | null
-  /**
-   * 任务执行多少轮,-1为永久循环
-   * @format int32
-   */
-  round?: number
-  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
-  interval?: TaskInterval
-  /** 定时参数值 60,60,60,120,120,1200,1200 */
-  intervalArgument?: string | null
-  /**
-   * 任务Id
-   * @minLength 1
-   */
-  id: string
-}
-
-export interface TaskGetPageDto {
-  /** 任务名称名称 */
-  topic?: string | null
-}
-
-/**
- * SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21
- * @format int32
- */
-export type TaskInterval = 1 | 11 | 12 | 13 | 21
-
-export interface TaskListOutput {
-  /** 主键 */
-  id?: string | null
-  /** 任务标题 */
-  topic?: string | null
-  /** 任务数据 */
-  body?: string | null
-  /**
-   * 任务执行多少轮
-   * @format int32
-   */
-  round?: number
-  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
-  interval?: TaskInterval
-  /** 定时参数值 */
-  intervalArgument?: string | null
-  /** Running=0,Paused=1,Completed=2 */
-  status?: TaskStatus
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createTime?: string
-  /**
-   * 最后运行时间
-   * @format date-time
-   */
-  lastRunTime?: string
-  /**
-   * 当前运行到第几轮
-   * @format int32
-   */
-  currentRound?: number
-  /**
-   * 错次数
-   * @format int32
-   */
-  errorTimes?: number
-}
-
-export interface TaskLog {
-  taskId?: string | null
-  /** @format int32 */
-  round?: number
-  /** @format int64 */
-  elapsedMilliseconds?: number
-  success?: boolean
-  exception?: string | null
-  remark?: string | null
-  /** @format date-time */
-  createTime?: string
-}
-
-export interface TaskLogGetPageDto {
-  taskId?: string | null
-}
-
-/**
- * Running=0,Paused=1,Completed=2
- * @format int32
- */
-export type TaskStatus = 0 | 1 | 2
-
-/** 修改 */
-export interface TaskUpdateInput {
-  /** 任务标题 */
-  topic?: string | null
-  /** 任务数据 */
-  body?: string | null
-  /**
-   * 任务执行多少轮,-1为永久循环
-   * @format int32
-   */
-  round?: number
-  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
-  interval?: TaskInterval
-  /** 定时参数值 60,60,60,120,120,1200,1200 */
-  intervalArgument?: string | null
-  /**
-   * 任务Id
-   * @minLength 1
-   */
-  id: string
-}
-
-/** 添加 */
-export interface TenantAddInput {
-  /**
-   * 租户Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 企业名称
-   * @minLength 1
-   */
-  name: string
-  /**
-   * 编码
-   * @minLength 1
-   */
-  code: string
-  /** 套餐Ids */
-  pkgIds?: number[] | null
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  realName: string
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /** 密码 */
-  password?: string | null
-  /** 手机号码 */
-  phone?: string | null
-  /** 邮箱地址 */
-  email?: string | null
-  /** 数据库注册键 */
-  dbKey?: string | null
-  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
-  dbType?: DataType
-  /** 连接字符串 */
-  connectionString?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-}
-
-/** 租户 */
-export interface TenantEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 授权用户
-   * @format int64
-   */
-  userId?: number
-  /** 用户 */
-  user?: UserEntity
-  /**
-   * 授权部门
-   * @format int64
-   */
-  orgId?: number
-  /** 组织架构 */
-  org?: OrgEntity
-  /** 租户类型:Platform=1,Tenant=2 */
-  tenantType?: TenantType
-  /** 数据库注册键 */
-  dbKey?: string | null
-  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
-  dbType?: DataType
-  /** 连接字符串 */
-  connectionString?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-  /** 套餐列表 */
-  pkgs?: PkgEntity[] | null
-}
-
-export interface TenantGetOutput {
-  /**
-   * 企业名称
-   * @minLength 1
-   */
-  name: string
-  /**
-   * 编码
-   * @minLength 1
-   */
-  code: string
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  realName: string
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /** 密码 */
-  password?: string | null
-  /** 手机号码 */
-  phone?: string | null
-  /** 邮箱地址 */
-  email?: string | null
-  /** 数据库注册键 */
-  dbKey?: string | null
-  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
-  dbType?: DataType
-  /** 连接字符串 */
-  connectionString?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-  /**
-   * 租户Id
-   * @format int64
-   */
-  id: number
-  /** 套餐列表 */
-  pkgs?: PkgEntity[] | null
-  /** 套餐Ids */
-  pkgIds?: number[] | null
-}
-
-export interface TenantGetPageDto {
-  /** 企业名称 */
-  name?: string | null
-}
-
-export interface TenantListOutput {
-  /**
-   * 主键
-   * @format int64
-   */
-  id?: number
-  /** 企业名称 */
-  name?: string | null
-  /** 企业编码 */
-  code?: string | null
-  pkgs?: PkgEntity[] | null
-  /** 套餐 */
-  pkgNames?: string[] | null
-  /** 姓名 */
-  realName?: string | null
-  /** 账号 */
-  userName?: string | null
-  /** 手机号码 */
-  phone?: string | null
-  /** 邮箱地址 */
-  email?: string | null
-  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
-  dbType?: DataType
-  /** 数据库名称 */
-  dbTypeName?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-/** 设置启用 */
-export interface TenantSetEnableInput {
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number
-  /** 是否启用 */
-  enabled?: boolean
-}
-
-/**
- * 租户类型:Platform=1,Tenant=2
- * @format int32
- */
-export type TenantType = 1 | 2
-
-/** 修改 */
-export interface TenantUpdateInput {
-  /**
-   * 企业名称
-   * @minLength 1
-   */
-  name: string
-  /**
-   * 编码
-   * @minLength 1
-   */
-  code: string
-  /** 套餐Ids */
-  pkgIds?: number[] | null
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  realName: string
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /** 密码 */
-  password?: string | null
-  /** 手机号码 */
-  phone?: string | null
-  /** 邮箱地址 */
-  email?: string | null
-  /** 数据库注册键 */
-  dbKey?: string | null
-  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
-  dbType?: DataType
-  /** 连接字符串 */
-  connectionString?: string | null
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-  /**
-   * 租户Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface Track {
-  /** @format int32 */
-  x?: number
-  /** @format int32 */
-  y?: number
-  /** @format int32 */
-  t?: number
-}
-
-/** 添加 */
-export interface UserAddInput {
-  /**
-   * 用户Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  name: string
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /** 角色Ids */
-  roleIds?: number[] | null
-  /** 所属部门Ids */
-  orgIds?: number[] | null
-  /**
-   * 主属部门Id
-   * @format int64
-   */
-  orgId?: number
-  /**
-   * 直属主管Id
-   * @format int64
-   */
-  managerUserId?: number | null
-  /** 直属主管姓名 */
-  managerUserName?: string | null
-  /** 员工添加 */
-  staff?: StaffAddInput
-  /** 密码 */
-  password?: string | null
-  /** 启用 */
-  enabled?: boolean
-}
-
-/** 添加会员 */
-export interface UserAddMemberInput {
-  /**
-   * 会员Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /** 姓名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /**
-   * 密码
-   * @minLength 1
-   */
-  password: string
-  /** 用户状态:WaitChangePasssword=2,WaitActive=3 */
-  status?: UserStatus
-}
-
-/** 修改密码 */
-export interface UserChangePasswordInput {
-  /**
-   * 旧密码
-   * @minLength 1
-   */
-  oldPassword: string
-  /**
-   * 新密码
-   * @minLength 1
-   */
-  newPassword: string
-  /**
-   * 确认新密码
-   * @minLength 1
-   */
-  confirmPassword: string
-}
-
-/** 用户 */
-export interface UserEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number | null
-  /** 租户 */
-  tenant?: TenantEntity
-  /** 账号 */
-  userName?: string | null
-  /** 密码 */
-  password?: string | null
-  /** 密码加密类型:MD5Encrypt32=0,PasswordHasher=1 */
-  passwordEncryptType?: PasswordEncryptType
-  /** 姓名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /**
-   * 主属部门Id
-   * @format int64
-   */
-  orgId?: number
-  /** 组织架构 */
-  org?: OrgEntity
-  /**
-   * 直属主管Id
-   * @format int64
-   */
-  managerUserId?: number | null
-  /** 用户 */
-  managerUser?: UserEntity
-  /** 昵称 */
-  nickName?: string | null
-  /** 头像 */
-  avatar?: string | null
-  /** 用户状态:WaitChangePasssword=2,WaitActive=3 */
-  status?: UserStatus
-  /** 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100 */
-  type?: UserType
-  /** 启用 */
-  enabled?: boolean
-  /** 角色列表 */
-  roles?: RoleEntity[] | null
-  /** 部门列表 */
-  orgs?: OrgEntity[] | null
-  /** 用户员工 */
-  staff?: UserStaffEntity
-}
-
-export interface UserGetBasicOutput {
-  /** 头像 */
-  avatar?: string | null
-  /** 姓名 */
-  name?: string | null
-  /** 昵称 */
-  nickName?: string | null
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-}
-
-export interface UserGetOrgDto {
-  /** @format int64 */
-  id?: number
-  name?: string | null
-}
-
-export interface UserGetOutput {
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  name: string
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /**
-   * 主属部门Id
-   * @format int64
-   */
-  orgId?: number
-  /**
-   * 直属主管Id
-   * @format int64
-   */
-  managerUserId?: number | null
-  /** 直属主管姓名 */
-  managerUserName?: string | null
-  /** 员工添加 */
-  staff?: StaffAddInput
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-  /** 角色列表 */
-  roles?: UserGetRoleDto[] | null
-  /** 部门列表 */
-  orgs?: UserGetOrgDto[] | null
-  /** 所属部门Ids */
-  orgIds?: number[] | null
-  /** 角色Ids */
-  roleIds?: number[] | null
-}
-
-/** 用户分页查询条件 */
-export interface UserGetPageDto {
-  /**
-   * 部门Id
-   * @format int64
-   */
-  orgId?: number | null
-}
-
-export interface UserGetPageOutput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 账号 */
-  userName?: string | null
-  /** 姓名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /** 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100 */
-  type?: UserType
-  roles?: RoleEntity[] | null
-  /** 角色 */
-  roleNames?: string[] | null
-  /** 是否主管 */
-  isManager?: boolean
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-}
-
-export interface UserGetRoleDto {
-  /** @format int64 */
-  id?: number
-  name?: string | null
-}
-
-export interface UserPermissionsOutput {
-  httpMethods?: string | null
-  path?: string | null
-}
-
-/** 重置密码 */
-export interface UserResetPasswordInput {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /** 密码 */
-  password?: string | null
-}
-
-/** 设置启用 */
-export interface UserSetEnableInput {
-  /**
-   * 用户Id
-   * @format int64
-   */
-  userId?: number
-  /** 是否启用 */
-  enabled?: boolean
-}
-
-/** 设置主管 */
-export interface UserSetManagerInput {
-  /**
-   * 用户Id
-   * @format int64
-   */
-  userId?: number
-  /**
-   * 部门Id
-   * @format int64
-   */
-  orgId?: number
-  /** 是否主管 */
-  isManager?: boolean
-}
-
-/** 用户员工 */
-export interface UserStaffEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 租户Id
-   * @format int64
-   */
-  tenantId?: number | null
-  /** 职位 */
-  position?: string | null
-  /** 工号 */
-  jobNumber?: string | null
-  /** 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2 */
-  sex?: Sex
-  /**
-   * 入职时间
-   * @format date-time
-   */
-  entryTime?: string | null
-  /** 企业微信名片 */
-  workWeChatCard?: string | null
-  /** 个人简介 */
-  introduce?: string | null
-}
-
-/**
- * 用户状态:WaitChangePasssword=2,WaitActive=3
- * @format int32
- */
-export type UserStatus = 2 | 3
-
-/**
- * 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100
- * @format int32
- */
-export type UserType = 0 | 1 | 10 | 100
-
-/** 更新基本信息 */
-export interface UserUpdateBasicInput {
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  name: string
-  /** 昵称 */
-  nickName?: string | null
-}
-
-/** 修改 */
-export interface UserUpdateInput {
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /**
-   * 姓名
-   * @minLength 1
-   */
-  name: string
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /** 角色Ids */
-  roleIds?: number[] | null
-  /** 所属部门Ids */
-  orgIds?: number[] | null
-  /**
-   * 主属部门Id
-   * @format int64
-   */
-  orgId?: number
-  /**
-   * 直属主管Id
-   * @format int64
-   */
-  managerUserId?: number | null
-  /** 直属主管姓名 */
-  managerUserName?: string | null
-  /** 员工添加 */
-  staff?: StaffAddInput
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-/** 修改会员 */
-export interface UserUpdateMemberInput {
-  /**
-   * 账号
-   * @minLength 1
-   */
-  userName: string
-  /** 姓名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-  /** 邮箱 */
-  email?: string | null
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface ValidateResult {
-  /** Success=0,ValidateFail=1,Timeout=2 */
-  result?: ValidateResultType
-  message?: string | null
-}
-
-/**
- * Success=0,ValidateFail=1,Timeout=2
- * @format int32
- */
-export type ValidateResultType = 0 | 1 | 2
-
-/** 添加 */
-export interface ViewAddInput {
-  /**
-   * 所属节点
-   * @format int64
-   */
-  parentId?: number | null
-  /** 视图命名 */
-  name?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 视图路径 */
-  path?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 缓存 */
-  cache?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-}
-
-/** 视图管理 */
-export interface ViewEntity {
-  /**
-   * 主键Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 创建者Id
-   * @format int64
-   */
-  createdUserId?: number | null
-  /**
-   * 创建者
-   * @maxLength 50
-   */
-  createdUserName?: string | null
-  /**
-   * 创建时间
-   * @format date-time
-   */
-  createdTime?: string | null
-  /**
-   * 修改者Id
-   * @format int64
-   */
-  modifiedUserId?: number | null
-  /**
-   * 修改者
-   * @maxLength 50
-   */
-  modifiedUserName?: string | null
-  /**
-   * 修改时间
-   * @format date-time
-   */
-  modifiedTime?: string | null
-  /** 是否删除 */
-  isDeleted?: boolean
-  /**
-   * 所属节点
-   * @format int64
-   */
-  parentId?: number
-  /** 视图命名 */
-  name?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 视图路径 */
-  path?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 缓存 */
-  cache?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  childs?: ViewEntity[] | null
-}
-
-export interface ViewGetOutput {
-  /**
-   * 所属节点
-   * @format int64
-   */
-  parentId?: number | null
-  /** 视图命名 */
-  name?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 视图路径 */
-  path?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 缓存 */
-  cache?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 视图Id
-   * @format int64
-   */
-  id: number
-}
-
-export interface ViewListOutput {
-  /**
-   * 视图Id
-   * @format int64
-   */
-  id?: number
-  /**
-   * 视图父级
-   * @format int64
-   */
-  parentId?: number | null
-  /** 视图命名 */
-  name?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 视图路径 */
-  path?: string | null
-  /** 缓存 */
-  cache?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /** 说明 */
-  description?: string | null
-}
-
-export interface ViewSyncDto {
-  /** 视图命名 */
-  name?: string | null
-  /** 地址 */
-  path?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 缓存 */
-  cache?: boolean
-}
-
-export interface ViewSyncInput {
-  views?: ViewSyncDto[] | null
-}
-
-/** 修改 */
-export interface ViewUpdateInput {
-  /**
-   * 所属节点
-   * @format int64
-   */
-  parentId?: number | null
-  /** 视图命名 */
-  name?: string | null
-  /** 视图名称 */
-  label?: string | null
-  /** 视图路径 */
-  path?: string | null
-  /** 说明 */
-  description?: string | null
-  /** 缓存 */
-  cache?: boolean
-  /**
-   * 排序
-   * @format int32
-   */
-  sort?: number
-  /** 启用 */
-  enabled?: boolean
-  /**
-   * 视图Id
-   * @format int64
-   */
-  id: number
-}
-/** 应用权限-新增分组、菜单、权限点 */
-export interface oauthPermissionDto {
-  id: number
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 权限类型 */
-  type?: number | null
-  /** 图标 */
-  icon?: string | null
-  /** 排序 */
-  sort?: string|null
-  /** 应用id */
-  appID?: number
-  /** 视图id */
-  viewId?: number|null
-   /** 视图地址 */
-  viewPath?: string|null
-  /** 说明 */
-  // description?: string | null
-}
-/** 应用权限 */
-export interface OauthPermission {
-  /** 主键id */
-  id: number
-  /** 创建者id */
-  createdUserId: number
-  /** 创建者 */
-  createdUserName: string | null
-  /** 创建时间 */
-  createdTime: string | null
-  /** 修改者id */
-  modifiedUserId: number
-  /** 修改者 */
-  modifiedUserName: string | null
-  /** 修改时间 */
-  modifiedTime: string | null
-  /** 是否删除 */
-  isDeleted: boolean
-  /** 版本 */
-  version: number
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 权限名称 */
-  label?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 权限类型 */
-  type?: number | null
-  /** 图标 */
-  icon?: string | null
-  /** 排序 */
-  sort?: string|null
-  /** 应用id */
-  appID?: number
-  /** 视图id */
-  viewId?: string|null
-  /** 视图地址 */
-  viewPath?: string|null
-  /** 展开 */
-  opened?: boolean
-  /** 说明 */
-  // description?: string | null
-}
-/** 应用权限信息输出 */
-export interface ResultOutputListOauthPermission{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: OauthPermission[] | null
-}
-/** 应用请求参数 */
-export interface OauthApplyDto{
-  id: number
-  /** 应用id */
-  appid?: string
-  /** 应用名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 排序 */
-  sort?: string|null
-}
-/** 应用 */
-export interface OauthApply{
-  /** 主键id */
-  id: number
-  /** 创建者id */
-  createdUserId: number
-  /** 创建者 */
-  createdUserName: string | null
-  /** 创建时间 */
-  createdTime: string | null
-  /** 修改者id */
-  modifiedUserId: number
-  /** 修改者 */
-  modifiedUserName: string | null
-  /** 修改时间 */
-  modifiedTime: string | null
-  /** 是否删除 */
-  isDeleted: boolean
-  /** 版本 */
-  version: number
-  /** 应用id */
-  appid?: string
-  /** 应用名称 */
-  name?: string | null
-  /** 编码 */
-  code?: string | null
-  /** 排序 */
-  sort?: string|null
-}
-/** 应用信息输出 */
-export interface ResultOutputListOauthApply{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: OauthApply[] | null
-}
-/** 应用视图 */
-export interface OauthView{
-  /** 主键id */
-  id: number
-  /** 创建者id */
-  createdUserId: number
-  /** 创建者 */
-  createdUserName: string | null
-  /** 创建时间 */
-  createdTime: string | null
-  /** 修改者id */
-  modifiedUserId: number
-  /** 修改者 */
-  modifiedUserName: string | null
-  /** 修改时间 */
-  modifiedTime: string | null
-  /** 是否删除 */
-  isDeleted: boolean
-  /** 版本 */
-  version: number
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 视图名称 */
-  label?: string
-  /** 视图地址 */
-  path?: string | null
-  /** 排序 */
-  sort?: string|null
-  /** 应用id */
-  appID?: number
-}
-/** 应用视图信息输出 */
-export interface ResultOutputListOauthView{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: OauthView[] | null
-}
-/** 视图请求参数 */
-export interface OauthViewDto{
-  id: number
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 视图名称 */
-  label?: string
-  /** 视图地址 */
-  path?: string | null
-  /** 排序 */
-  sort?: string|null
-  /** 应用id */
-  appID?: string
-}
-/** 角色请求参数 */
-export interface OauthRoleDto{
-  id:number,
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 角色名称 */
-  name?: string
-  /** 编码 */
-  code?: string | null
-  /** 类型 */
-  type?:RoleType
-  /** 说明 */
-  description?:string|null
-  /** 排序 */
-  sort?: string|null
-}
-/** 应用角色 */
-export interface OauthRole{
-  /** 主键id */
-  id: number
-  /** 创建者id */
-  createdUserId: number
-  /** 创建者 */
-  createdUserName: string | null
-  /** 创建时间 */
-  createdTime: string | null
-  /** 修改者id */
-  modifiedUserId: number
-  /** 修改者 */
-  modifiedUserName: string | null
-  /** 修改时间 */
-  modifiedTime: string | null
-  /** 是否删除 */
-  isDeleted: boolean
-  /** 版本 */
-  version: number
-  /** 上一级分组 */
-  parentId?: string | null
-  /** 角色名称 */
-  name?: string
-  /** 编码 */
-  code?: string | null
-  /** 类型 */
-  type?:RoleType
-  /** 说明 */
-  description?:string|null
-  /** 排序 */
-  sort?: string|null
-  appid: number
-}
-/** 应用角色信息输出 */
-export interface ResultOutputListOauthRole{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: OauthRole[] | null
-}
-/** 操作日志信息 */
-export interface OauthOperationRecordGetPageOutPut{
-  /** 操作类型 */
-  operationType?: string |null
-  /** 模块名称 */
-  moduleName?: string | null
-  /** 描述 */
-  operationContent?: string | null
-  /** 操作前 */
-  beforeState?: string | null
-  /** 操作后 */
-  afterState?: string | null
-  /** 操作结果 */
-  result?: string | null
-  /** 操作人 */
-  createdUserName?: string | null
-  /** 操作时间 */
-  createdTime?: string | null
-}
-/** 操作日志输出信息 */
-export interface PageOutputOauthOperationRecordGetPageOutPut{
-  /** 数据总数 */
-  total?: number |null
-  /** 数据 */
-  list?: OauthOperationRecordGetPageOutPut[] | null
-}
-/** 操作日志信息输出 */
-export interface ResultOutputPageOutputOauthOperationRecordGetPageOutPut{
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: PageOutputOauthOperationRecordGetPageOutPut | null
-}
-
-export interface Filter {
-  /** 操作类型 */
-  operationType?: string |null
-  /** 模块名称 */
-  moduleName?: string | null
-  /** 操作人 */
-  createdUserName?: string | null
-  /** 操作时间 */
-  createdTime?: string | null
-}
-
-/** 操作日志分页信息输入 */
-export interface PageInputOperationGetPageDto {
-  /**
-   * 当前页标
-   * @format int32
-   */
-  currentPage?: number
-  /**
-   * 每页大小
-   * @format int32
-   */
-  pageSize?: number
-  filter?: Filter
-}
-/** 角色应用权限菜单输出 */
-export interface ResultOutputList {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: [] | null
-}
-/** 角色应用用户信息 */
-export interface UserDto {
-  /** 用户id */
-  id?: number | null
-  /** 用户名 */
-  name?: string | null
-  /** 手机号 */
-  mobile?: string | null
-}
-/** 角色应用用户信息输出 */
-export interface ResultOutputListUserDto {
-  /** 是否成功标记 */
-  success?: boolean
-  /** 编码 */
-  code?: string | null
-  /** 消息 */
-  msg?: string | null
-  /** 数据 */
-  data?: UserDto[] | null
-}
-
-
-
-
-
-
+/* eslint-disable */
+/* tslint:disable */
+/*
+ * ---------------------------------------------------------------
+ * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##
+ * ##                                                           ##
+ * ## AUTHOR: acacode                                           ##
+ * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
+ * ---------------------------------------------------------------
+ */
+
+/** 添加 */
+export interface ApiAddInput {
+  /**
+   * 所属模块
+   * @format int64
+   */
+  parentId?: number | null
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+/** 接口管理 */
+export interface ApiEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 所属模块
+   * @format int64
+   */
+  parentId?: number
+  /** 接口命名 */
+  name?: string | null
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  childs?: ApiEntity[] | null
+  permissions?: PermissionEntity[] | null
+}
+
+export interface ApiGetOutput {
+  /**
+   * 所属模块
+   * @format int64
+   */
+  parentId?: number | null
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 接口Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface ApiGetPageDto {
+  /** 接口名称 */
+  label?: string | null
+}
+
+export interface ApiListOutput {
+  /**
+   * 接口Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 接口父级
+   * @format int64
+   */
+  parentId?: number | null
+  /** 接口命名 */
+  name?: string | null
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+/** 接口同步Dto */
+export interface ApiSyncDto {
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 父级路径 */
+  parentPath?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+}
+
+/** 接口同步 */
+export interface ApiSyncInput {
+  apis?: ApiSyncDto[] | null
+}
+
+/** 修改 */
+export interface ApiUpdateInput {
+  /**
+   * 所属模块
+   * @format int64
+   */
+  parentId?: number | null
+  /** 接口名称 */
+  label?: string | null
+  /** 接口地址 */
+  path?: string | null
+  /** 接口提交方法 */
+  httpMethods?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 接口Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface AuthGetPasswordEncryptKeyOutput {
+  /** 缓存键 */
+  key?: string | null
+  /** 密码加密密钥 */
+  encyptKey?: string | null
+}
+
+export interface AuthGetUserInfoOutput {
+  /** 用户个人信息 */
+  user?: AuthUserProfileDto
+  /** 用户菜单列表 */
+  menus?: AuthUserMenuDto[] | null
+  /** 用户权限列表 */
+  permissions?: string[] | null
+}
+
+export interface AuthGetUserPermissionsOutput {
+  /** 用户个人信息 */
+  user?: AuthUserProfileDto
+  /** 用户权限列表 */
+  permissions?: string[] | null
+}
+
+/** 登录信息 */
+export interface AuthLoginInput {
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /**
+   * 密码
+   * @minLength 1
+   */
+  password: string
+  /** 密码键 */
+  passwordKey?: string | null
+  /** 验证码Id */
+  captchaId?: string | null
+  /** 验证码数据 */
+  captchaData?: string | null
+}
+
+/** 手机号登录信息 */
+export interface AuthMobileLoginInput {
+  /**
+   * 手机号
+   * @minLength 1
+   */
+  mobile: string
+  /**
+   * 验证码
+   * @minLength 1
+   */
+  code: string
+  /**
+   * 验证码Id
+   * @minLength 1
+   */
+  codeId: string
+}
+
+export interface AuthUserMenuDto {
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 路由地址 */
+  path?: string | null
+  /** 路由命名 */
+  name?: string | null
+  /** 视图地址 */
+  viewPath?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 图标 */
+  icon?: string | null
+  /** 打开 */
+  opened?: boolean | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 打开新窗口 */
+  newWindow?: boolean | null
+  /** 链接外显 */
+  external?: boolean | null
+  /** 是否缓存 */
+  isKeepAlive?: boolean
+  /** 是否固定 */
+  isAffix?: boolean
+  /** 链接地址 */
+  link?: string | null
+  /** 是否内嵌窗口 */
+  isIframe?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number | null
+}
+
+/** 用户个人信息 */
+export interface AuthUserProfileDto {
+  /** 账号 */
+  userName?: string | null
+  /** 姓名 */
+  name?: string | null
+  /** 昵称 */
+  nickName?: string | null
+  /** 头像 */
+  avatar?: string | null
+}
+
+export interface CaptchaData {
+  id?: string | null
+  backgroundImage?: string | null
+  sliderImage?: string | null
+}
+
+/**
+ * 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5
+ * @format int32
+ */
+export type DataScope = 1 | 2 | 3 | 4 | 5
+
+/**
+ * MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25
+ * @format int32
+ */
+export type DataType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25
+
+/** 添加字典 */
+export interface DictAddInput {
+  /**
+   * 字典类型Id
+   * @format int64
+   */
+  dictTypeId?: number
+  /**
+   * 字典名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典编码 */
+  code?: string | null
+  /** 字典值 */
+  value?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+}
+
+export interface DictGetListDto {
+  /** 字典类型编码 */
+  dictTypeCode?: string | null
+  /** 字典类型名称 */
+  dictTypeName?: string | null
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 字典名称 */
+  name?: string | null
+  /** 字典编码 */
+  code?: string | null
+  /** 字典值 */
+  value?: string | null
+}
+
+export interface DictGetOutput {
+  /**
+   * 字典类型Id
+   * @format int64
+   */
+  dictTypeId?: number
+  /**
+   * 字典名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典编码 */
+  code?: string | null
+  /** 字典值 */
+  value?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface DictGetPageDto {
+  /**
+   * 字典类型Id
+   * @format int64
+   */
+  dictTypeId?: number
+  /** 字典名称 */
+  name?: string | null
+}
+
+export interface DictGetPageOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 字典名称 */
+  name?: string | null
+  /** 字典编码 */
+  code?: string | null
+  /** 字典值 */
+  value?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+}
+
+/** 添加字典类型 */
+export interface DictTypeAddInput {
+  /**
+   * 字典类型名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典类型编码 */
+  code?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+}
+
+export interface DictTypeGetOutput {
+  /**
+   * 字典类型名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典类型编码 */
+  code?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface DictTypeGetPageDto {
+  /** 字典名称 */
+  name?: string | null
+}
+
+export interface DictTypeGetPageOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 字典名称 */
+  name?: string | null
+  /** 字典编码 */
+  code?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+}
+
+/** 修改 */
+export interface DictTypeUpdateInput {
+  /**
+   * 字典类型名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典类型编码 */
+  code?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 修改 */
+export interface DictUpdateInput {
+  /**
+   * 字典类型Id
+   * @format int64
+   */
+  dictTypeId?: number
+  /**
+   * 字典名称
+   * @minLength 1
+   */
+  name: string
+  /** 字典编码 */
+  code?: string | null
+  /** 字典值 */
+  value?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface DocumentAddGroupInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 名称 */
+  label?: string | null
+  /** 命名 */
+  name?: string | null
+  /** 打开 */
+  opened?: boolean | null
+}
+
+export interface DocumentAddImageInput {
+  /**
+   * 用户Id
+   * @format int64
+   */
+  documentId?: number
+  /** 请求路径 */
+  url?: string | null
+}
+
+export interface DocumentAddMenuInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 命名 */
+  name?: string | null
+  /** 名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+}
+
+export interface DocumentGetContentOutput {
+  /**
+   * 编号
+   * @format int64
+   */
+  id?: number
+  /** 名称 */
+  label?: string | null
+  /** 内容 */
+  content?: string | null
+}
+
+export interface DocumentGetGroupOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 名称 */
+  label?: string | null
+  /** 命名 */
+  name?: string | null
+  /** 打开 */
+  opened?: boolean | null
+  /**
+   * 编号
+   * @format int64
+   */
+  id: number
+}
+
+export interface DocumentGetMenuOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 命名 */
+  name?: string | null
+  /** 名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 编号
+   * @format int64
+   */
+  id: number
+}
+
+export interface DocumentListOutput {
+  /**
+   * 编号
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  label?: string | null
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 命名 */
+  name?: string | null
+  /** 描述 */
+  description?: string | null
+  /** 组打开 */
+  opened?: boolean | null
+}
+
+/**
+ * 文档类型:Group=1,Markdown=2
+ * @format int32
+ */
+export type DocumentType = 1 | 2
+
+export interface DocumentUpdateContentInput {
+  /**
+   * 编号
+   * @format int64
+   */
+  id: number
+  /** 名称 */
+  label?: string | null
+  /** 内容 */
+  content?: string | null
+  /** Html */
+  html?: string | null
+}
+
+export interface DocumentUpdateGroupInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 名称 */
+  label?: string | null
+  /** 命名 */
+  name?: string | null
+  /** 打开 */
+  opened?: boolean | null
+  /**
+   * 编号
+   * @format int64
+   */
+  id: number
+}
+
+export interface DocumentUpdateMenuInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 文档类型:Group=1,Markdown=2 */
+  type?: DocumentType
+  /** 命名 */
+  name?: string | null
+  /** 名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 编号
+   * @format int64
+   */
+  id: number
+}
+
+
+export interface FileGetPageOutput {
+  /**
+   * 文件Id
+   * @format int64
+   */
+  id?: number
+  /** OSS供应商 */
+  providerName?: string | null
+  /** 存储桶名称 */
+  bucketName?: string | null
+  /** 文件目录 */
+  fileDirectory?: string | null
+  /**
+   * 文件Guid
+   * @format uuid
+   */
+  fileGuid?: string
+  /** 文件名 */
+  fileName?: string | null
+  /** 文件扩展名 */
+  extension?: string | null
+  /** 文件大小格式化 */
+  sizeFormat?: string | null
+  /** 链接地址 */
+  linkUrl?: string | null
+  /** 创建者 */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /** 修改者 */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+}
+
+export interface LogGetPageDto {
+  /** 创建者 */
+  createdUserName?: string | null
+}
+
+/** 添加 */
+export interface LoginLogAddInput {
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number | null
+  /** 姓名 */
+  name?: string | null
+  /** IP */
+  ip?: string | null
+  /** 浏览器 */
+  browser?: string | null
+  /** 操作系统 */
+  os?: string | null
+  /** 设备 */
+  device?: string | null
+  /** 浏览器信息 */
+  browserInfo?: string | null
+  /**
+   * 耗时(毫秒)
+   * @format int64
+   */
+  elapsedMilliseconds?: number
+  /** 操作状态 */
+  status?: boolean | null
+  /** 操作消息 */
+  msg?: string | null
+  /** 操作结果 */
+  result?: string | null
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /** 创建者 */
+  createdUserName?: string | null
+}
+
+export interface LoginLogListOutput {
+  /**
+   * 编号
+   * @format int64
+   */
+  id?: number
+  /** 昵称 */
+  nickName?: string | null
+  /** 创建者 */
+  createdUserName?: string | null
+  /** IP */
+  ip?: string | null
+  /** 浏览器 */
+  browser?: string | null
+  /** 操作系统 */
+  os?: string | null
+  /** 设备 */
+  device?: string | null
+  /**
+   * 耗时(毫秒)
+   * @format int64
+   */
+  elapsedMilliseconds?: number
+  /** 操作状态 */
+  status?: boolean
+  /** 操作消息 */
+  msg?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+
+
+/** 添加 */
+export interface OprationLogAddInput {
+  /** 姓名 */
+  name?: string | null
+  /** 接口名称 */
+  apiLabel?: string | null
+  /** 接口地址 */
+  apiPath?: string | null
+  /** 接口提交方法 */
+  apiMethod?: string | null
+  /** IP */
+  ip?: string | null
+  /** 浏览器 */
+  browser?: string | null
+  /** 操作系统 */
+  os?: string | null
+  /** 设备 */
+  device?: string | null
+  /** 浏览器信息 */
+  browserInfo?: string | null
+  /**
+   * 耗时(毫秒)
+   * @format int64
+   */
+  elapsedMilliseconds?: number
+  /** 操作状态 */
+  status?: boolean | null
+  /** 操作消息 */
+  msg?: string | null
+  /** 操作参数 */
+  params?: string | null
+  /** 操作结果 */
+  result?: string | null
+}
+
+export interface OprationLogListOutput {
+  /**
+   * 编号
+   * @format int64
+   */
+  id?: number
+  /** 昵称 */
+  nickName?: string | null
+  /** 创建者 */
+  createdUserName?: string | null
+  /** 接口名称 */
+  apiLabel?: string | null
+  /** 接口地址 */
+  apiPath?: string | null
+  /** 接口提交方法 */
+  apiMethod?: string | null
+  /** IP */
+  ip?: string | null
+  /** 浏览器 */
+  browser?: string | null
+  /** 操作系统 */
+  os?: string | null
+  /** 设备 */
+  device?: string | null
+  /**
+   * 耗时(毫秒)
+   * @format int64
+   */
+  elapsedMilliseconds?: number
+  /** 操作状态 */
+  status?: boolean
+  /** 操作消息 */
+  msg?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+/** 添加 */
+export interface OrgAddInput {
+  /**
+   * 父级
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 值 */
+  value?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+}
+
+/** 组织架构 */
+export interface OrgEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number | null
+  /**
+   * 父级
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 值 */
+  value?: string | null
+  /**
+   * 成员数
+   * @format int32
+   */
+  memberCount?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /** 员工列表 */
+  staffs?: UserStaffEntity[] | null
+  /** 用户列表 */
+  users?: UserEntity[] | null
+  /** 角色列表 */
+  roles?: RoleEntity[] | null
+  /** 子级列表 */
+  childs?: OrgEntity[] | null
+}
+
+export interface OrgGetOutput {
+  /**
+   * 父级
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 值 */
+  value?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface OrgListOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 值 */
+  value?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+/** 修改 */
+export interface OrgUpdateInput {
+  /**
+   * 父级
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 值 */
+  value?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 分页信息输入 */
+export interface PageInputApiGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: ApiGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputDictGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: DictGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputDictTypeGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: DictTypeGetPageDto
+}
+
+
+
+/** 分页信息输入 */
+export interface PageInputLogGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: LogGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputPkgGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: PkgGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputPkgGetPkgTenantListInput {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: PkgGetPkgTenantListInput
+}
+
+/** 分页信息输入 */
+export interface PageInputRoleGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: RoleGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputTaskGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: TaskGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputTaskLogGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: TaskLogGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputTenantGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  filter?: TenantGetPageDto
+}
+
+/** 分页信息输入 */
+export interface PageInputUserGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  dynamicFilter?: DynamicFilterInfo
+  /** 用户分页查询条件 */
+  filter?: UserGetPageDto
+}
+
+/** 分页信息输出 */
+export interface PageOutputApiEntity {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: ApiEntity[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputDictGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: DictGetPageOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputDictTypeGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: DictTypeGetPageOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputFileGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: FileGetPageOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputLoginLogListOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: LoginLogListOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputOprationLogListOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: OprationLogListOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputPkgGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: PkgGetPageOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputPkgGetPkgTenantListOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: PkgGetPkgTenantListOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputRoleGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: RoleGetPageOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputTaskListOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: TaskListOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputTaskLog {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: TaskLog[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputTenantListOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: TenantListOutput[] | null
+}
+
+/** 分页信息输出 */
+export interface PageOutputUserGetPageOutput {
+  /**
+   * 数据总数
+   * @format int64
+   */
+  total?: number
+  /** 数据 */
+  list?: UserGetPageOutput[] | null
+}
+
+/**
+ * 密码加密类型:MD5Encrypt32=0,PasswordHasher=1
+ * @format int32
+ */
+export type PasswordEncryptType = 0 | 1
+
+export interface PermissionAddApiInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 接口
+   * @format int64
+   */
+  apiId?: number | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+export interface PermissionAddDotInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 关联接口 */
+  apiIds?: number[] | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+export interface PermissionAddGroupInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 访问路由地址 */
+  path?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 展开 */
+  opened?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+export interface PermissionAddMenuInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 路由地址 */
+  path?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 打开新窗口 */
+  newWindow?: boolean
+  /** 链接外显 */
+  external?: boolean
+  /** 是否缓存 */
+  isKeepAlive?: boolean
+  /** 是否固定 */
+  isAffix?: boolean
+  /** 链接地址 */
+  link?: string | null
+  /** 是否内嵌窗口 */
+  isIframe?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+export interface PermissionAssignInput {
+  /** @format int64 */
+  roleId: number
+  permissionIds: number[]
+}
+
+/** 权限 */
+export interface PermissionEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 权限类型:Group=1,Menu=2,Dot=3 */
+  type?: PermissionType
+  /**
+   * 视图Id
+   * @format int64
+   */
+  viewId?: number | null
+  /** 视图管理 */
+  view?: ViewEntity
+  /** 路由命名 */
+  name?: string | null
+  /** 路由地址 */
+  path?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 图标 */
+  icon?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 展开分组 */
+  opened?: boolean
+  /** 打开新窗口 */
+  newWindow?: boolean
+  /** 链接外显 */
+  external?: boolean
+  /** 是否缓存 */
+  isKeepAlive?: boolean
+  /** 是否固定 */
+  isAffix?: boolean
+  /** 链接地址 */
+  link?: string | null
+  /** 是否内嵌窗口 */
+  isIframe?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  apis?: ApiEntity[] | null
+  childs?: PermissionEntity[] | null
+}
+
+export interface PermissionGetApiOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 接口
+   * @format int64
+   */
+  apiId?: number | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionGetDotOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 关联接口 */
+  apiIds?: number[] | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionGetGroupOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 访问路由地址 */
+  path?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 展开 */
+  opened?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionGetMenuOutput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 路由地址 */
+  path?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 打开新窗口 */
+  newWindow?: boolean
+  /** 链接外显 */
+  external?: boolean
+  /** 是否缓存 */
+  isKeepAlive?: boolean
+  /** 是否固定 */
+  isAffix?: boolean
+  /** 链接地址 */
+  link?: string | null
+  /** 是否内嵌窗口 */
+  isIframe?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionListOutput {
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 权限名称 */
+  label?: string | null
+  /** 权限类型:Group=1,Menu=2,Dot=3 */
+  type?: PermissionType
+  /** 路由地址 */
+  path?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 视图地址 */
+  viewPath?: string | null
+  /** 链接地址 */
+  link?: string | null
+  /** 接口路径 */
+  apiPaths?: string | null
+  /** 图标 */
+  icon?: string | null
+  /** 展开 */
+  opened?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number | null
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+}
+
+export interface PermissionSaveTenantPermissionsInput {
+  /** @format int64 */
+  tenantId: number
+  permissionIds: number[]
+}
+
+/**
+ * 权限类型:Group=1,Menu=2,Dot=3
+ * @format int32
+ */
+export type PermissionType = 1 | 2 | 3
+
+export interface PermissionUpdateApiInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 接口
+   * @format int64
+   */
+  apiId?: number | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionUpdateDotInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /** 关联接口 */
+  apiIds?: number[] | null
+  /** 权限名称 */
+  label?: string | null
+  /** 权限编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 图标 */
+  icon?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionUpdateGroupInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 访问路由地址 */
+  path?: string | null
+  /** 重定向地址 */
+  redirect?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 展开 */
+  opened?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PermissionUpdateMenuInput {
+  /**
+   * 父级节点
+   * @format int64
+   */
+  parentId?: number
+  /**
+   * 视图
+   * @format int64
+   */
+  viewId?: number | null
+  /** 路由命名 */
+  name?: string | null
+  /** 路由地址 */
+  path?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /** 图标 */
+  icon?: string | null
+  /** 打开新窗口 */
+  newWindow?: boolean
+  /** 链接外显 */
+  external?: boolean
+  /** 是否缓存 */
+  isKeepAlive?: boolean
+  /** 是否固定 */
+  isAffix?: boolean
+  /** 链接地址 */
+  link?: string | null
+  /** 是否内嵌窗口 */
+  isIframe?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 权限Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 添加 */
+export interface PkgAddInput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+/** 添加套餐租户列表 */
+export interface PkgAddPkgTenantListInput {
+  /**
+   * 套餐
+   * @format int64
+   */
+  pkgId: number
+  /** 租户列表 */
+  tenantIds?: number[] | null
+}
+
+/** 套餐 */
+export interface PkgEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 子级列表 */
+  childs?: PkgEntity[] | null
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 租户列表 */
+  tenants?: TenantEntity[] | null
+  /** 权限列表 */
+  permissions?: PermissionEntity[] | null
+}
+
+export interface PkgGetListOutput {
+  /**
+   * 主键
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+export interface PkgGetOutput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 套餐Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface PkgGetPageDto {
+  /** 名称 */
+  name?: string | null
+}
+
+export interface PkgGetPageOutput {
+  /**
+   * 主键
+   * @format int64
+   */
+  id?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+export interface PkgGetPkgTenantListInput {
+  /** 租户名 */
+  tenantName?: string | null
+  /**
+   * 套餐Id
+   * @format int64
+   */
+  pkgId?: number | null
+}
+
+export interface PkgGetPkgTenantListOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 租户名 */
+  name?: string | null
+  /** 租户编码 */
+  code?: string | null
+}
+
+export interface PkgSetPkgPermissionsInput {
+  /** @format int64 */
+  pkgId: number
+  permissionIds: number[]
+}
+
+/** 修改 */
+export interface PkgUpdateInput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 套餐Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 结果输出 */
+export interface ResultOutputApiGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: ApiGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputAuthGetPasswordEncryptKeyOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: AuthGetPasswordEncryptKeyOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputAuthGetUserInfoOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: AuthGetUserInfoOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputAuthGetUserPermissionsOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: AuthGetUserPermissionsOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputAuthUserProfileDto {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 用户个人信息 */
+  data?: AuthUserProfileDto
+}
+
+/** 结果输出 */
+export interface ResultOutputBoolean {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: boolean
+}
+
+/** 结果输出 */
+export interface ResultOutputCaptchaData {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: CaptchaData
+}
+
+/** 结果输出 */
+export interface ResultOutputDictGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: DictGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputDictTypeGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: DictTypeGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputDictionaryStringListDictGetListDto {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: Record<string, DictGetListDto[] | null>
+}
+
+/** 结果输出 */
+export interface ResultOutputDocumentGetContentOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: DocumentGetContentOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputDocumentGetGroupOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: DocumentGetGroupOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputDocumentGetMenuOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: DocumentGetMenuOutput
+}
+
+
+
+/** 结果输出 */
+export interface ResultOutputIEnumerableObject {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: any[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputIListUserPermissionsOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: UserPermissionsOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputInt64 {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /**
+   * 数据
+   * @format int64
+   */
+  data?: number
+}
+
+/** 结果输出 */
+export interface ResultOutputListApiListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: ApiListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListAuthUserMenuDto {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: AuthUserMenuDto[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListDocumentListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: DocumentListOutput[] | null
+}
+
+
+
+/** 结果输出 */
+export interface ResultOutputListInt64 {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: number[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListObject {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: any[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListOrgListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: OrgListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListPermissionListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: PermissionListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListPkgGetListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: PkgGetListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListPkgGetPkgTenantListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: PkgGetPkgTenantListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListRoleGetListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: RoleGetListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListRoleGetRoleUserListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: RoleGetRoleUserListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListString {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: string[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputListViewListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: ViewListOutput[] | null
+}
+
+/** 结果输出 */
+export interface ResultOutputObject {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: any
+}
+
+/** 结果输出 */
+export interface ResultOutputOrgGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: OrgGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputApiEntity {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputApiEntity
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputDictGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputDictGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputDictTypeGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputDictTypeGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputFileGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputFileGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputLoginLogListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputLoginLogListOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputOprationLogListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputOprationLogListOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputPkgGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputPkgGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputPkgGetPkgTenantListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputPkgGetPkgTenantListOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputRoleGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputRoleGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputTaskListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputTaskListOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputTaskLog {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputTaskLog
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputTenantListOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputTenantListOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPageOutputUserGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 分页信息输出 */
+  data?: PageOutputUserGetPageOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPermissionGetApiOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: PermissionGetApiOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPermissionGetDotOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: PermissionGetDotOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPermissionGetGroupOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: PermissionGetGroupOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPermissionGetMenuOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: PermissionGetMenuOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputPkgGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: PkgGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputRoleGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: RoleGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputString {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: string | null
+}
+
+/** 结果输出 */
+export interface ResultOutputTaskGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: TaskGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputTenantGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: TenantGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputUserGetBasicOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: UserGetBasicOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputUserGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: UserGetOutput
+}
+
+/** 结果输出 */
+export interface ResultOutputValidateResult {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: ValidateResult
+}
+
+/** 结果输出 */
+export interface ResultOutputViewGetOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  data?: ViewGetOutput
+}
+
+/** 添加 */
+export interface RoleAddInput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 角色类型:Group=1,Role=2 */
+  type?: RoleType
+  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
+  dataScope?: DataScope
+  /** 指定部门 */
+  orgIds?: number[] | null
+  /** 部门列表 */
+  orgs?: OrgEntity[] | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+}
+
+/** 添加角色用户列表 */
+export interface RoleAddRoleUserListInput {
+  /**
+   * 角色
+   * @format int64
+   */
+  roleId: number
+  /** 用户 */
+  userIds?: number[] | null
+}
+
+/** 角色 */
+export interface RoleEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number | null
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 子级列表 */
+  childs?: RoleEntity[] | null
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 角色类型:Group=1,Role=2 */
+  type?: RoleType
+  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
+  dataScope?: DataScope
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 用户列表 */
+  users?: UserEntity[] | null
+  /** 部门列表 */
+  orgs?: OrgEntity[] | null
+  /** 权限列表 */
+  permissions?: PermissionEntity[] | null
+}
+
+export interface RoleGetListOutput {
+  /**
+   * 主键
+   * @format int64
+   */
+  id?: number
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 角色类型:Group=1,Role=2 */
+  type?: RoleType
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 描述 */
+  description?: string | null
+}
+
+export interface RoleGetOutput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 角色类型:Group=1,Role=2 */
+  type?: RoleType
+  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
+  dataScope?: DataScope
+  /** 指定部门 */
+  orgIds?: number[] | null
+  /** 部门列表 */
+  orgs?: OrgEntity[] | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 角色Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface RoleGetPageDto {
+  /** 名称 */
+  name?: string | null
+}
+
+export interface RoleGetPageOutput {
+  /**
+   * 主键
+   * @format int64
+   */
+  id?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 隐藏 */
+  hidden?: boolean
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+export interface RoleGetRoleUserListOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 姓名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+}
+
+/** 设置数据范围 */
+export interface RoleSetDataScopeInput {
+  /**
+   * 角色Id
+   * @format int64
+   */
+  roleId: number
+  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
+  dataScope?: DataScope
+  /** 指定部门 */
+  orgIds?: number[] | null
+}
+
+/**
+ * 角色类型:Group=1,Role=2
+ * @format int32
+ */
+export type RoleType = 1 | 2
+
+/** 修改 */
+export interface RoleUpdateInput {
+  /**
+   * 父级Id
+   * @format int64
+   */
+  parentId?: number
+  /** 名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 角色类型:Group=1,Role=2 */
+  type?: RoleType
+  /** 数据范围:All=1,DeptWithChild=2,Dept=3,Self=4,Custom=5 */
+  dataScope?: DataScope
+  /** 指定部门 */
+  orgIds?: number[] | null
+  /** 部门列表 */
+  orgs?: OrgEntity[] | null
+  /** 说明 */
+  description?: string | null
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /**
+   * 角色Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 发送短信验证码 */
+export interface SendSmsCodeInput {
+  /**
+   * 手机号
+   * @minLength 1
+   */
+  mobile: string
+  /** 验证码Id */
+  codeId?: string | null
+  /**
+   * 验证码Id
+   * @minLength 1
+   */
+  captchaId: string
+  track: SlideTrack
+}
+
+/**
+ * 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2
+ * @format int32
+ */
+export type Sex = 0 | 1 | 2
+
+export interface SlideTrack {
+  /** @format int32 */
+  backgroundImageWidth?: number
+  /** @format int32 */
+  backgroundImageHeight?: number
+  /** @format int32 */
+  sliderImageWidth?: number
+  /** @format int32 */
+  sliderImageHeight?: number
+  /** @format date-time */
+  startTime?: string
+  /** @format date-time */
+  endTime?: string
+  tracks?: Track[] | null
+  /** @format float */
+  percent?: number
+}
+
+/** 员工添加 */
+export interface StaffAddInput {
+  /** 工号 */
+  jobNumber?: string | null
+  /** 职位 */
+  position?: string | null
+  /** 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2 */
+  sex?: Sex
+  /**
+   * 入职时间
+   * @format date-time
+   */
+  entryTime?: string | null
+  /** 企业微信名片 */
+  workWeChatCard?: string | null
+  /** 个人简介 */
+  introduce?: string | null
+}
+
+/** 添加 */
+export interface TaskAddInput {
+  /** 任务标题 */
+  topic?: string | null
+  /** 任务数据 */
+  body?: string | null
+  /**
+   * 任务执行多少轮,-1为永久循环
+   * @format int32
+   */
+  round?: number
+  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
+  interval?: TaskInterval
+  /** 定时参数值 60,60,60,120,120,1200,1200 */
+  intervalArgument?: string | null
+}
+
+export interface TaskGetOutput {
+  /** 任务标题 */
+  topic?: string | null
+  /** 任务数据 */
+  body?: string | null
+  /**
+   * 任务执行多少轮,-1为永久循环
+   * @format int32
+   */
+  round?: number
+  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
+  interval?: TaskInterval
+  /** 定时参数值 60,60,60,120,120,1200,1200 */
+  intervalArgument?: string | null
+  /**
+   * 任务Id
+   * @minLength 1
+   */
+  id: string
+}
+
+export interface TaskGetPageDto {
+  /** 任务名称名称 */
+  topic?: string | null
+}
+
+/**
+ * SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21
+ * @format int32
+ */
+export type TaskInterval = 1 | 11 | 12 | 13 | 21
+
+export interface TaskListOutput {
+  /** 主键 */
+  id?: string | null
+  /** 任务标题 */
+  topic?: string | null
+  /** 任务数据 */
+  body?: string | null
+  /**
+   * 任务执行多少轮
+   * @format int32
+   */
+  round?: number
+  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
+  interval?: TaskInterval
+  /** 定时参数值 */
+  intervalArgument?: string | null
+  /** Running=0,Paused=1,Completed=2 */
+  status?: TaskStatus
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createTime?: string
+  /**
+   * 最后运行时间
+   * @format date-time
+   */
+  lastRunTime?: string
+  /**
+   * 当前运行到第几轮
+   * @format int32
+   */
+  currentRound?: number
+  /**
+   * 错次数
+   * @format int32
+   */
+  errorTimes?: number
+}
+
+export interface TaskLog {
+  taskId?: string | null
+  /** @format int32 */
+  round?: number
+  /** @format int64 */
+  elapsedMilliseconds?: number
+  success?: boolean
+  exception?: string | null
+  remark?: string | null
+  /** @format date-time */
+  createTime?: string
+}
+
+export interface TaskLogGetPageDto {
+  taskId?: string | null
+}
+
+/**
+ * Running=0,Paused=1,Completed=2
+ * @format int32
+ */
+export type TaskStatus = 0 | 1 | 2
+
+/** 修改 */
+export interface TaskUpdateInput {
+  /** 任务标题 */
+  topic?: string | null
+  /** 任务数据 */
+  body?: string | null
+  /**
+   * 任务执行多少轮,-1为永久循环
+   * @format int32
+   */
+  round?: number
+  /** SEC=1,RunOnDay=11,RunOnWeek=12,RunOnMonth=13,Custom=21 */
+  interval?: TaskInterval
+  /** 定时参数值 60,60,60,120,120,1200,1200 */
+  intervalArgument?: string | null
+  /**
+   * 任务Id
+   * @minLength 1
+   */
+  id: string
+}
+
+/** 添加 */
+export interface TenantAddInput {
+  /**
+   * 租户Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 企业名称
+   * @minLength 1
+   */
+  name: string
+  /**
+   * 编码
+   * @minLength 1
+   */
+  code: string
+  /** 套餐Ids */
+  pkgIds?: number[] | null
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  realName: string
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /** 密码 */
+  password?: string | null
+  /** 手机号码 */
+  phone?: string | null
+  /** 邮箱地址 */
+  email?: string | null
+  /** 数据库注册键 */
+  dbKey?: string | null
+  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
+  dbType?: DataType
+  /** 连接字符串 */
+  connectionString?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+}
+
+/** 租户 */
+export interface TenantEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 授权用户
+   * @format int64
+   */
+  userId?: number
+  /** 用户 */
+  user?: UserEntity
+  /**
+   * 授权部门
+   * @format int64
+   */
+  orgId?: number
+  /** 组织架构 */
+  org?: OrgEntity
+  /** 租户类型:Platform=1,Tenant=2 */
+  tenantType?: TenantType
+  /** 数据库注册键 */
+  dbKey?: string | null
+  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
+  dbType?: DataType
+  /** 连接字符串 */
+  connectionString?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+  /** 套餐列表 */
+  pkgs?: PkgEntity[] | null
+}
+
+export interface TenantGetOutput {
+  /**
+   * 企业名称
+   * @minLength 1
+   */
+  name: string
+  /**
+   * 编码
+   * @minLength 1
+   */
+  code: string
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  realName: string
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /** 密码 */
+  password?: string | null
+  /** 手机号码 */
+  phone?: string | null
+  /** 邮箱地址 */
+  email?: string | null
+  /** 数据库注册键 */
+  dbKey?: string | null
+  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
+  dbType?: DataType
+  /** 连接字符串 */
+  connectionString?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+  /**
+   * 租户Id
+   * @format int64
+   */
+  id: number
+  /** 套餐列表 */
+  pkgs?: PkgEntity[] | null
+  /** 套餐Ids */
+  pkgIds?: number[] | null
+}
+
+export interface TenantGetPageDto {
+  /** 企业名称 */
+  name?: string | null
+}
+
+export interface TenantListOutput {
+  /**
+   * 主键
+   * @format int64
+   */
+  id?: number
+  /** 企业名称 */
+  name?: string | null
+  /** 企业编码 */
+  code?: string | null
+  pkgs?: PkgEntity[] | null
+  /** 套餐 */
+  pkgNames?: string[] | null
+  /** 姓名 */
+  realName?: string | null
+  /** 账号 */
+  userName?: string | null
+  /** 手机号码 */
+  phone?: string | null
+  /** 邮箱地址 */
+  email?: string | null
+  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
+  dbType?: DataType
+  /** 数据库名称 */
+  dbTypeName?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+/** 设置启用 */
+export interface TenantSetEnableInput {
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number
+  /** 是否启用 */
+  enabled?: boolean
+}
+
+/**
+ * 租户类型:Platform=1,Tenant=2
+ * @format int32
+ */
+export type TenantType = 1 | 2
+
+/** 修改 */
+export interface TenantUpdateInput {
+  /**
+   * 企业名称
+   * @minLength 1
+   */
+  name: string
+  /**
+   * 编码
+   * @minLength 1
+   */
+  code: string
+  /** 套餐Ids */
+  pkgIds?: number[] | null
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  realName: string
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /** 密码 */
+  password?: string | null
+  /** 手机号码 */
+  phone?: string | null
+  /** 邮箱地址 */
+  email?: string | null
+  /** 数据库注册键 */
+  dbKey?: string | null
+  /** MySql=0,SqlServer=1,PostgreSQL=2,Oracle=3,Sqlite=4,OdbcOracle=5,OdbcSqlServer=6,OdbcMySql=7,OdbcPostgreSQL=8,Odbc=9,OdbcDameng=10,MsAccess=11,Dameng=12,OdbcKingbaseES=13,ShenTong=14,KingbaseES=15,Firebird=16,Custom=17,ClickHouse=18,GBase=19,QuestDb=20,Xugu=21,CustomOracle=22,CustomSqlServer=23,CustomMySql=24,CustomPostgreSQL=25 */
+  dbType?: DataType
+  /** 连接字符串 */
+  connectionString?: string | null
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+  /**
+   * 租户Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface Track {
+  /** @format int32 */
+  x?: number
+  /** @format int32 */
+  y?: number
+  /** @format int32 */
+  t?: number
+}
+
+/** 添加 */
+export interface UserAddInput {
+  /**
+   * 用户Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  name: string
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /** 角色Ids */
+  roleIds?: number[] | null
+  /** 所属部门Ids */
+  orgIds?: number[] | null
+  /**
+   * 主属部门Id
+   * @format int64
+   */
+  orgId?: number
+  /**
+   * 直属主管Id
+   * @format int64
+   */
+  managerUserId?: number | null
+  /** 直属主管姓名 */
+  managerUserName?: string | null
+  /** 员工添加 */
+  staff?: StaffAddInput
+  /** 密码 */
+  password?: string | null
+  /** 启用 */
+  enabled?: boolean
+}
+
+/** 添加会员 */
+export interface UserAddMemberInput {
+  /**
+   * 会员Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /** 姓名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /**
+   * 密码
+   * @minLength 1
+   */
+  password: string
+  /** 用户状态:WaitChangePasssword=2,WaitActive=3 */
+  status?: UserStatus
+}
+
+/** 修改密码 */
+export interface UserChangePasswordInput {
+  /**
+   * 旧密码
+   * @minLength 1
+   */
+  oldPassword: string
+  /**
+   * 新密码
+   * @minLength 1
+   */
+  newPassword: string
+  /**
+   * 确认新密码
+   * @minLength 1
+   */
+  confirmPassword: string
+}
+
+/** 用户 */
+export interface UserEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number | null
+  /** 租户 */
+  tenant?: TenantEntity
+  /** 账号 */
+  userName?: string | null
+  /** 密码 */
+  password?: string | null
+  /** 密码加密类型:MD5Encrypt32=0,PasswordHasher=1 */
+  passwordEncryptType?: PasswordEncryptType
+  /** 姓名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /**
+   * 主属部门Id
+   * @format int64
+   */
+  orgId?: number
+  /** 组织架构 */
+  org?: OrgEntity
+  /**
+   * 直属主管Id
+   * @format int64
+   */
+  managerUserId?: number | null
+  /** 用户 */
+  managerUser?: UserEntity
+  /** 昵称 */
+  nickName?: string | null
+  /** 头像 */
+  avatar?: string | null
+  /** 用户状态:WaitChangePasssword=2,WaitActive=3 */
+  status?: UserStatus
+  /** 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100 */
+  type?: UserType
+  /** 启用 */
+  enabled?: boolean
+  /** 角色列表 */
+  roles?: RoleEntity[] | null
+  /** 部门列表 */
+  orgs?: OrgEntity[] | null
+  /** 用户员工 */
+  staff?: UserStaffEntity
+}
+
+export interface UserGetBasicOutput {
+  /** 头像 */
+  avatar?: string | null
+  /** 姓名 */
+  name?: string | null
+  /** 昵称 */
+  nickName?: string | null
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+}
+
+export interface UserGetOrgDto {
+  /** @format int64 */
+  id?: number
+  name?: string | null
+}
+
+export interface UserGetOutput {
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  name: string
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /**
+   * 主属部门Id
+   * @format int64
+   */
+  orgId?: number
+  /**
+   * 直属主管Id
+   * @format int64
+   */
+  managerUserId?: number | null
+  /** 直属主管姓名 */
+  managerUserName?: string | null
+  /** 员工添加 */
+  staff?: StaffAddInput
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+  /** 角色列表 */
+  roles?: UserGetRoleDto[] | null
+  /** 部门列表 */
+  orgs?: UserGetOrgDto[] | null
+  /** 所属部门Ids */
+  orgIds?: number[] | null
+  /** 角色Ids */
+  roleIds?: number[] | null
+}
+
+/** 用户分页查询条件 */
+export interface UserGetPageDto {
+  /**
+   * 部门Id
+   * @format int64
+   */
+  orgId?: number | null
+}
+
+export interface UserGetPageOutput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 账号 */
+  userName?: string | null
+  /** 姓名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /** 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100 */
+  type?: UserType
+  roles?: RoleEntity[] | null
+  /** 角色 */
+  roleNames?: string[] | null
+  /** 是否主管 */
+  isManager?: boolean
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+}
+
+export interface UserGetRoleDto {
+  /** @format int64 */
+  id?: number
+  name?: string | null
+}
+
+export interface UserPermissionsOutput {
+  httpMethods?: string | null
+  path?: string | null
+}
+
+/** 重置密码 */
+export interface UserResetPasswordInput {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /** 密码 */
+  password?: string | null
+}
+
+/** 设置启用 */
+export interface UserSetEnableInput {
+  /**
+   * 用户Id
+   * @format int64
+   */
+  userId?: number
+  /** 是否启用 */
+  enabled?: boolean
+}
+
+/** 设置主管 */
+export interface UserSetManagerInput {
+  /**
+   * 用户Id
+   * @format int64
+   */
+  userId?: number
+  /**
+   * 部门Id
+   * @format int64
+   */
+  orgId?: number
+  /** 是否主管 */
+  isManager?: boolean
+}
+
+/** 用户员工 */
+export interface UserStaffEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 租户Id
+   * @format int64
+   */
+  tenantId?: number | null
+  /** 职位 */
+  position?: string | null
+  /** 工号 */
+  jobNumber?: string | null
+  /** 性别:Unknown(未知)=0,Male(男)=1,Female(女)=2 */
+  sex?: Sex
+  /**
+   * 入职时间
+   * @format date-time
+   */
+  entryTime?: string | null
+  /** 企业微信名片 */
+  workWeChatCard?: string | null
+  /** 个人简介 */
+  introduce?: string | null
+}
+
+/**
+ * 用户状态:WaitChangePasssword=2,WaitActive=3
+ * @format int32
+ */
+export type UserStatus = 2 | 3
+
+/**
+ * 用户类型:Member=0,DefaultUser=1,TenantAdmin=10,PlatformAdmin=100
+ * @format int32
+ */
+export type UserType = 0 | 1 | 10 | 100
+
+/** 更新基本信息 */
+export interface UserUpdateBasicInput {
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  name: string
+  /** 昵称 */
+  nickName?: string | null
+}
+
+/** 修改 */
+export interface UserUpdateInput {
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /**
+   * 姓名
+   * @minLength 1
+   */
+  name: string
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /** 角色Ids */
+  roleIds?: number[] | null
+  /** 所属部门Ids */
+  orgIds?: number[] | null
+  /**
+   * 主属部门Id
+   * @format int64
+   */
+  orgId?: number
+  /**
+   * 直属主管Id
+   * @format int64
+   */
+  managerUserId?: number | null
+  /** 直属主管姓名 */
+  managerUserName?: string | null
+  /** 员工添加 */
+  staff?: StaffAddInput
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+/** 修改会员 */
+export interface UserUpdateMemberInput {
+  /**
+   * 账号
+   * @minLength 1
+   */
+  userName: string
+  /** 姓名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+  /** 邮箱 */
+  email?: string | null
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface ValidateResult {
+  /** Success=0,ValidateFail=1,Timeout=2 */
+  result?: ValidateResultType
+  message?: string | null
+}
+
+/**
+ * Success=0,ValidateFail=1,Timeout=2
+ * @format int32
+ */
+export type ValidateResultType = 0 | 1 | 2
+
+/** 添加 */
+export interface ViewAddInput {
+  /**
+   * 所属节点
+   * @format int64
+   */
+  parentId?: number | null
+  /** 视图命名 */
+  name?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 视图路径 */
+  path?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 缓存 */
+  cache?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+}
+
+/** 视图管理 */
+export interface ViewEntity {
+  /**
+   * 主键Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 创建者Id
+   * @format int64
+   */
+  createdUserId?: number | null
+  /**
+   * 创建者
+   * @maxLength 50
+   */
+  createdUserName?: string | null
+  /**
+   * 创建时间
+   * @format date-time
+   */
+  createdTime?: string | null
+  /**
+   * 修改者Id
+   * @format int64
+   */
+  modifiedUserId?: number | null
+  /**
+   * 修改者
+   * @maxLength 50
+   */
+  modifiedUserName?: string | null
+  /**
+   * 修改时间
+   * @format date-time
+   */
+  modifiedTime?: string | null
+  /** 是否删除 */
+  isDeleted?: boolean
+  /**
+   * 所属节点
+   * @format int64
+   */
+  parentId?: number
+  /** 视图命名 */
+  name?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 视图路径 */
+  path?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 缓存 */
+  cache?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  childs?: ViewEntity[] | null
+}
+
+export interface ViewGetOutput {
+  /**
+   * 所属节点
+   * @format int64
+   */
+  parentId?: number | null
+  /** 视图命名 */
+  name?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 视图路径 */
+  path?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 缓存 */
+  cache?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 视图Id
+   * @format int64
+   */
+  id: number
+}
+
+export interface ViewListOutput {
+  /**
+   * 视图Id
+   * @format int64
+   */
+  id?: number
+  /**
+   * 视图父级
+   * @format int64
+   */
+  parentId?: number | null
+  /** 视图命名 */
+  name?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 视图路径 */
+  path?: string | null
+  /** 缓存 */
+  cache?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /** 说明 */
+  description?: string | null
+}
+
+export interface ViewSyncDto {
+  /** 视图命名 */
+  name?: string | null
+  /** 地址 */
+  path?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 缓存 */
+  cache?: boolean
+}
+
+export interface ViewSyncInput {
+  views?: ViewSyncDto[] | null
+}
+
+/** 修改 */
+export interface ViewUpdateInput {
+  /**
+   * 所属节点
+   * @format int64
+   */
+  parentId?: number | null
+  /** 视图命名 */
+  name?: string | null
+  /** 视图名称 */
+  label?: string | null
+  /** 视图路径 */
+  path?: string | null
+  /** 说明 */
+  description?: string | null
+  /** 缓存 */
+  cache?: boolean
+  /**
+   * 排序
+   * @format int32
+   */
+  sort?: number
+  /** 启用 */
+  enabled?: boolean
+  /**
+   * 视图Id
+   * @format int64
+   */
+  id: number
+}
+/** 应用权限-新增分组、菜单、权限点 */
+export interface oauthPermissionDto {
+  id: number
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 权限类型 */
+  type?: number | null
+  /** 图标 */
+  icon?: string | null
+  /** 排序 */
+  sort?: string | null
+  /** 应用id */
+  appID?: number
+  /** 视图id */
+  viewId?: number | null
+  /** 视图地址 */
+  viewPath?: string | null
+  /** 说明 */
+  // description?: string | null
+}
+/** 应用权限 */
+export interface OauthPermission {
+  /** 主键id */
+  id: number
+  /** 创建者id */
+  createdUserId: number
+  /** 创建者 */
+  createdUserName: string | null
+  /** 创建时间 */
+  createdTime: string | null
+  /** 修改者id */
+  modifiedUserId: number
+  /** 修改者 */
+  modifiedUserName: string | null
+  /** 修改时间 */
+  modifiedTime: string | null
+  /** 是否删除 */
+  isDeleted: boolean
+  /** 版本 */
+  version: number
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 权限名称 */
+  label?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 权限类型 */
+  type?: number | null
+  /** 图标 */
+  icon?: string | null
+  /** 排序 */
+  sort?: string | null
+  /** 应用id */
+  appID?: number
+  /** 视图id */
+  viewId?: string | null
+  /** 视图地址 */
+  viewPath?: string | null
+  /** 展开 */
+  opened?: boolean
+  /** 说明 */
+  // description?: string | null
+}
+/** 应用权限信息输出 */
+export interface ResultOutputListOauthPermission {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: OauthPermission[] | null
+}
+/** 应用请求参数 */
+export interface OauthApplyDto {
+  id: number
+  /** 应用id */
+  appid?: string
+  /** 应用名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 排序 */
+  sort?: string | null
+  /** 最小可用版本 */
+  minVersion?: string | null
+}
+/** 应用 */
+export interface OauthApply {
+  /** 主键id */
+  id: number
+  /** 创建者id */
+  createdUserId: number
+  /** 创建者 */
+  createdUserName: string | null
+  /** 创建时间 */
+  createdTime: string | null
+  /** 修改者id */
+  modifiedUserId: number
+  /** 修改者 */
+  modifiedUserName: string | null
+  /** 修改时间 */
+  modifiedTime: string | null
+  /** 是否删除 */
+  isDeleted: boolean
+  /** 版本 */
+  version: number
+  /** 最小可用版本 */
+  minVersion: string | null
+  /** 应用id */
+  appid?: string
+  /** 应用名称 */
+  name?: string | null
+  /** 编码 */
+  code?: string | null
+  /** 排序 */
+  sort?: string | null
+}
+/** 应用信息输出 */
+export interface ResultOutputListOauthApply {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: OauthApply[] | null
+}
+/** 应用视图 */
+export interface OauthView {
+  /** 主键id */
+  id: number
+  /** 创建者id */
+  createdUserId: number
+  /** 创建者 */
+  createdUserName: string | null
+  /** 创建时间 */
+  createdTime: string | null
+  /** 修改者id */
+  modifiedUserId: number
+  /** 修改者 */
+  modifiedUserName: string | null
+  /** 修改时间 */
+  modifiedTime: string | null
+  /** 是否删除 */
+  isDeleted: boolean
+  /** 版本 */
+  version: number
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 视图名称 */
+  label?: string
+  /** 视图地址 */
+  path?: string | null
+  /** 排序 */
+  sort?: string | null
+  /** 应用id */
+  appID?: number
+}
+/** 应用视图信息输出 */
+export interface ResultOutputListOauthView {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: OauthView[] | null
+}
+/** 视图请求参数 */
+export interface OauthViewDto {
+  id: number
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 视图名称 */
+  label?: string
+  /** 视图地址 */
+  path?: string | null
+  /** 排序 */
+  sort?: string | null
+  /** 应用id */
+  appID?: string
+}
+/** 角色请求参数 */
+export interface OauthRoleDto {
+  id: number,
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 角色名称 */
+  name?: string
+  /** 编码 */
+  code?: string | null
+  /** 类型 */
+  type?: RoleType
+  /** 说明 */
+  description?: string | null
+  /** 排序 */
+  sort?: string | null
+}
+/** 应用角色 */
+export interface OauthRole {
+  /** 主键id */
+  id: number
+  /** 创建者id */
+  createdUserId: number
+  /** 创建者 */
+  createdUserName: string | null
+  /** 创建时间 */
+  createdTime: string | null
+  /** 修改者id */
+  modifiedUserId: number
+  /** 修改者 */
+  modifiedUserName: string | null
+  /** 修改时间 */
+  modifiedTime: string | null
+  /** 是否删除 */
+  isDeleted: boolean
+  /** 版本 */
+  version: number
+  /** 上一级分组 */
+  parentId?: string | null
+  /** 角色名称 */
+  name?: string
+  /** 编码 */
+  code?: string | null
+  /** 类型 */
+  type?: RoleType
+  /** 说明 */
+  description?: string | null
+  /** 排序 */
+  sort?: string | null
+  appid: number
+}
+/** 应用角色信息输出 */
+export interface ResultOutputListOauthRole {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: OauthRole[] | null
+}
+/** 操作日志信息 */
+export interface OauthOperationRecordGetPageOutPut {
+  /** 操作类型 */
+  operationType?: string | null
+  /** 模块名称 */
+  moduleName?: string | null
+  /** 描述 */
+  operationContent?: string | null
+  /** 操作前 */
+  beforeState?: string | null
+  /** 操作后 */
+  afterState?: string | null
+  /** 操作结果 */
+  result?: string | null
+  /** 操作人 */
+  createdUserName?: string | null
+  /** 操作时间 */
+  createdTime?: string | null
+}
+/** 操作日志输出信息 */
+export interface PageOutputOauthOperationRecordGetPageOutPut {
+  /** 数据总数 */
+  total?: number | null
+  /** 数据 */
+  list?: OauthOperationRecordGetPageOutPut[] | null
+}
+/** 操作日志信息输出 */
+export interface ResultOutputPageOutputOauthOperationRecordGetPageOutPut {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: PageOutputOauthOperationRecordGetPageOutPut | null
+}
+
+export interface Filter {
+  /** 操作类型 */
+  operationType?: string | null
+  /** 模块名称 */
+  moduleName?: string | null
+  /** 操作人 */
+  createdUserName?: string | null
+  /** 操作时间 */
+  createdTime?: string | null
+}
+
+/** 操作日志分页信息输入 */
+export interface PageInputOperationGetPageDto {
+  /**
+   * 当前页标
+   * @format int32
+   */
+  currentPage?: number
+  /**
+   * 每页大小
+   * @format int32
+   */
+  pageSize?: number
+  filter?: Filter
+}
+/** 角色应用权限菜单输出 */
+export interface ResultOutputList {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: [] | null
+}
+/** 角色应用用户信息 */
+export interface UserDto {
+  /** 用户id */
+  id?: number | null
+  /** 用户名 */
+  name?: string | null
+  /** 手机号 */
+  mobile?: string | null
+}
+/** 角色应用用户信息输出 */
+export interface ResultOutputListUserDto {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: UserDto[] | null
+}
+/** 设备管理查询信息输出基本格式 */
+export interface ResultOutputPageOutputEquipmentGetPageOutput {
+  /** 是否成功标记 */
+  success?: boolean
+  /** 编码 */
+  code?: string | null
+  /** 消息 */
+  msg?: string | null
+  /** 数据 */
+  data?: PageOutputEquipmentGetPageOutput[] | null
+}
+/** 设备管理分页查询信息输出 */
+export interface PageOutputEquipmentGetPageOutput {
+  /**
+  * 数据总数
+  * @format int64
+  */
+  total?: number
+  /** 数据 */
+  list?: EquipmentGetPageOutput[] | null
+}
+/** 设备管理查询信息输出 */
+export interface EquipmentGetPageOutput {
+  /** id */
+  id?: number
+  /** appid */
+  appid:string,
+  /** 设备sn */
+  sn?: string
+  /** 登录账户 */
+  account?: string
+  /** 设备状态 */
+  status?: number
+  /** 最近一次登录时间 */
+  loginTime?: string
+  /** 登录有效期 */
+  validityTime?: string
+  /** 备注 */
+  remark?: string
+
+}
+/** 设备管理分页 */
+export interface pageInput {
+  /**当前页数 */
+  CurrentPage: number | any
+  /**展示页数 */
+  PageSize: number | any
+}
+
+
+
+
+

+ 7 - 1
admin.ui.plus-master/src/views/admin/application/applicationManage/components/org-form.vue

@@ -26,6 +26,11 @@
               <el-input v-model="form.code" clearable />
             </el-form-item>
           </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+            <el-form-item label="最小版本" prop="code">
+              <el-input v-model="form.minVersion" clearable />
+            </el-form-item>
+          </el-col>
           <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
             <el-form-item label="排序">
               <el-input-number v-model="form.sort" />
@@ -69,7 +74,8 @@ const state = reactive({
     appid: '',
     name: '',
     code: '',
-    sort: ''
+    sort: '',
+    minVersion:'',
   } as OauthApplyDto,
 })
 

+ 1 - 0
admin.ui.plus-master/src/views/admin/application/applicationManage/index.vue

@@ -24,6 +24,7 @@
               <div class="flex delete" @click="onDelete(v)">X</div>
             </div>
             <div class="flex" style="flex: 1;">{{ v.name }}</div>
+            <div class="flex" style="flex: 1;">最小可用版本:{{ v.minVersion }}</div>
             <div class="flex" style="height: 50px;width: 100%;">
               <el-row style="width: 100%">
                 <el-col :span="8"><el-button style="width: 100%;height: 50px;border-radius: 0" type="primary" @click="toPermissPage(v)">权限</el-button></el-col>

+ 133 - 127
admin.ui.plus-master/src/views/example/application/applicationManage/components/org-form.vue

@@ -1,127 +1,133 @@
-<template>
-  <div>
-    <el-dialog
-      v-model="state.showDialog"
-      destroy-on-close
-      :title="title"
-      draggable
-      :close-on-click-modal="false"
-      :close-on-press-escape="false"
-      width="600px"
-    >
-      <el-form :model="form" ref="formRef" size="default" label-width="80px">
-        <el-row :gutter="35">
-          <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-            <el-form-item label="应用ID" prop="appid" :rules="[{ required: true, message: '请输入应用ID', trigger: ['blur', 'change'] }]">
-              <el-input v-model="form.appid" clearable />
-            </el-form-item>
-          </el-col> -->
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-            <el-form-item label="应用名称" prop="name" :rules="[{ required: true, message: '请输入应用名称', trigger: ['blur', 'change'] }]">
-              <el-input v-model="form.name" clearable />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
-            <el-form-item label="应用编码" prop="code">
-              <el-input v-model="form.code" clearable />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
-            <el-form-item label="排序">
-              <el-input-number v-model="form.sort" />
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="onCancel" size="default">取 消</el-button>
-          <el-button type="primary" @click="onSure" size="default" :loading="state.sureLoading">确 定</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-
-<script lang="ts" setup name="admin/org/form">
-import { reactive, toRefs, ref, PropType } from 'vue'
-import { OauthApplyDto,OauthApply } from '/@/api/admin/data-contracts'
-import { PermissionApi } from '/@/api/admin/Permission'
-import eventBus from '/@/utils/mitt'
-
-defineProps({
-  title: {
-    type: String,
-    default: '',
-  },
-  orgTreeData: {
-    type: Array as PropType<OauthApply[]>,
-    default: () => [],
-  },
-})
-
-const formRef = ref()
-const state = reactive({
-  showDialog: false,
-  sureLoading: false,
-  form: {
-    id:0,
-    appid: '',
-    name: '',
-    code: '',
-    sort: ''
-  } as OauthApplyDto,
-})
-
-const { form } = toRefs(state)
-
-// 打开对话框
-const open = async (row: any = {}) => {
-  // if (row.id > 0) {
-  //   const res = await new PermissionApi().getApplyInfo({ id: row.id }, { loading: true })
-
-  //   if (res?.success) {
-  //     let formData = res.data as OauthApplyDto
-  //     state.form = formData
-  //   }
-  // } else {
-  //   state.form = {} as OauthApplyDto
-  // }
-  state.form=row
-  state.showDialog = true
-}
-// 取消
-const onCancel = () => {
-  state.showDialog = false
-}
-
-// 确定
-const onSure = () => {
-  formRef.value.validate(async (valid: boolean) => {
-    if (!valid) return
-
-    state.sureLoading = true
-    let res = {} as any
-    if (state.form.id != undefined && state.form.id > 0) {
-      res = await new PermissionApi().addApply(state.form, { showSuccessMessage: true }).catch(() => {
-        state.sureLoading = false
-      })
-    } else {
-      res = await new PermissionApi().addApply(state.form, { showSuccessMessage: true }).catch(() => {
-        state.sureLoading = false
-      })
-    }
-
-    state.sureLoading = false
-
-    if (res?.success) {
-      eventBus.emit('refreshOrg')
-      state.showDialog = false
-    }
-  })
-}
-
-defineExpose({
-  open,
-})
-</script>
+<template>
+  <div>
+    <el-dialog
+      v-model="state.showDialog"
+      destroy-on-close
+      :title="title"
+      draggable
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      width="600px"
+    >
+      <el-form :model="form" ref="formRef" size="default" label-width="80px">
+        <el-row :gutter="35">
+          <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+            <el-form-item label="应用ID" prop="appid" :rules="[{ required: true, message: '请输入应用ID', trigger: ['blur', 'change'] }]">
+              <el-input v-model="form.appid" clearable />
+            </el-form-item>
+          </el-col> -->
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+            <el-form-item label="应用名称" prop="name" :rules="[{ required: true, message: '请输入应用名称', trigger: ['blur', 'change'] }]">
+              <el-input v-model="form.name" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+            <el-form-item label="应用编码" prop="code">
+              <el-input v-model="form.code" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+            <el-form-item label="最小版本" prop="code">
+              <el-input v-model="form.minVersion" clearable />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
+            <el-form-item label="排序">
+              <el-input-number v-model="form.sort" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <span class="dialog-footer">
+          <el-button @click="onCancel" size="default">取 消</el-button>
+          <el-button type="primary" @click="onSure" size="default" :loading="state.sureLoading">确 定</el-button>
+        </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script lang="ts" setup name="admin/org/form">
+import { reactive, toRefs, ref, PropType } from 'vue'
+import { OauthApplyDto,OauthApply } from '/@/api/admin/data-contracts'
+import { PermissionApi } from '/@/api/admin/Permission'
+import eventBus from '/@/utils/mitt'
+
+defineProps({
+  title: {
+    type: String,
+    default: '',
+  },
+  orgTreeData: {
+    type: Array as PropType<OauthApply[]>,
+    default: () => [],
+  },
+})
+
+const formRef = ref()
+const state = reactive({
+  showDialog: false,
+  sureLoading: false,
+  form: {
+    id:0,
+    appid: '',
+    name: '',
+    code: '',
+    sort: '',
+    minVersion:'',
+  } as OauthApplyDto,
+})
+
+const { form } = toRefs(state)
+
+// 打开对话框
+const open = async (row: any = {}) => {
+  // if (row.id > 0) {
+  //   const res = await new PermissionApi().getApplyInfo({ id: row.id }, { loading: true })
+
+  //   if (res?.success) {
+  //     let formData = res.data as OauthApplyDto
+  //     state.form = formData
+  //   }
+  // } else {
+  //   state.form = {} as OauthApplyDto
+  // }
+  state.form=row
+  state.showDialog = true
+}
+// 取消
+const onCancel = () => {
+  state.showDialog = false
+}
+
+// 确定
+const onSure = () => {
+  formRef.value.validate(async (valid: boolean) => {
+    if (!valid) return
+
+    state.sureLoading = true
+    let res = {} as any
+    if (state.form.id != undefined && state.form.id > 0) {
+      res = await new PermissionApi().addApply(state.form, { showSuccessMessage: true }).catch(() => {
+        state.sureLoading = false
+      })
+    } else {
+      res = await new PermissionApi().addApply(state.form, { showSuccessMessage: true }).catch(() => {
+        state.sureLoading = false
+      })
+    }
+
+    state.sureLoading = false
+
+    if (res?.success) {
+      eventBus.emit('refreshOrg')
+      state.showDialog = false
+    }
+  })
+}
+
+defineExpose({
+  open,
+})
+</script>

+ 151 - 145
admin.ui.plus-master/src/views/example/application/applicationManage/index.vue

@@ -1,145 +1,151 @@
-<template>
-  <div class="my-layout">
-    <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
-      <el-form :inline="true" @submit.stop.prevent>
-        <el-form-item label="应用名称">
-          <el-input v-model="state.filter.name" placeholder="应用名称" @keyup.enter="onQuery" />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-        </el-form-item>
-      </el-form>
-    </el-card>
-
-    <el-card class="my-fill mt8" shadow="never">
-      <el-row>
-        <el-col :span="6">
-          <div class="flex app appDdd" @click="onAdd">
-            <div class="flex appDdd" style="width: 100px;height: 100px;background-color: #EFEFEF;border-radius: 50%;font-size: 20px;">+</div>
-          </div>
-        </el-col>
-        <el-col :span="6" v-for="(v, k) in state.applyData" :key="k">
-          <div class="flex app">
-            <div style="display: flex;justify-content: space-between;align-items: flex-start;align-self: flex-end;">
-              <div class="flex delete" @click="onDelete(v)">X</div>
-            </div>
-            <div class="flex" style="flex: 1;">{{ v.name }}</div>
-            <div class="flex" style="height: 50px;width: 100%;">
-              <el-row style="width: 100%">
-                <el-col :span="8"><el-button style="width: 100%;height: 50px;border-radius: 0" type="primary" @click="toPermissPage(v)">权限</el-button></el-col>
-                <el-col :span="8"><el-button style="width: 98%;height: 50px;border-radius: 0;" type="primary" @click="toRolePage(v)">角色</el-button></el-col>
-                <el-col :span="8"><el-button style="width: 100%;height: 50px;border-radius: 0;" type="primary" @click="toViewPage(v)">视图</el-button></el-col>
-              </el-row>
-            </div>
-          </div>
-        </el-col>
-      </el-row>
-    </el-card>
-
-    <org-form ref="orgFormRef" :title="state.orgFormTitle" :org-tree-data="state.orgTreeData"></org-form>
-  </div>
-</template>
-
-<script lang="ts" setup name="admin/org">
-import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, defineAsyncComponent } from 'vue'
-import { OauthApply,OauthApplyDto } from '/@/api/admin/data-contracts'
-import { PermissionApi } from '/@/api/admin/Permission'
-import router from "/@/router";
-import eventBus from '/@/utils/mitt'
-import { auth } from '/@/utils/authFunction'
-
-// 引入组件
-const OrgForm = defineAsyncComponent(() => import('./components/org-form.vue'))
-
-const { proxy } = getCurrentInstance() as any
-
-const orgFormRef = ref()
-
-const state = reactive({
-  loading: false,
-  orgFormTitle: '',
-  filter: {
-    name: '',
-  }as OauthApplyDto,
-  applyData: [] as Array<OauthApply>,
-})
-
-onMounted(() => {
-  onQuery()
-  eventBus.off('refreshOrg')
-  eventBus.on('refreshOrg', () => {
-    onQuery()
-  })
-})
-
-onBeforeMount(() => {
-  eventBus.off('refreshOrg')
-})
-
-const onQuery = async () => {
-  state.loading = true
-  const res = await new PermissionApi().getApplyInfo(state.filter).catch(() => {
-    state.loading = false
-  })
-  state.applyData=res.data
-  state.loading=false
-}
-
-const onAdd = () => {
-  state.orgFormTitle = '新增应用'
-  orgFormRef.value.open()
-}
-
-const onEdit = (row: OauthApply) => {
-  state.orgFormTitle = '编辑应用'
-  orgFormRef.value.open(row)
-}
-
-const onDelete = (row: OauthApply) => {
-  proxy.$modal
-    .confirmDelete(`确定要删除应用【${row.name}】?`)
-    .then(async () => {
-      await new PermissionApi().applyDelete({ id: row.id }, { loading: true })
-      onQuery()
-    })
-    .catch(() => {})
-}
-const toRolePage = (row: OauthApply) => {
-  router.push({path:`/platform/application/roleManage/${row.name}`})
-}
-const toViewPage = (row: OauthApply) => {
-  router.push({path:`/platform/application/viewManage/${row.name}`})
-}
-const toPermissPage = (row: OauthApply) => {
-  router.push({path:`/platform/application/permissionManage/${row.name}`})
-}
-</script>
-
-<style scoped lang="scss">
-.flex{
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  text-align: center;
-}
-.app{
-  margin-left: 10px;
-  margin-bottom: 10px;
-  height: 175px;
-  border: #7728F5 solid 2px;
-}
-.appDdd{
-  border: #7728F5 dashed 1px;
-  cursor: default;
-}
-.delete{
-  width: 25px;
-  height: 25px;
-  border: #BBBBBB solid 2px;
-  border-radius: 50%;
-  color: #BBBBBB;
-  font-size: 25px;
-  cursor: default;
-}
-</style>
+<template>
+  <div class="my-layout">
+    <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
+      <el-form :inline="true" @submit.stop.prevent>
+        <el-form-item label="应用名称">
+          <el-input v-model="state.filter.name" placeholder="应用名称" @keyup.enter="onQuery" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <el-card class="my-fill mt8" shadow="never">
+      <el-row>
+        <el-col :span="6">
+          <div class="flex app appDdd" @click="onAdd">
+            <div class="flex appDdd" style="width: 100px;height: 100px;background-color: #EFEFEF;border-radius: 50%;font-size: 20px;">+</div>
+          </div>
+        </el-col>
+        <el-col :span="6" v-for="(v, k) in state.applyData" :key="k">
+          <div class="flex app">
+            <div style="display: flex;justify-content: space-between;align-items: flex-start;align-self: flex-end;">
+              <div class="flex delete" @click="onDelete(v)">X</div>
+            </div>
+            <div class="flex" style="flex: 1;">{{ v.name }}</div>
+            <div class="flex" style="flex: 1;">最小可用版本:{{ v.minVersion }}</div>
+            <div class="flex" style="height: 75px;width: 100%;">
+              <el-row style="width: 100%">
+                <el-col :span="8"><el-button style="width: 100%;height: 38px;border-radius: 0" type="primary" @click="toPermissPage(v)">权限</el-button></el-col>
+                <el-col :span="8"><el-button style="width: 98%;height: 38px;border-radius: 0;" type="primary" @click="toRolePage(v)">角色</el-button></el-col>
+                <el-col :span="8"><el-button style="width: 100%;height: 38px;border-radius: 0;" type="primary" @click="toViewPage(v)">视图</el-button></el-col>
+                <el-col :span="8"><el-button style="width: 100%;height: 38px;border-radius: 0;margin-top: 1%;" type="primary" @click="toEquipmentPage(v)">设备管理</el-button></el-col>
+                <el-col :span="8"><el-button style="width: 98%;height: 38px;border-radius: 0;margin-top: 1%;" type="primary" @click="onEdit(v)">修改</el-button></el-col>
+              </el-row>
+            </div>
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+
+    <org-form ref="orgFormRef" :title="state.orgFormTitle" :org-tree-data="state.orgTreeData"></org-form>
+  </div>
+</template>
+
+<script lang="ts" setup name="admin/org">
+import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, defineAsyncComponent } from 'vue'
+import { OauthApply,OauthApplyDto } from '/@/api/admin/data-contracts'
+import { PermissionApi } from '/@/api/admin/Permission'
+import router from "/@/router";
+import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
+
+// 引入组件
+const OrgForm = defineAsyncComponent(() => import('./components/org-form.vue'))
+
+const { proxy } = getCurrentInstance() as any
+
+const orgFormRef = ref()
+
+const state = reactive({
+  loading: false,
+  orgFormTitle: '',
+  filter: {
+    name: '',
+  }as OauthApplyDto,
+  applyData: [] as Array<OauthApply>,
+})
+
+onMounted(() => {
+  onQuery()
+  eventBus.off('refreshOrg')
+  eventBus.on('refreshOrg', () => {
+    onQuery()
+  })
+})
+
+onBeforeMount(() => {
+  eventBus.off('refreshOrg')
+})
+
+const onQuery = async () => {
+  state.loading = true
+  const res = await new PermissionApi().getApplyInfo(state.filter).catch(() => {
+    state.loading = false
+  })
+  state.applyData=res.data
+  state.loading=false
+}
+
+const onAdd = () => {
+  state.orgFormTitle = '新增应用'
+  orgFormRef.value.open()
+}
+
+const onEdit = (row: OauthApply) => {
+  state.orgFormTitle = '编辑应用'
+  orgFormRef.value.open(row)
+}
+
+const onDelete = (row: OauthApply) => {
+  proxy.$modal
+    .confirmDelete(`确定要删除应用【${row.name}】?`)
+    .then(async () => {
+      await new PermissionApi().applyDelete({ id: row.id }, { loading: true })
+      onQuery()
+    })
+    .catch(() => {})
+}
+const toRolePage = (row: OauthApply) => {
+  router.push({path:`/platform/application/roleManage/${row.name}`})
+}
+const toViewPage = (row: OauthApply) => {
+  router.push({path:`/platform/application/viewManage/${row.name}`})
+}
+const toPermissPage = (row: OauthApply) => {
+  router.push({path:`/platform/application/permissionManage/${row.name}`})
+}
+const toEquipmentPage = (row: OauthApply) => {
+  router.push({path:`/platform/application/equipment/${row.name}`})
+}
+</script>
+
+<style scoped lang="scss">
+.flex{
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  text-align: center;
+}
+.app{
+  margin-left: 10px;
+  margin-bottom: 10px;
+  height: 175px;
+  border: #7728F5 solid 2px;
+}
+.appDdd{
+  border: #7728F5 dashed 1px;
+  cursor: default;
+}
+.delete{
+  width: 25px;
+  height: 25px;
+  border: #BBBBBB solid 2px;
+  border-radius: 50%;
+  color: #BBBBBB;
+  font-size: 25px;
+  cursor: default;
+}
+</style>

+ 136 - 0
admin.ui.plus-master/src/views/example/application/equipment/components/equipment-edit.vue

@@ -0,0 +1,136 @@
+<template>
+    <div class="admin-authorize-editInfo">
+      <el-dialog :title="formData.titleText" v-model="formData.isShowing" draggable width="769px">
+        <el-form :model="formData.editData"
+                 :rules="rules"
+                 ref="formRef"
+                 v-loading="formData.loading"
+                 size="default"
+                 label-width="80px">
+          <el-row :gutter="35">
+            <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+              <el-form-item label="SN" prop="sn">
+                <el-input v-model="formData.editData.sn" :disabled="formData.opration != 'add'" placeholder="请输入sn"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+              <el-form-item label="账号" prop="account">
+                <el-input v-model="formData.editData.account" :disabled="formData.opration != 'add'" placeholder="请输入登录账号" clearable></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="状态" prop="status">
+              <el-select :disabled="formData.opration == 'delete'" v-model="formData.editData.status" placeholder="请设置设备状态" >
+                <el-option v-for="(value, key) in statusType" :key="key" :label="value.name"  :value="value.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+            <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+              <el-form-item  label="有效期" prop="validityTime">
+                <el-date-picker :disabled="formData.opration == 'delete'" v-model="formData.editData.validityTime" type="datetime"
+                                        value-format="YYYY-MM-DD HH:mm:ss" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <template #footer>
+          <span class="dialog-footer">
+            <el-button @click="onCancel" icon="ele-CircleClose" size="default">取 消</el-button>
+            <el-button type="primary" @click="onSubmit" size="default">确 认</el-button>
+          </span>
+        </template>
+      </el-dialog>
+    </div>
+  </template>
+  
+  <script setup lang="ts">
+  import {defineAsyncComponent, reactive, ref, watch, inject, computed} from "vue";
+  import {FormRules} from "element-plus";
+  import eventBus from "/@/utils/mitt";
+import { EquipmentGetPageOutput } from "/@/api/admin/data-contracts";
+import { PermissionApi } from "/@/api/admin/Permission";
+
+  /**数据对象 */
+  const formData = reactive({
+    isShowing:false,
+    loading: false,
+    opration:"add",
+    titleText:'',
+    editData:{} as EquipmentGetPageOutput
+  })
+
+  /**表单校验*/
+  const rules = reactive<FormRules>({
+    sn: [
+      { required: true, message: '请输入sn', trigger: 'blur' },
+    ],
+    account: [
+      { required: true, message: '请输入登录账户', trigger: 'blur' },
+    ],
+    status: [
+      { required: true, message: '请选择状态', trigger: 'blur' },
+    ],
+    validityTime: [
+      { required: true, message: '请确认有效期', trigger: 'blur' },
+    ]
+  })
+  
+  const statusType = reactive([
+    { name: "关闭", value: 0 }, // 红色表示关闭
+    { name: "开启", value: 1 }, // 绿色表示开启
+  ])
+  /**
+   * 表单对象
+   */
+  const formRef = ref()
+  
+  const openDialog = (opration:string,val:EquipmentGetPageOutput) => {
+    formData.isShowing = true
+    formData.opration = opration
+    if(opration == "edit"){
+      formData.editData = val
+      formData.titleText = '编辑设备'
+    } else if (opration == "delete") {
+      formData.editData = val
+      formData.titleText = '是否删除设备'
+    } else {
+      formData.editData = {} as EquipmentGetPageOutput
+      formData.titleText = '添加设备'
+      formData.editData.status = 1
+      formData.editData.appid = val.appid
+    }
+  }
+  
+  const onCancel = () => {
+    formData.editData = {} as EquipmentGetPageOutput
+  }
+
+  const onSubmit =  () => {
+    formRef.value.validate(async (valid: boolean) =>{
+      if(!valid) return
+
+      formData.loading = true
+
+      if(formData.opration == 'delete') {
+        let res = await new PermissionApi().deleteEquipment({id:formData.editData.id})
+      } else {
+        let request = JSON.parse(JSON.stringify(formData.editData)) 
+        let res = await new PermissionApi().uploadEquipment(request as EquipmentGetPageOutput)
+      }
+      
+      eventBus.emit('refreshView')
+
+      formData.editData = {} as EquipmentGetPageOutput
+      formData.loading = false
+      formData.isShowing = false
+    })
+  }
+  
+  defineExpose({
+    openDialog,
+  })
+  </script>
+  <style scoped lang="scss">
+  
+  </style>
+  

+ 194 - 0
admin.ui.plus-master/src/views/example/application/equipment/index.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="layout-pd">
+    <el-row>
+      <!--操作-->
+      <el-col :xs="24">
+        <el-card class="mt8" shadow="hover">
+          <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+            <el-form-item label="应用">
+              <el-input v-model="state.appName" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
+            </el-form-item>
+            <el-form-item prop="name" style="width: 100%">
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="设备sn">
+                  <el-input v-model="state.filter.SN" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="登录账户">
+                  <el-input v-model="state.filter.Account" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
+                <el-form-item label="设备状态">
+                  <el-input v-model="state.filter.Status" placeholder="单行输入" clearable></el-input>
+                </el-form-item>
+              </el-col>
+            </el-form-item>
+          </el-form>
+          <div class="my-flex my-flex-start">
+            <el-button type="primary" icon="ele-CirclePlus" @click="onQuery"> 查询 </el-button>
+            <el-button type="primary" icon="ele-CirclePlus" @click="onAdd"> 添加 </el-button>
+            <el-button type="primary" icon="ele-CirclePlus" @click="onReset"> 重置 </el-button>
+          </div>
+        </el-card>
+      </el-col>
+      <!--表格-->
+      <el-col :xs="24">
+        <el-card style="height: 70vh" class="my-fill mt8" shadow="hover">
+          <el-table v-loading="state.loading" stripe :data="state.tableModel" row-key="id" style="width: 100%">
+            <el-table-column v-for="column in state.dynamicColumns" :key="column.prop" :prop="column.prop"
+              :label="column.label">
+              <template #default="{ row }">
+                                <!-- 如果是状态列,使用 StatusBox 组件 -->
+                                <StatusBox 
+                                    v-if="column.prop === 'status'" 
+                                    :status="getStatusInfo(row[column.prop]).name"  />
+                                <!-- 其他列保持原有逻辑 -->
+                                <span v-else>
+                                    {{ row[column.prop] }}
+                                </span>
+                            </template>
+            </el-table-column>
+            <el-table-column label="操作" fixed="right" header-align="center" align="center" class="right-operation"
+              width="140">
+              <template #default="{ row }">
+                <el-link class="my-el-link mr12 ml12" type="primary" icon="ele-Upload" @click="onDateUpdate(row)"
+                  :underline="false" target="_blank">编辑</el-link>
+                <el-link class="my-el-link mr12 ml12" type="primary" icon="ele-Upload" @click="onDataDelete(row)"
+                  :underline="false" target="_blank">删除</el-link>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="my-flex my-flex-end" style="margin-top: 20px">
+            <el-pagination v-model:currentPage="state.pageInput.CurrentPage"
+                            v-model:page-size="state.pageInput.PageSize" :total="state.total"
+                            :page-sizes="[10, 15, 20, 50, 100]" small background @size-change="onSizeChange"
+                            @current-change="onCurrentChange" layout="total, sizes, prev, pager, next, jumper" />
+
+          </div>
+        </el-card>
+      </el-col>
+    </el-row>
+
+    <EquipmentEditDialog ref="equipmentEditRef"></EquipmentEditDialog>
+  </div>
+</template>
+<script setup lang="ts">
+import { defineAsyncComponent, onBeforeMount, onMounted, reactive, ref, watch } from "vue";
+import eventBus from "/@/utils/mitt";
+import { pageInput, EquipmentGetPageOutput } from "/@/api/admin/data-contracts";
+import { PermissionApi } from "/@/api/admin/Permission";
+import router from "/@/router";
+import StatusBox from "/@/components/StatusBox.vue";
+
+/**引入组件*/
+const EquipmentEditDialog = defineAsyncComponent(() => import('./components/equipment-edit.vue'))
+const equipmentEditRef = ref()
+
+/**数据对象*/
+const state = reactive({
+  /**加载显示 */
+  loading: false,
+  appName:"",
+  /**条件查询模块 */
+  filter: {
+    /** appid */
+    Appid:"",
+    /**设备sn */
+    SN: null,
+    /**登录账户 */
+    Account: null,
+    /**设备状态 */
+    Status: null,
+  },
+  /**表格信息 */
+  tableModel: [] as EquipmentGetPageOutput,
+  /**动态表头 */
+  dynamicColumns: [
+    { prop: 'sn', label: '设备sn' },
+    { prop: 'account', label: '登录账户' },
+    { prop: 'status', label: '设备状态' },
+    { prop: 'loginTime', label: '最近一次登录时间' },
+    { prop: 'validityTime', label: '登录有效期' },],
+  /**分页标识 */
+  pageInput: {
+    CurrentPage: 1,
+    PageSize: 10,
+  } as pageInput,
+  /**分页总数 */
+  total: 0,
+})
+
+// 状态映射表
+const statusMap = {
+  0: { name: "关闭", color: "#F56C6C" }, // 红色表示关闭
+  1: { name: "开启", color: "#67C23A" }, // 绿色表示开启
+};
+
+// 根据 status 值获取映射后的对象
+const getStatusInfo = (status: number) => {
+  return statusMap[status] || { name: "未知状态", color: "#000" };
+};
+
+onMounted(() => {
+  init()
+  eventBus.off('refreshView')
+  eventBus.on('refreshView', async () => {
+    await init()
+  })
+  console.log()
+})
+onBeforeMount(() => {
+  eventBus.off('refreshView')
+})
+/**
+* 监听变换
+*/
+// watch(() => { })
+/**条件查询 */
+const onQuery = async () => {
+  state.loading = true
+  const res: any = await new PermissionApi().getEquipmentList({ 
+    ...state.pageInput, 
+    "Filter.Appid":state.filter.Appid,
+    "Filter.SN":state.filter.SN,
+    "Filter.Account":state.filter.Account,
+    "Filter.Status":state.filter.Status,
+  })
+  state.total = res?.data?.total ?? 0
+  state.tableModel = res?.data?.list ?? []
+  state.loading = false
+}
+/**初始化 */
+const init = async () => {
+  state.loading = true
+  const name = router.currentRoute.value.params.id
+  const appData=await new PermissionApi().getApplyInfo({Name:name})
+  state.appName = appData.data[0].name
+  state.filter.Appid = appData.data[0].appid
+  state.loading = false
+  onQuery()
+}
+/**添加 */
+const onAdd = () => {
+  equipmentEditRef.value.openDialog('add',{appid:state.filter.Appid})
+}
+/**重置 */
+const onReset = () => { }
+/**编辑 */
+const onDateUpdate = (row) => {
+  equipmentEditRef.value.openDialog('edit',row)
+ }
+/**删除 */
+const onDataDelete = (row) => {
+  equipmentEditRef.value.openDialog('delete',row)
+ }
+
+const onSizeChange = () => {
+}
+
+const onCurrentChange = () => {
+}
+</script>
+<style scoped lang="scss"></style>

+ 373 - 373
admin.ui.plus-master/src/views/example/application/roleManage/index.vue

@@ -1,373 +1,373 @@
-<template>
-  <my-layout>
-    <pane size="50" min-size="30" max-size="70">
-      <div class="my-flex-column w100 h100">
-        <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
-          <el-form :inline="true" @submit.stop.prevent>
-            <el-form-item label="应用">
-              <el-input v-model="state.filter.app" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
-            </el-form-item>
-            <el-form-item label="角色名称">
-              <el-input v-model="state.filter.roleName" placeholder="角色名称" @keyup.enter="onQuery" />
-            </el-form-item>
-            <el-form-item>
-              <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-              <el-dropdown v-auth="'api:admin:role:add'" style="margin-left: 12px">
-                <el-button type="primary"
-                  >新增<el-icon class="el-icon--right"><ele-ArrowDown /></el-icon
-                ></el-button>
-                <template #dropdown>
-                  <el-dropdown-menu>
-                    <el-dropdown-item @click="onAdd(1)">新增分组</el-dropdown-item>
-                    <el-dropdown-item @click="onAdd(2)">新增角色</el-dropdown-item>
-                  </el-dropdown-menu>
-                </template>
-              </el-dropdown>
-            </el-form-item>
-          </el-form>
-        </el-card>
-
-        <el-card class="my-fill mt8" shadow="never">
-          <el-table
-            ref="roleTableRef"
-            v-loading="state.loading"
-            :data="state.roleTreeData"
-            row-key="id"
-            default-expand-all
-            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-            highlight-current-row
-            style="width: 100%"
-            @current-change="onCurrentChange"
-          >
-            <el-table-column prop="name" label="角色名称" min-width="120" show-overflow-tooltip />
-            <el-table-column prop="sort" label="排序" width="80" align="center" show-overflow-tooltip />
-            <el-table-column label="操作" width="100" fixed="right" header-align="center" align="right">
-              <template #default="{ row }">
-                <el-button
-                  v-if="row.type === 1"
-                  v-auth="'api:admin:role:add'"
-                  icon="ele-Plus"
-                  text
-                  type="primary"
-                  @click="onAdd(2, row)"
-                ></el-button>
-                <my-dropdown-more icon-only v-auths="['api:admin:permission:assign', 'api:admin:role:update', 'api:admin:role:delete']">
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item v-if="row.type === 2 && auth('api:admin:permission:assign')" @click="onSetAppMenu(row)"
-                        >菜单权限</el-dropdown-item
-                      >
-                      <!-- <el-dropdown-item v-if="row.type === 2" @click="onSetRoleDataScope(row)">数据权限</el-dropdown-item> -->
-                      <el-dropdown-item v-if="auth('api:admin:role:update')" @click="onEdit(row)"
-                        >编辑{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
-                      >
-                      <el-dropdown-item v-if="auth('api:admin:role:delete')" @click="onDelete(row)"
-                        >删除{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
-                      >
-                    </el-dropdown-menu>
-                  </template>
-                </my-dropdown-more>
-              </template>
-            </el-table-column>
-          </el-table>
-        </el-card>
-      </div>
-    </pane>
-    <pane>
-      <div class="my-flex-column w100 h100">
-        <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
-          <el-form :inline="true" @submit.stop.prevent>
-            <el-form-item label="姓名">
-              <el-input v-model="state.filter.name" placeholder="姓名" @keyup.enter="onGetRoleUserList" />
-            </el-form-item>
-            <el-form-item>
-              <el-button type="primary" icon="ele-Search" @click="onGetRoleUserList"> 查询 </el-button>
-              <el-button v-auth="'api:admin:role:add-role-user'" type="primary" icon="ele-Plus" @click="onAddUser"> 添加用户 </el-button>
-              <el-button v-auth="'api:admin:role:remove-role-user'" type="danger" icon="ele-Delete" @click="onRemoveUser"> 移除用户 </el-button>
-            </el-form-item>
-          </el-form>
-        </el-card>
-
-        <el-card class="my-fill mt8" shadow="never">
-          <el-table
-            ref="userTableRef"
-            v-loading="state.userListLoading"
-            :data="state.userListData"
-            row-key="id"
-            style="width: 100%"
-            @row-click="onUserRowClick"
-          >
-            <el-table-column type="selection" width="55" />
-            <el-table-column prop="name" label="姓名" min-width="120" show-overflow-tooltip />
-            <el-table-column prop="mobile" label="手机号" min-width="120" show-overflow-tooltip />
-            <!-- <el-table-column prop="email" label="邮箱" min-width="120" show-overflow-tooltip /> -->
-          </el-table>
-        </el-card>
-      </div>
-    </pane>
-
-    <role-form ref="roleFormRef" :title="state.roleFormTitle" :role-tree-data="state.roleFormTreeData"></role-form>
-    <user-select
-      ref="userSelectRef"
-      :title="`添加【${state.roleName}】用户`"
-      multiple
-      :sure-loading="state.sureLoading"
-      @sure="onSureUser"
-    ></user-select>
-    <set-app-menu ref="setAppMenuRef"></set-app-menu>
-    <set-role-menu ref="setRoleMenuRef"></set-role-menu>
-    <set-role-data-scope ref="setRoleDataScopeRef"></set-role-data-scope>
-  </my-layout>
-</template>
-
-<script lang="ts" setup name="admin/role">
-import router from "/@/router";
-import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, nextTick, defineAsyncComponent } from 'vue'
-import { OauthRole,RoleGetListOutput, RoleType,UserDto } from '/@/api/admin/data-contracts'
-import { RoleApi } from '/@/api/admin/Role'
-import { PermissionApi } from '/@/api/admin/Permission'
-import { listToTree, filterTree } from '/@/utils/tree'
-import { ElTable } from 'element-plus'
-import { cloneDeep } from 'lodash-es'
-import eventBus from '/@/utils/mitt'
-import { auth } from '/@/utils/authFunction'
-import { Pane } from 'splitpanes'
-
-// 引入组件
-const RoleForm = defineAsyncComponent(() => import('./components/role-form.vue'))
-const SetAppMenu = defineAsyncComponent(() => import('./components/set-app-menu.vue'))
-const UserSelect = defineAsyncComponent(() => import('./components/user-select.vue'))
-const MyDropdownMore = defineAsyncComponent(() => import('/@/components/my-dropdown-more/index.vue'))
-const MyLayout = defineAsyncComponent(() => import('/@/components/my-layout/index.vue'))
-const SetRoleMenu = defineAsyncComponent(() => import('./components/set-role-menu.vue'))
-const { proxy } = getCurrentInstance() as any
-
-const roleTableRef = ref()
-const roleFormRef = ref()
-const userTableRef = ref<InstanceType<typeof ElTable>>()
-const userSelectRef = ref()
-const setAppMenuRef = ref()
-const setRoleMenuRef = ref()
-const setRoleDataScopeRef = ref()
-
-const state = reactive({
-  loading: false,
-  userListLoading: false,
-  sureLoading: false,
-  roleFormTitle: '',
-  filter: {
-    name: '',
-    roleName: '',
-    app:''
-  },
-  roleTreeData: [] as any,
-  roleFormTreeData: [] as any,
-  userListData: [] as UserDto[],
-  roleId: undefined as number | undefined,
-  roleName: '' as string | null | undefined,
-  appid:undefined as number | undefined
-})
-
-onMounted(() => {
-  onQuery()
-  eventBus.off('refreshRole')
-  eventBus.on('refreshRole', async () => {
-    onQuery()
-  })
-})
-
-onBeforeMount(() => {
-  eventBus.off('refreshRole')
-})
-
-const onQuery = async () => {
-  state.loading = true
-  const name = router.currentRoute.value.params.id
-  const appData=await new PermissionApi().getApplyInfo({Name:name})
-  state.filter.app=appData.data[0].name
-  debugger
-  state.appid = appData.data[0].id
-  const res = await new PermissionApi().getRoleInfo({name:state.filter.roleName,AppID:appData.data[0].id}).catch(() => {
-    state.loading = false
-  })
-  res.data=res.data.map((item)=>{
-    item.parentId=Number(item.parentId)
-    if(item.parentId===0||item.parentId===null){
-      //item.parentId=Number('0')
-      item.type=1
-    }
-    // if(item.parentId===0){
-    //   //item.parentId=Number(item.parentId)
-    //   item.type=2
-    // }
-    // if(item.parentId!==0){
-    //   //item.parentId=Number(item.parentId)
-    //   item.type=3
-    // }
-    return item
-  })
-  if (res && res.data && res.data.length > 0) {
-    state.roleTreeData = filterTree(listToTree(cloneDeep(res.data)), state.filter.roleName)
-    state.roleFormTreeData = listToTree(cloneDeep(res.data).filter((a) => a.parentId === 0))
-    if (state.roleTreeData.length > 0 && state.roleTreeData[0].children?.length > 0) {
-      nextTick(() => {
-        roleTableRef.value!?.setCurrentRow(state.roleTreeData[0].children[0])
-      })
-    }
-  } else {
-    state.roleTreeData = []
-    state.roleFormTreeData = []
-  }
-
-  state.loading = false
-}
-
-const onAdd = (type: RoleType, row: OauthRole | undefined = undefined) => {
-  switch (type) {
-    case 1:
-      debugger
-      state.roleFormTitle = '新增分组'
-      roleFormRef.value.open({ type: 1 ,appid:state.appid})
-      break
-    case 2:
-      state.roleFormTitle = '新增角色'
-      roleFormRef.value.open({ type: 2, parentId: row?.id, dataScope: 1,appid:state.appid })
-      break
-  }
-}
-
-const onEdit = (row: OauthRole) => {
-  switch (row.type) {
-    case 1:
-      state.roleFormTitle = '编辑分组'
-      break
-    case 2:
-      state.roleFormTitle = '编辑角色'
-      break
-  }
-  roleFormRef.value.open(row)
-}
-
-const onDelete = (row: OauthRole) => {
-  proxy.$modal
-    .confirmDelete(`确定要删除角色【${row.name}】?`)
-    .then(async () => {
-      await new PermissionApi().roleDelete({ id: row.id }, { loading: true })
-      onQuery()
-    })
-    .catch(() => {})
-}
-
-const onGetRoleUserList = async () => {
-  state.userListLoading = true
-  const res = await new RoleApi().getApplyRoseUserInfo({ roleid: state.roleId, name: state.filter.name }).catch(() => {
-    state.userListLoading = false
-  })
-  state.userListLoading = false
-  if (res?.success) {
-    if (res.data && res.data.length > 0) {
-      state.userListData = res.data
-    } else {
-      state.userListData = []
-    }
-  }
-}
-
-const onCurrentChange = (currentRow: RoleGetListOutput, oldCurrentRow: RoleGetListOutput) => {
-  if (!currentRow) {
-    return
-  }
-
-  if (currentRow?.id !== oldCurrentRow?.id && (oldCurrentRow?.id as number) > 0) {
-    if ((currentRow?.parentId as number) === 0) {
-      roleTableRef.value!.setCurrentRow(oldCurrentRow)
-    }
-  } else {
-    if ((currentRow?.parentId as number) === 0) {
-      roleTableRef.value!.setCurrentRow()
-    }
-  }
-
-  if ((currentRow?.parentId as number) !== 0 && (oldCurrentRow?.parentId as number) !== 0 && (currentRow?.id as number) > 0) {
-    state.roleId = currentRow.id
-    state.roleName = currentRow.name
-    onGetRoleUserList()
-  }
-}
-
-const onUserRowClick = (row: UserDto) => {
-  // TODO: improvement typing when refactor table
-  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
-  // @ts-expect-error
-  userTableRef.value!.toggleRowSelection(row, undefined)
-}
-
-const onAddUser = () => {
-  if (!((state.roleId as number) > 0)) {
-    proxy.$modal.msgWarning('请选择角色')
-    return
-  }
-  userSelectRef.value.open({ roleId: state.roleId })
-}
-
-const onRemoveUser = () => {
-  if (!((state.roleId as number) > 0)) {
-    proxy.$modal.msgWarning('请选择角色')
-    return
-  }
-
-  const selectionRows = userTableRef.value!.getSelectionRows() as UserDto[]
-
-  if (!((selectionRows.length as number) > 0)) {
-    proxy.$modal.msgWarning('请选择用户')
-    return
-  }
-
-  proxy.$modal
-    .confirm(`确定要移除吗?`)
-    .then(async () => {
-      const userIds = selectionRows?.map((a) => ({id:a.id,name:a.name,mobile:a.mobile}))
-      await new RoleApi().deleteApplyRoseUser(userIds,{roleid:state.roleId} ,{ showSuccessMessage: true })
-      onGetRoleUserList()
-    })
-    .catch(() => {})
-}
-
-const onSureUser = async (users: UserDto[]) => {
-  if (!(users?.length > 0)) {
-    userSelectRef.value.close()
-    return
-  }
-
-  state.sureLoading = true
-  const userIds = users?.map((a) => ({id:a.id,name:a.name,mobile:a.mobile}))
-  await new RoleApi().addApplyRoseUser(userIds,{roleid:state.roleId} ,{ showSuccessMessage: true }).catch(() => {
-    state.sureLoading = false
-  })
-  state.sureLoading = false
-  userSelectRef.value.close()
-  onGetRoleUserList()
-}
-
-const onSetAppMenu = async (role: RoleGetListOutput) => {
-  if (!((role?.id as number) > 0)) {
-    proxy.$modal.msgWarning('请选择角色')
-    return
-  }
-  const input = { id: role.id, name:role.name }
-  const name = router.currentRoute.value.params.id
-  const appData=await new PermissionApi().getApplyInfo({Name:name})
-  console.log(appData.data)
-  setRoleMenuRef.value.open(input,appData.data[0].id)
-}
-
-const onSetRoleDataScope = (role: RoleGetListOutput) => {
-  if (!((role?.id as number) > 0)) {
-    proxy.$modal.msgWarning('请选择角色')
-    return
-  }
-  setRoleDataScopeRef.value.open(role)
-}
-</script>
-
-<style scoped lang="scss"></style>
+<template>
+  <my-layout>
+    <pane size="50" min-size="30" max-size="70">
+      <div class="my-flex-column w100 h100">
+        <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
+          <el-form :inline="true" @submit.stop.prevent>
+            <el-form-item label="应用">
+              <el-input v-model="state.filter.app" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
+            </el-form-item>
+            <el-form-item label="角色名称">
+              <el-input v-model="state.filter.roleName" placeholder="角色名称" @keyup.enter="onQuery" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+              <el-dropdown v-auth="'api:admin:role:add'" style="margin-left: 12px">
+                <el-button type="primary"
+                  >新增<el-icon class="el-icon--right"><ele-ArrowDown /></el-icon
+                ></el-button>
+                <template #dropdown>
+                  <el-dropdown-menu>
+                    <el-dropdown-item @click="onAdd(1)">新增分组</el-dropdown-item>
+                    <el-dropdown-item @click="onAdd(2)">新增角色</el-dropdown-item>
+                  </el-dropdown-menu>
+                </template>
+              </el-dropdown>
+            </el-form-item>
+          </el-form>
+        </el-card>
+
+        <el-card class="my-fill mt8" shadow="never">
+          <el-table
+            ref="roleTableRef"
+            v-loading="state.loading"
+            :data="state.roleTreeData"
+            row-key="id"
+            default-expand-all
+            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+            highlight-current-row
+            style="width: 100%"
+            @current-change="onCurrentChange"
+          >
+            <el-table-column prop="name" label="角色名称" min-width="120" show-overflow-tooltip />
+            <el-table-column prop="sort" label="排序" width="80" align="center" show-overflow-tooltip />
+            <el-table-column label="操作" width="100" fixed="right" header-align="center" align="right">
+              <template #default="{ row }">
+                <el-button
+                  v-if="row.type === 1"
+                  v-auth="'api:admin:role:add'"
+                  icon="ele-Plus"
+                  text
+                  type="primary"
+                  @click="onAdd(2, row)"
+                ></el-button>
+                <my-dropdown-more icon-only v-auths="['api:admin:permission:assign', 'api:admin:role:update', 'api:admin:role:delete']">
+                  <template #dropdown>
+                    <el-dropdown-menu>
+                      <el-dropdown-item v-if="row.type === 2 && auth('api:admin:permission:assign')" @click="onSetAppMenu(row)"
+                        >菜单权限</el-dropdown-item
+                      >
+                      <!-- <el-dropdown-item v-if="row.type === 2" @click="onSetRoleDataScope(row)">数据权限</el-dropdown-item> -->
+                      <el-dropdown-item v-if="auth('api:admin:role:update')" @click="onEdit(row)"
+                        >编辑{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
+                      >
+                      <el-dropdown-item v-if="auth('api:admin:role:delete')" @click="onDelete(row)"
+                        >删除{{ row.type === 1 ? '分组' : '角色' }}</el-dropdown-item
+                      >
+                    </el-dropdown-menu>
+                  </template>
+                </my-dropdown-more>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-card>
+      </div>
+    </pane>
+    <pane>
+      <div class="my-flex-column w100 h100">
+        <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
+          <el-form :inline="true" @submit.stop.prevent>
+            <el-form-item label="姓名">
+              <el-input v-model="state.filter.name" placeholder="姓名" @keyup.enter="onGetRoleUserList" />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" icon="ele-Search" @click="onGetRoleUserList"> 查询 </el-button>
+              <el-button v-auth="'api:admin:role:add-role-user'" type="primary" icon="ele-Plus" @click="onAddUser"> 添加用户 </el-button>
+              <el-button v-auth="'api:admin:role:remove-role-user'" type="danger" icon="ele-Delete" @click="onRemoveUser"> 移除用户 </el-button>
+            </el-form-item>
+          </el-form>
+        </el-card>
+
+        <el-card class="my-fill mt8" shadow="never">
+          <el-table
+            ref="userTableRef"
+            v-loading="state.userListLoading"
+            :data="state.userListData"
+            row-key="id"
+            style="width: 100%"
+            @row-click="onUserRowClick"
+          >
+            <el-table-column type="selection" width="55" />
+            <el-table-column prop="name" label="姓名" min-width="120" show-overflow-tooltip />
+            <el-table-column prop="mobile" label="手机号" min-width="120" show-overflow-tooltip />
+            <!-- <el-table-column prop="email" label="邮箱" min-width="120" show-overflow-tooltip /> -->
+          </el-table>
+        </el-card>
+      </div>
+    </pane>
+
+    <role-form ref="roleFormRef" :title="state.roleFormTitle" :role-tree-data="state.roleFormTreeData"></role-form>
+    <user-select
+      ref="userSelectRef"
+      :title="`添加【${state.roleName}】用户`"
+      multiple
+      :sure-loading="state.sureLoading"
+      @sure="onSureUser"
+    ></user-select>
+    <set-app-menu ref="setAppMenuRef"></set-app-menu>
+    <set-role-menu ref="setRoleMenuRef"></set-role-menu>
+    <set-role-data-scope ref="setRoleDataScopeRef"></set-role-data-scope>
+  </my-layout>
+</template>
+
+<script lang="ts" setup name="admin/role">
+import router from "/@/router";
+import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, nextTick, defineAsyncComponent } from 'vue'
+import { OauthRole,RoleGetListOutput, RoleType,UserDto } from '/@/api/admin/data-contracts'
+import { RoleApi } from '/@/api/admin/Role'
+import { PermissionApi } from '/@/api/admin/Permission'
+import { listToTree, filterTree } from '/@/utils/tree'
+import { ElTable } from 'element-plus'
+import { cloneDeep } from 'lodash-es'
+import eventBus from '/@/utils/mitt'
+import { auth } from '/@/utils/authFunction'
+import { Pane } from 'splitpanes'
+
+// 引入组件
+const RoleForm = defineAsyncComponent(() => import('./components/role-form.vue'))
+const SetAppMenu = defineAsyncComponent(() => import('./components/set-app-menu.vue'))
+const UserSelect = defineAsyncComponent(() => import('./components/user-select.vue'))
+const MyDropdownMore = defineAsyncComponent(() => import('/@/components/my-dropdown-more/index.vue'))
+const MyLayout = defineAsyncComponent(() => import('/@/components/my-layout/index.vue'))
+const SetRoleMenu = defineAsyncComponent(() => import('./components/set-role-menu.vue'))
+const { proxy } = getCurrentInstance() as any
+
+const roleTableRef = ref()
+const roleFormRef = ref()
+const userTableRef = ref<InstanceType<typeof ElTable>>()
+const userSelectRef = ref()
+const setAppMenuRef = ref()
+const setRoleMenuRef = ref()
+const setRoleDataScopeRef = ref()
+
+const state = reactive({
+  loading: false,
+  userListLoading: false,
+  sureLoading: false,
+  roleFormTitle: '',
+  filter: {
+    name: '',
+    roleName: '',
+    app:''
+  },
+  roleTreeData: [] as any,
+  roleFormTreeData: [] as any,
+  userListData: [] as UserDto[],
+  roleId: undefined as number | undefined,
+  roleName: '' as string | null | undefined,
+  appid:undefined as number | undefined
+})
+
+onMounted(() => {
+  onQuery()
+  eventBus.off('refreshRole')
+  eventBus.on('refreshRole', async () => {
+    onQuery()
+  })
+})
+
+onBeforeMount(() => {
+  eventBus.off('refreshRole')
+})
+
+const onQuery = async () => {
+  state.loading = true
+  const name = router.currentRoute.value.params.id
+  const appData=await new PermissionApi().getApplyInfo({Name:name})
+  state.filter.app=appData.data[0].name
+  debugger
+  state.appid = appData.data[0].id
+  const res = await new PermissionApi().getRoleInfo({name:state.filter.roleName,AppID:appData.data[0].id}).catch(() => {
+    state.loading = false
+  })
+  res.data=res.data.map((item)=>{
+    item.parentId=Number(item.parentId)
+    if(item.parentId===0||item.parentId===null){
+      //item.parentId=Number('0')
+      item.type=1
+    }
+    // if(item.parentId===0){
+    //   //item.parentId=Number(item.parentId)
+    //   item.type=2
+    // }
+    // if(item.parentId!==0){
+    //   //item.parentId=Number(item.parentId)
+    //   item.type=3
+    // }
+    return item
+  })
+  if (res && res.data && res.data.length > 0) {
+    state.roleTreeData = filterTree(listToTree(cloneDeep(res.data)), state.filter.roleName)
+    state.roleFormTreeData = listToTree(cloneDeep(res.data).filter((a) => a.parentId === 0))
+    if (state.roleTreeData.length > 0 && state.roleTreeData[0].children?.length > 0) {
+      nextTick(() => {
+        roleTableRef.value!?.setCurrentRow(state.roleTreeData[0].children[0])
+      })
+    }
+  } else {
+    state.roleTreeData = []
+    state.roleFormTreeData = []
+  }
+
+  state.loading = false
+}
+
+const onAdd = (type: RoleType, row: OauthRole | undefined = undefined) => {
+  switch (type) {
+    case 1:
+      debugger
+      state.roleFormTitle = '新增分组'
+      roleFormRef.value.open({ type: 1 ,appid:state.appid})
+      break
+    case 2:
+      state.roleFormTitle = '新增角色'
+      roleFormRef.value.open({ type: 2, parentId: row?.id, dataScope: 1,appid:state.appid })
+      break
+  }
+}
+
+const onEdit = (row: OauthRole) => {
+  switch (row.type) {
+    case 1:
+      state.roleFormTitle = '编辑分组'
+      break
+    case 2:
+      state.roleFormTitle = '编辑角色'
+      break
+  }
+  roleFormRef.value.open(row)
+}
+
+const onDelete = (row: OauthRole) => {
+  proxy.$modal
+    .confirmDelete(`确定要删除角色【${row.name}】?`)
+    .then(async () => {
+      await new PermissionApi().roleDelete({ id: row.id }, { loading: true })
+      onQuery()
+    })
+    .catch(() => {})
+}
+
+const onGetRoleUserList = async () => {
+  state.userListLoading = true
+  const res = await new RoleApi().getApplyRoseUserInfo({ roleid: state.roleId, name: state.filter.name }).catch(() => {
+    state.userListLoading = false
+  })
+  state.userListLoading = false
+  if (res?.success) {
+    if (res.data && res.data.length > 0) {
+      state.userListData = res.data
+    } else {
+      state.userListData = []
+    }
+  }
+}
+
+const onCurrentChange = (currentRow: RoleGetListOutput, oldCurrentRow: RoleGetListOutput) => {
+  if (!currentRow) {
+    return
+  }
+
+  if (currentRow?.id !== oldCurrentRow?.id && (oldCurrentRow?.id as number) > 0) {
+    if ((currentRow?.parentId as number) === 0) {
+      roleTableRef.value!.setCurrentRow(oldCurrentRow)
+    }
+  } else {
+    if ((currentRow?.parentId as number) === 0) {
+      roleTableRef.value!.setCurrentRow()
+    }
+  }
+
+  if ((currentRow?.parentId as number) !== 0 && (oldCurrentRow?.parentId as number) !== 0 && (currentRow?.id as number) > 0) {
+    state.roleId = currentRow.id
+    state.roleName = currentRow.name
+    onGetRoleUserList()
+  }
+}
+
+const onUserRowClick = (row: UserDto) => {
+  // TODO: improvement typing when refactor table
+  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+  // @ts-expect-error
+  userTableRef.value!.toggleRowSelection(row, undefined)
+}
+
+const onAddUser = () => {
+  if (!((state.roleId as number) > 0)) {
+    proxy.$modal.msgWarning('请选择角色')
+    return
+  }
+  userSelectRef.value.open({ roleId: state.roleId })
+}
+
+const onRemoveUser = () => {
+  if (!((state.roleId as number) > 0)) {
+    proxy.$modal.msgWarning('请选择角色')
+    return
+  }
+
+  const selectionRows = userTableRef.value!.getSelectionRows() as UserDto[]
+
+  if (!((selectionRows.length as number) > 0)) {
+    proxy.$modal.msgWarning('请选择用户')
+    return
+  }
+
+  proxy.$modal
+    .confirm(`确定要移除吗?`)
+    .then(async () => {
+      const userIds = selectionRows?.map((a) => ({id:a.id,name:a.name,mobile:a.mobile}))
+      await new RoleApi().deleteApplyRoseUser(userIds,{roleid:state.roleId} ,{ showSuccessMessage: true })
+      onGetRoleUserList()
+    })
+    .catch(() => {})
+}
+
+const onSureUser = async (users: UserDto[]) => {
+  if (!(users?.length > 0)) {
+    userSelectRef.value.close()
+    return
+  }
+
+  state.sureLoading = true
+  const userIds = users?.map((a) => ({id:a.id,name:a.name,mobile:a.mobile}))
+  await new RoleApi().addApplyRoseUser(userIds,{roleid:state.roleId} ,{ showSuccessMessage: true }).catch(() => {
+    state.sureLoading = false
+  })
+  state.sureLoading = false
+  userSelectRef.value.close()
+  onGetRoleUserList()
+}
+
+const onSetAppMenu = async (role: RoleGetListOutput) => {
+  if (!((role?.id as number) > 0)) {
+    proxy.$modal.msgWarning('请选择角色')
+    return
+  }
+  const input = { id: role.id, name:role.name }
+  const name = router.currentRoute.value.params.id
+  const appData=await new PermissionApi().getApplyInfo({Name:name})
+  console.log(appData.data)
+  setRoleMenuRef.value.open(input,appData.data[0].id)
+}
+
+const onSetRoleDataScope = (role: RoleGetListOutput) => {
+  if (!((role?.id as number) > 0)) {
+    proxy.$modal.msgWarning('请选择角色')
+    return
+  }
+  setRoleDataScopeRef.value.open(role)
+}
+</script>
+
+<style scoped lang="scss"></style>

+ 140 - 140
admin.ui.plus-master/src/views/example/application/viewManage/index.vue

@@ -1,140 +1,140 @@
-<template>
-  <div class="my-layout">
-    <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
-      <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
-        <el-form-item label="应用">
-          <el-input v-model="state.filter.app" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
-        </el-form-item>
-        <el-form-item label="视图名称">
-          <el-input v-model="state.filter.name" placeholder="视图名称" @keyup.enter="onQuery" />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
-          <el-button v-auth="'api:admin:view:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
-        </el-form-item>
-      </el-form>
-    </el-card>
-
-    <el-card class="my-fill mt8" shadow="never">
-      <el-table
-        :data="state.viewTreeData"
-        style="width: 100%"
-        v-loading="state.loading"
-        row-key="id"
-        default-expand-all
-        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
-      >
-        <el-table-column prop="label" label="视图名称" min-width="120" show-overflow-tooltip />
-        <!-- <el-table-column prop="name" label="视图命名" min-width="120" show-overflow-tooltip /> -->
-        <el-table-column prop="path" label="视图地址" min-width="120" show-overflow-tooltip />
-        <el-table-column prop="sort" label="排序" width="80" align="center" show-overflow-tooltip />
-        <!-- <el-table-column prop="description" label="视图描述" min-width="120" show-overflow-tooltip /> -->
-        <!-- <el-table-column label="状态" width="80" align="center" show-overflow-tooltip>
-          <template #default="{ row }">
-            <el-tag type="success" v-if="row.enabled">启用</el-tag>
-            <el-tag type="danger" v-else>禁用</el-tag>
-          </template>
-        </el-table-column> -->
-        <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
-          <template #default="{ row }">
-            <el-button v-auth="'api:admin:view:update'" icon="ele-EditPen" text type="primary" @click="onEdit(row)">编辑</el-button>
-            <el-button v-auth="'api:admin:view:delete'" icon="ele-Delete" text type="danger" @click="onDelete(row)">删除</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-card>
-
-    <view-form ref="viewFormRef" :title="state.viewFormTitle" :view-tree-data="state.viewTreeData"></view-form>
-  </div>
-</template>
-
-<script lang="ts" setup name="admin/view">
-import router from "/@/router";
-import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, defineAsyncComponent } from 'vue'
-import { OauthView,OauthApply } from '/@/api/admin/data-contracts'
-import { ViewApi } from '/@/api/admin/View'
-import { listToTree, filterTree } from '/@/utils/tree'
-import { cloneDeep } from 'lodash-es'
-import { PermissionApi } from '/@/api/admin/Permission'
-import eventBus from '/@/utils/mitt'
-
-// 引入组件
-const ViewForm = defineAsyncComponent(() => import('./components/view-form.vue'))
-
-const viewFormRef = ref()
-const { proxy } = getCurrentInstance() as any
-
-const state = reactive({
-  loading: false,
-  viewFormTitle: '',
-  filter: {
-    name: '',
-    app:''
-  },
-  viewTreeData: [] as Array<OauthView>,
-  formViewTreeData: [] as Array<OauthView>
-})
-
-onMounted(() => {
-  onQuery()
-  eventBus.off('refreshView')
-  eventBus.on('refreshView', async () => {
-    onQuery()
-  })
-})
-
-onBeforeMount(() => {
-  eventBus.off('refreshView')
-})
-
-const onQuery = async () => {
-  state.loading = true
-  const name = router.currentRoute.value.params.id
-  const appData=await new PermissionApi().getApplyInfo({Name:name})
-  state.filter.app=appData.data[0].name
-  const res = await new PermissionApi().getViewInfo({appid:appData.data[0].id,label:state.filter.name}).catch(() => {
-    state.loading = false
-  })
-  res.data=res.data.map((item)=>{
-    if(item.parentId===''||item.parentId===null){
-      item.parentId=Number('0')
-      item.type=1
-    }
-    item.parentId=Number(item.parentId)
-    return item
-  })
-  if (res && res.data && res.data.length > 0) {
-    state.viewTreeData = filterTree(listToTree(cloneDeep(res.data)), state.filter.name, {
-      filterWhere: (item: any, keyword: string) => {
-        return item.label?.toLocaleLowerCase().indexOf(keyword) > -1 || item.path?.toLocaleLowerCase().indexOf(keyword) > -1
-      },
-    })
-  } else {
-    state.viewTreeData = []
-    state.formViewTreeData = []
-  }
-  state.loading = false
-}
-
-const onAdd = () => {
-  state.viewFormTitle = '新增视图'
-  viewFormRef.value.open(state.filter.app)
-}
-
-const onEdit = (row: OauthView) => {
-  state.viewFormTitle = '编辑视图'
-  viewFormRef.value.open(state.filter.app,row)
-}
-
-const onDelete = (row: OauthView) => {
-  proxy.$modal
-    .confirmDelete(`确定要删除视图【${row.label}】?`)
-    .then(async () => {
-      await new PermissionApi().viewDelete({ id: row.id }, { loading: true })
-      onQuery()
-    })
-    .catch(() => {})
-}
-</script>
-
-<style scoped lang="scss"></style>
+<template>
+  <div class="my-layout">
+    <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
+      <el-form :model="state.filter" :inline="true" @submit.stop.prevent>
+        <el-form-item label="应用">
+          <el-input v-model="state.filter.app" disabled placeholder="请选择应用" @keyup.enter="onQuery" />
+        </el-form-item>
+        <el-form-item label="视图名称">
+          <el-input v-model="state.filter.name" placeholder="视图名称" @keyup.enter="onQuery" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
+          <el-button v-auth="'api:admin:view:add'" type="primary" icon="ele-Plus" @click="onAdd"> 新增 </el-button>
+        </el-form-item>
+      </el-form>
+    </el-card>
+
+    <el-card class="my-fill mt8" shadow="never">
+      <el-table
+        :data="state.viewTreeData"
+        style="width: 100%"
+        v-loading="state.loading"
+        row-key="id"
+        default-expand-all
+        :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+      >
+        <el-table-column prop="label" label="视图名称" min-width="120" show-overflow-tooltip />
+        <!-- <el-table-column prop="name" label="视图命名" min-width="120" show-overflow-tooltip /> -->
+        <el-table-column prop="path" label="视图地址" min-width="120" show-overflow-tooltip />
+        <el-table-column prop="sort" label="排序" width="80" align="center" show-overflow-tooltip />
+        <!-- <el-table-column prop="description" label="视图描述" min-width="120" show-overflow-tooltip /> -->
+        <!-- <el-table-column label="状态" width="80" align="center" show-overflow-tooltip>
+          <template #default="{ row }">
+            <el-tag type="success" v-if="row.enabled">启用</el-tag>
+            <el-tag type="danger" v-else>禁用</el-tag>
+          </template>
+        </el-table-column> -->
+        <el-table-column label="操作" width="160" fixed="right" header-align="center" align="center">
+          <template #default="{ row }">
+            <el-button v-auth="'api:admin:view:update'" icon="ele-EditPen" text type="primary" @click="onEdit(row)">编辑</el-button>
+            <el-button v-auth="'api:admin:view:delete'" icon="ele-Delete" text type="danger" @click="onDelete(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-card>
+
+    <view-form ref="viewFormRef" :title="state.viewFormTitle" :view-tree-data="state.viewTreeData"></view-form>
+  </div>
+</template>
+
+<script lang="ts" setup name="admin/view">
+import router from "/@/router";
+import { ref, reactive, onMounted, getCurrentInstance, onBeforeMount, defineAsyncComponent } from 'vue'
+import { OauthView,OauthApply } from '/@/api/admin/data-contracts'
+import { ViewApi } from '/@/api/admin/View'
+import { listToTree, filterTree } from '/@/utils/tree'
+import { cloneDeep } from 'lodash-es'
+import { PermissionApi } from '/@/api/admin/Permission'
+import eventBus from '/@/utils/mitt'
+
+// 引入组件
+const ViewForm = defineAsyncComponent(() => import('./components/view-form.vue'))
+
+const viewFormRef = ref()
+const { proxy } = getCurrentInstance() as any
+
+const state = reactive({
+  loading: false,
+  viewFormTitle: '',
+  filter: {
+    name: '',
+    app:''
+  },
+  viewTreeData: [] as Array<OauthView>,
+  formViewTreeData: [] as Array<OauthView>
+})
+
+onMounted(() => {
+  onQuery()
+  eventBus.off('refreshView')
+  eventBus.on('refreshView', async () => {
+    onQuery()
+  })
+})
+
+onBeforeMount(() => {
+  eventBus.off('refreshView')
+})
+
+const onQuery = async () => {
+  state.loading = true
+  const name = router.currentRoute.value.params.id
+  const appData=await new PermissionApi().getApplyInfo({Name:name})
+  state.filter.app=appData.data[0].name
+  const res = await new PermissionApi().getViewInfo({appid:appData.data[0].id,label:state.filter.name}).catch(() => {
+    state.loading = false
+  })
+  res.data=res.data.map((item)=>{
+    if(item.parentId===''||item.parentId===null){
+      item.parentId=Number('0')
+      item.type=1
+    }
+    item.parentId=Number(item.parentId)
+    return item
+  })
+  if (res && res.data && res.data.length > 0) {
+    state.viewTreeData = filterTree(listToTree(cloneDeep(res.data)), state.filter.name, {
+      filterWhere: (item: any, keyword: string) => {
+        return item.label?.toLocaleLowerCase().indexOf(keyword) > -1 || item.path?.toLocaleLowerCase().indexOf(keyword) > -1
+      },
+    })
+  } else {
+    state.viewTreeData = []
+    state.formViewTreeData = []
+  }
+  state.loading = false
+}
+
+const onAdd = () => {
+  state.viewFormTitle = '新增视图'
+  viewFormRef.value.open(state.filter.app)
+}
+
+const onEdit = (row: OauthView) => {
+  state.viewFormTitle = '编辑视图'
+  viewFormRef.value.open(state.filter.app,row)
+}
+
+const onDelete = (row: OauthView) => {
+  proxy.$modal
+    .confirmDelete(`确定要删除视图【${row.label}】?`)
+    .then(async () => {
+      await new PermissionApi().viewDelete({ id: row.id }, { loading: true })
+      onQuery()
+    })
+    .catch(() => {})
+}
+</script>
+
+<style scoped lang="scss"></style>