diff --git a/.gitpod.yml b/.gitpod.yml index fb75b43..5fda2cf 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -2,5 +2,5 @@ ports: - port: 5555 onOpen: open-preview tasks: - - init: corepack enable && pnpm install + - init: npm i -g corepack && pnpm install command: pnpm run dev:play diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs deleted file mode 100644 index 94b0192..0000000 --- a/.lintstagedrc.mjs +++ /dev/null @@ -1,20 +0,0 @@ -export default { - '*.md': ['prettier --cache --ignore-unknown --write'], - '*.vue': [ - 'prettier --write', - 'eslint --cache --fix', - 'stylelint --fix --allow-empty-input', - ], - '*.{js,jsx,ts,tsx}': [ - 'prettier --cache --ignore-unknown --write', - 'eslint --cache --fix', - ], - '*.{scss,less,styl,html,vue,css}': [ - 'prettier --cache --ignore-unknown --write', - 'stylelint --fix --allow-empty-input', - ], - 'package.json': ['prettier --cache --write'], - '{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': [ - 'prettier --cache --write--parser json', - ], -}; diff --git a/.node-version b/.node-version index 48b14e6..ee5c244 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.14.0 +22.1.0 diff --git a/.npmrc b/.npmrc index f4a1ad4..21147af 100644 --- a/.npmrc +++ b/.npmrc @@ -1,5 +1,5 @@ registry = "https://registry.npmmirror.com" -public-hoist-pattern[]=husky +public-hoist-pattern[]=lefthook public-hoist-pattern[]=eslint public-hoist-pattern[]=prettier public-hoist-pattern[]=prettier-plugin-tailwindcss diff --git a/.vscode/settings.json b/.vscode/settings.json index 9d6169e..1cfc017 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,7 +14,7 @@ "editor.tabSize": 2, "editor.detectIndentation": false, "editor.cursorBlinking": "expand", - "editor.largeFileOptimizations": false, + "editor.largeFileOptimizations": true, "editor.accessibilitySupport": "off", "editor.cursorSmoothCaretAnimation": "on", "editor.guides.bracketPairs": "active", @@ -91,6 +91,7 @@ "**/bower_components": true, "**/.turbo": true, "**/.idea": true, + "**/.vitepress": true, "**/tmp": true, "**/.git": true, "**/.svn": true, @@ -112,6 +113,8 @@ "**/yarn.lock": true }, + "typescript.tsserver.exclude": ["**/node_modules", "**/dist", "**/.turbo"], + // search "search.searchEditor.singleClickBehaviour": "peekDefinition", "search.followSymlinks": false, @@ -216,12 +219,23 @@ "*.env": "$(capture).env.*", "README.md": "README*,CHANGELOG*,LICENSE,CNAME", "package.json": "pnpm-lock.yaml,pnpm-workspace.yaml,.gitattributes,.gitignore,.gitpod.yml,.npmrc,.browserslistrc,.node-version,.git*,.tazerc.json", - "eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,cspell.json", + "eslint.config.mjs": ".eslintignore,.prettierignore,.stylelintignore,.commitlintrc.*,.prettierrc.*,stylelint.config.*,.lintstagedrc.mjs,cspell.json,lefthook.yml", "tailwind.config.mjs": "postcss.*" }, "commentTranslate.hover.enabled": false, "commentTranslate.multiLineMerge": true, "vue.server.hybridMode": true, "typescript.tsdk": "node_modules/typescript/lib", - "oxc.enable": false + "oxc.enable": false, + "cSpell.words": [ + "archiver", + "axios", + "dotenv", + "isequal", + "jspm", + "napi", + "nolebase", + "rollup", + "vitest" + ] } diff --git a/Dockerfile b/Dockerfile index ffa6f81..82fd821 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22-alpine AS builder +FROM node:20-slim AS builder ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ENV NODE_OPTIONS=--max-old-space-size=8192 diff --git a/apps/web-antd/.env b/apps/web-antd/.env deleted file mode 100644 index 2207a82..0000000 --- a/apps/web-antd/.env +++ /dev/null @@ -1,5 +0,0 @@ -# 应用标题 -VITE_APP_TITLE=采集端综合管理 - -# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 -VITE_APP_NAMESPACE=abp-vnext-pro-vben5-antd diff --git a/apps/web-antd/src/adapter/component/index.ts b/apps/web-antd/src/adapter/component/index.ts deleted file mode 100644 index 17436a8..0000000 --- a/apps/web-antd/src/adapter/component/index.ts +++ /dev/null @@ -1,169 +0,0 @@ -/** - * 通用组件共同的使用的基础组件,原先放在 adapter/form 内部,限制了使用范围,这里提取出来,方便其他地方使用 - * 可用于 vben-form、vben-modal、vben-drawer 等组件使用, - */ - -import type { Component, SetupContext } from 'vue'; - -import type { BaseFormComponentType } from '@vben/common-ui'; - -import { h } from 'vue'; - -import { ApiComponent, globalShareState, IconPicker } from '@vben/common-ui'; -import { $t } from '@vben/locales'; - -import { - AutoComplete, - Button, - Checkbox, - CheckboxGroup, - DatePicker, - Divider, - Input, - InputNumber, - InputPassword, - Mentions, - notification, - Radio, - RadioGroup, - RangePicker, - Rate, - Select, - Space, - Switch, - Textarea, - TimePicker, - TreeSelect, - Upload, -} from 'ant-design-vue'; - -const withDefaultPlaceholder = ( - component: T, - type: 'input' | 'select', -) => { - return (props: any, { attrs, slots }: Omit) => { - const placeholder = props?.placeholder || $t(`ui.placeholder.${type}`); - return h(component, { ...props, ...attrs, placeholder }, slots); - }; -}; - -// 这里需要自行根据业务组件库进行适配,需要用到的组件都需要在这里类型说明 -export type ComponentType = - | 'ApiSelect' - | 'ApiTreeSelect' - | 'AutoComplete' - | 'Checkbox' - | 'CheckboxGroup' - | 'DatePicker' - | 'DefaultButton' - | 'Divider' - | 'IconPicker' - | 'Input' - | 'InputNumber' - | 'InputPassword' - | 'Mentions' - | 'PrimaryButton' - | 'Radio' - | 'RadioGroup' - | 'RangePicker' - | 'Rate' - | 'Select' - | 'Space' - | 'Switch' - | 'Textarea' - | 'TimePicker' - | 'TreeSelect' - | 'Upload' - | BaseFormComponentType; - -async function initComponentAdapter() { - const components: Partial> = { - // 如果你的组件体积比较大,可以使用异步加载 - // Button: () => - // import('xxx').then((res) => res.Button), - ApiSelect: (props, { attrs, slots }) => { - return h( - ApiComponent, - { - placeholder: $t('ui.placeholder.select'), - ...props, - ...attrs, - component: Select, - loadingSlot: 'suffixIcon', - visibleEvent: 'onDropdownVisibleChange', - modelPropName: 'value', - }, - slots, - ); - }, - ApiTreeSelect: (props, { attrs, slots }) => { - return h( - ApiComponent, - { - placeholder: $t('ui.placeholder.select'), - ...props, - ...attrs, - component: TreeSelect, - fieldNames: { label: 'label', value: 'value', children: 'children' }, - loadingSlot: 'suffixIcon', - modelPropName: 'value', - optionsPropName: 'treeData', - visibleEvent: 'onVisibleChange', - }, - slots, - ); - }, - AutoComplete, - Checkbox, - CheckboxGroup, - DatePicker, - // 自定义默认按钮 - DefaultButton: (props, { attrs, slots }) => { - return h(Button, { ...props, attrs, type: 'default' }, slots); - }, - Divider, - IconPicker: (props, { attrs, slots }) => { - return h( - IconPicker, - { iconSlot: 'addonAfter', inputComponent: Input, ...props, ...attrs }, - slots, - ); - }, - Input: withDefaultPlaceholder(Input, 'input'), - InputNumber: withDefaultPlaceholder(InputNumber, 'input'), - InputPassword: withDefaultPlaceholder(InputPassword, 'input'), - Mentions: withDefaultPlaceholder(Mentions, 'input'), - // 自定义主要按钮 - PrimaryButton: (props, { attrs, slots }) => { - return h(Button, { ...props, attrs, type: 'primary' }, slots); - }, - Radio, - RadioGroup, - RangePicker, - Rate, - Select: withDefaultPlaceholder(Select, 'select'), - Space, - Switch, - Textarea: withDefaultPlaceholder(Textarea, 'input'), - TimePicker, - TreeSelect: withDefaultPlaceholder(TreeSelect, 'select'), - Upload, - }; - - // 将组件注册到全局共享状态中 - globalShareState.setComponents(components); - - // 定义全局共享状态中的消息提示 - globalShareState.defineMessage({ - // 复制成功消息提示 - copyPreferencesSuccess: (title, content) => { - notification.success({ - description: content, - message: title, - placement: 'bottomRight', - }); - }, - }); -} - -export { initComponentAdapter }; diff --git a/apps/web-antd/src/api-client-config/index-blob.ts b/apps/web-antd/src/api-client-config/index-blob.ts deleted file mode 100644 index 19177db..0000000 --- a/apps/web-antd/src/api-client-config/index-blob.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { useUserStore } from '@vben/stores'; - -import { message as Message } from 'ant-design-vue'; -import axios from 'axios'; - -import { $t } from '#/locales'; -import { antdLocale } from '#/locales/index'; -import { useAuthStore } from '#/store'; - -const api = axios.create({ - baseURL: import.meta.env.DEV - ? '/proxy/' - : import.meta.env.VITE_APP_API_ADDRESS, - timeout: 1000 * 60, - responseType: 'blob', // 设置响应数据类型为blob -}); - -api.interceptors.request.use((request) => { - // 全局拦截请求发送前提交的参数 - const userStore = useUserStore(); - const authStore = useAuthStore(); - const token = userStore.userInfo?.token; - // 设置请求头 - if (request.headers) { - request.headers.__tenant = userStore.tenant?.tenantId; - request.headers['accept-language'] = antdLocale.value.locale; - } - // 如果token过期,则跳转到登录页面 - if (token && userStore.checkUserLoginExpire()) { - authStore.logout(); - - return Promise.reject($t('common.mesage401')); - } - - // 设置请求头 - if (request.headers) { - request.headers.Authorization = `Bearer ${token}`; - } - - return request; -}); - -api.interceptors.response.use( - (response) => { - /** - * 全局拦截请求发送后返回的数据,如果数据有报错则在这做全局的错误提示 - * 假设返回数据格式为:{ status: 1, error: '', data: '' } - * 规则是当 status 为 1 时表示请求成功,为 0 时表示接口需要登录或者登录状态失效,需要重新登录 - * 请求出错时 error 会返回错误信息 - */ - if (response.data.status === 1) { - if (response.data.error !== '') { - // 错误提示 - Message.error(response.data.error); - return Promise.reject(response.data); - } - } else { - // useUserStore().logout() - } - return Promise.resolve(response); - }, - (error) => { - let message = error.message; - if (message === 'Network Error') { - message = $t('common.mesage500'); - } else if (message.includes('timeout')) { - message = $t('common.timeOut'); - } else - switch (error.status) { - case 400: { - message = error.response.data.error?.validationErrors[0].message; - - break; - } - case 401: { - message = $t('common.mesage401'); - // useUserStore().logout() - - break; - } - case 403: { - message = $t('common.mesage403'); - - break; - } - case 500: { - message = error.response.data.error?.message; - - break; - } - default: { - if (message.includes('Request failed with status code')) { - message = $t('common.mesage500'); - } - } - } - Message.error(message); - return Promise.reject(error); - }, -); - -export default api; diff --git a/apps/web-antd/src/api-client-config/index.ts b/apps/web-antd/src/api-client-config/index.ts deleted file mode 100644 index fd36417..0000000 --- a/apps/web-antd/src/api-client-config/index.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { useUserStore } from '@vben/stores'; - -import { message as Message } from 'ant-design-vue'; - -import { $t } from '#/locales'; -import { antdLocale } from '#/locales/index'; -import { useAuthStore } from '#/store'; - -import { client } from '../api-client/services.gen'; - -client.setConfig({ - baseURL: import.meta.env.DEV - ? '/proxy/' - : import.meta.env.VITE_APP_API_ADDRESS, - timeout: 1000 * 60, - responseType: 'json', - throwOnError: true, -}); - -client.instance.interceptors.request.use((request) => { - // 全局拦截请求发送前提交的参数 - const userStore = useUserStore(); - const token = userStore.userInfo?.token; - // 设置请求头 - if (request.headers) { - request.headers.__tenant = userStore.tenant?.tenantId; - // todo vben5 没有提供统一获取当前语言的方式 - request.headers['accept-language'] = antdLocale.value.locale; - } - - // 如果token过期,则跳转到登录页面 - if ( - request.url !== undefined && - request.url.includes('/api/app/account/login') - ) { - return request; - } - - if (token && userStore.checkUserLoginExpire()) { - const authStore = useAuthStore(); - authStore.logout(); - Message.warn($t('common.mesage401')); - - return Promise.reject($t('common.mesage401')); - } - - // 设置请求头 - if (request.headers) { - request.headers.Authorization = `Bearer ${token}`; - } - - return request; -}); - -client.instance.interceptors.response.use( - (response) => { - /** - * 全局拦截请求发送后返回的数据,如果数据有报错则在这做全局的错误提示 - * 假设返回数据格式为:{ status: 1, error: '', data: '' } - * 规则是当 status 为 1 时表示请求成功,为 0 时表示接口需要登录或者登录状态失效,需要重新登录 - * 请求出错时 error 会返回错误信息 - */ - if (response.data.status === 1) { - if (response.data.error !== '') { - // 错误提示 - Message.error(response.data.error); - return Promise.reject(response.data); - } - } else { - // useUserStore().logout() - } - return Promise.resolve(response); - }, - (error) => { - let message = error.message; - if (message === 'Network Error') { - message = $t('common.mesage500'); - } else if (message.includes('timeout')) { - message = $t('common.timeOut'); - } else - switch (error.status) { - case 400: { - message = error.response.data.error?.validationErrors[0].message; - - break; - } - case 401: { - message = $t('common.mesage401'); - // useUserStore().logout() - - break; - } - case 403: { - message = $t('common.mesage403'); - - break; - } - case 500: { - message = error.response.data.error?.message; - - break; - } - default: { - if (message.includes('Request failed with status code')) { - message = $t('common.mesage500'); - } - } - } - Message.error(message); - return Promise.reject(error); - }, -); - -export default client; diff --git a/apps/web-antd/src/api-client/services.gen.ts b/apps/web-antd/src/api-client/services.gen.ts deleted file mode 100644 index 9cfc978..0000000 --- a/apps/web-antd/src/api-client/services.gen.ts +++ /dev/null @@ -1,777 +0,0 @@ -// This file is auto-generated by @hey-api/openapi-ts - -import { createClient, createConfig, type Options } from '@hey-api/client-axios'; -import type { GetApiAbpApiDefinitionData, GetApiAbpApiDefinitionError, GetApiAbpApiDefinitionResponse, GetApiAbpApplicationConfigurationData, GetApiAbpApplicationConfigurationError, GetApiAbpApplicationConfigurationResponse, GetApiAbpApplicationLocalizationData, GetApiAbpApplicationLocalizationError, GetApiAbpApplicationLocalizationResponse, PostApiAppAccountLoginData, PostApiAppAccountLoginError, PostApiAppAccountLoginResponse, PostAuditLogsPageData, PostAuditLogsPageError, PostAuditLogsPageResponse, PostDataDictionaryPageData, PostDataDictionaryPageError, PostDataDictionaryPageResponse, PostDataDictionaryPageDetailData, PostDataDictionaryPageDetailError, PostDataDictionaryPageDetailResponse, PostDataDictionaryCreateData, PostDataDictionaryCreateError, PostDataDictionaryCreateResponse, PostDataDictionaryCreateDetailData, PostDataDictionaryCreateDetailError, PostDataDictionaryCreateDetailResponse, PostDataDictionaryStatusData, PostDataDictionaryStatusError, PostDataDictionaryStatusResponse, PostDataDictionaryUpdateDetailData, PostDataDictionaryUpdateDetailError, PostDataDictionaryUpdateDetailResponse, PostDataDictionaryDeleteData, PostDataDictionaryDeleteError, PostDataDictionaryDeleteResponse, PostDataDictionaryDeleteDataDictionaryTypeData, PostDataDictionaryDeleteDataDictionaryTypeError, PostDataDictionaryDeleteDataDictionaryTypeResponse, PostDataDictionaryUpdateData, PostDataDictionaryUpdateError, PostDataDictionaryUpdateResponse, PostFeaturesListData, PostFeaturesListError, PostFeaturesListResponse, PostFeaturesUpdateData, PostFeaturesUpdateError, PostFeaturesUpdateResponse, PostFeaturesDeleteData, PostFeaturesDeleteError, PostFeaturesDeleteResponse, PostIdentitySecurityLogsPageData, PostIdentitySecurityLogsPageError, PostIdentitySecurityLogsPageResponse, PostLanguagesAllError, PostLanguagesAllResponse, PostLanguagesPageData, PostLanguagesPageError, PostLanguagesPageResponse, PostLanguagesCreateData, PostLanguagesCreateError, PostLanguagesCreateResponse, PostLanguagesUpdateData, PostLanguagesUpdateError, PostLanguagesUpdateResponse, PostLanguagesDeleteData, PostLanguagesDeleteError, PostLanguagesDeleteResponse, PostLanguagesSetDefaultData, PostLanguagesSetDefaultError, PostLanguagesSetDefaultResponse, PostLanguageTextsAllResourceError, PostLanguageTextsAllResourceResponse, PostLanguageTextsPageData, PostLanguageTextsPageError, PostLanguageTextsPageResponse, PostLanguageTextsCreateData, PostLanguageTextsCreateError, PostLanguageTextsCreateResponse, PostLanguageTextsUpdateData, PostLanguageTextsUpdateError, PostLanguageTextsUpdateResponse, PostNotificationNotificationPageData, PostNotificationNotificationPageError, PostNotificationNotificationPageResponse, PostNotificationNotificationSubscriptionPageData, PostNotificationNotificationSubscriptionPageError, PostNotificationNotificationSubscriptionPageResponse, PostNotificationSendCommonWarningMessageData, PostNotificationSendCommonWarningMessageError, PostNotificationSendCommonWarningMessageResponse, PostNotificationSendCommonInformationMessageData, PostNotificationSendCommonInformationMessageError, PostNotificationSendCommonInformationMessageResponse, PostNotificationSendCommonErrorMessageData, PostNotificationSendCommonErrorMessageError, PostNotificationSendCommonErrorMessageResponse, PostNotificationSendBroadCastWarningMessageData, PostNotificationSendBroadCastWarningMessageError, PostNotificationSendBroadCastWarningMessageResponse, PostNotificationSendBroadCastInformationMessageData, PostNotificationSendBroadCastInformationMessageError, PostNotificationSendBroadCastInformationMessageResponse, PostNotificationSendBroadCastErrorMessageData, PostNotificationSendBroadCastErrorMessageError, PostNotificationSendBroadCastErrorMessageResponse, PostNotificationReadData, PostNotificationReadError, PostNotificationReadResponse, PostNotificationBatchReadData, PostNotificationBatchReadError, PostNotificationBatchReadResponse, PostOrganizationUnitsTreeError, PostOrganizationUnitsTreeResponse, PostOrganizationUnitsCreateData, PostOrganizationUnitsCreateError, PostOrganizationUnitsCreateResponse, PostOrganizationUnitsDeleteData, PostOrganizationUnitsDeleteError, PostOrganizationUnitsDeleteResponse, PostOrganizationUnitsUpdateData, PostOrganizationUnitsUpdateError, PostOrganizationUnitsUpdateResponse, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncData, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncError, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncResponse, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncData, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncError, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncResponse, PostOrganizationUnitsAddUserToOrganizationUnitData, PostOrganizationUnitsAddUserToOrganizationUnitError, PostOrganizationUnitsAddUserToOrganizationUnitResponse, PostOrganizationUnitsRemoveUserFromOrganizationUnitData, PostOrganizationUnitsRemoveUserFromOrganizationUnitError, PostOrganizationUnitsRemoveUserFromOrganizationUnitResponse, PostOrganizationUnitsGetUsersData, PostOrganizationUnitsGetUsersError, PostOrganizationUnitsGetUsersResponse, PostOrganizationUnitsGetRolesData, PostOrganizationUnitsGetRolesError, PostOrganizationUnitsGetRolesResponse, PostOrganizationUnitsGetUnAddUsersData, PostOrganizationUnitsGetUnAddUsersError, PostOrganizationUnitsGetUnAddUsersResponse, PostOrganizationUnitsGetUnAddRolesData, PostOrganizationUnitsGetUnAddRolesError, PostOrganizationUnitsGetUnAddRolesResponse, PostPermissionsTreeData, PostPermissionsTreeError, PostPermissionsTreeResponse, PostPermissionsUpdateData, PostPermissionsUpdateError, PostPermissionsUpdateResponse, PostRolesAllError, PostRolesAllResponse, PostRolesPageData, PostRolesPageError, PostRolesPageResponse, PostRolesCreateData, PostRolesCreateError, PostRolesCreateResponse, PostRolesUpdateData, PostRolesUpdateError, PostRolesUpdateResponse, PostRolesDeleteData, PostRolesDeleteError, PostRolesDeleteResponse, PostSettingsAllError, PostSettingsAllResponse, PostSettingsUpdateData, PostSettingsUpdateError, PostSettingsUpdateResponse, PostTenantsFindData, PostTenantsFindError, PostTenantsFindResponse, PostTenantsPageData, PostTenantsPageError, PostTenantsPageResponse, PostTenantsCreateData, PostTenantsCreateError, PostTenantsCreateResponse, PostTenantsUpdateData, PostTenantsUpdateError, PostTenantsUpdateResponse, PostTenantsDeleteData, PostTenantsDeleteError, PostTenantsDeleteResponse, PostTenantsPageConnectionStringData, PostTenantsPageConnectionStringError, PostTenantsPageConnectionStringResponse, PostTenantsAddOrUpdateConnectionStringData, PostTenantsAddOrUpdateConnectionStringError, PostTenantsAddOrUpdateConnectionStringResponse, PostTenantsDeleteConnectionStringData, PostTenantsDeleteConnectionStringError, PostTenantsDeleteConnectionStringResponse, PostUsersPageData, PostUsersPageError, PostUsersPageResponse, PostUsersListData, PostUsersListError, PostUsersListResponse, PostUsersExportData, PostUsersExportError, PostUsersExportResponse, PostUsersCreateData, PostUsersCreateError, PostUsersCreateResponse, PostUsersUpdateData, PostUsersUpdateError, PostUsersUpdateResponse, PostUsersDeleteData, PostUsersDeleteError, PostUsersDeleteResponse, PostUsersRoleData, PostUsersRoleError, PostUsersRoleResponse, PostUsersChangePasswordData, PostUsersChangePasswordError, PostUsersChangePasswordResponse, PostUsersLockData, PostUsersLockError, PostUsersLockResponse, PostUsersFindByUserNameData, PostUsersFindByUserNameError, PostUsersFindByUserNameResponse, PostUsersMyProfileError, PostUsersMyProfileResponse } from './types.gen'; - -export const client = createClient(createConfig()); - -export const getApiAbpApiDefinition = (options?: Options) => { - return (options?.client ?? client).get({ - ...options, - url: '/api/abp/api-definition' - }); -}; - -export const getApiAbpApplicationConfiguration = (options?: Options) => { - return (options?.client ?? client).get({ - ...options, - url: '/api/abp/application-configuration' - }); -}; - -export const getApiAbpApplicationLocalization = (options: Options) => { - return (options?.client ?? client).get({ - ...options, - url: '/api/abp/application-localization' - }); -}; - -/** - * 登录 - */ -export const postApiAppAccountLogin = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/api/app/account/login' - }); -}; - -/** - * 分页获取审计日志信息 - */ -export const postAuditLogsPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/AuditLogs/page' - }); -}; - -/** - * 分页字典类型 - */ -export const postDataDictionaryPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/page' - }); -}; - -/** - * 分页字典明细 - */ -export const postDataDictionaryPageDetail = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/pageDetail' - }); -}; - -/** - * 创建字典类型 - */ -export const postDataDictionaryCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/create' - }); -}; - -/** - * 创建字典明细 - */ -export const postDataDictionaryCreateDetail = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/createDetail' - }); -}; - -/** - * 设置字典明细状态 - */ -export const postDataDictionaryStatus = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/status' - }); -}; - -/** - * 更新字典明细 - */ -export const postDataDictionaryUpdateDetail = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/updateDetail' - }); -}; - -/** - * 删除字典明细 - */ -export const postDataDictionaryDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/delete' - }); -}; - -/** - * 删除字典类型 - */ -export const postDataDictionaryDeleteDataDictionaryType = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/deleteDataDictionaryType' - }); -}; - -/** - * 修改字典类型 - */ -export const postDataDictionaryUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/DataDictionary/update' - }); -}; - -/** - * 获取Features - */ -export const postFeaturesList = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Features/list' - }); -}; - -/** - * 更新Features - */ -export const postFeaturesUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Features/update' - }); -}; - -/** - * 删除Features - */ -export const postFeaturesDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Features/delete' - }); -}; - -/** - * 分页获取登录日志信息 - */ -export const postIdentitySecurityLogsPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/IdentitySecurityLogs/page' - }); -}; - -/** - * 获取所有语言 - */ -export const postLanguagesAll = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/All' - }); -}; - -/** - * 分页查询语言 - */ -export const postLanguagesPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/Page' - }); -}; - -/** - * 创建语言 - */ -export const postLanguagesCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/Create' - }); -}; - -/** - * 编辑语言 - */ -export const postLanguagesUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/Update' - }); -}; - -/** - * 删除语言 - */ -export const postLanguagesDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/Delete' - }); -}; - -/** - * 设置默认语言 - */ -export const postLanguagesSetDefault = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Languages/SetDefault' - }); -}; - -/** - * 获取所有资源 - */ -export const postLanguageTextsAllResource = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/LanguageTexts/AllResource' - }); -}; - -/** - * 分页查询语言文本 - */ -export const postLanguageTextsPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/LanguageTexts/Page' - }); -}; - -/** - * 创建语言文本 - */ -export const postLanguageTextsCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/LanguageTexts/Create' - }); -}; - -/** - * 编辑语言文本 - */ -export const postLanguageTextsUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/LanguageTexts/Update' - }); -}; - -/** - * 分页查询消息 - */ -export const postNotificationNotificationPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/NotificationPage' - }); -}; - -/** - * 分页获取广播消息已读人数 - */ -export const postNotificationNotificationSubscriptionPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/NotificationSubscriptionPage' - }); -}; - -/** - * 发送警告文本消息 - */ -export const postNotificationSendCommonWarningMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendCommonWarningMessage' - }); -}; - -/** - * 发送普通文本消息 - */ -export const postNotificationSendCommonInformationMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendCommonInformationMessage' - }); -}; - -/** - * 发送错误文本消息 - */ -export const postNotificationSendCommonErrorMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendCommonErrorMessage' - }); -}; - -/** - * 发送警告广播消息 - */ -export const postNotificationSendBroadCastWarningMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendBroadCastWarningMessage' - }); -}; - -/** - * 发送正常广播消息 - */ -export const postNotificationSendBroadCastInformationMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendBroadCastInformationMessage' - }); -}; - -/** - * 发送错误广播消息 - */ -export const postNotificationSendBroadCastErrorMessage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/SendBroadCastErrorMessage' - }); -}; - -/** - * 消息设置为已读 - */ -export const postNotificationRead = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/Read' - }); -}; - -/** - * 消息批量设置为已读 - */ -export const postNotificationBatchRead = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Notification/BatchRead' - }); -}; - -/** - * 获取组织机构树 - */ -export const postOrganizationUnitsTree = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/tree' - }); -}; - -/** - * 创建组织机构 - */ -export const postOrganizationUnitsCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/create' - }); -}; - -/** - * 删除组织机构 - */ -export const postOrganizationUnitsDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/delete' - }); -}; - -/** - * 编辑组织机构 - */ -export const postOrganizationUnitsUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/update' - }); -}; - -/** - * 向组织机构添加角色 - */ -export const postOrganizationUnitsAddRoleToOrganizationUnitAsync = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/addRoleToOrganizationUnitAsync' - }); -}; - -/** - * 向组织机构删除角色 - */ -export const postOrganizationUnitsRemoveRoleFromOrganizationUnitAsync = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/removeRoleFromOrganizationUnitAsync' - }); -}; - -/** - * 向组织机构添加用户 - */ -export const postOrganizationUnitsAddUserToOrganizationUnit = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/addUserToOrganizationUnit' - }); -}; - -/** - * 向组织机构删除用户 - */ -export const postOrganizationUnitsRemoveUserFromOrganizationUnit = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/removeUserFromOrganizationUnit' - }); -}; - -/** - * 分页获取组织机构下用户 - */ -export const postOrganizationUnitsGetUsers = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/getUsers' - }); -}; - -/** - * 分页获取组织机构下角色 - */ -export const postOrganizationUnitsGetRoles = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/getRoles' - }); -}; - -/** - * 获取不在组织机构的用户 - */ -export const postOrganizationUnitsGetUnAddUsers = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/getUnAddUsers' - }); -}; - -/** - * 获取不在组织机构的角色 - */ -export const postOrganizationUnitsGetUnAddRoles = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/OrganizationUnits/getUnAddRoles' - }); -}; - -/** - * 获取角色权限 - */ -export const postPermissionsTree = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Permissions/tree' - }); -}; - -/** - * 更新角色 - */ -export const postPermissionsUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Permissions/update' - }); -}; - -/** - * 获取所有角色 - */ -export const postRolesAll = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Roles/all' - }); -}; - -/** - * 分页获取角色 - */ -export const postRolesPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Roles/page' - }); -}; - -/** - * 创建角色 - */ -export const postRolesCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Roles/create' - }); -}; - -/** - * 更新角色 - */ -export const postRolesUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Roles/update' - }); -}; - -/** - * 删除角色 - */ -export const postRolesDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Roles/delete' - }); -}; - -/** - * 获取所有Setting - */ -export const postSettingsAll = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Settings/all' - }); -}; - -/** - * 更新Setting - */ -export const postSettingsUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Settings/update' - }); -}; - -/** - * 通过名称获取租户信息 - */ -export const postTenantsFind = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/find' - }); -}; - -/** - * 分页获取租户信息 - */ -export const postTenantsPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/page' - }); -}; - -/** - * 创建租户 - */ -export const postTenantsCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/create' - }); -}; - -/** - * 更新租户 - */ -export const postTenantsUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/update' - }); -}; - -/** - * 删除租户 - */ -export const postTenantsDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/delete' - }); -}; - -/** - * 分页租户连接字符串 - */ -export const postTenantsPageConnectionString = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/pageConnectionString' - }); -}; - -/** - * 新增或者更新租户所有连接字符串 - */ -export const postTenantsAddOrUpdateConnectionString = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/addOrUpdateConnectionString' - }); -}; - -/** - * 删除租户连接字符串 - */ -export const postTenantsDeleteConnectionString = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Tenants/deleteConnectionString' - }); -}; - -/** - * 分页获取用户信息 - */ -export const postUsersPage = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/page' - }); -}; - -/** - * 分页获取用户信息 - */ -export const postUsersList = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/list' - }); -}; - -/** - * 导出用户列表 - */ -export const postUsersExport = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/export' - }); -}; - -/** - * 创建用户 - */ -export const postUsersCreate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/create' - }); -}; - -/** - * 编辑用户 - */ -export const postUsersUpdate = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/update' - }); -}; - -/** - * 删除用户 - */ -export const postUsersDelete = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/delete' - }); -}; - -/** - * 获取用户角色信息 - */ -export const postUsersRole = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/role' - }); -}; - -/** - * 修改当前用户密码 - */ -export const postUsersChangePassword = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/changePassword' - }); -}; - -/** - * 锁定用户 - */ -export const postUsersLock = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/lock' - }); -}; - -/** - * 通过用户名查找用户 - */ -export const postUsersFindByUserName = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/findByUserName' - }); -}; - -/** - * 获取个人信息 - */ -export const postUsersMyProfile = (options?: Options) => { - return (options?.client ?? client).post({ - ...options, - url: '/Users/myProfile' - }); -}; \ No newline at end of file diff --git a/apps/web-antd/src/app.vue b/apps/web-antd/src/app.vue deleted file mode 100644 index bbaccce..0000000 --- a/apps/web-antd/src/app.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - diff --git a/apps/web-antd/src/components/Loading/index.ts b/apps/web-antd/src/components/Loading/index.ts deleted file mode 100644 index 18bb3e9..0000000 --- a/apps/web-antd/src/components/Loading/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export { createLoading } from './src/createLoading'; -export { default as Loading } from './src/Loading.vue'; - -export { useLoading } from './src/useLoading'; diff --git a/apps/web-antd/src/components/Loading/src/Loading.vue b/apps/web-antd/src/components/Loading/src/Loading.vue deleted file mode 100644 index c3ad8c6..0000000 --- a/apps/web-antd/src/components/Loading/src/Loading.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - diff --git a/apps/web-antd/src/components/Loading/src/createLoading.ts b/apps/web-antd/src/components/Loading/src/createLoading.ts deleted file mode 100644 index 0133f9a..0000000 --- a/apps/web-antd/src/components/Loading/src/createLoading.ts +++ /dev/null @@ -1,84 +0,0 @@ -import type { LoadingProps } from './typing'; - -import { createVNode, defineComponent, h, reactive, render } from 'vue'; - -import Loading from './Loading.vue'; - -// 创建一个加载组件的函数 -export function createLoading( - props?: Partial, - target?: HTMLElement, - wait = false, -) { - let vm: any = null; - const data = reactive({ - tip: '', - loading: true, - ...props, - }); - - // 定义加载组件的包装 - const LoadingWrap = defineComponent({ - render() { - return h(Loading, { ...data }); - }, - }); - - vm = createVNode(LoadingWrap); - - let container: any = null; - // 根据wait参数决定何时渲染Loading组件 - if (wait) { - setTimeout(() => { - render(vm, (container = document.createElement('div'))); - }, 0); - } else { - render(vm, (container = document.createElement('div'))); - } - - // 关闭加载组件的函数 - function close() { - if (vm?.el && vm.el.parentNode) { - vm.el.remove(); - } - } - - // 打开加载组件并将其附加到目标元素上的函数 - function open(target: HTMLElement = document.body) { - if (!vm || !vm.el) { - return; - } - target.append(vm.el as HTMLElement); - } - - // 销毁加载组件的函数 - function destroy() { - container && render(null, container); - container = vm = null; - } - - // 如果提供了目标元素,则打开加载组件 - if (target) { - open(target); - } - - // 返回加载组件的实例及控制方法 - return { - vm, - close, - open, - destroy, - setTip: (tip: string) => { - data.tip = tip; - }, - setLoading: (loading: boolean) => { - data.loading = loading; - }, - get loading() { - return data.loading; - }, - get $el() { - return vm?.el as HTMLElement; - }, - }; -} diff --git a/apps/web-antd/src/components/Loading/src/typing.ts b/apps/web-antd/src/components/Loading/src/typing.ts deleted file mode 100644 index 8805acd..0000000 --- a/apps/web-antd/src/components/Loading/src/typing.ts +++ /dev/null @@ -1,14 +0,0 @@ -export enum SizeEnum { - DEFAULT = 'default', - LARGE = 'large', - SMALL = 'small', -} - -export interface LoadingProps { - tip: string; - size: SizeEnum; - absolute: boolean; - loading: boolean; - background: string; - theme: 'dark' | 'light'; -} diff --git a/apps/web-antd/src/components/Loading/src/useLoading.ts b/apps/web-antd/src/components/Loading/src/useLoading.ts deleted file mode 100644 index fe2b9fb..0000000 --- a/apps/web-antd/src/components/Loading/src/useLoading.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { LoadingProps } from './typing'; - -import type { Ref } from 'vue'; -import { unref } from 'vue'; - -import { tryOnUnmounted } from '@vueuse/core'; - -import { createLoading } from './createLoading'; - -export interface UseLoadingOptions { - target?: any; - props?: Partial; -} - -interface Fn { - (): void; -} - -export function useLoading( - props: Partial, -): [Fn, Fn, (arg0: string) => void]; -export function useLoading( - opt: Partial, -): [Fn, Fn, (arg0: string) => void]; - -export function useLoading( - opt: Partial | Partial, -): [Fn, Fn, (arg0: string) => void] { - let props: Partial; - let target: HTMLElement | Ref = document.body; - - if (Reflect.has(opt, 'target') || Reflect.has(opt, 'props')) { - const options = opt as Partial; - props = options.props || {}; - target = options.target || document.body; - } else { - props = opt as Partial; - } - - const instance = createLoading(props, undefined, false); - - const open = (): void => { - const t = unref(target as Ref); - if (!t) return; - instance.open(t); - }; - - const close = (): void => { - instance.close(); - }; - - const setTip = (tip: string) => { - instance.setTip(tip); - }; - - tryOnUnmounted(() => { - instance.destroy(); - }); - - return [open, close, setTip]; -} diff --git a/apps/web-antd/src/components/icon/icon.vue b/apps/web-antd/src/components/icon/icon.vue deleted file mode 100644 index e5c0c31..0000000 --- a/apps/web-antd/src/components/icon/icon.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - diff --git a/apps/web-antd/src/components/table-action/table-action.vue b/apps/web-antd/src/components/table-action/table-action.vue deleted file mode 100644 index 2ce2af6..0000000 --- a/apps/web-antd/src/components/table-action/table-action.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - - diff --git a/apps/web-antd/src/layouts/my-profile.vue b/apps/web-antd/src/layouts/my-profile.vue deleted file mode 100644 index 61a185b..0000000 --- a/apps/web-antd/src/layouts/my-profile.vue +++ /dev/null @@ -1,216 +0,0 @@ - - - diff --git a/apps/web-antd/src/locales/langs/en-US/code.json b/apps/web-antd/src/locales/langs/en-US/code.json deleted file mode 100644 index 4dab556..0000000 --- a/apps/web-antd/src/locales/langs/en-US/code.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "companyName": "CompanyName", - "projectName": "ProjectName", - "projectEnglishName": "ProjectEnglishName", - "namespace": "Namespace", - "remark": "Remark", - "templateName": "TemplateName", - "model": "Model", - "property": "Property", - "enum": "Enum", - "isRequired": "IsRequired", - "maxLength": "MaxLength", - "minLength": "MinLength", - "decimalPrecision18": "Accuracy (18,6) of 18", - "decimalPrecision6": "Accuracy (18,6) of 6", - "pleaseSelectEntity": "Please select entity", - "pleaseSelectEnum": "Please select enum", - "detail": "Detail", - "copy": "Copy", - "addFolder": "AddFolder", - "addFile": "AddFile", - "desc": "Description", - "name": "Name", - "templateType": "TemplateType", - "supportTenant": "Support Multi-Tenant", - "project": "Project", - "template": "Template", - "preview": "Preview", - "download": "Download", - "description": "Please select the target and project to generate", - "autoGenerate": "Auto Generate Code", - "code": "Code", - "type": "Type", - "value": "Value", - "relational": "Relational", - "dataType": "DataType" -} diff --git a/apps/web-antd/src/locales/langs/zh-CN/code.json b/apps/web-antd/src/locales/langs/zh-CN/code.json deleted file mode 100644 index 1032454..0000000 --- a/apps/web-antd/src/locales/langs/zh-CN/code.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "companyName": "公司名称", - "projectName": "项目名称", - "projectEnglishName": "项目英文名称", - "namespace": "命名空间", - "remark": "备注", - "templateName": "模板名称", - "model": "模型", - "property": "属性", - "enum": "枚举", - "isRequired": "是否必填", - "maxLength": "最大长度", - "minLength": "最小长度", - "decimalPrecision18": "精度(18,6)中的18", - "decimalPrecision6": "精度(18,6)中的6", - "pleaseSelectEntity": "请选择实体", - "pleaseSelectEnum": "请选择枚举", - "detail": "详情", - "copy": "复制", - "addFolder": "新增文件夹", - "addFile": "新增文件", - "desc": "描述", - "name": "名称", - "templateType": "模板类型", - "supportTenant": "支持多租户", - "project": "项目", - "template": "模板", - "preview": "预览", - "download": "下载", - "description": "请选择要生成的目标和项目", - "autoGenerate": "自动生成代码", - "code": "编码", - "type": "类型", - "value": "值", - "relational": "关系", - "dataType": "数据类型" -} diff --git a/apps/web-antd/src/views/system/abplog/schema.ts b/apps/web-antd/src/views/system/abplog/schema.ts deleted file mode 100644 index 68ed2e6..0000000 --- a/apps/web-antd/src/views/system/abplog/schema.ts +++ /dev/null @@ -1,114 +0,0 @@ -import dayjs from 'dayjs'; - -import { $t } from '#/locales'; - -export const logQuerySchema: any = [ - { - component: 'RangePicker', - fieldName: 'time', - label: $t('abp.log.loginTime'), - componentProps: { - 'value-format': 'YYYY-MM-DD', - }, - defaultValue: [ - dayjs().subtract(0, 'day').format('YYYY-MM-DD'), - dayjs().format('YYYY-MM-DD'), - ], - }, - { - component: 'Input', - fieldName: 'userName', - label: $t('abp.log.userName'), - }, - { - component: 'Input', - fieldName: 'correlationId', - label: 'CorrelationId', - }, -]; - -export const logTableSchema: any = [ - { title: $t('common.seq'), type: 'seq', width: 50 }, - { - field: 'applicationName', - title: $t('abp.log.applicationName'), - minWidth: '150', - }, - { field: 'identity', title: $t('abp.log.loginMode'), minWidth: '150' }, - { field: 'action', title: $t('abp.log.loginUrl'), minWidth: '150' }, - { field: 'userName', title: $t('abp.log.userName'), minWidth: '150' }, - { field: 'correlationId', title: 'CorrelationId', minWidth: '150' }, - { field: 'clientIpAddress', title: $t('abp.log.clientIp'), minWidth: '150' }, - { - field: 'creationTime', - title: $t('common.createTime'), - minWidth: '150', - formatter: ({ cellValue }) => { - return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); - }, - }, -]; - -export const auditLogQuerySchema: any = [ - { - component: 'RangePicker', - fieldName: 'time', - label: $t('abp.log.executionTime'), - componentProps: { - 'value-format': 'YYYY-MM-DD', - }, - defaultValue: [ - dayjs().subtract(0, 'day').format('YYYY-MM-DD'), - dayjs().format('YYYY-MM-DD'), - ], - }, - { - component: 'Input', - fieldName: 'userName', - label: $t('abp.log.userName'), - }, - { - component: 'Input', - fieldName: 'correlationId', - label: 'CorrelationId', - }, - { - component: 'Input', - fieldName: 'url', - label: 'Url', - }, -]; - -export const auditLogTableSchema: any = [ - { title: $t('common.seq'), type: 'seq', width: 50 }, - { field: 'url', title: 'Url', minWidth: '150' }, - { field: 'tenantName', title: $t('abp.log.tenant'), minWidth: '150' }, - { field: 'userName', title: $t('abp.log.userName'), minWidth: '150' }, - { - field: 'executionTime', - title: $t('abp.log.executionTime'), - minWidth: '150', - formatter: ({ cellValue }) => { - return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); - }, - }, - { - field: 'executionDuration', - title: $t('abp.log.responseTime'), - minWidth: '150', - }, - { - field: 'clientIpAddress', - title: $t('abp.log.clientIp'), - minWidth: '150', - }, - { field: 'correlationId', title: 'CorrelationId', minWidth: '150' }, - { field: 'exceptions', title: $t('abp.log.exception'), minWidth: '150' }, - { - field: 'action', - fixed: 'right', - slots: { default: 'action' }, - title: '操作', - width: 120, - }, -]; diff --git a/apps/web-antd/src/views/system/abporganizationunit/ContextMenu.vue b/apps/web-antd/src/views/system/abporganizationunit/ContextMenu.vue deleted file mode 100644 index e9b2c26..0000000 --- a/apps/web-antd/src/views/system/abporganizationunit/ContextMenu.vue +++ /dev/null @@ -1,55 +0,0 @@ - - - - - diff --git a/apps/web-ele/.env b/apps/web-ele/.env new file mode 100644 index 0000000..037c2dc --- /dev/null +++ b/apps/web-ele/.env @@ -0,0 +1,8 @@ +# 应用标题 +VITE_APP_TITLE=Abp Vben5 Ele + +# 应用命名空间,用于缓存、store等功能的前缀,确保隔离 +VITE_APP_NAMESPACE=abp-vnext-pro-vben5-ele + +# 对store进行加密的密钥,在将store持久化到localStorage时会使用该密钥进行加密 +VITE_APP_STORE_SECURE_KEY=please-replace-me-with-your-own-key diff --git a/apps/web-antd/.env.analyze b/apps/web-ele/.env.analyze similarity index 100% rename from apps/web-antd/.env.analyze rename to apps/web-ele/.env.analyze diff --git a/apps/web-antd/.env.development b/apps/web-ele/.env.development similarity index 92% rename from apps/web-antd/.env.development rename to apps/web-ele/.env.development index 0267bae..d389e42 100644 --- a/apps/web-antd/.env.development +++ b/apps/web-ele/.env.development @@ -9,13 +9,13 @@ VITE_GLOB_API_URL=/api # 是否开启 Nitro Mock服务,true 为开启,false 为关闭 VITE_NITRO_MOCK=true +# 是否打开 devtools,true 为打开,false 为关闭 +VITE_DEVTOOLS=false + # vue-router 的模式 VITE_ROUTER_HISTORY=history -# 是否打开 devtools,true 为打开,false 为关闭 -VITE_DEVTOOLS=false - # 是否注入全局loading VITE_INJECT_APP_LOADING=true @@ -23,7 +23,7 @@ VITE_INJECT_APP_LOADING=true VITE_REFRESH_ROLE = true # 后端接口地址 -VITE_APP_API_ADDRESS=http://localhost:44315/ +VITE_APP_API_ADDRESS=http://localhost:44315 # websocket地址 VITE_WEBSOCKET_URL=http://localhost:44315/signalr/notification diff --git a/apps/web-antd/.env.production b/apps/web-ele/.env.production similarity index 74% rename from apps/web-antd/.env.production rename to apps/web-ele/.env.production index ef60e7c..5a3ec30 100644 --- a/apps/web-antd/.env.production +++ b/apps/web-ele/.env.production @@ -10,11 +10,15 @@ VITE_COMPRESS=none VITE_PWA=false # vue-router 的模式 -VITE_ROUTER_HISTORY=history +VITE_ROUTER_HISTORY=hash # 是否注入全局loading VITE_INJECT_APP_LOADING=true +# vue-router 的模式 +VITE_ROUTER_HISTORY=history + + # 打包后是否生成dist.zip VITE_ARCHIVER=true @@ -22,7 +26,7 @@ VITE_ARCHIVER=true VITE_REFRESH_ROLE = true # 后端接口地址 -VITE_APP_API_ADDRESS=http://118.190.144.92:9110/ +VITE_APP_API_ADDRESS=http://182.43.18.151:44317/ # websocket地址 -VITE_WEBSOCKET_URL=http://118.190.144.92:9110/signalr/notification +VITE_WEBSOCKET_URL=http://182.43.18.151:44317/signalr/notification diff --git a/apps/web-antd/index.html b/apps/web-ele/index.html similarity index 93% rename from apps/web-antd/index.html rename to apps/web-ele/index.html index 480eb84..2b59b8d 100644 --- a/apps/web-antd/index.html +++ b/apps/web-ele/index.html @@ -21,7 +21,7 @@ (function () { var hm = document.createElement('script'); hm.src = - 'https://hm.baidu.com/hm.js?b38e689f40558f20a9a686d7f6f33edf'; + 'https://hm.baidu.com/hm.js?97352b16ed2df8c3860cf5a1a65fb4dd'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(hm, s); })(); diff --git a/apps/web-antd/package.json b/apps/web-ele/package.json similarity index 87% rename from apps/web-antd/package.json rename to apps/web-ele/package.json index ce67d79..1b9965b 100644 --- a/apps/web-antd/package.json +++ b/apps/web-ele/package.json @@ -1,12 +1,12 @@ { - "name": "@vben/web-antd", - "version": "5.5.3", + "name": "@vben/web-ele", + "version": "5.5.6", "homepage": "https://vben.pro", "bugs": "https://github.com/vbenjs/vue-vben-admin/issues", "repository": { "type": "git", "url": "git+https://github.com/vbenjs/vue-vben-admin.git", - "directory": "apps/web-antd" + "directory": "apps/web-ele" }, "license": "MIT", "author": { @@ -27,6 +27,7 @@ "#/*": "./src/*" }, "dependencies": { + "@iconify/json": "^2.2.282", "@microsoft/signalr": "^8.0.7", "@vben/access": "workspace:*", "@vben/common-ui": "workspace:*", @@ -43,11 +44,10 @@ "@vben/types": "workspace:*", "@vben/utils": "workspace:*", "@vueuse/core": "catalog:", - "ant-design-vue": "catalog:", "axios": "^1.7.7", "clipboard": "^2.0.11", - "codemirror-editor-vue3": "^2.8.0", "dayjs": "catalog:", + "element-plus": "catalog:", "pinia": "catalog:", "vue": "catalog:", "vue-request": "^2.0.4", @@ -56,6 +56,7 @@ }, "devDependencies": { "@hey-api/client-axios": "^0.2.10", - "@hey-api/openapi-ts": "^0.55.3" + "@hey-api/openapi-ts": "^0.55.3", + "unplugin-element-plus": "catalog:" } } diff --git a/apps/web-antd/postcss.config.mjs b/apps/web-ele/postcss.config.mjs similarity index 100% rename from apps/web-antd/postcss.config.mjs rename to apps/web-ele/postcss.config.mjs diff --git a/apps/web-ele/public/avatar-v1.webp b/apps/web-ele/public/avatar-v1.webp new file mode 100644 index 0000000..9f6ba9a Binary files /dev/null and b/apps/web-ele/public/avatar-v1.webp differ diff --git a/apps/web-antd/public/favicon.ico b/apps/web-ele/public/favicon.ico similarity index 100% rename from apps/web-antd/public/favicon.ico rename to apps/web-ele/public/favicon.ico diff --git a/apps/web-ele/public/logo-v1.webp b/apps/web-ele/public/logo-v1.webp new file mode 100644 index 0000000..25a6f39 Binary files /dev/null and b/apps/web-ele/public/logo-v1.webp differ diff --git a/apps/web-ele/src/adapter/component/index.ts b/apps/web-ele/src/adapter/component/index.ts new file mode 100644 index 0000000..e2f533c --- /dev/null +++ b/apps/web-ele/src/adapter/component/index.ts @@ -0,0 +1,338 @@ +/** + * 通用组件共同的使用的基础组件,原先放在 adapter/form 内部,限制了使用范围,这里提取出来,方便其他地方使用 + * 可用于 vben-form、vben-modal、vben-drawer 等组件使用, + */ + +import type { Component } from 'vue'; + +import type { BaseFormComponentType } from '@vben/common-ui'; +import type { Recordable } from '@vben/types'; + +import { + defineAsyncComponent, + defineComponent, + getCurrentInstance, + h, + ref, +} from 'vue'; + +import { ApiComponent, globalShareState, IconPicker } from '@vben/common-ui'; +import { $t } from '@vben/locales'; + +import { ElNotification } from 'element-plus'; + +const ElButton = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/button/index'), + import('element-plus/es/components/button/style/css'), + ]).then(([res]) => res.ElButton), +); +const ElCheckbox = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/checkbox/index'), + import('element-plus/es/components/checkbox/style/css'), + ]).then(([res]) => res.ElCheckbox), +); +const ElCheckboxButton = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/checkbox/index'), + import('element-plus/es/components/checkbox-button/style/css'), + ]).then(([res]) => res.ElCheckboxButton), +); +const ElCheckboxGroup = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/checkbox/index'), + import('element-plus/es/components/checkbox-group/style/css'), + ]).then(([res]) => res.ElCheckboxGroup), +); +const ElDatePicker = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/date-picker/index'), + import('element-plus/es/components/date-picker/style/css'), + ]).then(([res]) => res.ElDatePicker), +); +const ElDivider = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/divider/index'), + import('element-plus/es/components/divider/style/css'), + ]).then(([res]) => res.ElDivider), +); +const ElInput = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/input/index'), + import('element-plus/es/components/input/style/css'), + ]).then(([res]) => res.ElInput), +); +const ElInputNumber = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/input-number/index'), + import('element-plus/es/components/input-number/style/css'), + ]).then(([res]) => res.ElInputNumber), +); +const ElRadio = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/radio/index'), + import('element-plus/es/components/radio/style/css'), + ]).then(([res]) => res.ElRadio), +); +const ElRadioButton = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/radio/index'), + import('element-plus/es/components/radio-button/style/css'), + ]).then(([res]) => res.ElRadioButton), +); +const ElRadioGroup = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/radio/index'), + import('element-plus/es/components/radio-group/style/css'), + ]).then(([res]) => res.ElRadioGroup), +); +const ElSelectV2 = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/select-v2/index'), + import('element-plus/es/components/select-v2/style/css'), + ]).then(([res]) => res.ElSelectV2), +); +const ElSpace = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/space/index'), + import('element-plus/es/components/space/style/css'), + ]).then(([res]) => res.ElSpace), +); +const ElSwitch = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/switch/index'), + import('element-plus/es/components/switch/style/css'), + ]).then(([res]) => res.ElSwitch), +); +const ElTimePicker = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/time-picker/index'), + import('element-plus/es/components/time-picker/style/css'), + ]).then(([res]) => res.ElTimePicker), +); +const ElTreeSelect = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/tree-select/index'), + import('element-plus/es/components/tree-select/style/css'), + ]).then(([res]) => res.ElTreeSelect), +); +const ElUpload = defineAsyncComponent(() => + Promise.all([ + import('element-plus/es/components/upload/index'), + import('element-plus/es/components/upload/style/css'), + ]).then(([res]) => res.ElUpload), +); + +const withDefaultPlaceholder = ( + component: T, + type: 'input' | 'select', + componentProps: Recordable = {}, +) => { + return defineComponent({ + name: component.name, + inheritAttrs: false, + setup: (props: any, { attrs, expose, slots }) => { + const placeholder = + props?.placeholder || + attrs?.placeholder || + $t(`ui.placeholder.${type}`); + // 透传组件暴露的方法 + const innerRef = ref(); + const publicApi: Recordable = {}; + expose(publicApi); + const instance = getCurrentInstance(); + instance?.proxy?.$nextTick(() => { + for (const key in innerRef.value) { + if (typeof innerRef.value[key] === 'function') { + publicApi[key] = innerRef.value[key]; + } + } + }); + return () => + h( + component, + { ...componentProps, placeholder, ...props, ...attrs, ref: innerRef }, + slots, + ); + }, + }); +}; + +// 这里需要自行根据业务组件库进行适配,需要用到的组件都需要在这里类型说明 +export type ComponentType = + | 'ApiSelect' + | 'ApiTreeSelect' + | 'Checkbox' + | 'CheckboxGroup' + | 'DatePicker' + | 'Divider' + | 'IconPicker' + | 'Input' + | 'InputNumber' + | 'RadioGroup' + | 'Select' + | 'Space' + | 'Switch' + | 'TimePicker' + | 'TreeSelect' + | 'Upload' + | BaseFormComponentType; + +async function initComponentAdapter() { + const components: Partial> = { + // 如果你的组件体积比较大,可以使用异步加载 + // Button: () => + // import('xxx').then((res) => res.Button), + ApiSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiSelect', + }, + 'select', + { + component: ElSelectV2, + loadingSlot: 'loading', + visibleEvent: 'onVisibleChange', + }, + ), + ApiTreeSelect: withDefaultPlaceholder( + { + ...ApiComponent, + name: 'ApiTreeSelect', + }, + 'select', + { + component: ElTreeSelect, + props: { label: 'label', children: 'children' }, + nodeKey: 'value', + loadingSlot: 'loading', + optionsPropName: 'data', + visibleEvent: 'onVisibleChange', + }, + ), + Checkbox: ElCheckbox, + CheckboxGroup: (props, { attrs, slots }) => { + let defaultSlot; + if (Reflect.has(slots, 'default')) { + defaultSlot = slots.default; + } else { + const { options, isButton } = attrs; + if (Array.isArray(options)) { + defaultSlot = () => + options.map((option) => + h(isButton ? ElCheckboxButton : ElCheckbox, option), + ); + } + } + return h( + ElCheckboxGroup, + { ...props, ...attrs }, + { ...slots, default: defaultSlot }, + ); + }, + // 自定义默认按钮 + DefaultButton: (props, { attrs, slots }) => { + return h(ElButton, { ...props, attrs, type: 'info' }, slots); + }, + // 自定义主要按钮 + PrimaryButton: (props, { attrs, slots }) => { + return h(ElButton, { ...props, attrs, type: 'primary' }, slots); + }, + Divider: ElDivider, + IconPicker: withDefaultPlaceholder(IconPicker, 'select', { + iconSlot: 'append', + modelValueProp: 'model-value', + inputComponent: ElInput, + }), + Input: withDefaultPlaceholder(ElInput, 'input'), + InputNumber: withDefaultPlaceholder(ElInputNumber, 'input'), + RadioGroup: (props, { attrs, slots }) => { + let defaultSlot; + if (Reflect.has(slots, 'default')) { + defaultSlot = slots.default; + } else { + const { options } = attrs; + if (Array.isArray(options)) { + defaultSlot = () => + options.map((option) => + h(attrs.isButton ? ElRadioButton : ElRadio, option), + ); + } + } + return h( + ElRadioGroup, + { ...props, ...attrs }, + { ...slots, default: defaultSlot }, + ); + }, + Select: (props, { attrs, slots }) => { + return h(ElSelectV2, { ...props, attrs }, slots); + }, + Space: ElSpace, + Switch: ElSwitch, + TimePicker: (props, { attrs, slots }) => { + const { name, id, isRange } = props; + const extraProps: Recordable = {}; + if (isRange) { + if (name && !Array.isArray(name)) { + extraProps.name = [name, `${name}_end`]; + } + if (id && !Array.isArray(id)) { + extraProps.id = [id, `${id}_end`]; + } + } + return h( + ElTimePicker, + { + ...props, + ...attrs, + ...extraProps, + }, + slots, + ); + }, + DatePicker: (props, { attrs, slots }) => { + const { name, id, type } = props; + const extraProps: Recordable = {}; + if (type && type.includes('range')) { + if (name && !Array.isArray(name)) { + extraProps.name = [name, `${name}_end`]; + } + if (id && !Array.isArray(id)) { + extraProps.id = [id, `${id}_end`]; + } + } + return h( + ElDatePicker, + { + ...props, + ...attrs, + ...extraProps, + }, + slots, + ); + }, + TreeSelect: withDefaultPlaceholder(ElTreeSelect, 'select'), + Upload: ElUpload, + }; + + // 将组件注册到全局共享状态中 + globalShareState.setComponents(components); + + // 定义全局共享状态中的消息提示 + globalShareState.defineMessage({ + // 复制成功消息提示 + copyPreferencesSuccess: (title, content) => { + ElNotification({ + title, + message: content, + position: 'bottom-right', + duration: 0, + type: 'success', + }); + }, + }); +} + +export { initComponentAdapter }; diff --git a/apps/web-antd/src/adapter/form.ts b/apps/web-ele/src/adapter/form.ts similarity index 75% rename from apps/web-antd/src/adapter/form.ts rename to apps/web-ele/src/adapter/form.ts index 65ff793..13ae9c4 100644 --- a/apps/web-antd/src/adapter/form.ts +++ b/apps/web-ele/src/adapter/form.ts @@ -10,26 +10,18 @@ import { $t } from '@vben/locales'; setupVbenForm({ config: { - // ant design vue组件库默认都是 v-model:value - baseModelPropName: 'value', - - // 一些组件是 v-model:checked 或者 v-model:fileList modelPropNameMap: { - Checkbox: 'checked', - Radio: 'checked', - Switch: 'checked', Upload: 'fileList', + CheckboxGroup: 'model-value', }, }, defineRules: { - // 输入项目必填国际化适配 required: (value, _params, ctx) => { if (value === undefined || value === null || value.length === 0) { return $t('ui.formRules.required', [ctx.label]); } return true; }, - // 选择项目必填国际化适配 selectRequired: (value, _params, ctx) => { if (value === undefined || value === null) { return $t('ui.formRules.selectRequired', [ctx.label]); diff --git a/apps/web-antd/src/adapter/vxe-table.ts b/apps/web-ele/src/adapter/vxe-table.ts similarity index 80% rename from apps/web-antd/src/adapter/vxe-table.ts rename to apps/web-ele/src/adapter/vxe-table.ts index c29f08f..491544f 100644 --- a/apps/web-antd/src/adapter/vxe-table.ts +++ b/apps/web-ele/src/adapter/vxe-table.ts @@ -2,7 +2,7 @@ import { h } from 'vue'; import { setupVbenVxeTable, useVbenVxeGrid } from '@vben/plugins/vxe-table'; -import { Button, Image } from 'ant-design-vue'; +import { ElButton, ElImage } from 'element-plus'; import { useVbenForm } from './form'; @@ -20,7 +20,11 @@ setupVbenVxeTable({ // 全局禁用vxe-table的表单配置,使用formOptions enabled: false, }, + sortConfig: { + remote: true, + }, proxyConfig: { + sort: true, // 启用排序请求代理 autoLoad: true, response: { result: 'items', @@ -32,7 +36,8 @@ setupVbenVxeTable({ }, round: true, showOverflow: true, - size: 'small', // medium / small / mini + stripe: true, // 斑马线 + size: 'small', }, }); @@ -40,7 +45,8 @@ setupVbenVxeTable({ vxeUI.renderer.add('CellImage', { renderTableDefault(_renderOpts, params) { const { column, row } = params; - return h(Image, { src: row[column.field] }); + const src = row[column.field]; + return h(ElImage, { src, previewSrcList: [src] }); }, }); @@ -49,8 +55,8 @@ setupVbenVxeTable({ renderTableDefault(renderOpts) { const { props } = renderOpts; return h( - Button, - { size: 'small', type: 'link' }, + ElButton, + { size: 'small', link: true }, { default: () => props?.text }, ); }, diff --git a/apps/web-antd/src/api-client-config/config.ts b/apps/web-ele/src/api-client-config/config.ts similarity index 70% rename from apps/web-antd/src/api-client-config/config.ts rename to apps/web-ele/src/api-client-config/config.ts index 7c56fd6..d562e98 100644 --- a/apps/web-antd/src/api-client-config/config.ts +++ b/apps/web-ele/src/api-client-config/config.ts @@ -2,6 +2,6 @@ import { defineConfig } from '@hey-api/openapi-ts'; export default defineConfig({ client: '@hey-api/client-axios', - input: 'http://localhost:44315/swagger/IOT/swagger.json', + input: 'http://localhost:44315/swagger/AbpPro/swagger.json', output: 'src/api-client', }); diff --git a/apps/web-ele/src/api-client-config/index.ts b/apps/web-ele/src/api-client-config/index.ts new file mode 100644 index 0000000..ed5e85c --- /dev/null +++ b/apps/web-ele/src/api-client-config/index.ts @@ -0,0 +1,146 @@ +import { useAccessStore, useUserStore } from '@vben/stores'; + +import { ElMessage as Message } from 'element-plus'; + +import { postApiAppAccountRefreshToken } from '#/api-client'; +import { $t } from '#/locales'; +import { elementLocale } from '#/locales/index'; +import { useAuthStore } from '#/store'; + +import { client } from '../api-client/services.gen'; + +client.setConfig({ + baseURL: import.meta.env.DEV + ? '/proxy/' + : import.meta.env.VITE_APP_API_ADDRESS, + timeout: 1000 * 60, + responseType: 'json', + throwOnError: true, +}); +// 是否正在刷新token +let isRefreshing = false; +// 刷新token队列 +let refreshTokenQueue: ((token: string) => void)[] = []; + +client.instance.interceptors.request.use((request) => { + // 全局拦截请求发送前提交的参数 + const userStore = useUserStore(); + const accessStore = useAccessStore(); + const token = accessStore.getAccessToken(); + // 设置请求头 + if (request.headers) { + request.headers.__tenant = userStore.tenant?.tenantId; + // todo vben5 没有提供统一获取当前语言的方式 + request.headers['accept-language'] = elementLocale.value.name; + } + // 如果token过期,则跳转到登录页面 + if ( + request.url !== undefined && + request.url.includes('/api/app/account/login') + ) { + return request; + } + + // 设置请求头 + if (request.headers) { + request.headers.Authorization = `Bearer ${token}`; + } + + return request; +}); + +client.instance.interceptors.response.use( + (response) => { + return Promise.resolve(response); + }, + async (error) => { + let message = error.message; + if (message === 'Network Error') { + message = $t('common.mesage500'); + } else if (message.includes('timeout')) { + message = $t('common.timeOut'); + } else + switch (error.status) { + case 400: { + message = error.response.data.error?.validationErrors[0].message; + + break; + } + case 401: { + message = $t('common.mesage401'); + const { config } = error; + const originalRequest = config; + if (isRefreshing) { + return new Promise((resolve) => { + refreshTokenQueue.push((token) => { + originalRequest.headers.Authorization = `Bearer ${token}`; + resolve(client.request(originalRequest)); + }); + }); + } else { + isRefreshing = true; + try { + const newToken = await refreshTokenAsync(); + // 处理队列中的请求 + refreshTokenQueue.forEach((callback) => callback(newToken)); + // 清空队列 + refreshTokenQueue = []; + return client.request(originalRequest); + } catch (refreshError) { + // 如果刷新 token 失败,处理错误(如强制登出或跳转登录页面) + message = $t('common.mesage401'); + refreshTokenQueue = []; + const authStore = useAuthStore(); + authStore.logout(); + console.error(refreshError); + } finally { + isRefreshing = false; + } + } + break; + } + case 403: { + message = $t('common.mesage403'); + + break; + } + case 500: { + message = error.response.data.error?.message; + + break; + } + default: { + if (message.includes('Request failed with status code')) { + message = $t('common.mesage500'); + } + } + } + Message.error(message); + throw error; + }, +); + +async function refreshTokenAsync(): Promise { + try { + const userStore = useUserStore(); + const accessStore = useAccessStore(); + const refreshToken = accessStore.getRefreshToken(); + if (!refreshToken) return ''; + const res = await postApiAppAccountRefreshToken({ + body: { + userId: userStore.userInfo?.id, + refreshToken, + }, + }); + if (res?.data?.success) { + accessStore.setAccessToken(res.data.token as string); + accessStore.setRefreshToken(res.data.refreshToken as string); + return res.data.token as string; + } else { + throw new Error('get refreshToken error'); + } + } catch { + throw new Error($t('common.mesage401')); + } +} +export default client; diff --git a/apps/web-antd/src/api-client/index.ts b/apps/web-ele/src/api-client/index.ts similarity index 100% rename from apps/web-antd/src/api-client/index.ts rename to apps/web-ele/src/api-client/index.ts diff --git a/apps/web-antd/src/api-client/schemas.gen.ts b/apps/web-ele/src/api-client/schemas.gen.ts similarity index 59% rename from apps/web-antd/src/api-client/schemas.gen.ts rename to apps/web-ele/src/api-client/schemas.gen.ts index 6bb1395..5911319 100644 --- a/apps/web-antd/src/api-client/schemas.gen.ts +++ b/apps/web-ele/src/api-client/schemas.gen.ts @@ -15,6 +15,19 @@ export const AbpLoginResultSchema = { additionalProperties: false } as const; +export const AbpProApplicationConfigurationDtoSchema = { + type: 'object', + properties: { + oidcConfiguration: { + '$ref': '#/components/schemas/ApplicationOidcConfigurationDto' + }, + multiTenancy: { + '$ref': '#/components/schemas/MultiTenancyInfoDto' + } + }, + additionalProperties: false +} as const; + export const ActionApiDescriptionModelSchema = { type: 'object', properties: { @@ -75,14 +88,17 @@ export const AddOrUpdateConnectionStringInputSchema = { properties: { id: { type: 'string', + description: 'id', format: 'uuid' }, name: { type: 'string', + description: '连接字符串名称', nullable: true }, value: { type: 'string', + description: '连接字符串地址', nullable: true } }, @@ -352,6 +368,24 @@ export const ApplicationLocalizationResourceDtoSchema = { additionalProperties: false } as const; +export const ApplicationOidcConfigurationDtoSchema = { + type: 'object', + properties: { + enabled: { + type: 'boolean', + description: '是否启用' + }, + oidcConfiguration: { + type: 'array', + items: { + '$ref': '#/components/schemas/OidcConfiguration' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + export const ApplicationSettingConfigurationDtoSchema = { type: 'object', properties: { @@ -397,6 +431,15 @@ export const ClockDtoSchema = { additionalProperties: false } as const; +export const ControlTypeSchema = { + enum: [10, 20, 30, 40], + type: 'integer', + description: '控制策略', + format: 'int32', + 'x-enumNames': ['Aggregate', 'Entity', 'Enum', 'Global'], + 'x-enum-varnames': ['Aggregate', 'Entity', 'Enum', 'Global'] +} as const; + export const ControllerApiDescriptionModelSchema = { type: 'object', properties: { @@ -462,6 +505,49 @@ export const ControllerInterfaceApiDescriptionModelSchema = { additionalProperties: false } as const; +export const CopyTemplateInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const CreateAggregateInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + projectId: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + } + }, + additionalProperties: false +} as const; + export const CreateDataDictinaryDetailInputSchema = { type: 'object', properties: { @@ -508,30 +594,191 @@ export const CreateDataDictinaryInputSchema = { additionalProperties: false } as const; +export const CreateEntityModelInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + }, + relationalType: { + '$ref': '#/components/schemas/RelationalType' + } + }, + additionalProperties: false +} as const; + +export const CreateEntityModelPropertyInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + }, + isRequired: { + type: 'boolean', + description: '必填' + }, + maxLength: { + type: 'integer', + description: '字符串最大长度', + format: 'int32', + nullable: true + }, + minLength: { + type: 'integer', + description: '字符串最小长度', + format: 'int32', + nullable: true + }, + decimalPrecision: { + type: 'integer', + description: '当类型为decimal时的小数位数 (18,4) 中的18', + format: 'int32', + nullable: true + }, + decimalScale: { + type: 'integer', + description: '当类型为decimal时的字段长度 (18,4) 中的4', + format: 'int32', + nullable: true + }, + enumTypeId: { + type: 'string', + description: '枚举类型Id', + format: 'uuid', + nullable: true + }, + dataTypeId: { + type: 'string', + description: '数据类型Id', + format: 'uuid', + nullable: true + }, + allowSearch: { + type: 'boolean', + description: '允许作为查询条件' + }, + allowAdd: { + type: 'boolean', + description: '允许添加' + }, + allowEdit: { + type: 'boolean', + description: '允许编辑' + } + }, + additionalProperties: false +} as const; + +export const CreateEnumTypeInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + }, + entityModelId: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + }, + projectId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const CreateEnumTypePropertyInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + enumTypeId: { + type: 'string', + description: 'Id', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + value: { + type: 'integer', + description: '枚举值', + format: 'int32' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + } + }, + additionalProperties: false +} as const; + export const CreateLanguageInputSchema = { type: 'object', properties: { cultureName: { type: 'string', + description: '语言名称', nullable: true }, uiCultureName: { type: 'string', + description: 'Ui语言名称', nullable: true }, displayName: { type: 'string', + description: '显示名称', nullable: true }, flagIcon: { type: 'string', + description: '图标', nullable: true }, isEnabled: { - type: 'boolean' + type: 'boolean', + description: '是否启用' } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言' } as const; export const CreateLanguageTextInputSchema = { @@ -539,22 +786,104 @@ export const CreateLanguageTextInputSchema = { properties: { resourceName: { type: 'string', + description: '资源名称', nullable: true }, cultureName: { type: 'string', + description: '语言名称', nullable: true }, name: { type: 'string', + description: '名称', nullable: true }, value: { type: 'string', + description: '值', nullable: true } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言文本' +} as const; + +export const CreateMenuInputSchema = { + required: ['hideInMenu', 'keepAlive', 'name', 'order', 'path', 'title'], + type: 'object', + properties: { + parentId: { + type: 'string', + format: 'uuid', + nullable: true + }, + name: { + minLength: 1, + type: 'string', + description: '唯一编码' + }, + title: { + minLength: 1, + type: 'string', + description: '标题' + }, + displayTitle: { + type: 'string', + description: '标题', + nullable: true + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + keepAlive: { + type: 'boolean', + description: '是否缓存' + }, + hideInMenu: { + type: 'boolean', + description: '是否显示' + }, + order: { + type: 'integer', + description: '排序', + format: 'int32' + }, + path: { + minLength: 1, + type: 'string', + description: '路由地址' + }, + menuType: { + '$ref': '#/components/schemas/MenuType' + }, + openType: { + '$ref': '#/components/schemas/OpenType' + }, + url: { + type: 'string', + description: '内外链地址', + nullable: true + }, + component: { + type: 'string', + description: '组件地址', + nullable: true + }, + enabled: { + type: 'boolean', + description: '是否启用' + }, + policy: { + type: 'string', + description: '权限', + nullable: true + } + }, + additionalProperties: false, + description: '创建菜单' } as const; export const CreateOrganizationUnitInputSchema = { @@ -573,6 +902,121 @@ export const CreateOrganizationUnitInputSchema = { additionalProperties: false } as const; +export const CreateProjectInputSchema = { + type: 'object', + properties: { + owner: { + type: 'string', + description: '负责人', + nullable: true + }, + companyName: { + type: 'string', + description: '公司名称', + nullable: true + }, + projectName: { + type: 'string', + description: '项目名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + }, + supportTenant: { + type: 'boolean', + description: '是否支持多租户' + } + }, + additionalProperties: false +} as const; + +export const CreateTemplateDetailInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + parentId: { + type: 'string', + format: 'uuid', + nullable: true + }, + templateType: { + '$ref': '#/components/schemas/TemplateType' + }, + controlType: { + '$ref': '#/components/schemas/ControlType' + }, + name: { + type: 'string', + description: '模板类型', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const CreateTemplateInputSchema = { + type: 'object', + properties: { + name: { + type: 'string', + description: '名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const CreateTextTemplateInputSchema = { + required: ['code', 'content', 'cultureName', 'name'], + type: 'object', + properties: { + name: { + minLength: 1, + type: 'string', + description: '名称' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + content: { + minLength: 1, + type: 'string', + description: '内容' + }, + cultureName: { + minLength: 1, + type: 'string', + description: '语言' + } + }, + additionalProperties: false, + description: '创建模板' +} as const; + export const CurrentCultureDtoSchema = { type: 'object', properties: { @@ -708,6 +1152,31 @@ export const CurrentUserDtoSchema = { additionalProperties: false } as const; +export const DataTypeDtoSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '编码', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + isEnum: { + type: 'boolean', + description: '是否是枚举' + } + }, + additionalProperties: false +} as const; + export const DateTimeFormatDtoSchema = { type: 'object', properties: { @@ -743,15 +1212,28 @@ export const DateTimeFormatDtoSchema = { additionalProperties: false } as const; +export const DeleteAggregateInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + export const DeleteConnectionStringInputSchema = { type: 'object', properties: { name: { type: 'string', + description: '连接字符串名称', nullable: true }, tenantId: { type: 'string', + description: '租户id', format: 'uuid' } }, @@ -773,6 +1255,69 @@ export const DeleteDataDictionaryDetailInputSchema = { additionalProperties: false } as const; +export const DeleteEntityModelInputSchema = { + type: 'object', + properties: { + aggregateId: { + type: 'string', + format: 'uuid' + }, + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteEntityModelPropertyInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + propertyId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteEnumTypeInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: 'Id', + format: 'uuid' + }, + entityModelId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteEnumTypePropertyInputSchema = { + type: 'object', + properties: { + enumTypeId: { + type: 'string', + description: 'Id', + format: 'uuid' + }, + id: { + type: 'string', + description: 'Id', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + export const DeleteFeatureInputSchema = { type: 'object', properties: { @@ -788,14 +1333,175 @@ export const DeleteFeatureInputSchema = { additionalProperties: false } as const; +export const DeleteFileObjectInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '文件Id', + format: 'uuid' + } + }, + additionalProperties: false, + description: '删除文件' +} as const; + export const DeleteLanguageInputSchema = { type: 'object', properties: { id: { type: 'string', + description: '语言Id', format: 'uuid' } }, + additionalProperties: false, + description: '删除语言' +} as const; + +export const DeleteMenuInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '菜单Id', + format: 'uuid' + } + }, + additionalProperties: false, + description: '删除菜单' +} as const; + +export const DeleteMessageInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + receiverUserId: { + type: 'string', + description: '接受者Id', + format: 'uuid', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const DeleteProjectInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteTemplateDetailInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + format: 'uuid' + }, + templateDetailId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteTemplateInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const DeleteTextTemplateInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '模板Id', + format: 'uuid' + } + }, + additionalProperties: false, + description: '删除模板' +} as const; + +export const DisabledTwoFactorInputSchema = { + required: ['code'], + type: 'object', + properties: { + code: { + minLength: 1, + type: 'string', + description: '验证码' + } + }, + additionalProperties: false +} as const; + +export const DownCodeInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + format: 'uuid' + }, + projectId: { + type: 'string', + format: 'uuid' + }, + entityId: { + type: 'array', + items: { + type: 'string', + format: 'uuid' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const DownloadFileObjectInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '文件Id', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const EnabledTwoFactorInputSchema = { + required: ['code', 'secret'], + type: 'object', + properties: { + code: { + minLength: 1, + type: 'string', + description: '验证码' + }, + secret: { + minLength: 1, + type: 'string', + description: '密钥' + } + }, additionalProperties: false } as const; @@ -826,6 +1532,39 @@ export const EntityExtensionDtoSchema = { additionalProperties: false } as const; +export const EntityOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '编码', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + codeCamelCase: { + type: 'string', + description: '首字母小写', + nullable: true, + readOnly: true + }, + codePluralized: { + type: 'string', + description: '复数形式', + nullable: true, + readOnly: true + } + }, + additionalProperties: false +} as const; + export const ExtensionEnumDtoSchema = { type: 'object', properties: { @@ -1735,6 +2474,243 @@ export const FindTenantResultDtoSchema = { additionalProperties: false } as const; +export const GetDataTypeInputSchema = { + type: 'object', + properties: { + entityModelId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const GetDataTypeOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '枚举编码', + nullable: true + }, + description: { + type: 'string', + description: '枚举描述', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetEntityModelInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const GetEntityModelOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '编码', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + relationalType: { + '$ref': '#/components/schemas/RelationalType' + }, + entityModelProperties: { + type: 'array', + items: { + '$ref': '#/components/schemas/GetEntityModelPropertyOutput' + }, + description: '实体模型属性集合', + nullable: true + }, + entityModelOutputs: { + type: 'array', + items: { + '$ref': '#/components/schemas/GetEntityModelOutput' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetEntityModelPropertyOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + isRequired: { + type: 'boolean', + description: '必填' + }, + maxLength: { + type: 'integer', + description: '字符串最大长度', + format: 'int32', + nullable: true + }, + minLength: { + type: 'integer', + description: '字符串最小长度', + format: 'int32', + nullable: true + }, + decimalPrecision: { + type: 'integer', + description: '当类型为decimal时的小数位数 (18,4) 中的18', + format: 'int32', + nullable: true + }, + decimalScale: { + type: 'integer', + description: '当类型为decimal时的字段长度 (18,4) 中的4', + format: 'int32', + nullable: true + }, + enumTypeId: { + type: 'string', + description: '枚举类型Id', + format: 'uuid', + nullable: true + }, + isEnum: { + type: 'boolean' + }, + enumTypeOutput: { + '$ref': '#/components/schemas/GetEnumTypeOutput' + }, + dataTypeId: { + type: 'string', + description: '数据类型Id', + format: 'uuid', + nullable: true + }, + dataTypeOutput: { + '$ref': '#/components/schemas/GetDataTypeOutput' + }, + entityModelId: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const GetEntityModelTreeInputSchema = { + type: 'object', + properties: { + projectId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const GetEntityModelTreeOutputSchema = { + type: 'object', + properties: { + key: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + code: { + type: 'string', + description: '描述', + nullable: true + }, + title: { + type: 'string', + description: '描述', + nullable: true + }, + parentId: { + type: 'string', + description: '父类Id', + format: 'uuid', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + relationalType: { + '$ref': '#/components/schemas/RelationalType' + }, + children: { + type: 'array', + items: { + '$ref': '#/components/schemas/GetEntityModelTreeOutput' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetEnumTypeOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + type: 'string', + description: '枚举编码', + nullable: true + }, + description: { + type: 'string', + description: '枚举描述', + nullable: true + } + }, + additionalProperties: false +} as const; + export const GetFeatureListResultDtoSchema = { type: 'object', properties: { @@ -1764,22 +2740,118 @@ export const GetFeatureListResultInputSchema = { additionalProperties: false } as const; +export const GetMenuTreeMetaOutputSchema = { + type: 'object', + properties: { + title: { + type: 'string', + nullable: true + }, + displayTitle: { + type: 'string', + nullable: true + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + order: { + type: 'integer', + description: '排序', + format: 'int32' + }, + keepAlive: { + type: 'boolean', + description: '是否缓存' + }, + hideInMenu: { + type: 'boolean', + description: '是否显示' + }, + link: { + type: 'string', + description: '外链地址', + nullable: true + }, + iframeSrc: { + type: 'string', + description: '内链地址', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetMenuTreeOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + parentId: { + type: 'string', + format: 'uuid', + nullable: true + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + path: { + type: 'string', + nullable: true + }, + component: { + type: 'string', + nullable: true + }, + enabled: { + type: 'boolean' + }, + meta: { + '$ref': '#/components/schemas/GetMenuTreeMetaOutput' + }, + children: { + type: 'array', + items: { + '$ref': '#/components/schemas/GetMenuTreeOutput' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + export const GetOrganizationUnitRoleInputSchema = { type: 'object', properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, organizationUnitId: { type: 'string', format: 'uuid' @@ -1826,17 +2898,28 @@ export const GetOrganizationUnitUserInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, organizationUnitId: { type: 'string', format: 'uuid' @@ -1901,22 +2984,140 @@ export const GetPermissionInputSchema = { additionalProperties: false } as const; +export const GetProjectAndEntityInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + +export const GetProjectAndEntityOutputSchema = { + type: 'object', + properties: { + project: { + '$ref': '#/components/schemas/ProjectOutput' + }, + entities: { + type: 'array', + items: { + '$ref': '#/components/schemas/EntityOutput' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetQRCodeOutputSchema = { + type: 'object', + properties: { + qrCode: { + type: 'string', + description: 'base64 二维码', + format: 'byte', + nullable: true + }, + secret: { + type: 'string', + description: '密钥', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetTemplateTreeOutputSchema = { + type: 'object', + properties: { + key: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + templateType: { + '$ref': '#/components/schemas/TemplateType' + }, + controlType: { + '$ref': '#/components/schemas/ControlType' + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + name: { + type: 'string', + description: '模板名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + title: { + type: 'string', + description: '描述', + nullable: true + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + }, + children: { + type: 'array', + items: { + '$ref': '#/components/schemas/GetTemplateTreeOutput' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const GetTemplteTreeInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + export const GetUnAddRoleInputSchema = { type: 'object', properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, organizationUnitId: { type: 'string', format: 'uuid' @@ -1967,17 +3168,28 @@ export const GetUnAddUserInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, organizationUnitId: { type: 'string', format: 'uuid' @@ -2154,6 +3366,10 @@ export const IdentityRoleDtoSchema = { concurrencyStamp: { type: 'string', nullable: true + }, + creationTime: { + type: 'string', + format: 'date-time' } }, additionalProperties: false @@ -2529,19 +3745,64 @@ export const LockUserInputSchema = { additionalProperties: false } as const; +export const Login2FAInputSchema = { + type: 'object', + properties: { + name: { + type: 'string', + description: '用户名或者邮箱', + nullable: true + }, + password: { + type: 'string', + description: '密码', + nullable: true + }, + code: { + type: 'string', + description: '双因素验证码', + nullable: true + } + }, + additionalProperties: false, + description: '登录' +} as const; + export const LoginInputSchema = { type: 'object', properties: { name: { type: 'string', + description: '用户名或者邮箱', nullable: true }, password: { type: 'string', + description: '密码', nullable: true } }, - additionalProperties: false + additionalProperties: false, + description: '登录' +} as const; + +export const LoginOidcInputSchema = { + required: ['code', 'state'], + type: 'object', + properties: { + code: { + minLength: 1, + type: 'string', + description: 'code' + }, + state: { + minLength: 1, + type: 'string', + description: 'Provider' + } + }, + additionalProperties: false, + description: '登录' } as const; export const LoginOutputSchema = { @@ -2563,6 +3824,10 @@ export const LoginOutputSchema = { type: 'string', nullable: true }, + refreshToken: { + type: 'string', + nullable: true + }, roles: { type: 'array', items: { @@ -2582,9 +3847,19 @@ export const LoginResultTypeSchema = { 'x-enum-varnames': ['Success', 'InvalidUserNameOrPassword', 'NotAllowed', 'LockedOut', 'RequiresTwoFactor'] } as const; +export const MenuTypeSchema = { + enum: [10, 20], + type: 'integer', + description: '菜单类型', + format: 'int32', + 'x-enumNames': ['Folder', 'Menu'], + 'x-enum-varnames': ['Folder', 'Menu'] +} as const; + export const MessageLevelSchema = { enum: [10, 20, 30], type: 'integer', + description: '消息等级', format: 'int32', 'x-enumNames': ['Warning', 'Information', 'Error'], 'x-enum-varnames': ['Warning', 'Information', 'Error'] @@ -2593,6 +3868,7 @@ export const MessageLevelSchema = { export const MessageTypeSchema = { enum: [10, 20], type: 'integer', + description: '消息类型', format: 'int32', 'x-enumNames': ['BroadCast', 'Common'], 'x-enum-varnames': ['BroadCast', 'Common'] @@ -2731,6 +4007,20 @@ export const NameValueSchema = { additionalProperties: false } as const; +export const NeedChangePasswordOutputSchema = { + type: 'object', + properties: { + needChangePassword: { + type: 'boolean' + }, + message: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + export const ObjectExtensionsDtoSchema = { type: 'object', properties: { @@ -2752,6 +4042,471 @@ export const ObjectExtensionsDtoSchema = { additionalProperties: false } as const; +export const OidcConfigurationSchema = { + type: 'object', + properties: { + enabled: { + type: 'boolean', + description: '是否启用' + }, + type: { + type: 'string', + description: '类型', + nullable: true + }, + clientId: { + type: 'string', + description: 'client_id', + nullable: true + }, + clientName: { + type: 'string', + description: '应用名称', + nullable: true + }, + icon: { + type: 'string', + description: '应用图标', + nullable: true + }, + authUri: { + type: 'string', + description: '认证地址', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const OpenTypeSchema = { + enum: [10, 20, 30, 40], + type: 'integer', + description: '打开类型', + format: 'int32', + 'x-enumNames': ['Default', 'Component', 'InternalLink', 'ExternalLink'], + 'x-enum-varnames': ['Default', 'Component', 'InternalLink', 'ExternalLink'] +} as const; + +export const PageEntityModelInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + id: { + type: 'string', + format: 'uuid' + }, + filter: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const PageEntityModelPropertyOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid', + nullable: true + }, + entityModelId: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + }, + code: { + type: 'string', + description: '名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + isRequired: { + type: 'boolean', + description: '必填' + }, + maxLength: { + type: 'integer', + description: '字符串最大长度', + format: 'int32', + nullable: true + }, + minLength: { + type: 'integer', + description: '字符串最小长度', + format: 'int32', + nullable: true + }, + decimalPrecision: { + type: 'integer', + description: '当类型为decimal时的小数位数 (18,4) 中的18', + format: 'int32', + nullable: true + }, + decimalScale: { + type: 'integer', + description: '当类型为decimal时的字段长度 (18,4) 中的4', + format: 'int32', + nullable: true + }, + dataTypeId: { + type: 'string', + format: 'uuid' + }, + isEnum: { + type: 'boolean' + }, + dataTypeCode: { + type: 'string', + nullable: true + }, + dataTypeDescription: { + type: 'string', + nullable: true + }, + allowSearch: { + type: 'boolean', + description: '允许作为查询条件' + }, + allowAdd: { + type: 'boolean', + description: '允许添加' + }, + allowEdit: { + type: 'boolean', + description: '允许编辑' + } + }, + additionalProperties: false +} as const; + +export const PageEntityModelPropertyOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageEntityModelPropertyOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypeInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + id: { + type: 'string', + format: 'uuid' + }, + filter: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypeOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid', + nullable: true + }, + entityModelId: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + }, + code: { + type: 'string', + description: '名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + creationTime: { + type: 'string', + format: 'date-time' + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypeOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageEnumTypeOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypePropertyInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + id: { + type: 'string', + format: 'uuid' + }, + filter: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypePropertyOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid', + nullable: true + }, + code: { + type: 'string', + description: '名称', + nullable: true + }, + value: { + type: 'integer', + description: '名称', + format: 'int32' + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + creationTime: { + type: 'string', + format: 'date-time' + } + }, + additionalProperties: false +} as const; + +export const PageEnumTypePropertyOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageEnumTypePropertyOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const PageFileObjectInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + startCreationTime: { + type: 'string', + description: '开始创建时间', + format: 'date-time', + nullable: true + }, + endCreationTime: { + type: 'string', + description: '结束创建时间', + format: 'date-time', + nullable: true + }, + fileName: { + type: 'string', + description: '文件名称', + nullable: true + } + }, + additionalProperties: false, + description: '分页查询文件' +} as const; + +export const PageFileObjectOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '文件Id', + format: 'uuid' + }, + fileSize: { + type: 'integer', + description: '文件大小', + format: 'int64' + }, + beautifySize: { + type: 'string', + nullable: true, + readOnly: true + }, + contentType: { + type: 'string', + description: '文件名称', + nullable: true + }, + fileName: { + type: 'string', + description: '文件名称', + nullable: true + }, + creationTime: { + type: 'string', + description: '创建时间', + format: 'date-time' + } + }, + additionalProperties: false, + description: '分页查询文件' +} as const; + +export const PageFileObjectOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageFileObjectOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + export const PageIdentityUserOutputSchema = { type: 'object', properties: { @@ -2857,7 +4612,8 @@ export const PageIdentityUserOutputSchema = { nullable: true }, twoFactorEnabled: { - type: 'boolean' + type: 'boolean', + description: '是否开启双因素验证码' } }, additionalProperties: false @@ -2886,23 +4642,35 @@ export const PageLanguageInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, filter: { type: 'string', nullable: true } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言' } as const; export const PageLanguageOutputSchema = { @@ -2910,36 +4678,45 @@ export const PageLanguageOutputSchema = { properties: { id: { type: 'string', + description: '语言Id', format: 'uuid' }, cultureName: { type: 'string', + description: '语言名称', nullable: true }, uiCultureName: { type: 'string', + description: 'Ui语言名称', nullable: true }, displayName: { type: 'string', + description: '显示名称', nullable: true }, flagIcon: { type: 'string', + description: '图标', nullable: true }, isEnabled: { - type: 'boolean' + type: 'boolean', + description: '是否启用' }, creationTime: { type: 'string', + description: '创建时间', format: 'date-time' }, isDefault: { - type: 'boolean' + type: 'boolean', + description: '是否是默认语言' } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言' } as const; export const PageLanguageOutputPagedResultDtoSchema = { @@ -2965,31 +4742,46 @@ export const PageLanguageTextInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, cultureName: { type: 'string', + description: '语言', nullable: true }, resourceName: { type: 'string', + description: '资源', nullable: true }, filter: { type: 'string', + description: '查询条件 name or value', nullable: true } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言文本' } as const; export const PageLanguageTextOutputSchema = { @@ -2997,18 +4789,22 @@ export const PageLanguageTextOutputSchema = { properties: { resourceName: { type: 'string', + description: '资源名称', nullable: true }, name: { type: 'string', + description: '名称', nullable: true }, value: { type: 'string', + description: '值', nullable: true } }, - additionalProperties: false + additionalProperties: false, + description: '创建语言文本' } as const; export const PageLanguageTextOutputPagedResultDtoSchema = { @@ -3029,19 +4825,255 @@ export const PageLanguageTextOutputPagedResultDtoSchema = { additionalProperties: false } as const; +export const PageMenuInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + startCreationTime: { + type: 'string', + description: '开始创建时间', + format: 'date-time', + nullable: true + }, + endCreationTime: { + type: 'string', + description: '结束创建时间', + format: 'date-time', + nullable: true + } + }, + additionalProperties: false, + description: '分页查询菜单' +} as const; + +export const PageMenuOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '菜单Id', + format: 'uuid' + }, + parentId: { + type: 'string', + format: 'uuid', + nullable: true + }, + name: { + type: 'string', + description: '唯一编码', + nullable: true + }, + localizationTitle: { + type: 'string', + description: '标题', + nullable: true + }, + displayTitle: { + type: 'string', + description: '标题', + nullable: true + }, + title: { + type: 'string', + description: '标题', + nullable: true + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + keepAlive: { + type: 'boolean', + description: '是否缓存' + }, + hideInMenu: { + type: 'boolean', + description: '是否显示' + }, + order: { + type: 'integer', + description: '排序', + format: 'int32' + }, + path: { + type: 'string', + description: '路由/接口地址', + nullable: true + }, + menuType: { + '$ref': '#/components/schemas/MenuType' + }, + menuTypeDescription: { + type: 'string', + nullable: true, + readOnly: true + }, + openType: { + '$ref': '#/components/schemas/OpenType' + }, + openTypeDescription: { + type: 'string', + nullable: true, + readOnly: true + }, + url: { + type: 'string', + description: '内外链地址', + nullable: true + }, + component: { + type: 'string', + description: '组件地址', + nullable: true + }, + creationTime: { + type: 'string', + description: '创建时间', + format: 'date-time' + }, + enabled: { + type: 'boolean', + description: '是否启用' + }, + policy: { + type: 'string', + description: '权限', + nullable: true + } + }, + additionalProperties: false, + description: '分页查询菜单' +} as const; + +export const PageMenuOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageMenuOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const PageProjectInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + filter: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const PageTemplateInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + filter: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + export const PageTenantConnectionStringInputSchema = { type: 'object', properties: { id: { type: 'string', + description: '租户id', format: 'uuid' }, name: { type: 'string', + description: '连接字符串名称', nullable: true }, value: { type: 'string', + description: '连接字符串地址', nullable: true } }, @@ -3053,14 +5085,17 @@ export const PageTenantConnectionStringOutputSchema = { properties: { tenantId: { type: 'string', + description: '租户id', format: 'uuid' }, name: { type: 'string', + description: '连接字符串名称', nullable: true }, value: { type: 'string', + description: '连接字符串地址', nullable: true } }, @@ -3085,6 +5120,121 @@ export const PageTenantConnectionStringOutputPagedResultDtoSchema = { additionalProperties: false } as const; +export const PageTextTemplateInputSchema = { + type: 'object', + properties: { + pageIndex: { + type: 'integer', + description: '当前页面.默认从1开始', + format: 'int32' + }, + pageSize: { + type: 'integer', + description: '每页多少条.每页显示多少记录', + format: 'int32' + }, + skipCount: { + type: 'integer', + description: '跳过多少条', + format: 'int32', + readOnly: true + }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + code: { + type: 'string', + description: '编码', + nullable: true + }, + content: { + type: 'string', + description: '内容', + nullable: true + }, + startCreationTime: { + type: 'string', + description: '开始创建时间', + format: 'date-time', + nullable: true + }, + endCreationTime: { + type: 'string', + description: '结束创建时间', + format: 'date-time', + nullable: true + } + }, + additionalProperties: false, + description: '分页查询模板' +} as const; + +export const PageTextTemplateOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + description: '模板Id', + format: 'uuid' + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + code: { + type: 'string', + description: '编码', + nullable: true + }, + content: { + type: 'string', + description: '内容', + nullable: true + }, + cultureName: { + type: 'string', + description: '语言', + nullable: true + }, + creationTime: { + type: 'string', + description: '创建时间', + format: 'date-time' + } + }, + additionalProperties: false, + description: '分页查询模板' +} as const; + +export const PageTextTemplateOutputPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/PageTextTemplateOutput' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + export const PagingAuditLogActionOutputSchema = { type: 'object', properties: { @@ -3135,68 +5285,83 @@ export const PagingAuditLogInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, sorting: { type: 'string', + description: '排序', nullable: true }, startTime: { type: 'string', + description: '开始时间', format: 'date-time', nullable: true }, endTime: { type: 'string', + description: '结束时间', format: 'date-time', nullable: true }, httpMethod: { type: 'string', + description: '请求方法', nullable: true }, url: { type: 'string', + description: '请求地址', nullable: true }, userId: { type: 'string', + description: '用户Id', format: 'uuid', nullable: true }, userName: { type: 'string', + description: '用户名', nullable: true }, applicationName: { type: 'string', + description: '应用程序名称', nullable: true }, correlationId: { type: 'string', + description: 'RequestId', nullable: true }, maxExecutionDuration: { type: 'integer', + description: '最大执行时间', format: 'int32', nullable: true }, minExecutionDuration: { type: 'integer', + description: '最小执行时间', format: 'int32', nullable: true }, hasException: { type: 'boolean', + description: '是否有异常', nullable: true }, httpStatusCode: { @@ -3204,6 +5369,7 @@ export const PagingAuditLogInputSchema = { }, clientIpAddress: { type: 'string', + description: '客户端IP', nullable: true } }, @@ -3335,17 +5501,28 @@ export const PagingDataDictionaryDetailInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, dataDictionaryId: { type: 'string', format: 'uuid' @@ -3367,26 +5544,32 @@ export const PagingDataDictionaryDetailOutputSchema = { }, dataDictionaryId: { type: 'string', + description: '所属字典Id', format: 'uuid' }, code: { type: 'string', + description: '字典明细编码', nullable: true }, order: { type: 'integer', + description: '展现列表时排序用', format: 'int32' }, displayText: { type: 'string', + description: '英文显示名', nullable: true }, description: { type: 'string', + description: '描述', nullable: true }, isEnabled: { - type: 'boolean' + type: 'boolean', + description: '启/停用(默认启用)' } }, additionalProperties: false @@ -3415,17 +5598,28 @@ export const PagingDataDictionaryInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, filter: { type: 'string', nullable: true @@ -3443,14 +5637,17 @@ export const PagingDataDictionaryOutputSchema = { }, code: { type: 'string', + description: '字典编码', nullable: true }, displayText: { type: 'string', + description: '显示名', nullable: true }, description: { type: 'string', + description: '描述', nullable: true } }, @@ -3572,28 +5769,34 @@ export const PagingIdentitySecurityLogInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, sorting: { type: 'string', + description: '排序', nullable: true }, startTime: { type: 'string', + description: '开始时间', format: 'date-time', nullable: true }, endTime: { type: 'string', + description: '结束时间', format: 'date-time', nullable: true }, @@ -3603,27 +5806,33 @@ export const PagingIdentitySecurityLogInputSchema = { }, action: { type: 'string', + description: '请求地址', nullable: true }, userId: { type: 'string', + description: '用户Id', format: 'uuid', nullable: true }, userName: { type: 'string', + description: '用户名', nullable: true }, applicationName: { type: 'string', + description: '应用程序名称', nullable: true }, correlationId: { type: 'string', + description: 'RequestId', nullable: true }, clientId: { type: 'string', + description: 'ClientId', nullable: true } }, @@ -3714,54 +5923,74 @@ export const PagingNotificationInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, title: { type: 'string', + description: '标题', nullable: true }, content: { type: 'string', + description: '内容', nullable: true }, senderUserId: { type: 'string', + description: '发送者Id', format: 'uuid', nullable: true }, senderUserName: { type: 'string', + description: '发送者名称', nullable: true }, receiverUserId: { type: 'string', + description: '接受者Id', format: 'uuid', nullable: true }, receiverUserName: { type: 'string', + description: '接受者名称', nullable: true }, read: { type: 'boolean', + description: '是否已读', nullable: true }, startReadTime: { type: 'string', + description: '已读开始时间', format: 'date-time', nullable: true }, endReadTime: { type: 'string', + description: '已读结束时间', format: 'date-time', nullable: true }, @@ -3784,15 +6013,18 @@ export const PagingNotificationOutputSchema = { }, tenantId: { type: 'string', + description: '租户id', format: 'uuid', nullable: true }, title: { type: 'string', + description: '消息标题', nullable: true }, content: { type: 'string', + description: '消息内容', nullable: true }, messageType: { @@ -3813,26 +6045,34 @@ export const PagingNotificationOutputSchema = { }, senderUserId: { type: 'string', + description: '发送人', format: 'uuid' }, senderUserName: { type: 'string', + description: '发送人用户名', nullable: true }, receiveUserId: { type: 'string', + description: `订阅人 +消息类型是广播消息时,订阅人为空`, format: 'uuid', nullable: true }, receiveUserName: { type: 'string', + description: `接收人用户名 +消息类型是广播消息时,订接收人用户名为空`, nullable: true }, read: { - type: 'boolean' + type: 'boolean', + description: '是否已读' }, readTime: { type: 'string', + description: '已读时间', format: 'date-time', nullable: true }, @@ -3867,41 +6107,57 @@ export const PagingNotificationSubscriptionInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, notificationId: { type: 'string', format: 'uuid' }, receiverUserId: { type: 'string', + description: '接受者Id', format: 'uuid', nullable: true }, receiverUserName: { type: 'string', + description: '接受者名称', nullable: true }, read: { type: 'boolean', + description: '是否已读', nullable: true }, startReadTime: { type: 'string', + description: '已读开始时间', format: 'date-time', nullable: true }, endReadTime: { type: 'string', + description: '已读结束时间', format: 'date-time', nullable: true } @@ -3918,34 +6174,42 @@ export const PagingNotificationSubscriptionOutputSchema = { }, tenantId: { type: 'string', + description: '租户id', format: 'uuid', nullable: true }, notificationId: { type: 'string', + description: '消息Id', format: 'uuid' }, receiveUserId: { type: 'string', + description: '接收人id', format: 'uuid' }, receiveUserName: { type: 'string', + description: '接收人用户名', nullable: true }, read: { - type: 'boolean' + type: 'boolean', + description: '是否已读' }, readTime: { type: 'string', + description: '已读时间', format: 'date-time' }, title: { type: 'string', + description: '消息标题', nullable: true }, content: { type: 'string', + description: '消息内容', nullable: true }, messageType: { @@ -3966,10 +6230,12 @@ export const PagingNotificationSubscriptionOutputSchema = { }, senderUserId: { type: 'string', + description: '发送人', format: 'uuid' }, senderUserName: { type: 'string', + description: '发送人用户名', nullable: true } }, @@ -3999,17 +6265,28 @@ export const PagingRoleListInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, filter: { type: 'string', nullable: true @@ -4023,17 +6300,28 @@ export const PagingTenantInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, filter: { type: 'string', nullable: true @@ -4047,19 +6335,31 @@ export const PagingUserListInputSchema = { properties: { pageIndex: { type: 'integer', + description: '当前页面.默认从1开始', format: 'int32' }, pageSize: { type: 'integer', + description: '每页多少条.每页显示多少记录', format: 'int32' }, skipCount: { type: 'integer', + description: '跳过多少条', format: 'int32', readOnly: true }, + sorting: { + type: 'string', + description: `排序 + + name desc +`, + nullable: true + }, filter: { type: 'string', + description: '关键字', nullable: true } }, @@ -4164,6 +6464,132 @@ export const PermissionTreeDtoSchema = { additionalProperties: false } as const; +export const PreViewCodeInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + format: 'uuid' + }, + projectId: { + type: 'string', + format: 'uuid' + }, + entityId: { + type: 'array', + items: { + type: 'string', + format: 'uuid' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const ProjectDtoSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + creationTime: { + type: 'string', + format: 'date-time' + }, + creatorId: { + type: 'string', + format: 'uuid', + nullable: true + }, + lastModificationTime: { + type: 'string', + format: 'date-time', + nullable: true + }, + lastModifierId: { + type: 'string', + format: 'uuid', + nullable: true + }, + tenantId: { + type: 'string', + format: 'uuid', + nullable: true + }, + owner: { + type: 'string', + description: '负责人', + nullable: true + }, + nameSpace: { + type: 'string', + description: '名称空间', + nullable: true + }, + companyName: { + type: 'string', + description: '公司名称', + nullable: true + }, + projectName: { + type: 'string', + description: '项目名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + }, + supportTenant: { + type: 'boolean', + description: '是否支持多租户' + } + }, + additionalProperties: false +} as const; + +export const ProjectDtoPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/ProjectDto' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const ProjectOutputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + companyName: { + type: 'string', + description: '公司名称', + nullable: true + }, + projectName: { + type: 'string', + description: '项目名称', + nullable: true + } + }, + additionalProperties: false +} as const; + export const PropertyApiDescriptionModelSchema = { type: 'object', properties: { @@ -4212,6 +6638,52 @@ export const PropertyApiDescriptionModelSchema = { additionalProperties: false } as const; +export const RefreshTokenInputSchema = { + required: ['refreshToken'], + type: 'object', + properties: { + userId: { + type: 'string', + format: 'uuid' + }, + refreshToken: { + minLength: 1, + type: 'string' + } + }, + additionalProperties: false +} as const; + +export const RefreshTokenOutputSchema = { + type: 'object', + properties: { + success: { + type: 'boolean' + }, + message: { + type: 'string', + nullable: true + }, + token: { + type: 'string', + nullable: true + }, + refreshToken: { + type: 'string', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const RelationalTypeSchema = { + enum: [10, 20], + type: 'integer', + format: 'int32', + 'x-enumNames': ['OnoToOne', 'OneToMany'], + 'x-enum-varnames': ['OnoToOne', 'OneToMany'] +} as const; + export const RemoteServiceErrorInfoSchema = { type: 'object', properties: { @@ -4271,6 +6743,27 @@ export const RemoteServiceValidationErrorInfoSchema = { additionalProperties: false } as const; +export const RemoteStreamContentSchema = { + type: 'object', + properties: { + fileName: { + type: 'string', + nullable: true + }, + contentType: { + type: 'string', + nullable: true + }, + contentLength: { + type: 'integer', + format: 'int64', + nullable: true, + readOnly: true + } + }, + additionalProperties: false +} as const; + export const RemoveRoleToOrganizationUnitInputSchema = { type: 'object', properties: { @@ -4301,6 +6794,34 @@ export const RemoveUserToOrganizationUnitInputSchema = { additionalProperties: false } as const; +export const ResetPasswordInputSchema = { + required: ['password'], + type: 'object', + properties: { + userId: { + type: 'string', + format: 'uuid' + }, + password: { + maxLength: 128, + minLength: 0, + type: 'string' + } + }, + additionalProperties: false +} as const; + +export const ResetTwoFactorInputSchema = { + type: 'object', + properties: { + userId: { + type: 'string', + format: 'uuid' + } + }, + additionalProperties: false +} as const; + export const ReturnValueApiDescriptionModelSchema = { type: 'object', properties: { @@ -4321,10 +6842,12 @@ export const SendBroadCastMessageInputSchema = { properties: { title: { type: 'string', + description: '消息标题', nullable: true }, content: { type: 'string', + description: '消息内容', nullable: true } }, @@ -4336,18 +6859,22 @@ export const SendCommonMessageInputSchema = { properties: { title: { type: 'string', + description: '消息标题', nullable: true }, content: { type: 'string', + description: '消息内容', nullable: true }, receiveUserId: { type: 'string', + description: '发送人', format: 'uuid' }, receiveUserName: { type: 'string', + description: '发送人名称', nullable: true } }, @@ -4404,22 +6931,27 @@ export const SettingItemOutputSchema = { properties: { name: { type: 'string', + description: '名称', nullable: true }, displayName: { type: 'string', + description: '显示名称', nullable: true }, description: { type: 'string', + description: '描述', nullable: true }, value: { type: 'string', + description: '值', nullable: true }, type: { type: 'string', + description: '前端控件类型', nullable: true } }, @@ -4431,10 +6963,12 @@ export const SettingOutputSchema = { properties: { group: { type: 'string', + description: '分组', nullable: true }, groupDisplayName: { type: 'string', + description: '分组显示名称', nullable: true }, settingItemOutput: { @@ -4448,6 +6982,21 @@ export const SettingOutputSchema = { additionalProperties: false } as const; +export const StringInt32KeyValuePairSchema = { + type: 'object', + properties: { + key: { + type: 'string', + nullable: true + }, + value: { + type: 'integer', + format: 'int32' + } + }, + additionalProperties: false +} as const; + export const StringStringFromSelectorSchema = { type: 'object', properties: { @@ -4465,6 +7014,184 @@ export const StringStringFromSelectorSchema = { additionalProperties: false } as const; +export const TemplateDetailDtoSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + templateId: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + templateType: { + '$ref': '#/components/schemas/TemplateType' + }, + controlType: { + '$ref': '#/components/schemas/ControlType' + }, + parentId: { + type: 'string', + description: '父级id', + format: 'uuid', + nullable: true + }, + name: { + type: 'string', + description: '模板名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + } + }, + additionalProperties: false, + description: '模板明细' +} as const; + +export const TemplateDtoSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + creationTime: { + type: 'string', + format: 'date-time' + }, + creatorId: { + type: 'string', + format: 'uuid', + nullable: true + }, + lastModificationTime: { + type: 'string', + format: 'date-time', + nullable: true + }, + lastModifierId: { + type: 'string', + format: 'uuid', + nullable: true + }, + tenantId: { + type: 'string', + format: 'uuid', + nullable: true + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + }, + templateDetails: { + type: 'array', + items: { + '$ref': '#/components/schemas/TemplateDetailDto' + }, + description: '关联属性1:N 模板明细集合', + nullable: true + } + }, + additionalProperties: false, + description: '模板' +} as const; + +export const TemplateDtoPagedResultDtoSchema = { + type: 'object', + properties: { + items: { + type: 'array', + items: { + '$ref': '#/components/schemas/TemplateDto' + }, + nullable: true + }, + totalCount: { + type: 'integer', + format: 'int64' + } + }, + additionalProperties: false +} as const; + +export const TemplateTreeDtoSchema = { + type: 'object', + properties: { + key: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + templateType: { + '$ref': '#/components/schemas/TemplateType' + }, + controlType: { + '$ref': '#/components/schemas/ControlType' + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + isFolder: { + type: 'boolean', + description: '是否是文件夹' + }, + name: { + type: 'string', + description: '模板名称', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + title: { + type: 'string', + description: '描述', + nullable: true + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + }, + children: { + type: 'array', + items: { + '$ref': '#/components/schemas/TemplateTreeDto' + }, + nullable: true + } + }, + additionalProperties: false +} as const; + +export const TemplateTypeSchema = { + enum: [10, 20], + type: 'integer', + format: 'int32', + 'x-enumNames': ['Folder', 'File'], + 'x-enum-varnames': ['Folder', 'File'] +} as const; + export const TenantCreateDtoSchema = { required: ['adminEmailAddress', 'adminPassword', 'name'], type: 'object', @@ -4623,6 +7350,28 @@ export const TypeApiDescriptionModelSchema = { additionalProperties: false } as const; +export const UpdateAggregateInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + } + }, + additionalProperties: false +} as const; + export const UpdateDataDictinaryInputSchema = { type: 'object', properties: { @@ -4673,6 +7422,169 @@ export const UpdateDetailInputSchema = { additionalProperties: false } as const; +export const UpdateEntityModelInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + }, + relationalType: { + '$ref': '#/components/schemas/RelationalType' + } + }, + additionalProperties: false +} as const; + +export const UpdateEntityModelPropertyInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + propertyId: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + }, + isRequired: { + type: 'boolean', + description: '必填' + }, + maxLength: { + type: 'integer', + description: '字符串最大长度', + format: 'int32', + nullable: true + }, + minLength: { + type: 'integer', + description: '字符串最小长度', + format: 'int32', + nullable: true + }, + decimalPrecision: { + type: 'integer', + description: '当类型为decimal时的小数位数 (18,4) 中的18', + format: 'int32', + nullable: true + }, + decimalScale: { + type: 'integer', + description: '当类型为decimal时的字段长度 (18,4) 中的4', + format: 'int32', + nullable: true + }, + enumTypeId: { + type: 'string', + description: '枚举类型Id', + format: 'uuid', + nullable: true + }, + dataTypeId: { + type: 'string', + description: '数据类型Id', + format: 'uuid', + nullable: true + }, + entityModelId: { + type: 'string', + description: '实体模型Id', + format: 'uuid' + }, + allowSearch: { + type: 'boolean', + description: '允许作为查询条件' + }, + allowAdd: { + type: 'boolean', + description: '允许添加' + }, + allowEdit: { + type: 'boolean', + description: '允许编辑' + } + }, + additionalProperties: false +} as const; + +export const UpdateEnumTypeInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + } + }, + additionalProperties: false +} as const; + +export const UpdateEnumTypePropertyInputSchema = { + required: ['code', 'description'], + type: 'object', + properties: { + enumTypeId: { + type: 'string', + description: 'Id', + format: 'uuid' + }, + id: { + type: 'string', + description: 'Id', + format: 'uuid' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + value: { + type: 'integer', + description: '枚举值', + format: 'int32' + }, + description: { + minLength: 1, + type: 'string', + description: '描述' + } + }, + additionalProperties: false +} as const; + export const UpdateFeatureDtoSchema = { type: 'object', properties: { @@ -4725,29 +7637,36 @@ export const UpdateLanguageInputSchema = { properties: { id: { type: 'string', + description: '语言Id', format: 'uuid' }, cultureName: { type: 'string', + description: '语言名称', nullable: true }, uiCultureName: { type: 'string', + description: 'Ui语言名称', nullable: true }, displayName: { type: 'string', + description: '显示名称', nullable: true }, flagIcon: { type: 'string', + description: '图标', nullable: true }, isEnabled: { - type: 'boolean' + type: 'boolean', + description: '是否启用' } }, - additionalProperties: false + additionalProperties: false, + description: '删除语言' } as const; export const UpdateLanguageTextInputSchema = { @@ -4756,22 +7675,98 @@ export const UpdateLanguageTextInputSchema = { properties: { resourceName: { minLength: 1, - type: 'string' + type: 'string', + description: '资源名称' }, cultureName: { minLength: 1, - type: 'string' + type: 'string', + description: '语言名称' }, name: { minLength: 1, - type: 'string' + type: 'string', + description: '名称' }, value: { minLength: 1, - type: 'string' + type: 'string', + description: '值' } }, - additionalProperties: false + additionalProperties: false, + description: '删除语言文本' +} as const; + +export const UpdateMenuInputSchema = { + required: ['hideInMenu', 'keepAlive', 'name', 'order', 'path', 'title'], + type: 'object', + properties: { + id: { + type: 'string', + description: '菜单Id', + format: 'uuid' + }, + name: { + minLength: 1, + type: 'string', + description: '唯一编码' + }, + title: { + minLength: 1, + type: 'string', + description: '标题' + }, + icon: { + type: 'string', + description: '图标', + nullable: true + }, + keepAlive: { + type: 'boolean', + description: '是否缓存' + }, + hideInMenu: { + type: 'boolean', + description: '是否显示' + }, + order: { + type: 'integer', + description: '排序', + format: 'int32' + }, + path: { + minLength: 1, + type: 'string', + description: '路由地址' + }, + menuType: { + '$ref': '#/components/schemas/MenuType' + }, + openType: { + '$ref': '#/components/schemas/OpenType' + }, + url: { + type: 'string', + description: '内外链地址', + nullable: true + }, + component: { + type: 'string', + description: '组件地址', + nullable: true + }, + enabled: { + type: 'boolean' + }, + policy: { + type: 'string', + description: '权限', + nullable: true + } + }, + additionalProperties: false, + description: '更新菜单' } as const; export const UpdateOrganizationUnitInputSchema = { @@ -4817,6 +7812,41 @@ export const UpdatePermissionsDtoSchema = { additionalProperties: false } as const; +export const UpdateProjectInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + owner: { + type: 'string', + description: '负责人', + nullable: true + }, + companyName: { + type: 'string', + description: '公司名称', + nullable: true + }, + projectName: { + type: 'string', + description: '项目名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + }, + supportTenant: { + type: 'boolean', + description: '是否支持多租户' + } + }, + additionalProperties: false +} as const; + export const UpdateRoleInputSchema = { type: 'object', properties: { @@ -4864,6 +7894,82 @@ export const UpdateSettingInputSchema = { additionalProperties: false } as const; +export const UpdateTemplateDetailContentInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + templateDetailId: { + type: 'string', + format: 'uuid' + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const UpdateTemplateDetailInputSchema = { + type: 'object', + properties: { + templateId: { + type: 'string', + description: '模板id', + format: 'uuid' + }, + templateDetailId: { + type: 'string', + format: 'uuid' + }, + controlType: { + '$ref': '#/components/schemas/ControlType' + }, + name: { + type: 'string', + description: '模板类型', + nullable: true + }, + description: { + type: 'string', + description: '描述', + nullable: true + }, + content: { + type: 'string', + description: '模板内容', + nullable: true + } + }, + additionalProperties: false +} as const; + +export const UpdateTemplateInputSchema = { + type: 'object', + properties: { + id: { + type: 'string', + format: 'uuid' + }, + name: { + type: 'string', + description: '名称', + nullable: true + }, + remark: { + type: 'string', + description: '备注', + nullable: true + } + }, + additionalProperties: false +} as const; + export const UpdateTenantInputSchema = { type: 'object', properties: { @@ -4879,6 +7985,40 @@ export const UpdateTenantInputSchema = { additionalProperties: false } as const; +export const UpdateTextTemplateInputSchema = { + required: ['code', 'content', 'cultureName', 'name'], + type: 'object', + properties: { + id: { + type: 'string', + description: '模板Id', + format: 'uuid' + }, + name: { + minLength: 1, + type: 'string', + description: '名称' + }, + code: { + minLength: 1, + type: 'string', + description: '编码' + }, + content: { + minLength: 1, + type: 'string', + description: '内容' + }, + cultureName: { + minLength: 1, + type: 'string', + description: '语言' + } + }, + additionalProperties: false, + description: '更新模板' +} as const; + export const UpdateUserInputSchema = { type: 'object', properties: { diff --git a/apps/web-ele/src/api-client/services.gen.ts b/apps/web-ele/src/api-client/services.gen.ts new file mode 100644 index 0000000..8fd8e0f --- /dev/null +++ b/apps/web-ele/src/api-client/services.gen.ts @@ -0,0 +1,1479 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import { createClient, createConfig, type Options, formDataBodySerializer } from '@hey-api/client-axios'; +import type { GetApiAbpApiDefinitionData, GetApiAbpApiDefinitionError, GetApiAbpApiDefinitionResponse, GetApiAbpApplicationConfigurationData, GetApiAbpApplicationConfigurationError, GetApiAbpApplicationConfigurationResponse, GetApiAbpApplicationLocalizationData, GetApiAbpApplicationLocalizationError, GetApiAbpApplicationLocalizationResponse, GetApiAppAbpProBasicApplicationConfigurationError, GetApiAppAbpProBasicApplicationConfigurationResponse, PostApiAppAccountLoginData, PostApiAppAccountLoginError, PostApiAppAccountLoginResponse, PostApiAppAccountLogin2FaData, PostApiAppAccountLogin2FaError, PostApiAppAccountLogin2FaResponse, PostApiAppAccountLoginOidcData, PostApiAppAccountLoginOidcError, PostApiAppAccountLoginOidcResponse, PostApiAppAccountRefreshTokenData, PostApiAppAccountRefreshTokenError, PostApiAppAccountRefreshTokenResponse, PostAuditLogsPageData, PostAuditLogsPageError, PostAuditLogsPageResponse, PostDataDictionaryPageData, PostDataDictionaryPageError, PostDataDictionaryPageResponse, PostDataDictionaryPageDetailData, PostDataDictionaryPageDetailError, PostDataDictionaryPageDetailResponse, PostDataDictionaryCreateData, PostDataDictionaryCreateError, PostDataDictionaryCreateResponse, PostDataDictionaryCreateDetailData, PostDataDictionaryCreateDetailError, PostDataDictionaryCreateDetailResponse, PostDataDictionaryStatusData, PostDataDictionaryStatusError, PostDataDictionaryStatusResponse, PostDataDictionaryUpdateDetailData, PostDataDictionaryUpdateDetailError, PostDataDictionaryUpdateDetailResponse, PostDataDictionaryDeleteData, PostDataDictionaryDeleteError, PostDataDictionaryDeleteResponse, PostDataDictionaryDeleteDataDictionaryTypeData, PostDataDictionaryDeleteDataDictionaryTypeError, PostDataDictionaryDeleteDataDictionaryTypeResponse, PostDataDictionaryUpdateData, PostDataDictionaryUpdateError, PostDataDictionaryUpdateResponse, PostDataTypesListData, PostDataTypesListError, PostDataTypesListResponse, PostEntityModelsPagePropertyData, PostEntityModelsPagePropertyError, PostEntityModelsPagePropertyResponse, PostEntityModelsCreateAggregateData, PostEntityModelsCreateAggregateError, PostEntityModelsCreateAggregateResponse, PostEntityModelsUpdateAggregateData, PostEntityModelsUpdateAggregateError, PostEntityModelsUpdateAggregateResponse, PostEntityModelsDeleteAggregateData, PostEntityModelsDeleteAggregateError, PostEntityModelsDeleteAggregateResponse, PostEntityModelsCreateEntityModelData, PostEntityModelsCreateEntityModelError, PostEntityModelsCreateEntityModelResponse, PostEntityModelsUpdateEntityModelData, PostEntityModelsUpdateEntityModelError, PostEntityModelsUpdateEntityModelResponse, PostEntityModelsDeleteEntityModelData, PostEntityModelsDeleteEntityModelError, PostEntityModelsDeleteEntityModelResponse, PostEntityModelsCreateEntityModelPropertyData, PostEntityModelsCreateEntityModelPropertyError, PostEntityModelsCreateEntityModelPropertyResponse, PostEntityModelsUpdateEntityModelPropertyData, PostEntityModelsUpdateEntityModelPropertyError, PostEntityModelsUpdateEntityModelPropertyResponse, PostEntityModelsDeleteEntityModelPropertyData, PostEntityModelsDeleteEntityModelPropertyError, PostEntityModelsDeleteEntityModelPropertyResponse, PostEntityModelsTreeData, PostEntityModelsTreeError, PostEntityModelsTreeResponse, PostEntityModelsGetData, PostEntityModelsGetError, PostEntityModelsGetResponse, PostEnumTypesPageData, PostEnumTypesPageError, PostEnumTypesPageResponse, PostEnumTypesPagePropertyData, PostEnumTypesPagePropertyError, PostEnumTypesPagePropertyResponse, PostEnumTypesCreateEnumTypeData, PostEnumTypesCreateEnumTypeError, PostEnumTypesCreateEnumTypeResponse, PostEnumTypesUpdateEnumTypeData, PostEnumTypesUpdateEnumTypeError, PostEnumTypesUpdateEnumTypeResponse, PostEnumTypesDeleteEnumTypeData, PostEnumTypesDeleteEnumTypeError, PostEnumTypesDeleteEnumTypeResponse, PostEnumTypesCreateEnumTypePropertyData, PostEnumTypesCreateEnumTypePropertyError, PostEnumTypesCreateEnumTypePropertyResponse, PostEnumTypesUpdateEnumTypePropertyData, PostEnumTypesUpdateEnumTypePropertyError, PostEnumTypesUpdateEnumTypePropertyResponse, PostEnumTypesDeleteEnumTypePropertyData, PostEnumTypesDeleteEnumTypePropertyError, PostEnumTypesDeleteEnumTypePropertyResponse, PostFeaturesListData, PostFeaturesListError, PostFeaturesListResponse, PostFeaturesUpdateData, PostFeaturesUpdateError, PostFeaturesUpdateResponse, PostFeaturesDeleteData, PostFeaturesDeleteError, PostFeaturesDeleteResponse, PostFilesPageData, PostFilesPageError, PostFilesPageResponse, PostFilesUploadData, PostFilesUploadError, PostFilesUploadResponse, PostFilesDeleteData, PostFilesDeleteError, PostFilesDeleteResponse, PostFilesDownloadData, PostFilesDownloadError, PostFilesDownloadResponse, PostGeneratorPreViewCodeData, PostGeneratorPreViewCodeError, PostGeneratorPreViewCodeResponse, PostGeneratorDownData, PostGeneratorDownError, PostGeneratorDownResponse, PostIdentitySecurityLogsPageData, PostIdentitySecurityLogsPageError, PostIdentitySecurityLogsPageResponse, PostLanguagesAllError, PostLanguagesAllResponse, PostLanguagesPageData, PostLanguagesPageError, PostLanguagesPageResponse, PostLanguagesCreateData, PostLanguagesCreateError, PostLanguagesCreateResponse, PostLanguagesUpdateData, PostLanguagesUpdateError, PostLanguagesUpdateResponse, PostLanguagesDeleteData, PostLanguagesDeleteError, PostLanguagesDeleteResponse, PostLanguagesSetDefaultData, PostLanguagesSetDefaultError, PostLanguagesSetDefaultResponse, PostLanguageTextsAllResourceError, PostLanguageTextsAllResourceResponse, PostLanguageTextsPageData, PostLanguageTextsPageError, PostLanguageTextsPageResponse, PostLanguageTextsCreateData, PostLanguageTextsCreateError, PostLanguageTextsCreateResponse, PostLanguageTextsUpdateData, PostLanguageTextsUpdateError, PostLanguageTextsUpdateResponse, PostMenusUserMenuError, PostMenusUserMenuResponse, PostMenusPageData, PostMenusPageError, PostMenusPageResponse, PostMenusCreateData, PostMenusCreateError, PostMenusCreateResponse, PostMenusUpdateData, PostMenusUpdateError, PostMenusUpdateResponse, PostMenusDeleteData, PostMenusDeleteError, PostMenusDeleteResponse, PostMenusTreeError, PostMenusTreeResponse, PostNotificationNotificationPageData, PostNotificationNotificationPageError, PostNotificationNotificationPageResponse, PostNotificationNotificationSubscriptionPageData, PostNotificationNotificationSubscriptionPageError, PostNotificationNotificationSubscriptionPageResponse, PostNotificationDeleteData, PostNotificationDeleteError, PostNotificationDeleteResponse, PostNotificationSendCommonWarningMessageData, PostNotificationSendCommonWarningMessageError, PostNotificationSendCommonWarningMessageResponse, PostNotificationSendCommonInformationMessageData, PostNotificationSendCommonInformationMessageError, PostNotificationSendCommonInformationMessageResponse, PostNotificationSendCommonErrorMessageData, PostNotificationSendCommonErrorMessageError, PostNotificationSendCommonErrorMessageResponse, PostNotificationSendBroadCastWarningMessageData, PostNotificationSendBroadCastWarningMessageError, PostNotificationSendBroadCastWarningMessageResponse, PostNotificationSendBroadCastInformationMessageData, PostNotificationSendBroadCastInformationMessageError, PostNotificationSendBroadCastInformationMessageResponse, PostNotificationSendBroadCastErrorMessageData, PostNotificationSendBroadCastErrorMessageError, PostNotificationSendBroadCastErrorMessageResponse, PostNotificationReadData, PostNotificationReadError, PostNotificationReadResponse, PostNotificationBatchReadData, PostNotificationBatchReadError, PostNotificationBatchReadResponse, PostOrganizationUnitsTreeError, PostOrganizationUnitsTreeResponse, PostOrganizationUnitsCreateData, PostOrganizationUnitsCreateError, PostOrganizationUnitsCreateResponse, PostOrganizationUnitsDeleteData, PostOrganizationUnitsDeleteError, PostOrganizationUnitsDeleteResponse, PostOrganizationUnitsUpdateData, PostOrganizationUnitsUpdateError, PostOrganizationUnitsUpdateResponse, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncData, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncError, PostOrganizationUnitsAddRoleToOrganizationUnitAsyncResponse, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncData, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncError, PostOrganizationUnitsRemoveRoleFromOrganizationUnitAsyncResponse, PostOrganizationUnitsAddUserToOrganizationUnitData, PostOrganizationUnitsAddUserToOrganizationUnitError, PostOrganizationUnitsAddUserToOrganizationUnitResponse, PostOrganizationUnitsRemoveUserFromOrganizationUnitData, PostOrganizationUnitsRemoveUserFromOrganizationUnitError, PostOrganizationUnitsRemoveUserFromOrganizationUnitResponse, PostOrganizationUnitsGetUsersData, PostOrganizationUnitsGetUsersError, PostOrganizationUnitsGetUsersResponse, PostOrganizationUnitsGetRolesData, PostOrganizationUnitsGetRolesError, PostOrganizationUnitsGetRolesResponse, PostOrganizationUnitsGetUnAddUsersData, PostOrganizationUnitsGetUnAddUsersError, PostOrganizationUnitsGetUnAddUsersResponse, PostOrganizationUnitsGetUnAddRolesData, PostOrganizationUnitsGetUnAddRolesError, PostOrganizationUnitsGetUnAddRolesResponse, PostPermissionsTreeData, PostPermissionsTreeError, PostPermissionsTreeResponse, PostPermissionsUpdateData, PostPermissionsUpdateError, PostPermissionsUpdateResponse, PostProjectsAllError, PostProjectsAllResponse, PostProjectsPageData, PostProjectsPageError, PostProjectsPageResponse, PostProjectsCreateData, PostProjectsCreateError, PostProjectsCreateResponse, PostProjectsUpdateData, PostProjectsUpdateError, PostProjectsUpdateResponse, PostProjectsDeleteData, PostProjectsDeleteError, PostProjectsDeleteResponse, PostProjectsGetProjectAndEntityData, PostProjectsGetProjectAndEntityError, PostProjectsGetProjectAndEntityResponse, PostRolesAllError, PostRolesAllResponse, PostRolesPageData, PostRolesPageError, PostRolesPageResponse, PostRolesCreateData, PostRolesCreateError, PostRolesCreateResponse, PostRolesUpdateData, PostRolesUpdateError, PostRolesUpdateResponse, PostRolesDeleteData, PostRolesDeleteError, PostRolesDeleteResponse, PostSettingsAllError, PostSettingsAllResponse, PostSettingsUpdateData, PostSettingsUpdateError, PostSettingsUpdateResponse, PostTemplatesAllError, PostTemplatesAllResponse, PostTemplatesPageData, PostTemplatesPageError, PostTemplatesPageResponse, PostTemplatesCreateData, PostTemplatesCreateError, PostTemplatesCreateResponse, PostTemplatesUpdateData, PostTemplatesUpdateError, PostTemplatesUpdateResponse, PostTemplatesDeleteData, PostTemplatesDeleteError, PostTemplatesDeleteResponse, PostTemplatesCreateDetailData, PostTemplatesCreateDetailError, PostTemplatesCreateDetailResponse, PostTemplatesUpdateDetailData, PostTemplatesUpdateDetailError, PostTemplatesUpdateDetailResponse, PostTemplatesUpdateDetailContentData, PostTemplatesUpdateDetailContentError, PostTemplatesUpdateDetailContentResponse, PostTemplatesDeleteDetailData, PostTemplatesDeleteDetailError, PostTemplatesDeleteDetailResponse, PostTemplatesTreeData, PostTemplatesTreeError, PostTemplatesTreeResponse, PostTemplatesListError, PostTemplatesListResponse, PostTemplatesControlTypeError, PostTemplatesControlTypeResponse, PostTemplatesTemplateTypeError, PostTemplatesTemplateTypeResponse, PostTemplatesCopyData, PostTemplatesCopyError, PostTemplatesCopyResponse, PostTenantsFindData, PostTenantsFindError, PostTenantsFindResponse, PostTenantsPageData, PostTenantsPageError, PostTenantsPageResponse, PostTenantsCreateData, PostTenantsCreateError, PostTenantsCreateResponse, PostTenantsUpdateData, PostTenantsUpdateError, PostTenantsUpdateResponse, PostTenantsDeleteData, PostTenantsDeleteError, PostTenantsDeleteResponse, PostTenantsPageConnectionStringData, PostTenantsPageConnectionStringError, PostTenantsPageConnectionStringResponse, PostTenantsAddOrUpdateConnectionStringData, PostTenantsAddOrUpdateConnectionStringError, PostTenantsAddOrUpdateConnectionStringResponse, PostTenantsDeleteConnectionStringData, PostTenantsDeleteConnectionStringError, PostTenantsDeleteConnectionStringResponse, PostTextTemplatesPageData, PostTextTemplatesPageError, PostTextTemplatesPageResponse, PostTextTemplatesCreateData, PostTextTemplatesCreateError, PostTextTemplatesCreateResponse, PostTextTemplatesUpdateData, PostTextTemplatesUpdateError, PostTextTemplatesUpdateResponse, PostTextTemplatesDeleteData, PostTextTemplatesDeleteError, PostTextTemplatesDeleteResponse, PostTextTemplatesExportData, PostTextTemplatesExportError, PostTextTemplatesExportResponse, PostUsersPageData, PostUsersPageError, PostUsersPageResponse, PostUsersListData, PostUsersListError, PostUsersListResponse, PostUsersExportData, PostUsersExportError, PostUsersExportResponse, PostUsersCreateData, PostUsersCreateError, PostUsersCreateResponse, PostUsersUpdateData, PostUsersUpdateError, PostUsersUpdateResponse, PostUsersDeleteData, PostUsersDeleteError, PostUsersDeleteResponse, PostUsersRoleData, PostUsersRoleError, PostUsersRoleResponse, PostUsersChangePasswordData, PostUsersChangePasswordError, PostUsersChangePasswordResponse, PostUsersResetPasswordData, PostUsersResetPasswordError, PostUsersResetPasswordResponse, PostUsersLockData, PostUsersLockError, PostUsersLockResponse, PostUsersFindByUserNameData, PostUsersFindByUserNameError, PostUsersFindByUserNameResponse, PostUsersMyProfileError, PostUsersMyProfileResponse, PostUsersCanUseTwoFactorError, PostUsersCanUseTwoFactorResponse, PostUsersGetQrCodeError, PostUsersGetQrCodeResponse, PostUsersEnabledTwoFactorData, PostUsersEnabledTwoFactorError, PostUsersEnabledTwoFactorResponse, PostUsersDisabledTwoFactorData, PostUsersDisabledTwoFactorError, PostUsersDisabledTwoFactorResponse, PostUsersResetTwoFactorData, PostUsersResetTwoFactorError, PostUsersResetTwoFactorResponse, PostUsersNeedChangePasswordError, PostUsersNeedChangePasswordResponse } from './types.gen'; + +export const client = createClient(createConfig()); + +export const getApiAbpApiDefinition = (options?: Options) => { + return (options?.client ?? client).get({ + ...options, + url: '/api/abp/api-definition' + }); +}; + +export const getApiAbpApplicationConfiguration = (options?: Options) => { + return (options?.client ?? client).get({ + ...options, + url: '/api/abp/application-configuration' + }); +}; + +export const getApiAbpApplicationLocalization = (options: Options) => { + return (options?.client ?? client).get({ + ...options, + url: '/api/abp/application-localization' + }); +}; + +export const getApiAppAbpProBasicApplicationConfiguration = (options?: Options) => { + return (options?.client ?? client).get({ + ...options, + url: '/api/app/abp-pro-basic-application-configuration' + }); +}; + +/** + * 登录 + */ +export const postApiAppAccountLogin = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/api/app/account/login' + }); +}; + +/** + * 2FA登录 + */ +export const postApiAppAccountLogin2Fa = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/api/app/account/login2FA' + }); +}; + +/** + * 第三方扩展登录 + */ +export const postApiAppAccountLoginOidc = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/api/app/account/login-oidc' + }); +}; + +/** + * 刷新token + */ +export const postApiAppAccountRefreshToken = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/api/app/account/refresh-token' + }); +}; + +/** + * 分页获取审计日志信息 + */ +export const postAuditLogsPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/AuditLogs/page' + }); +}; + +/** + * 分页字典类型 + */ +export const postDataDictionaryPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/page' + }); +}; + +/** + * 分页字典明细 + */ +export const postDataDictionaryPageDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/pageDetail' + }); +}; + +/** + * 创建字典类型 + */ +export const postDataDictionaryCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/create' + }); +}; + +/** + * 创建字典明细 + */ +export const postDataDictionaryCreateDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/createDetail' + }); +}; + +/** + * 设置字典明细状态 + */ +export const postDataDictionaryStatus = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/status' + }); +}; + +/** + * 更新字典明细 + */ +export const postDataDictionaryUpdateDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/updateDetail' + }); +}; + +/** + * 删除字典明细 + */ +export const postDataDictionaryDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/delete' + }); +}; + +/** + * 删除字典类型 + */ +export const postDataDictionaryDeleteDataDictionaryType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/deleteDataDictionaryType' + }); +}; + +/** + * 修改字典类型 + */ +export const postDataDictionaryUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataDictionary/update' + }); +}; + +/** + * 获取类型 + */ +export const postDataTypesList = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/DataTypes/List' + }); +}; + +/** + * 分页获取实体属性 + */ +export const postEntityModelsPageProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/PageProperty' + }); +}; + +/** + * 新增聚合根 + */ +export const postEntityModelsCreateAggregate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/CreateAggregate' + }); +}; + +/** + * 更新聚合根 + */ +export const postEntityModelsUpdateAggregate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/UpdateAggregate' + }); +}; + +/** + * 删除聚合根 + */ +export const postEntityModelsDeleteAggregate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/DeleteAggregate' + }); +}; + +/** + * 新增实体 + */ +export const postEntityModelsCreateEntityModel = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/CreateEntityModel' + }); +}; + +/** + * 更新实体 + */ +export const postEntityModelsUpdateEntityModel = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/UpdateEntityModel' + }); +}; + +/** + * 删除实体 + */ +export const postEntityModelsDeleteEntityModel = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/DeleteEntityModel' + }); +}; + +/** + * 新增实体属性 + */ +export const postEntityModelsCreateEntityModelProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/CreateEntityModelProperty' + }); +}; + +/** + * 更新实体属性 + */ +export const postEntityModelsUpdateEntityModelProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/UpdateEntityModelProperty' + }); +}; + +/** + * 删除实体属性 + */ +export const postEntityModelsDeleteEntityModelProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/DeleteEntityModelProperty' + }); +}; + +/** + * 获取实体树 + */ +export const postEntityModelsTree = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/Tree' + }); +}; + +/** + * 获取模型数据 + */ +export const postEntityModelsGet = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EntityModels/Get' + }); +}; + +/** + * 分页获取枚举 + */ +export const postEnumTypesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/Page' + }); +}; + +/** + * 分页获取枚举属性 + */ +export const postEnumTypesPageProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/PageProperty' + }); +}; + +/** + * 创建枚举 + */ +export const postEnumTypesCreateEnumType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/CreateEnumType' + }); +}; + +/** + * 更新枚举 + */ +export const postEnumTypesUpdateEnumType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/UpdateEnumType' + }); +}; + +/** + * 删除枚举 + */ +export const postEnumTypesDeleteEnumType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/DeleteEnumType' + }); +}; + +/** + * 创建枚举属性 + */ +export const postEnumTypesCreateEnumTypeProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/CreateEnumTypeProperty' + }); +}; + +/** + * 更新枚举属性 + */ +export const postEnumTypesUpdateEnumTypeProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/UpdateEnumTypeProperty' + }); +}; + +/** + * 删除枚举属性 + */ +export const postEnumTypesDeleteEnumTypeProperty = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/EnumTypes/DeleteEnumTypeProperty' + }); +}; + +/** + * 获取Features + */ +export const postFeaturesList = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Features/list' + }); +}; + +/** + * 更新Features + */ +export const postFeaturesUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Features/update' + }); +}; + +/** + * 删除Features + */ +export const postFeaturesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Features/delete' + }); +}; + +/** + * 分页查询文件 + */ +export const postFilesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Files/Page' + }); +}; + +/** + * 上传文件 + */ +export const postFilesUpload = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + ...formDataBodySerializer, + headers: { + 'Content-Type': null, + ...options?.headers + }, + url: '/Files/Upload' + }); +}; + +/** + * 删除文件 + */ +export const postFilesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Files/Delete' + }); +}; + +/** + * 下载文件 + */ +export const postFilesDownload = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Files/Download' + }); +}; + +/** + * 预览 + */ +export const postGeneratorPreViewCode = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Generator/PreViewCode' + }); +}; + +/** + * 下载 + */ +export const postGeneratorDown = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Generator/Down' + }); +}; + +/** + * 分页获取登录日志信息 + */ +export const postIdentitySecurityLogsPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/IdentitySecurityLogs/page' + }); +}; + +/** + * 获取所有语言 + */ +export const postLanguagesAll = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/All' + }); +}; + +/** + * 分页查询语言 + */ +export const postLanguagesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/Page' + }); +}; + +/** + * 创建语言 + */ +export const postLanguagesCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/Create' + }); +}; + +/** + * 编辑语言 + */ +export const postLanguagesUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/Update' + }); +}; + +/** + * 删除语言 + */ +export const postLanguagesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/Delete' + }); +}; + +/** + * 设置默认语言 + */ +export const postLanguagesSetDefault = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Languages/SetDefault' + }); +}; + +/** + * 获取所有资源 + */ +export const postLanguageTextsAllResource = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/LanguageTexts/AllResource' + }); +}; + +/** + * 分页查询语言文本 + */ +export const postLanguageTextsPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/LanguageTexts/Page' + }); +}; + +/** + * 创建语言文本 + */ +export const postLanguageTextsCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/LanguageTexts/Create' + }); +}; + +/** + * 编辑语言文本 + */ +export const postLanguageTextsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/LanguageTexts/Update' + }); +}; + +/** + * 获取用户菜单 + */ +export const postMenusUserMenu = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/UserMenu' + }); +}; + +/** + * 分页查询菜单 + */ +export const postMenusPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/Page' + }); +}; + +/** + * 创建菜单 + */ +export const postMenusCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/Create' + }); +}; + +/** + * 编辑菜单 + */ +export const postMenusUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/Update' + }); +}; + +/** + * 删除菜单 + */ +export const postMenusDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/Delete' + }); +}; + +/** + * 获取菜单树 + */ +export const postMenusTree = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Menus/Tree' + }); +}; + +/** + * 分页获取文本消息 + */ +export const postNotificationNotificationPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/NotificationPage' + }); +}; + +/** + * 分页获取广播消息已读人数 + */ +export const postNotificationNotificationSubscriptionPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/NotificationSubscriptionPage' + }); +}; + +/** + * 删除消息 + */ +export const postNotificationDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/Delete' + }); +}; + +/** + * 发送警告文本消息 + */ +export const postNotificationSendCommonWarningMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendCommonWarningMessage' + }); +}; + +/** + * 发送普通文本消息 + */ +export const postNotificationSendCommonInformationMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendCommonInformationMessage' + }); +}; + +/** + * 发送错误文本消息 + */ +export const postNotificationSendCommonErrorMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendCommonErrorMessage' + }); +}; + +/** + * 发送警告广播消息 + */ +export const postNotificationSendBroadCastWarningMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendBroadCastWarningMessage' + }); +}; + +/** + * 发送正常广播消息 + */ +export const postNotificationSendBroadCastInformationMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendBroadCastInformationMessage' + }); +}; + +/** + * 发送错误广播消息 + */ +export const postNotificationSendBroadCastErrorMessage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/SendBroadCastErrorMessage' + }); +}; + +/** + * 消息设置为已读 + */ +export const postNotificationRead = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/Read' + }); +}; + +/** + * 消息批量设置为已读 + */ +export const postNotificationBatchRead = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Notification/BatchRead' + }); +}; + +/** + * 获取组织机构树 + */ +export const postOrganizationUnitsTree = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/tree' + }); +}; + +/** + * 创建组织机构 + */ +export const postOrganizationUnitsCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/create' + }); +}; + +/** + * 删除组织机构 + */ +export const postOrganizationUnitsDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/delete' + }); +}; + +/** + * 编辑组织机构 + */ +export const postOrganizationUnitsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/update' + }); +}; + +/** + * 向组织机构添加角色 + */ +export const postOrganizationUnitsAddRoleToOrganizationUnitAsync = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/addRoleToOrganizationUnitAsync' + }); +}; + +/** + * 向组织机构删除角色 + */ +export const postOrganizationUnitsRemoveRoleFromOrganizationUnitAsync = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/removeRoleFromOrganizationUnitAsync' + }); +}; + +/** + * 向组织机构添加用户 + */ +export const postOrganizationUnitsAddUserToOrganizationUnit = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/addUserToOrganizationUnit' + }); +}; + +/** + * 向组织机构删除用户 + */ +export const postOrganizationUnitsRemoveUserFromOrganizationUnit = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/removeUserFromOrganizationUnit' + }); +}; + +/** + * 分页获取组织机构下用户 + */ +export const postOrganizationUnitsGetUsers = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/getUsers' + }); +}; + +/** + * 分页获取组织机构下角色 + */ +export const postOrganizationUnitsGetRoles = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/getRoles' + }); +}; + +/** + * 获取不在组织机构的用户 + */ +export const postOrganizationUnitsGetUnAddUsers = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/getUnAddUsers' + }); +}; + +/** + * 获取不在组织机构的角色 + */ +export const postOrganizationUnitsGetUnAddRoles = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/OrganizationUnits/getUnAddRoles' + }); +}; + +/** + * 获取角色权限 + */ +export const postPermissionsTree = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Permissions/tree' + }); +}; + +/** + * 更新角色 + */ +export const postPermissionsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Permissions/update' + }); +}; + +/** + * 获取所有项目 + */ +export const postProjectsAll = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/All' + }); +}; + +/** + * 分页获取项目 + */ +export const postProjectsPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/Page' + }); +}; + +/** + * 创建项目 + */ +export const postProjectsCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/Create' + }); +}; + +/** + * 更新项目 + */ +export const postProjectsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/Update' + }); +}; + +/** + * 删除项目 + */ +export const postProjectsDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/Delete' + }); +}; + +/** + * 获取项目和实体信息 + */ +export const postProjectsGetProjectAndEntity = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Projects/GetProjectAndEntity' + }); +}; + +/** + * 获取所有角色 + */ +export const postRolesAll = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Roles/all' + }); +}; + +/** + * 分页获取角色 + */ +export const postRolesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Roles/page' + }); +}; + +/** + * 创建角色 + */ +export const postRolesCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Roles/create' + }); +}; + +/** + * 更新角色 + */ +export const postRolesUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Roles/update' + }); +}; + +/** + * 删除角色 + */ +export const postRolesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Roles/delete' + }); +}; + +/** + * 获取所有Setting + */ +export const postSettingsAll = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Settings/all' + }); +}; + +/** + * 更新Setting + */ +export const postSettingsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Settings/update' + }); +}; + +/** + * 获取所有模板组 + */ +export const postTemplatesAll = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/All' + }); +}; + +/** + * 分页获取模板组 + */ +export const postTemplatesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Page' + }); +}; + +/** + * 创建模板组 + */ +export const postTemplatesCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Create' + }); +}; + +/** + * 更新模板组 + */ +export const postTemplatesUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Update' + }); +}; + +/** + * 删除模板组 + */ +export const postTemplatesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Delete' + }); +}; + +/** + * 创建模板 + */ +export const postTemplatesCreateDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/CreateDetail' + }); +}; + +/** + * 编辑模板 + */ +export const postTemplatesUpdateDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/UpdateDetail' + }); +}; + +/** + * 编辑模板 + */ +export const postTemplatesUpdateDetailContent = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/UpdateDetailContent' + }); +}; + +/** + * 删除模板 + */ +export const postTemplatesDeleteDetail = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/DeleteDetail' + }); +}; + +/** + * 获取模板树形结构 + */ +export const postTemplatesTree = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Tree' + }); +}; + +/** + * 获取所有模板 + */ +export const postTemplatesList = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/List' + }); +}; + +/** + * 获取模板策略 + */ +export const postTemplatesControlType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/ControlType' + }); +}; + +/** + * 获取模板类型 + */ +export const postTemplatesTemplateType = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/TemplateType' + }); +}; + +/** + * 复制模板 + */ +export const postTemplatesCopy = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Templates/Copy' + }); +}; + +/** + * 通过名称获取租户信息 + */ +export const postTenantsFind = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/find' + }); +}; + +/** + * 分页获取租户信息 + */ +export const postTenantsPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/page' + }); +}; + +/** + * 创建租户 + */ +export const postTenantsCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/create' + }); +}; + +/** + * 更新租户 + */ +export const postTenantsUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/update' + }); +}; + +/** + * 删除租户 + */ +export const postTenantsDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/delete' + }); +}; + +/** + * 分页租户连接字符串 + */ +export const postTenantsPageConnectionString = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/pageConnectionString' + }); +}; + +/** + * 新增或者更新租户所有连接字符串 + */ +export const postTenantsAddOrUpdateConnectionString = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/addOrUpdateConnectionString' + }); +}; + +/** + * 删除租户连接字符串 + */ +export const postTenantsDeleteConnectionString = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Tenants/deleteConnectionString' + }); +}; + +/** + * 分页查询模板 + */ +export const postTextTemplatesPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/TextTemplates/Page' + }); +}; + +/** + * 创建模板 + */ +export const postTextTemplatesCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/TextTemplates/Create' + }); +}; + +/** + * 编辑模板 + */ +export const postTextTemplatesUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/TextTemplates/Update' + }); +}; + +/** + * 删除模板 + */ +export const postTextTemplatesDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/TextTemplates/Delete' + }); +}; + +/** + * 导出模板列表 + */ +export const postTextTemplatesExport = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/TextTemplates/Export' + }); +}; + +/** + * 分页获取用户信息 + */ +export const postUsersPage = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/page' + }); +}; + +/** + * 分页获取用户信息 + */ +export const postUsersList = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/list' + }); +}; + +/** + * 导出用户列表 + */ +export const postUsersExport = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/export' + }); +}; + +/** + * 创建用户 + */ +export const postUsersCreate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/create' + }); +}; + +/** + * 编辑用户 + */ +export const postUsersUpdate = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/update' + }); +}; + +/** + * 删除用户 + */ +export const postUsersDelete = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/delete' + }); +}; + +/** + * 获取用户角色信息 + */ +export const postUsersRole = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/role' + }); +}; + +/** + * 修改当前用户密码 + */ +export const postUsersChangePassword = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/changePassword' + }); +}; + +/** + * 重置密码 + */ +export const postUsersResetPassword = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/resetPassword' + }); +}; + +/** + * 锁定用户 + */ +export const postUsersLock = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/lock' + }); +}; + +/** + * 通过用户名查找用户 + */ +export const postUsersFindByUserName = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/findByUserName' + }); +}; + +/** + * 获取个人信息 + */ +export const postUsersMyProfile = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/myProfile' + }); +}; + +/** + * 是否启用双因素验证 + */ +export const postUsersCanUseTwoFactor = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/canUseTwoFactor' + }); +}; + +/** + * 获取双因素二维码 + */ +export const postUsersGetQrCode = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/getQRCode' + }); +}; + +/** + * 开启双因素验证 + */ +export const postUsersEnabledTwoFactor = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/enabledTwoFactor' + }); +}; + +/** + * 关闭双因素验证 + */ +export const postUsersDisabledTwoFactor = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/disabledTwoFactor' + }); +}; + +/** + * 重置双因素验证 + */ +export const postUsersResetTwoFactor = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/resetTwoFactor' + }); +}; + +/** + * 是否需要修改密码 + */ +export const postUsersNeedChangePassword = (options?: Options) => { + return (options?.client ?? client).post({ + ...options, + url: '/Users/needChangePassword' + }); +}; \ No newline at end of file diff --git a/apps/web-antd/src/api-client/types.gen.ts b/apps/web-ele/src/api-client/types.gen.ts similarity index 51% rename from apps/web-antd/src/api-client/types.gen.ts rename to apps/web-ele/src/api-client/types.gen.ts index 8452b02..e5cff79 100644 --- a/apps/web-antd/src/api-client/types.gen.ts +++ b/apps/web-ele/src/api-client/types.gen.ts @@ -5,6 +5,11 @@ export type AbpLoginResult = { readonly description?: (string) | null; }; +export type AbpProApplicationConfigurationDto = { + oidcConfiguration?: ApplicationOidcConfigurationDto; + multiTenancy?: MultiTenancyInfoDto; +}; + export type ActionApiDescriptionModel = { uniqueName?: (string) | null; name?: (string) | null; @@ -19,8 +24,17 @@ export type ActionApiDescriptionModel = { }; export type AddOrUpdateConnectionStringInput = { + /** + * id + */ id?: string; + /** + * 连接字符串名称 + */ name?: (string) | null; + /** + * 连接字符串地址 + */ value?: (string) | null; }; @@ -116,6 +130,14 @@ export type ApplicationLocalizationResourceDto = { baseResources?: Array<(string)> | null; }; +export type ApplicationOidcConfigurationDto = { + /** + * 是否启用 + */ + enabled?: boolean; + oidcConfiguration?: Array | null; +}; + export type ApplicationSettingConfigurationDto = { values?: { [key: string]: ((string) | null); @@ -150,6 +172,35 @@ export type ControllerInterfaceApiDescriptionModel = { methods?: Array | null; }; +/** + * 控制策略 + */ +export type ControlType = 10 | 20 | 30 | 40; + +export type CopyTemplateInput = { + id?: string; + /** + * 名称 + */ + name?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; +}; + +export type CreateAggregateInput = { + projectId?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; +}; + export type CreateDataDictinaryDetailInput = { id?: string; code?: (string) | null; @@ -164,26 +215,297 @@ export type CreateDataDictinaryInput = { description?: (string) | null; }; +export type CreateEntityModelInput = { + id?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; + relationalType?: RelationalType; +}; + +export type CreateEntityModelPropertyInput = { + /** + * 实体模型Id + */ + id?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; + /** + * 必填 + */ + isRequired?: boolean; + /** + * 字符串最大长度 + */ + maxLength?: (number) | null; + /** + * 字符串最小长度 + */ + minLength?: (number) | null; + /** + * 当类型为decimal时的小数位数 (18,4) 中的18 + */ + decimalPrecision?: (number) | null; + /** + * 当类型为decimal时的字段长度 (18,4) 中的4 + */ + decimalScale?: (number) | null; + /** + * 枚举类型Id + */ + enumTypeId?: (string) | null; + /** + * 数据类型Id + */ + dataTypeId?: (string) | null; + /** + * 允许作为查询条件 + */ + allowSearch?: boolean; + /** + * 允许添加 + */ + allowAdd?: boolean; + /** + * 允许编辑 + */ + allowEdit?: boolean; +}; + +export type CreateEnumTypeInput = { + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; + /** + * 实体模型Id + */ + entityModelId?: string; + projectId?: string; +}; + +export type CreateEnumTypePropertyInput = { + /** + * Id + */ + enumTypeId?: string; + /** + * 编码 + */ + code: string; + /** + * 枚举值 + */ + value?: number; + /** + * 描述 + */ + description: string; +}; + +/** + * 创建语言 + */ export type CreateLanguageInput = { + /** + * 语言名称 + */ cultureName?: (string) | null; + /** + * Ui语言名称 + */ uiCultureName?: (string) | null; + /** + * 显示名称 + */ displayName?: (string) | null; + /** + * 图标 + */ flagIcon?: (string) | null; + /** + * 是否启用 + */ isEnabled?: boolean; }; +/** + * 创建语言文本 + */ export type CreateLanguageTextInput = { + /** + * 资源名称 + */ resourceName?: (string) | null; + /** + * 语言名称 + */ cultureName?: (string) | null; + /** + * 名称 + */ name?: (string) | null; + /** + * 值 + */ value?: (string) | null; }; +/** + * 创建菜单 + */ +export type CreateMenuInput = { + parentId?: (string) | null; + /** + * 唯一编码 + */ + name: string; + /** + * 标题 + */ + title: string; + /** + * 标题 + */ + displayTitle?: (string) | null; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 是否缓存 + */ + keepAlive: boolean; + /** + * 是否显示 + */ + hideInMenu: boolean; + /** + * 排序 + */ + order: number; + /** + * 路由地址 + */ + path: string; + menuType?: MenuType; + openType?: OpenType; + /** + * 内外链地址 + */ + url?: (string) | null; + /** + * 组件地址 + */ + component?: (string) | null; + /** + * 是否启用 + */ + enabled?: boolean; + /** + * 权限 + */ + policy?: (string) | null; +}; + export type CreateOrganizationUnitInput = { displayName?: (string) | null; parentId?: (string) | null; }; +export type CreateProjectInput = { + /** + * 负责人 + */ + owner?: (string) | null; + /** + * 公司名称 + */ + companyName?: (string) | null; + /** + * 项目名称 + */ + projectName?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; + /** + * 是否支持多租户 + */ + supportTenant?: boolean; +}; + +export type CreateTemplateDetailInput = { + /** + * 模板id + */ + templateId?: string; + parentId?: (string) | null; + templateType?: TemplateType; + controlType?: ControlType; + /** + * 模板类型 + */ + name?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 模板内容 + */ + content?: (string) | null; +}; + +export type CreateTemplateInput = { + /** + * 名称 + */ + name?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; +}; + +/** + * 创建模板 + */ +export type CreateTextTemplateInput = { + /** + * 名称 + */ + name: string; + /** + * 编码 + */ + code: string; + /** + * 内容 + */ + content: string; + /** + * 语言 + */ + cultureName: string; +}; + export type CurrentCultureDto = { displayName?: (string) | null; englishName?: (string) | null; @@ -221,6 +543,22 @@ export type CurrentUserDto = { sessionId?: (string) | null; }; +export type DataTypeDto = { + id?: string; + /** + * 编码 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 是否是枚举 + */ + isEnum?: boolean; +}; + export type DateTimeFormatDto = { calendarAlgorithmType?: (string) | null; dateTimeFormatLong?: (string) | null; @@ -231,8 +569,18 @@ export type DateTimeFormatDto = { longTimePattern?: (string) | null; }; +export type DeleteAggregateInput = { + id?: string; +}; + export type DeleteConnectionStringInput = { + /** + * 连接字符串名称 + */ name?: (string) | null; + /** + * 租户id + */ tenantId?: string; }; @@ -241,15 +589,132 @@ export type DeleteDataDictionaryDetailInput = { dataDictionayDetailId?: string; }; +export type DeleteEntityModelInput = { + aggregateId?: string; + id?: string; +}; + +export type DeleteEntityModelPropertyInput = { + id?: string; + propertyId?: string; +}; + +export type DeleteEnumTypeInput = { + /** + * Id + */ + id?: string; + entityModelId?: string; +}; + +export type DeleteEnumTypePropertyInput = { + /** + * Id + */ + enumTypeId?: string; + /** + * Id + */ + id?: string; +}; + export type DeleteFeatureInput = { providerName?: (string) | null; providerKey?: (string) | null; }; -export type DeleteLanguageInput = { +/** + * 删除文件 + */ +export type DeleteFileObjectInput = { + /** + * 文件Id + */ id?: string; }; +/** + * 删除语言 + */ +export type DeleteLanguageInput = { + /** + * 语言Id + */ + id?: string; +}; + +/** + * 删除菜单 + */ +export type DeleteMenuInput = { + /** + * 菜单Id + */ + id?: string; +}; + +export type DeleteMessageInput = { + id?: string; + /** + * 接受者Id + */ + receiverUserId?: (string) | null; +}; + +export type DeleteProjectInput = { + id?: string; +}; + +export type DeleteTemplateDetailInput = { + templateId?: string; + templateDetailId?: string; +}; + +export type DeleteTemplateInput = { + id?: string; +}; + +/** + * 删除模板 + */ +export type DeleteTextTemplateInput = { + /** + * 模板Id + */ + id?: string; +}; + +export type DisabledTwoFactorInput = { + /** + * 验证码 + */ + code: string; +}; + +export type DownCodeInput = { + templateId?: string; + projectId?: string; + entityId?: Array<(string)> | null; +}; + +export type DownloadFileObjectInput = { + /** + * 文件Id + */ + id?: string; +}; + +export type EnabledTwoFactorInput = { + /** + * 验证码 + */ + code: string; + /** + * 密钥 + */ + secret: string; +}; + export type EntityChangeType = 0 | 1 | 2; export type EntityExtensionDto = { @@ -261,6 +726,26 @@ export type EntityExtensionDto = { } | null; }; +export type EntityOutput = { + id?: string; + /** + * 编码 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 首字母小写 + */ + readonly codeCamelCase?: (string) | null; + /** + * 复数形式 + */ + readonly codePluralized?: (string) | null; +}; + export type ExtensionEnumDto = { fields?: Array | null; localizationResource?: (string) | null; @@ -543,6 +1028,136 @@ export type FindTenantResultDto = { isActive?: boolean; }; +export type GetDataTypeInput = { + entityModelId?: string; +}; + +export type GetDataTypeOutput = { + id?: string; + /** + * 枚举编码 + */ + code?: (string) | null; + /** + * 枚举描述 + */ + description?: (string) | null; +}; + +export type GetEntityModelInput = { + id?: string; +}; + +export type GetEntityModelOutput = { + id?: string; + /** + * 编码 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + relationalType?: RelationalType; + /** + * 实体模型属性集合 + */ + entityModelProperties?: Array | null; + entityModelOutputs?: Array | null; +}; + +export type GetEntityModelPropertyOutput = { + id?: string; + /** + * 名称 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 必填 + */ + isRequired?: boolean; + /** + * 字符串最大长度 + */ + maxLength?: (number) | null; + /** + * 字符串最小长度 + */ + minLength?: (number) | null; + /** + * 当类型为decimal时的小数位数 (18,4) 中的18 + */ + decimalPrecision?: (number) | null; + /** + * 当类型为decimal时的字段长度 (18,4) 中的4 + */ + decimalScale?: (number) | null; + /** + * 枚举类型Id + */ + enumTypeId?: (string) | null; + isEnum?: boolean; + enumTypeOutput?: GetEnumTypeOutput; + /** + * 数据类型Id + */ + dataTypeId?: (string) | null; + dataTypeOutput?: GetDataTypeOutput; + /** + * 实体模型Id + */ + entityModelId?: string; +}; + +export type GetEntityModelTreeInput = { + projectId?: string; +}; + +export type GetEntityModelTreeOutput = { + /** + * 模板id + */ + key?: string; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 描述 + */ + code?: (string) | null; + /** + * 描述 + */ + title?: (string) | null; + /** + * 父类Id + */ + parentId?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + relationalType?: RelationalType; + children?: Array | null; +}; + +export type GetEnumTypeOutput = { + id?: string; + /** + * 枚举编码 + */ + code?: (string) | null; + /** + * 枚举描述 + */ + description?: (string) | null; +}; + export type GetFeatureListResultDto = { groups?: Array | null; }; @@ -552,10 +1167,69 @@ export type GetFeatureListResultInput = { providerKey?: (string) | null; }; +export type GetMenuTreeMetaOutput = { + title?: (string) | null; + displayTitle?: (string) | null; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 排序 + */ + order?: number; + /** + * 是否缓存 + */ + keepAlive?: boolean; + /** + * 是否显示 + */ + hideInMenu?: boolean; + /** + * 外链地址 + */ + link?: (string) | null; + /** + * 内链地址 + */ + iframeSrc?: (string) | null; +}; + +export type GetMenuTreeOutput = { + id?: string; + parentId?: (string) | null; + /** + * 名称 + */ + name?: (string) | null; + path?: (string) | null; + component?: (string) | null; + enabled?: boolean; + meta?: GetMenuTreeMetaOutput; + children?: Array | null; +}; + export type GetOrganizationUnitRoleInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; organizationUnitId?: string; }; @@ -570,9 +1244,25 @@ export type GetOrganizationUnitRoleOutputPagedResultDto = { }; export type GetOrganizationUnitUserInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; organizationUnitId?: string; filter?: (string) | null; }; @@ -593,10 +1283,80 @@ export type GetPermissionInput = { providerKey?: (string) | null; }; +export type GetProjectAndEntityInput = { + id?: string; +}; + +export type GetProjectAndEntityOutput = { + project?: ProjectOutput; + entities?: Array | null; +}; + +export type GetQRCodeOutput = { + /** + * base64 二维码 + */ + qrCode?: (string) | null; + /** + * 密钥 + */ + secret?: (string) | null; +}; + +export type GetTemplateTreeOutput = { + /** + * 模板id + */ + key?: string; + templateType?: TemplateType; + controlType?: ControlType; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 模板名称 + */ + name?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 描述 + */ + title?: (string) | null; + /** + * 模板内容 + */ + content?: (string) | null; + children?: Array | null; +}; + +export type GetTemplteTreeInput = { + templateId?: string; +}; + export type GetUnAddRoleInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; organizationUnitId?: string; filter?: (string) | null; }; @@ -612,9 +1372,25 @@ export type GetUnAddRoleOutputPagedResultDto = { }; export type GetUnAddUserInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; organizationUnitId?: string; filter?: (string) | null; }; @@ -655,6 +1431,7 @@ export type IdentityRoleDto = { isStatic?: boolean; isPublic?: boolean; concurrencyStamp?: (string) | null; + creationTime?: string; }; export type IdentityRoleDtoListResultDto = { @@ -778,9 +1555,50 @@ export type LockUserInput = { locked?: boolean; }; -export type LoginInput = { +/** + * 登录 + */ +export type Login2FAInput = { + /** + * 用户名或者邮箱 + */ name?: (string) | null; + /** + * 密码 + */ password?: (string) | null; + /** + * 双因素验证码 + */ + code?: (string) | null; +}; + +/** + * 登录 + */ +export type LoginInput = { + /** + * 用户名或者邮箱 + */ + name?: (string) | null; + /** + * 密码 + */ + password?: (string) | null; +}; + +/** + * 登录 + */ +export type LoginOidcInput = { + /** + * code + */ + code: string; + /** + * Provider + */ + state: string; }; export type LoginOutput = { @@ -788,13 +1606,25 @@ export type LoginOutput = { name?: (string) | null; userName?: (string) | null; token?: (string) | null; + refreshToken?: (string) | null; roles?: Array<(string)> | null; }; export type LoginResultType = 1 | 2 | 3 | 4 | 5; +/** + * 菜单类型 + */ +export type MenuType = 10 | 20; + +/** + * 消息等级 + */ export type MessageLevel = 10 | 20 | 30; +/** + * 消息类型 + */ export type MessageType = 10 | 20; export type MethodParameterApiDescriptionModel = { @@ -843,6 +1673,11 @@ export type NameValue = { value?: (string) | null; }; +export type NeedChangePasswordOutput = { + needChangePassword?: boolean; + message?: (string) | null; +}; + export type ObjectExtensionsDto = { modules?: { [key: string]: ModuleExtensionDto; @@ -852,6 +1687,280 @@ export type ObjectExtensionsDto = { } | null; }; +export type OidcConfiguration = { + /** + * 是否启用 + */ + enabled?: boolean; + /** + * 类型 + */ + type?: (string) | null; + /** + * client_id + */ + clientId?: (string) | null; + /** + * 应用名称 + */ + clientName?: (string) | null; + /** + * 应用图标 + */ + icon?: (string) | null; + /** + * 认证地址 + */ + authUri?: (string) | null; +}; + +/** + * 打开类型 + */ +export type OpenType = 10 | 20 | 30 | 40; + +export type PageEntityModelInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + id?: string; + filter?: (string) | null; +}; + +export type PageEntityModelPropertyOutput = { + id?: (string) | null; + /** + * 实体模型Id + */ + entityModelId?: string; + /** + * 名称 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 必填 + */ + isRequired?: boolean; + /** + * 字符串最大长度 + */ + maxLength?: (number) | null; + /** + * 字符串最小长度 + */ + minLength?: (number) | null; + /** + * 当类型为decimal时的小数位数 (18,4) 中的18 + */ + decimalPrecision?: (number) | null; + /** + * 当类型为decimal时的字段长度 (18,4) 中的4 + */ + decimalScale?: (number) | null; + dataTypeId?: string; + isEnum?: boolean; + dataTypeCode?: (string) | null; + dataTypeDescription?: (string) | null; + /** + * 允许作为查询条件 + */ + allowSearch?: boolean; + /** + * 允许添加 + */ + allowAdd?: boolean; + /** + * 允许编辑 + */ + allowEdit?: boolean; +}; + +export type PageEntityModelPropertyOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PageEnumTypeInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + id?: string; + filter?: (string) | null; +}; + +export type PageEnumTypeOutput = { + id?: (string) | null; + /** + * 实体模型Id + */ + entityModelId?: string; + /** + * 名称 + */ + code?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + creationTime?: string; +}; + +export type PageEnumTypeOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PageEnumTypePropertyInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + id?: string; + filter?: (string) | null; +}; + +export type PageEnumTypePropertyOutput = { + id?: (string) | null; + /** + * 名称 + */ + code?: (string) | null; + /** + * 名称 + */ + value?: number; + /** + * 描述 + */ + description?: (string) | null; + creationTime?: string; +}; + +export type PageEnumTypePropertyOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +/** + * 分页查询文件 + */ +export type PageFileObjectInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 开始创建时间 + */ + startCreationTime?: (string) | null; + /** + * 结束创建时间 + */ + endCreationTime?: (string) | null; + /** + * 文件名称 + */ + fileName?: (string) | null; +}; + +/** + * 分页查询文件 + */ +export type PageFileObjectOutput = { + /** + * 文件Id + */ + id?: string; + /** + * 文件大小 + */ + fileSize?: number; + readonly beautifySize?: (string) | null; + /** + * 文件名称 + */ + contentType?: (string) | null; + /** + * 文件名称 + */ + fileName?: (string) | null; + /** + * 创建时间 + */ + creationTime?: string; +}; + +export type PageFileObjectOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + export type PageIdentityUserOutput = { readonly extraProperties?: { [key: string]: unknown; @@ -879,6 +1988,9 @@ export type PageIdentityUserOutput = { concurrencyStamp?: (string) | null; entityVersion?: number; lastPasswordChangeTime?: (string) | null; + /** + * 是否开启双因素验证码 + */ twoFactorEnabled?: boolean; }; @@ -887,21 +1999,67 @@ export type PageIdentityUserOutputPagedResultDto = { totalCount?: number; }; +/** + * 创建语言 + */ export type PageLanguageInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; filter?: (string) | null; }; +/** + * 创建语言 + */ export type PageLanguageOutput = { + /** + * 语言Id + */ id?: string; + /** + * 语言名称 + */ cultureName?: (string) | null; + /** + * Ui语言名称 + */ uiCultureName?: (string) | null; + /** + * 显示名称 + */ displayName?: (string) | null; + /** + * 图标 + */ flagIcon?: (string) | null; + /** + * 是否启用 + */ isEnabled?: boolean; + /** + * 创建时间 + */ creationTime?: string; + /** + * 是否是默认语言 + */ isDefault?: boolean; }; @@ -910,18 +2068,58 @@ export type PageLanguageOutputPagedResultDto = { totalCount?: number; }; +/** + * 创建语言文本 + */ export type PageLanguageTextInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 语言 + */ cultureName?: (string) | null; + /** + * 资源 + */ resourceName?: (string) | null; + /** + * 查询条件 name or value + */ filter?: (string) | null; }; +/** + * 创建语言文本 + */ export type PageLanguageTextOutput = { + /** + * 资源名称 + */ resourceName?: (string) | null; + /** + * 名称 + */ name?: (string) | null; + /** + * 值 + */ value?: (string) | null; }; @@ -930,15 +2128,188 @@ export type PageLanguageTextOutputPagedResultDto = { totalCount?: number; }; -export type PageTenantConnectionStringInput = { +/** + * 分页查询菜单 + */ +export type PageMenuInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 开始创建时间 + */ + startCreationTime?: (string) | null; + /** + * 结束创建时间 + */ + endCreationTime?: (string) | null; +}; + +/** + * 分页查询菜单 + */ +export type PageMenuOutput = { + /** + * 菜单Id + */ id?: string; + parentId?: (string) | null; + /** + * 唯一编码 + */ name?: (string) | null; + /** + * 标题 + */ + localizationTitle?: (string) | null; + /** + * 标题 + */ + displayTitle?: (string) | null; + /** + * 标题 + */ + title?: (string) | null; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 是否缓存 + */ + keepAlive?: boolean; + /** + * 是否显示 + */ + hideInMenu?: boolean; + /** + * 排序 + */ + order?: number; + /** + * 路由/接口地址 + */ + path?: (string) | null; + menuType?: MenuType; + readonly menuTypeDescription?: (string) | null; + openType?: OpenType; + readonly openTypeDescription?: (string) | null; + /** + * 内外链地址 + */ + url?: (string) | null; + /** + * 组件地址 + */ + component?: (string) | null; + /** + * 创建时间 + */ + creationTime?: string; + /** + * 是否启用 + */ + enabled?: boolean; + /** + * 权限 + */ + policy?: (string) | null; +}; + +export type PageMenuOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +export type PageProjectInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + filter?: (string) | null; +}; + +export type PageTemplateInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + filter?: (string) | null; +}; + +export type PageTenantConnectionStringInput = { + /** + * 租户id + */ + id?: string; + /** + * 连接字符串名称 + */ + name?: (string) | null; + /** + * 连接字符串地址 + */ value?: (string) | null; }; export type PageTenantConnectionStringOutput = { + /** + * 租户id + */ tenantId?: string; + /** + * 连接字符串名称 + */ name?: (string) | null; + /** + * 连接字符串地址 + */ value?: (string) | null; }; @@ -947,6 +2318,86 @@ export type PageTenantConnectionStringOutputPagedResultDto = { totalCount?: number; }; +/** + * 分页查询模板 + */ +export type PageTextTemplateInput = { + /** + * 当前页面.默认从1开始 + */ + pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ + pageSize?: number; + /** + * 跳过多少条 + */ + readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 名称 + */ + name?: (string) | null; + /** + * 编码 + */ + code?: (string) | null; + /** + * 内容 + */ + content?: (string) | null; + /** + * 开始创建时间 + */ + startCreationTime?: (string) | null; + /** + * 结束创建时间 + */ + endCreationTime?: (string) | null; +}; + +/** + * 分页查询模板 + */ +export type PageTextTemplateOutput = { + /** + * 模板Id + */ + id?: string; + /** + * 名称 + */ + name?: (string) | null; + /** + * 编码 + */ + code?: (string) | null; + /** + * 内容 + */ + content?: (string) | null; + /** + * 语言 + */ + cultureName?: (string) | null; + /** + * 创建时间 + */ + creationTime?: string; +}; + +export type PageTextTemplateOutputPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + export type PagingAuditLogActionOutput = { id?: string; tenantId?: (string) | null; @@ -962,22 +2413,70 @@ export type PagingAuditLogActionOutput = { }; export type PagingAuditLogInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + */ sorting?: (string) | null; + /** + * 开始时间 + */ startTime?: (string) | null; + /** + * 结束时间 + */ endTime?: (string) | null; + /** + * 请求方法 + */ httpMethod?: (string) | null; + /** + * 请求地址 + */ url?: (string) | null; + /** + * 用户Id + */ userId?: (string) | null; + /** + * 用户名 + */ userName?: (string) | null; + /** + * 应用程序名称 + */ applicationName?: (string) | null; + /** + * RequestId + */ correlationId?: (string) | null; + /** + * 最大执行时间 + */ maxExecutionDuration?: (number) | null; + /** + * 最小执行时间 + */ minExecutionDuration?: (number) | null; + /** + * 是否有异常 + */ hasException?: (boolean) | null; httpStatusCode?: HttpStatusCode; + /** + * 客户端IP + */ clientIpAddress?: (string) | null; }; @@ -1011,20 +2510,54 @@ export type PagingAuditLogOutputPagedResultDto = { }; export type PagingDataDictionaryDetailInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; dataDictionaryId?: string; filter?: (string) | null; }; export type PagingDataDictionaryDetailOutput = { id?: string; + /** + * 所属字典Id + */ dataDictionaryId?: string; + /** + * 字典明细编码 + */ code?: (string) | null; + /** + * 展现列表时排序用 + */ order?: number; + /** + * 英文显示名 + */ displayText?: (string) | null; + /** + * 描述 + */ description?: (string) | null; + /** + * 启/停用(默认启用) + */ isEnabled?: boolean; }; @@ -1034,16 +2567,41 @@ export type PagingDataDictionaryDetailOutputPagedResultDto = { }; export type PagingDataDictionaryInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; filter?: (string) | null; }; export type PagingDataDictionaryOutput = { id?: string; + /** + * 字典编码 + */ code?: (string) | null; + /** + * 显示名 + */ displayText?: (string) | null; + /** + * 描述 + */ description?: (string) | null; }; @@ -1079,18 +2637,54 @@ export type PagingEntityPropertyChangeOutput = { }; export type PagingIdentitySecurityLogInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + */ sorting?: (string) | null; + /** + * 开始时间 + */ startTime?: (string) | null; + /** + * 结束时间 + */ endTime?: (string) | null; identity?: (string) | null; + /** + * 请求地址 + */ action?: (string) | null; + /** + * 用户Id + */ userId?: (string) | null; + /** + * 用户名 + */ userName?: (string) | null; + /** + * 应用程序名称 + */ applicationName?: (string) | null; + /** + * RequestId + */ correlationId?: (string) | null; + /** + * ClientId + */ clientId?: (string) | null; }; @@ -1116,17 +2710,60 @@ export type PagingIdentitySecurityLogOutputPagedResultDto = { }; export type PagingNotificationInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 标题 + */ title?: (string) | null; + /** + * 内容 + */ content?: (string) | null; + /** + * 发送者Id + */ senderUserId?: (string) | null; + /** + * 发送者名称 + */ senderUserName?: (string) | null; + /** + * 接受者Id + */ receiverUserId?: (string) | null; + /** + * 接受者名称 + */ receiverUserName?: (string) | null; + /** + * 是否已读 + */ read?: (boolean) | null; + /** + * 已读开始时间 + */ startReadTime?: (string) | null; + /** + * 已读结束时间 + */ endReadTime?: (string) | null; messageType?: MessageType; messageLevel?: MessageLevel; @@ -1134,18 +2771,47 @@ export type PagingNotificationInput = { export type PagingNotificationOutput = { id?: string; + /** + * 租户id + */ tenantId?: (string) | null; + /** + * 消息标题 + */ title?: (string) | null; + /** + * 消息内容 + */ content?: (string) | null; messageType?: MessageType; readonly messageTypeName?: (string) | null; messageLevel?: MessageLevel; readonly messageLevelName?: (string) | null; + /** + * 发送人 + */ senderUserId?: string; + /** + * 发送人用户名 + */ senderUserName?: (string) | null; + /** + * 订阅人 + * 消息类型是广播消息时,订阅人为空 + */ receiveUserId?: (string) | null; + /** + * 接收人用户名 + * 消息类型是广播消息时,订接收人用户名为空 + */ receiveUserName?: (string) | null; + /** + * 是否已读 + */ read?: boolean; + /** + * 已读时间 + */ readTime?: (string) | null; creationTime?: string; }; @@ -1156,32 +2822,93 @@ export type PagingNotificationOutputPagedResultDto = { }; export type PagingNotificationSubscriptionInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; notificationId?: string; + /** + * 接受者Id + */ receiverUserId?: (string) | null; + /** + * 接受者名称 + */ receiverUserName?: (string) | null; + /** + * 是否已读 + */ read?: (boolean) | null; + /** + * 已读开始时间 + */ startReadTime?: (string) | null; + /** + * 已读结束时间 + */ endReadTime?: (string) | null; }; export type PagingNotificationSubscriptionOutput = { id?: string; + /** + * 租户id + */ tenantId?: (string) | null; + /** + * 消息Id + */ notificationId?: string; + /** + * 接收人id + */ receiveUserId?: string; + /** + * 接收人用户名 + */ receiveUserName?: (string) | null; + /** + * 是否已读 + */ read?: boolean; + /** + * 已读时间 + */ readTime?: string; + /** + * 消息标题 + */ title?: (string) | null; + /** + * 消息内容 + */ content?: (string) | null; messageType?: MessageType; readonly messageTypeName?: (string) | null; messageLevel?: MessageLevel; readonly messageLevelName?: (string) | null; + /** + * 发送人 + */ senderUserId?: string; + /** + * 发送人用户名 + */ senderUserName?: (string) | null; }; @@ -1191,23 +2918,74 @@ export type PagingNotificationSubscriptionOutputPagedResultDto = { }; export type PagingRoleListInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; filter?: (string) | null; }; export type PagingTenantInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; filter?: (string) | null; }; export type PagingUserListInput = { + /** + * 当前页面.默认从1开始 + */ pageIndex?: number; + /** + * 每页多少条.每页显示多少记录 + */ pageSize?: number; + /** + * 跳过多少条 + */ readonly skipCount?: number; + /** + * 排序 + * + * name desc + * + */ + sorting?: (string) | null; + /** + * 关键字 + */ filter?: (string) | null; }; @@ -1236,6 +3014,62 @@ export type PermissionTreeDto = { children?: Array | null; }; +export type PreViewCodeInput = { + templateId?: string; + projectId?: string; + entityId?: Array<(string)> | null; +}; + +export type ProjectDto = { + id?: string; + creationTime?: string; + creatorId?: (string) | null; + lastModificationTime?: (string) | null; + lastModifierId?: (string) | null; + tenantId?: (string) | null; + /** + * 负责人 + */ + owner?: (string) | null; + /** + * 名称空间 + */ + nameSpace?: (string) | null; + /** + * 公司名称 + */ + companyName?: (string) | null; + /** + * 项目名称 + */ + projectName?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; + /** + * 是否支持多租户 + */ + supportTenant?: boolean; +}; + +export type ProjectDtoPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +export type ProjectOutput = { + id?: string; + /** + * 公司名称 + */ + companyName?: (string) | null; + /** + * 项目名称 + */ + projectName?: (string) | null; +}; + export type PropertyApiDescriptionModel = { name?: (string) | null; jsonName?: (string) | null; @@ -1249,6 +3083,20 @@ export type PropertyApiDescriptionModel = { regex?: (string) | null; }; +export type RefreshTokenInput = { + userId?: string; + refreshToken: string; +}; + +export type RefreshTokenOutput = { + success?: boolean; + message?: (string) | null; + token?: (string) | null; + refreshToken?: (string) | null; +}; + +export type RelationalType = 10 | 20; + export type RemoteServiceErrorInfo = { code?: (string) | null; message?: (string) | null; @@ -1268,6 +3116,12 @@ export type RemoteServiceValidationErrorInfo = { members?: Array<(string)> | null; }; +export type RemoteStreamContent = { + fileName?: (string) | null; + contentType?: (string) | null; + readonly contentLength?: (number) | null; +}; + export type RemoveRoleToOrganizationUnitInput = { roleId?: string; organizationUnitId?: string; @@ -1278,20 +3132,47 @@ export type RemoveUserToOrganizationUnitInput = { organizationUnitId?: string; }; +export type ResetPasswordInput = { + userId?: string; + password: string; +}; + +export type ResetTwoFactorInput = { + userId?: string; +}; + export type ReturnValueApiDescriptionModel = { type?: (string) | null; typeSimple?: (string) | null; }; export type SendBroadCastMessageInput = { + /** + * 消息标题 + */ title?: (string) | null; + /** + * 消息内容 + */ content?: (string) | null; }; export type SendCommonMessageInput = { + /** + * 消息标题 + */ title?: (string) | null; + /** + * 消息内容 + */ content?: (string) | null; + /** + * 发送人 + */ receiveUserId?: string; + /** + * 发送人名称 + */ receiveUserName?: (string) | null; }; @@ -1310,24 +3191,144 @@ export type SetReadInput = { }; export type SettingItemOutput = { + /** + * 名称 + */ name?: (string) | null; + /** + * 显示名称 + */ displayName?: (string) | null; + /** + * 描述 + */ description?: (string) | null; + /** + * 值 + */ value?: (string) | null; + /** + * 前端控件类型 + */ type?: (string) | null; }; export type SettingOutput = { + /** + * 分组 + */ group?: (string) | null; + /** + * 分组显示名称 + */ groupDisplayName?: (string) | null; settingItemOutput?: Array | null; }; +export type StringInt32KeyValuePair = { + key?: (string) | null; + value?: number; +}; + export type StringStringFromSelector = { readonly value?: (string) | null; readonly label?: (string) | null; }; +/** + * 模板明细 + */ +export type TemplateDetailDto = { + id?: string; + /** + * 模板id + */ + templateId?: string; + templateType?: TemplateType; + controlType?: ControlType; + /** + * 父级id + */ + parentId?: (string) | null; + /** + * 模板名称 + */ + name?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 模板内容 + */ + content?: (string) | null; +}; + +/** + * 模板 + */ +export type TemplateDto = { + id?: string; + creationTime?: string; + creatorId?: (string) | null; + lastModificationTime?: (string) | null; + lastModifierId?: (string) | null; + tenantId?: (string) | null; + /** + * 名称 + */ + name?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; + /** + * 关联属性1:N 模板明细集合 + */ + templateDetails?: Array | null; +}; + +export type TemplateDtoPagedResultDto = { + items?: Array | null; + totalCount?: number; +}; + +export type TemplateTreeDto = { + /** + * 模板id + */ + key?: string; + templateType?: TemplateType; + controlType?: ControlType; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 是否是文件夹 + */ + isFolder?: boolean; + /** + * 模板名称 + */ + name?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 描述 + */ + title?: (string) | null; + /** + * 模板内容 + */ + content?: (string) | null; + children?: Array | null; +}; + +export type TemplateType = 10 | 20; + export type TenantCreateDto = { readonly extraProperties?: { [key: string]: unknown; @@ -1375,6 +3376,18 @@ export type TypeApiDescriptionModel = { properties?: Array | null; }; +export type UpdateAggregateInput = { + id?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; +}; + export type UpdateDataDictinaryInput = { id?: string; code?: (string) | null; @@ -1390,6 +3403,111 @@ export type UpdateDetailInput = { order?: number; }; +export type UpdateEntityModelInput = { + id?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; + relationalType?: RelationalType; +}; + +export type UpdateEntityModelPropertyInput = { + id?: string; + propertyId?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; + /** + * 必填 + */ + isRequired?: boolean; + /** + * 字符串最大长度 + */ + maxLength?: (number) | null; + /** + * 字符串最小长度 + */ + minLength?: (number) | null; + /** + * 当类型为decimal时的小数位数 (18,4) 中的18 + */ + decimalPrecision?: (number) | null; + /** + * 当类型为decimal时的字段长度 (18,4) 中的4 + */ + decimalScale?: (number) | null; + /** + * 枚举类型Id + */ + enumTypeId?: (string) | null; + /** + * 数据类型Id + */ + dataTypeId?: (string) | null; + /** + * 实体模型Id + */ + entityModelId?: string; + /** + * 允许作为查询条件 + */ + allowSearch?: boolean; + /** + * 允许添加 + */ + allowAdd?: boolean; + /** + * 允许编辑 + */ + allowEdit?: boolean; +}; + +export type UpdateEnumTypeInput = { + id?: string; + /** + * 编码 + */ + code: string; + /** + * 描述 + */ + description: string; +}; + +export type UpdateEnumTypePropertyInput = { + /** + * Id + */ + enumTypeId?: string; + /** + * Id + */ + id?: string; + /** + * 编码 + */ + code: string; + /** + * 枚举值 + */ + value?: number; + /** + * 描述 + */ + description: string; +}; + export type UpdateFeatureDto = { name?: (string) | null; value?: (string) | null; @@ -1405,22 +3523,111 @@ export type UpdateFeaturesDto = { features?: Array | null; }; +/** + * 删除语言 + */ export type UpdateLanguageInput = { + /** + * 语言Id + */ id?: string; + /** + * 语言名称 + */ cultureName?: (string) | null; + /** + * Ui语言名称 + */ uiCultureName?: (string) | null; + /** + * 显示名称 + */ displayName?: (string) | null; + /** + * 图标 + */ flagIcon?: (string) | null; + /** + * 是否启用 + */ isEnabled?: boolean; }; +/** + * 删除语言文本 + */ export type UpdateLanguageTextInput = { + /** + * 资源名称 + */ resourceName: string; + /** + * 语言名称 + */ cultureName: string; + /** + * 名称 + */ name: string; + /** + * 值 + */ value: string; }; +/** + * 更新菜单 + */ +export type UpdateMenuInput = { + /** + * 菜单Id + */ + id?: string; + /** + * 唯一编码 + */ + name: string; + /** + * 标题 + */ + title: string; + /** + * 图标 + */ + icon?: (string) | null; + /** + * 是否缓存 + */ + keepAlive: boolean; + /** + * 是否显示 + */ + hideInMenu: boolean; + /** + * 排序 + */ + order: number; + /** + * 路由地址 + */ + path: string; + menuType?: MenuType; + openType?: OpenType; + /** + * 内外链地址 + */ + url?: (string) | null; + /** + * 组件地址 + */ + component?: (string) | null; + enabled?: boolean; + /** + * 权限 + */ + policy?: (string) | null; +}; + export type UpdateOrganizationUnitInput = { displayName?: (string) | null; id?: string; @@ -1435,6 +3642,30 @@ export type UpdatePermissionsDto = { permissions?: Array | null; }; +export type UpdateProjectInput = { + id?: string; + /** + * 负责人 + */ + owner?: (string) | null; + /** + * 公司名称 + */ + companyName?: (string) | null; + /** + * 项目名称 + */ + projectName?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; + /** + * 是否支持多租户 + */ + supportTenant?: boolean; +}; + export type UpdateRoleInput = { roleId?: string; roleInfo?: IdentityRoleUpdateDto; @@ -1452,11 +3683,82 @@ export type UpdateSettingInput = { } | null; }; +export type UpdateTemplateDetailContentInput = { + /** + * 模板id + */ + templateId?: string; + templateDetailId?: string; + /** + * 模板内容 + */ + content?: (string) | null; +}; + +export type UpdateTemplateDetailInput = { + /** + * 模板id + */ + templateId?: string; + templateDetailId?: string; + controlType?: ControlType; + /** + * 模板类型 + */ + name?: (string) | null; + /** + * 描述 + */ + description?: (string) | null; + /** + * 模板内容 + */ + content?: (string) | null; +}; + +export type UpdateTemplateInput = { + id?: string; + /** + * 名称 + */ + name?: (string) | null; + /** + * 备注 + */ + remark?: (string) | null; +}; + export type UpdateTenantInput = { id?: string; name?: (string) | null; }; +/** + * 更新模板 + */ +export type UpdateTextTemplateInput = { + /** + * 模板Id + */ + id?: string; + /** + * 名称 + */ + name: string; + /** + * 编码 + */ + code: string; + /** + * 内容 + */ + content: string; + /** + * 语言 + */ + cultureName: string; +}; + export type UpdateUserInput = { userId?: string; userInfo?: IdentityUserUpdateDto; @@ -1503,6 +3805,10 @@ export type GetApiAbpApplicationLocalizationResponse = (ApplicationLocalizationD export type GetApiAbpApplicationLocalizationError = (RemoteServiceErrorResponse); +export type GetApiAppAbpProBasicApplicationConfigurationResponse = (AbpProApplicationConfigurationDto); + +export type GetApiAppAbpProBasicApplicationConfigurationError = (RemoteServiceErrorResponse); + export type PostApiAppAccountLoginData = { body?: LoginInput; }; @@ -1511,6 +3817,30 @@ export type PostApiAppAccountLoginResponse = (LoginOutput); export type PostApiAppAccountLoginError = (RemoteServiceErrorResponse); +export type PostApiAppAccountLogin2FaData = { + body?: Login2FAInput; +}; + +export type PostApiAppAccountLogin2FaResponse = (LoginOutput); + +export type PostApiAppAccountLogin2FaError = (RemoteServiceErrorResponse); + +export type PostApiAppAccountLoginOidcData = { + body?: LoginOidcInput; +}; + +export type PostApiAppAccountLoginOidcResponse = (LoginOutput); + +export type PostApiAppAccountLoginOidcError = (RemoteServiceErrorResponse); + +export type PostApiAppAccountRefreshTokenData = { + body?: RefreshTokenInput; +}; + +export type PostApiAppAccountRefreshTokenResponse = (RefreshTokenOutput); + +export type PostApiAppAccountRefreshTokenError = (RemoteServiceErrorResponse); + export type PostAuditLogsPageData = { body?: PagingAuditLogInput; }; @@ -1591,6 +3921,174 @@ export type PostDataDictionaryUpdateResponse = (unknown); export type PostDataDictionaryUpdateError = (RemoteServiceErrorResponse); +export type PostDataTypesListData = { + body?: GetDataTypeInput; +}; + +export type PostDataTypesListResponse = (Array); + +export type PostDataTypesListError = (RemoteServiceErrorResponse); + +export type PostEntityModelsPagePropertyData = { + body?: PageEntityModelInput; +}; + +export type PostEntityModelsPagePropertyResponse = (PageEntityModelPropertyOutputPagedResultDto); + +export type PostEntityModelsPagePropertyError = (RemoteServiceErrorResponse); + +export type PostEntityModelsCreateAggregateData = { + body?: CreateAggregateInput; +}; + +export type PostEntityModelsCreateAggregateResponse = (unknown); + +export type PostEntityModelsCreateAggregateError = (RemoteServiceErrorResponse); + +export type PostEntityModelsUpdateAggregateData = { + body?: UpdateAggregateInput; +}; + +export type PostEntityModelsUpdateAggregateResponse = (unknown); + +export type PostEntityModelsUpdateAggregateError = (RemoteServiceErrorResponse); + +export type PostEntityModelsDeleteAggregateData = { + body?: DeleteAggregateInput; +}; + +export type PostEntityModelsDeleteAggregateResponse = (unknown); + +export type PostEntityModelsDeleteAggregateError = (RemoteServiceErrorResponse); + +export type PostEntityModelsCreateEntityModelData = { + body?: CreateEntityModelInput; +}; + +export type PostEntityModelsCreateEntityModelResponse = (unknown); + +export type PostEntityModelsCreateEntityModelError = (RemoteServiceErrorResponse); + +export type PostEntityModelsUpdateEntityModelData = { + body?: UpdateEntityModelInput; +}; + +export type PostEntityModelsUpdateEntityModelResponse = (unknown); + +export type PostEntityModelsUpdateEntityModelError = (RemoteServiceErrorResponse); + +export type PostEntityModelsDeleteEntityModelData = { + body?: DeleteEntityModelInput; +}; + +export type PostEntityModelsDeleteEntityModelResponse = (unknown); + +export type PostEntityModelsDeleteEntityModelError = (RemoteServiceErrorResponse); + +export type PostEntityModelsCreateEntityModelPropertyData = { + body?: CreateEntityModelPropertyInput; +}; + +export type PostEntityModelsCreateEntityModelPropertyResponse = (unknown); + +export type PostEntityModelsCreateEntityModelPropertyError = (RemoteServiceErrorResponse); + +export type PostEntityModelsUpdateEntityModelPropertyData = { + body?: UpdateEntityModelPropertyInput; +}; + +export type PostEntityModelsUpdateEntityModelPropertyResponse = (unknown); + +export type PostEntityModelsUpdateEntityModelPropertyError = (RemoteServiceErrorResponse); + +export type PostEntityModelsDeleteEntityModelPropertyData = { + body?: DeleteEntityModelPropertyInput; +}; + +export type PostEntityModelsDeleteEntityModelPropertyResponse = (unknown); + +export type PostEntityModelsDeleteEntityModelPropertyError = (RemoteServiceErrorResponse); + +export type PostEntityModelsTreeData = { + body?: GetEntityModelTreeInput; +}; + +export type PostEntityModelsTreeResponse = (Array); + +export type PostEntityModelsTreeError = (RemoteServiceErrorResponse); + +export type PostEntityModelsGetData = { + body?: GetEntityModelInput; +}; + +export type PostEntityModelsGetResponse = (Array); + +export type PostEntityModelsGetError = (RemoteServiceErrorResponse); + +export type PostEnumTypesPageData = { + body?: PageEnumTypeInput; +}; + +export type PostEnumTypesPageResponse = (PageEnumTypeOutputPagedResultDto); + +export type PostEnumTypesPageError = (RemoteServiceErrorResponse); + +export type PostEnumTypesPagePropertyData = { + body?: PageEnumTypePropertyInput; +}; + +export type PostEnumTypesPagePropertyResponse = (PageEnumTypePropertyOutputPagedResultDto); + +export type PostEnumTypesPagePropertyError = (RemoteServiceErrorResponse); + +export type PostEnumTypesCreateEnumTypeData = { + body?: CreateEnumTypeInput; +}; + +export type PostEnumTypesCreateEnumTypeResponse = (unknown); + +export type PostEnumTypesCreateEnumTypeError = (RemoteServiceErrorResponse); + +export type PostEnumTypesUpdateEnumTypeData = { + body?: UpdateEnumTypeInput; +}; + +export type PostEnumTypesUpdateEnumTypeResponse = (unknown); + +export type PostEnumTypesUpdateEnumTypeError = (RemoteServiceErrorResponse); + +export type PostEnumTypesDeleteEnumTypeData = { + body?: DeleteEnumTypeInput; +}; + +export type PostEnumTypesDeleteEnumTypeResponse = (unknown); + +export type PostEnumTypesDeleteEnumTypeError = (RemoteServiceErrorResponse); + +export type PostEnumTypesCreateEnumTypePropertyData = { + body?: CreateEnumTypePropertyInput; +}; + +export type PostEnumTypesCreateEnumTypePropertyResponse = (unknown); + +export type PostEnumTypesCreateEnumTypePropertyError = (RemoteServiceErrorResponse); + +export type PostEnumTypesUpdateEnumTypePropertyData = { + body?: UpdateEnumTypePropertyInput; +}; + +export type PostEnumTypesUpdateEnumTypePropertyResponse = (unknown); + +export type PostEnumTypesUpdateEnumTypePropertyError = (RemoteServiceErrorResponse); + +export type PostEnumTypesDeleteEnumTypePropertyData = { + body?: DeleteEnumTypePropertyInput; +}; + +export type PostEnumTypesDeleteEnumTypePropertyResponse = (unknown); + +export type PostEnumTypesDeleteEnumTypePropertyError = (RemoteServiceErrorResponse); + export type PostFeaturesListData = { body?: GetFeatureListResultInput; }; @@ -1615,6 +4113,56 @@ export type PostFeaturesDeleteResponse = (unknown); export type PostFeaturesDeleteError = (RemoteServiceErrorResponse); +export type PostFilesPageData = { + body?: PageFileObjectInput; +}; + +export type PostFilesPageResponse = (PageFileObjectOutputPagedResultDto); + +export type PostFilesPageError = (RemoteServiceErrorResponse); + +export type PostFilesUploadData = { + body?: { + files?: Array<((Blob | File))>; + }; +}; + +export type PostFilesUploadResponse = (unknown); + +export type PostFilesUploadError = (RemoteServiceErrorResponse); + +export type PostFilesDeleteData = { + body?: DeleteFileObjectInput; +}; + +export type PostFilesDeleteResponse = (unknown); + +export type PostFilesDeleteError = (RemoteServiceErrorResponse); + +export type PostFilesDownloadData = { + body?: DownloadFileObjectInput; +}; + +export type PostFilesDownloadResponse = (RemoteStreamContent); + +export type PostFilesDownloadError = (RemoteServiceErrorResponse); + +export type PostGeneratorPreViewCodeData = { + body?: PreViewCodeInput; +}; + +export type PostGeneratorPreViewCodeResponse = (Array); + +export type PostGeneratorPreViewCodeError = (RemoteServiceErrorResponse); + +export type PostGeneratorDownData = { + body?: DownCodeInput; +}; + +export type PostGeneratorDownResponse = ((Blob | File)); + +export type PostGeneratorDownError = (RemoteServiceErrorResponse); + export type PostIdentitySecurityLogsPageData = { body?: PagingIdentitySecurityLogInput; }; @@ -1695,6 +4243,46 @@ export type PostLanguageTextsUpdateResponse = (unknown); export type PostLanguageTextsUpdateError = (RemoteServiceErrorResponse); +export type PostMenusUserMenuResponse = (Array); + +export type PostMenusUserMenuError = (RemoteServiceErrorResponse); + +export type PostMenusPageData = { + body?: PageMenuInput; +}; + +export type PostMenusPageResponse = (PageMenuOutputPagedResultDto); + +export type PostMenusPageError = (RemoteServiceErrorResponse); + +export type PostMenusCreateData = { + body?: CreateMenuInput; +}; + +export type PostMenusCreateResponse = (unknown); + +export type PostMenusCreateError = (RemoteServiceErrorResponse); + +export type PostMenusUpdateData = { + body?: UpdateMenuInput; +}; + +export type PostMenusUpdateResponse = (unknown); + +export type PostMenusUpdateError = (RemoteServiceErrorResponse); + +export type PostMenusDeleteData = { + body?: DeleteMenuInput; +}; + +export type PostMenusDeleteResponse = (unknown); + +export type PostMenusDeleteError = (RemoteServiceErrorResponse); + +export type PostMenusTreeResponse = (Array); + +export type PostMenusTreeError = (RemoteServiceErrorResponse); + export type PostNotificationNotificationPageData = { body?: PagingNotificationInput; }; @@ -1711,6 +4299,14 @@ export type PostNotificationNotificationSubscriptionPageResponse = (PagingNotifi export type PostNotificationNotificationSubscriptionPageError = (RemoteServiceErrorResponse); +export type PostNotificationDeleteData = { + body?: DeleteMessageInput; +}; + +export type PostNotificationDeleteResponse = (unknown); + +export type PostNotificationDeleteError = (RemoteServiceErrorResponse); + export type PostNotificationSendCommonWarningMessageData = { body?: SendCommonMessageInput; }; @@ -1883,6 +4479,50 @@ export type PostPermissionsUpdateResponse = (unknown); export type PostPermissionsUpdateError = (RemoteServiceErrorResponse); +export type PostProjectsAllResponse = (Array); + +export type PostProjectsAllError = (RemoteServiceErrorResponse); + +export type PostProjectsPageData = { + body?: PageProjectInput; +}; + +export type PostProjectsPageResponse = (ProjectDtoPagedResultDto); + +export type PostProjectsPageError = (RemoteServiceErrorResponse); + +export type PostProjectsCreateData = { + body?: CreateProjectInput; +}; + +export type PostProjectsCreateResponse = (unknown); + +export type PostProjectsCreateError = (RemoteServiceErrorResponse); + +export type PostProjectsUpdateData = { + body?: UpdateProjectInput; +}; + +export type PostProjectsUpdateResponse = (unknown); + +export type PostProjectsUpdateError = (RemoteServiceErrorResponse); + +export type PostProjectsDeleteData = { + body?: DeleteProjectInput; +}; + +export type PostProjectsDeleteResponse = (unknown); + +export type PostProjectsDeleteError = (RemoteServiceErrorResponse); + +export type PostProjectsGetProjectAndEntityData = { + body?: GetProjectAndEntityInput; +}; + +export type PostProjectsGetProjectAndEntityResponse = (GetProjectAndEntityOutput); + +export type PostProjectsGetProjectAndEntityError = (RemoteServiceErrorResponse); + export type PostRolesAllResponse = (IdentityRoleDtoListResultDto); export type PostRolesAllError = (RemoteServiceErrorResponse); @@ -1931,6 +4571,102 @@ export type PostSettingsUpdateResponse = (unknown); export type PostSettingsUpdateError = (RemoteServiceErrorResponse); +export type PostTemplatesAllResponse = (Array); + +export type PostTemplatesAllError = (RemoteServiceErrorResponse); + +export type PostTemplatesPageData = { + body?: PageTemplateInput; +}; + +export type PostTemplatesPageResponse = (TemplateDtoPagedResultDto); + +export type PostTemplatesPageError = (RemoteServiceErrorResponse); + +export type PostTemplatesCreateData = { + body?: CreateTemplateInput; +}; + +export type PostTemplatesCreateResponse = (unknown); + +export type PostTemplatesCreateError = (RemoteServiceErrorResponse); + +export type PostTemplatesUpdateData = { + body?: UpdateTemplateInput; +}; + +export type PostTemplatesUpdateResponse = (unknown); + +export type PostTemplatesUpdateError = (RemoteServiceErrorResponse); + +export type PostTemplatesDeleteData = { + body?: DeleteTemplateInput; +}; + +export type PostTemplatesDeleteResponse = (unknown); + +export type PostTemplatesDeleteError = (RemoteServiceErrorResponse); + +export type PostTemplatesCreateDetailData = { + body?: CreateTemplateDetailInput; +}; + +export type PostTemplatesCreateDetailResponse = (unknown); + +export type PostTemplatesCreateDetailError = (RemoteServiceErrorResponse); + +export type PostTemplatesUpdateDetailData = { + body?: UpdateTemplateDetailInput; +}; + +export type PostTemplatesUpdateDetailResponse = (unknown); + +export type PostTemplatesUpdateDetailError = (RemoteServiceErrorResponse); + +export type PostTemplatesUpdateDetailContentData = { + body?: UpdateTemplateDetailContentInput; +}; + +export type PostTemplatesUpdateDetailContentResponse = (unknown); + +export type PostTemplatesUpdateDetailContentError = (RemoteServiceErrorResponse); + +export type PostTemplatesDeleteDetailData = { + body?: DeleteTemplateDetailInput; +}; + +export type PostTemplatesDeleteDetailResponse = (unknown); + +export type PostTemplatesDeleteDetailError = (RemoteServiceErrorResponse); + +export type PostTemplatesTreeData = { + body?: GetTemplteTreeInput; +}; + +export type PostTemplatesTreeResponse = (Array); + +export type PostTemplatesTreeError = (RemoteServiceErrorResponse); + +export type PostTemplatesListResponse = (Array); + +export type PostTemplatesListError = (RemoteServiceErrorResponse); + +export type PostTemplatesControlTypeResponse = (Array); + +export type PostTemplatesControlTypeError = (RemoteServiceErrorResponse); + +export type PostTemplatesTemplateTypeResponse = (Array); + +export type PostTemplatesTemplateTypeError = (RemoteServiceErrorResponse); + +export type PostTemplatesCopyData = { + body?: CopyTemplateInput; +}; + +export type PostTemplatesCopyResponse = (unknown); + +export type PostTemplatesCopyError = (RemoteServiceErrorResponse); + export type PostTenantsFindData = { body?: FindTenantByNameInput; }; @@ -1995,6 +4731,46 @@ export type PostTenantsDeleteConnectionStringResponse = (unknown); export type PostTenantsDeleteConnectionStringError = (RemoteServiceErrorResponse); +export type PostTextTemplatesPageData = { + body?: PageTextTemplateInput; +}; + +export type PostTextTemplatesPageResponse = (PageTextTemplateOutputPagedResultDto); + +export type PostTextTemplatesPageError = (RemoteServiceErrorResponse); + +export type PostTextTemplatesCreateData = { + body?: CreateTextTemplateInput; +}; + +export type PostTextTemplatesCreateResponse = (unknown); + +export type PostTextTemplatesCreateError = (RemoteServiceErrorResponse); + +export type PostTextTemplatesUpdateData = { + body?: UpdateTextTemplateInput; +}; + +export type PostTextTemplatesUpdateResponse = (unknown); + +export type PostTextTemplatesUpdateError = (RemoteServiceErrorResponse); + +export type PostTextTemplatesDeleteData = { + body?: DeleteTextTemplateInput; +}; + +export type PostTextTemplatesDeleteResponse = (unknown); + +export type PostTextTemplatesDeleteError = (RemoteServiceErrorResponse); + +export type PostTextTemplatesExportData = { + body?: PageTextTemplateInput; +}; + +export type PostTextTemplatesExportResponse = ((Blob | File)); + +export type PostTextTemplatesExportError = (RemoteServiceErrorResponse); + export type PostUsersPageData = { body?: PagingUserListInput; }; @@ -2059,6 +4835,14 @@ export type PostUsersChangePasswordResponse = (boolean); export type PostUsersChangePasswordError = (RemoteServiceErrorResponse); +export type PostUsersResetPasswordData = { + body?: ResetPasswordInput; +}; + +export type PostUsersResetPasswordResponse = (boolean); + +export type PostUsersResetPasswordError = (RemoteServiceErrorResponse); + export type PostUsersLockData = { body?: LockUserInput; }; @@ -2077,4 +4861,40 @@ export type PostUsersFindByUserNameError = (RemoteServiceErrorResponse); export type PostUsersMyProfileResponse = (MyProfileOutput); -export type PostUsersMyProfileError = (RemoteServiceErrorResponse); \ No newline at end of file +export type PostUsersMyProfileError = (RemoteServiceErrorResponse); + +export type PostUsersCanUseTwoFactorResponse = (boolean); + +export type PostUsersCanUseTwoFactorError = (RemoteServiceErrorResponse); + +export type PostUsersGetQrCodeResponse = (GetQRCodeOutput); + +export type PostUsersGetQrCodeError = (RemoteServiceErrorResponse); + +export type PostUsersEnabledTwoFactorData = { + body?: EnabledTwoFactorInput; +}; + +export type PostUsersEnabledTwoFactorResponse = (unknown); + +export type PostUsersEnabledTwoFactorError = (RemoteServiceErrorResponse); + +export type PostUsersDisabledTwoFactorData = { + body?: DisabledTwoFactorInput; +}; + +export type PostUsersDisabledTwoFactorResponse = (unknown); + +export type PostUsersDisabledTwoFactorError = (RemoteServiceErrorResponse); + +export type PostUsersResetTwoFactorData = { + body?: ResetTwoFactorInput; +}; + +export type PostUsersResetTwoFactorResponse = (unknown); + +export type PostUsersResetTwoFactorError = (RemoteServiceErrorResponse); + +export type PostUsersNeedChangePasswordResponse = (NeedChangePasswordOutput); + +export type PostUsersNeedChangePasswordError = (RemoteServiceErrorResponse); \ No newline at end of file diff --git a/apps/web-antd/src/api/core/auth.ts b/apps/web-ele/src/api/core/auth.ts similarity index 100% rename from apps/web-antd/src/api/core/auth.ts rename to apps/web-ele/src/api/core/auth.ts diff --git a/apps/web-antd/src/api/core/index.ts b/apps/web-ele/src/api/core/index.ts similarity index 100% rename from apps/web-antd/src/api/core/index.ts rename to apps/web-ele/src/api/core/index.ts diff --git a/apps/web-antd/src/api/core/menu.ts b/apps/web-ele/src/api/core/menu.ts similarity index 100% rename from apps/web-antd/src/api/core/menu.ts rename to apps/web-ele/src/api/core/menu.ts diff --git a/apps/web-antd/src/api/core/user.ts b/apps/web-ele/src/api/core/user.ts similarity index 100% rename from apps/web-antd/src/api/core/user.ts rename to apps/web-ele/src/api/core/user.ts diff --git a/apps/web-antd/src/api/index.ts b/apps/web-ele/src/api/index.ts similarity index 100% rename from apps/web-antd/src/api/index.ts rename to apps/web-ele/src/api/index.ts diff --git a/apps/web-antd/src/api/request.ts b/apps/web-ele/src/api/request.ts similarity index 97% rename from apps/web-antd/src/api/request.ts rename to apps/web-ele/src/api/request.ts index 288dddd..203b35b 100644 --- a/apps/web-antd/src/api/request.ts +++ b/apps/web-ele/src/api/request.ts @@ -13,7 +13,7 @@ import { } from '@vben/request'; import { useAccessStore } from '@vben/stores'; -import { message } from 'ant-design-vue'; +import { ElMessage } from 'element-plus'; import { useAuthStore } from '#/store'; @@ -99,7 +99,7 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) { const responseData = error?.response?.data ?? {}; const errorMessage = responseData?.error ?? responseData?.message ?? ''; // 如果没有错误信息,则会根据状态码进行提示 - message.error(errorMessage || msg); + ElMessage.error(errorMessage || msg); }), ); diff --git a/apps/web-ele/src/app.vue b/apps/web-ele/src/app.vue new file mode 100644 index 0000000..1217658 --- /dev/null +++ b/apps/web-ele/src/app.vue @@ -0,0 +1,17 @@ + + + diff --git a/apps/web-antd/src/bootstrap.ts b/apps/web-ele/src/bootstrap.ts similarity index 65% rename from apps/web-antd/src/bootstrap.ts rename to apps/web-ele/src/bootstrap.ts index 39dd9b4..7fcb2e2 100644 --- a/apps/web-antd/src/bootstrap.ts +++ b/apps/web-ele/src/bootstrap.ts @@ -1,15 +1,14 @@ import { createApp, watchEffect } from 'vue'; import { registerAccessDirective } from '@vben/access'; -import { initTippy } from '@vben/common-ui'; +import { registerLoadingDirective } from '@vben/common-ui'; import { preferences } from '@vben/preferences'; import { initStores } from '@vben/stores'; import '@vben/styles'; -import '@vben/styles/antd'; +import '@vben/styles/ele'; import { useTitle } from '@vueuse/core'; -// https://github.com/rennzhang/codemirror-editor-vue3 -import { InstallCodeMirror } from 'codemirror-editor-vue3'; +import { ElLoading } from 'element-plus'; import JsonViewer from 'vue3-json-viewer'; import { $t, setupI18n } from '#/locales'; @@ -18,23 +17,32 @@ import { initComponentAdapter } from './adapter/component'; import App from './app.vue'; import { router } from './router'; +// 加载本地图标 +// import '#/hooks/useLoadIcon'; import 'vue3-json-viewer/dist/index.css'; async function bootstrap(namespace: string) { // 初始化组件适配器 await initComponentAdapter(); - // // 设置弹窗的默认配置 // setDefaultModalProps({ // fullscreenButton: false, // }); // // 设置抽屉的默认配置 // setDefaultDrawerProps({ - // zIndex: 1020, + // zIndex: 2000, // }); - const app = createApp(App); + // 注册Element Plus提供的v-loading指令 + app.directive('loading', ElLoading.directive); + + // 注册Vben提供的v-loading和v-spinning指令 + registerLoadingDirective(app, { + loading: false, // Vben提供的v-loading指令和Element Plus提供的v-loading指令二选一即可,此处false表示不注册Vben提供的v-loading指令 + spinning: 'spinning', + }); + // 国际化 i18n 配置 await setupI18n(app); @@ -45,13 +53,18 @@ async function bootstrap(namespace: string) { registerAccessDirective(app); // 初始化 tippy + const { initTippy } = await import('@vben/common-ui/es/tippy'); initTippy(app); // 配置路由及路由守卫 app.use(router); + + // 配置Motion插件 + const { MotionPlugin } = await import('@vben/plugins/motion'); + app.use(MotionPlugin); + // 配置 json-viewer app.use(JsonViewer); - // 动态更新标题 watchEffect(() => { if (preferences.app.dynamicTitle) { @@ -61,7 +74,7 @@ async function bootstrap(namespace: string) { useTitle(pageTitle); } }); - app.use(InstallCodeMirror); + app.mount('#app'); } diff --git a/apps/web-ele/src/components/icon/icon.vue b/apps/web-ele/src/components/icon/icon.vue new file mode 100644 index 0000000..27a84ec --- /dev/null +++ b/apps/web-ele/src/components/icon/icon.vue @@ -0,0 +1,18 @@ + + + diff --git a/apps/web-antd/src/components/icon/index.ts b/apps/web-ele/src/components/icon/index.ts similarity index 100% rename from apps/web-antd/src/components/icon/index.ts rename to apps/web-ele/src/components/icon/index.ts diff --git a/apps/web-antd/src/components/table-action/index.ts b/apps/web-ele/src/components/table-action/index.ts similarity index 100% rename from apps/web-antd/src/components/table-action/index.ts rename to apps/web-ele/src/components/table-action/index.ts diff --git a/apps/web-ele/src/components/table-action/table-action.vue b/apps/web-ele/src/components/table-action/table-action.vue new file mode 100644 index 0000000..26b57e3 --- /dev/null +++ b/apps/web-ele/src/components/table-action/table-action.vue @@ -0,0 +1,201 @@ + + + diff --git a/apps/web-antd/src/components/table-action/types.d.ts b/apps/web-ele/src/components/table-action/types.d.ts similarity index 63% rename from apps/web-antd/src/components/table-action/types.d.ts rename to apps/web-ele/src/components/table-action/types.d.ts index 29e7d4d..29e5075 100644 --- a/apps/web-antd/src/components/table-action/types.d.ts +++ b/apps/web-ele/src/components/table-action/types.d.ts @@ -1,5 +1,6 @@ -import { ButtonProps } from 'ant-design-vue/es/button/buttonTypes'; -import { TooltipProps } from 'ant-design-vue/es/tooltip/Tooltip'; +import type { VNode } from 'vue'; + +import { TooltipProps } from 'element-plus'; export interface PopConfirm { title: string; @@ -8,13 +9,15 @@ export interface PopConfirm { confirm: Fn; cancel?: Fn; icon?: string; - disabled?: boolean; } -export interface ActionItem extends ButtonProps { +export interface ActionItem { + type?: 'danger' | 'info' | 'primary' | 'success' | 'warning'; + link?: boolean; + size?: 'large' | 'medium' | 'mini' | 'small'; onClick?: Fn; label?: string; color?: 'error' | 'success' | 'warning'; - icon?: string; + icon?: string | VNode; popConfirm?: PopConfirm; disabled?: boolean; divider?: boolean; diff --git a/apps/web-ele/src/hooks/useLoadIcon.ts b/apps/web-ele/src/hooks/useLoadIcon.ts new file mode 100644 index 0000000..90119d2 --- /dev/null +++ b/apps/web-ele/src/hooks/useLoadIcon.ts @@ -0,0 +1,23 @@ +import { addCollection } from '@vben/icons'; + +import AntDesignIcons from '@iconify/json/json/ant-design.json'; +import CarbonIcons from '@iconify/json/json/carbon.json'; +import EpIcons from '@iconify/json/json/ep.json'; +import IcIcons from '@iconify/json/json/ic.json'; +import LogosIcons from '@iconify/json/json/logos.json'; +import LucideIcons from '@iconify/json/json/lucide.json'; +import MdiIcons from '@iconify/json/json/mdi.json'; +import OuiIcons from '@iconify/json/json/oui.json'; +import PhosphorIcons from '@iconify/json/json/ph.json'; +import UnIcons from '@iconify/json/json/uil.json'; + +addCollection(AntDesignIcons); +addCollection(LucideIcons); +addCollection(CarbonIcons); +addCollection(IcIcons as any); +addCollection(LogosIcons as any); +addCollection(PhosphorIcons as any); +addCollection(UnIcons); +addCollection(OuiIcons); +addCollection(MdiIcons); +addCollection(EpIcons); diff --git a/apps/web-antd/src/hooks/useSignalR.ts b/apps/web-ele/src/hooks/useSignalR.ts similarity index 74% rename from apps/web-antd/src/hooks/useSignalR.ts rename to apps/web-ele/src/hooks/useSignalR.ts index 494d6aa..4089977 100644 --- a/apps/web-antd/src/hooks/useSignalR.ts +++ b/apps/web-ele/src/hooks/useSignalR.ts @@ -2,7 +2,7 @@ import { useEventbus } from '@vben/hooks'; import { useUserStore } from '@vben/stores'; import * as signalR from '@microsoft/signalr'; -import { notification } from 'ant-design-vue'; +import { ElNotification as notification } from 'element-plus'; const eventbus = useEventbus(); let connection: signalR.HubConnection; @@ -12,6 +12,11 @@ export function useSignalR() { */ async function startConnect() { try { + const userStore = useUserStore(); + if (userStore.checkUserLoginExpire()) { + console.debug('未检测到用户信息,登录之后才会链接SignalR.'); + return; + } connectionsignalR(); await connection.start(); } catch (error) { @@ -24,10 +29,7 @@ export function useSignalR() { * 关闭SignalR连接 */ function closeConnect(): void { - 8; - if (connection) { - connection.stop(); - } + connection?.stop(); } async function connectionsignalR() { @@ -75,21 +77,24 @@ export function useSignalR() { // 发布事件 eventbus.publish('ReceiveTextMessageHandlerAsync', message); if (message.messageLevel === 10) { - notification.warn({ - description: message.content, - message: message.title, + notification({ + message: message.content, + title: message.title, + type: 'warning', }); } if (message.messageLevel === 20) { notification.info({ - message: message.title, - description: message.content, + message: message.content, + title: message.title, + type: 'info', }); } if (message.messageLevel === 30) { notification.error({ - message: message.title, - description: message.content, + message: message.content, + title: message.title, + type: 'error', }); } } @@ -100,23 +105,26 @@ export function useSignalR() { */ function ReceiveBroadCastMessageHandlerAsync(message: any) { // 发布事件 - eventbus.publish('ReceiveTextMessageHandlerAsync', message); + eventbus.publish('ReceiveBroadCastMessageHandlerAsync', message); if (message.messageLevel === 10) { - notification.warn({ - message: message.title, - description: message.content, + notification({ + message: message.content, + title: message.title, + type: 'warning', }); } if (message.messageLevel === 20) { notification.info({ - message: message.title, - description: message.content, + message: message.content, + title: message.title, + type: 'info', }); } if (message.messageLevel === 30) { notification.error({ - message: message.title, - description: message.content, + message: message.content, + title: message.title, + type: 'error', }); } } diff --git a/apps/web-antd/src/layouts/NotifyItem.vue b/apps/web-ele/src/layouts/NotifyItem.vue similarity index 67% rename from apps/web-antd/src/layouts/NotifyItem.vue rename to apps/web-ele/src/layouts/NotifyItem.vue index 5d6943a..03df1c6 100644 --- a/apps/web-antd/src/layouts/NotifyItem.vue +++ b/apps/web-ele/src/layouts/NotifyItem.vue @@ -5,15 +5,14 @@ import type { VxeGridProps } from '#/adapter/vxe-table'; import { Page } from '@vben/common-ui'; import { useUserStore } from '@vben/stores'; -import { Button, message as Message, Modal, Space, Tag } from 'ant-design-vue'; import dayjs from 'dayjs'; +import { ElMessage as Message } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { postNotificationNotificationPage, postNotificationRead, } from '#/api-client'; -import { $t } from '#/locales'; defineOptions({ name: 'AbpNotifyItem', @@ -34,29 +33,29 @@ const formOptions: VbenFormProps = { { component: 'Input', fieldName: 'title', - label: $t('abp.message.title'), + label: '标题', }, { component: 'Input', fieldName: 'content', - label: $t('abp.message.content'), + label: '内容', }, { component: 'Select', fieldName: 'messageLevel', - label: $t('abp.message.level'), + label: '级别', componentProps: { options: [ { - label: $t('common.warning'), + label: '警告', value: 10, }, { - label: $t('common.info'), + label: '正常', value: 20, }, { - label: $t('common.error'), + label: '错误', value: 30, }, ], @@ -66,15 +65,15 @@ const formOptions: VbenFormProps = { { component: 'Select', fieldName: 'read', - label: $t('abp.message.isRead'), + label: '是否已读', componentProps: { options: [ { - label: $t('common.yes'), + label: '是', value: true, }, { - label: $t('common.no'), + label: '否', value: false, }, ], @@ -87,42 +86,34 @@ const userStore = useUserStore(); const gridOptions: VxeGridProps = { checkboxConfig: {}, columns: [ - { title: $t('common.seq'), type: 'seq', width: 50 }, - { field: 'title', title: $t('abp.message.title'), minWidth: '150' }, - { field: 'content', title: $t('abp.message.content'), minWidth: '150' }, + { title: '序号', type: 'seq', width: 50 }, + { field: 'title', title: '标题', minWidth: '150' }, + { field: 'content', title: '内容', minWidth: '150' }, // { field: 'messageTypeName', title: '类型', minWidth: '150' }, { field: 'messageLevelName', - title: $t('abp.message.level'), + title: '级别', minWidth: '150', slots: { default: 'messageLevel' }, }, - { - field: 'senderUserName', - title: $t('abp.message.sender'), - minWidth: '150', - }, - { - field: 'receiveUserName', - title: $t('abp.message.receiver'), - minWidth: '150', - }, + { field: 'senderUserName', title: '发送人', minWidth: '150' }, + { field: 'receiveUserName', title: '接收人', minWidth: '150' }, { field: 'read', - title: $t('abp.message.isRead'), + title: '是否已读', minWidth: '150', slots: { default: 'read' }, }, { field: 'creationTime', - title: $t('common.createTime'), + title: '创建时间', minWidth: '150', formatter: ({ cellValue }) => { return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); }, }, { - title: $t('common.action'), + title: '操作', field: 'action', fixed: 'right', minWidth: '150', @@ -138,7 +129,6 @@ const gridOptions: VxeGridProps = { customConfig: { storage: true, }, - proxyConfig: { ajax: { query: async ({ page }, formValues) => { @@ -158,24 +148,19 @@ const gridOptions: VxeGridProps = { const [Grid, gridApi] = useVbenVxeGrid({ formOptions, gridOptions }); -const onRead = (row: any) => { - // if (row.read) { - // Message.info('该消息已读,不需要重复设置'); - // return; - // } - Modal.confirm({ - title: $t('abp.message.confirmRead'), - onOk: async () => { - await postNotificationRead({ body: { id: row.id } }); - gridApi.reload(); - Message.success($t('common.success')); - }, - }); +const onRead = async (row: any) => { + if (row.read) { + Message.info('该消息已读,不需要重复设置'); + return; + } + await postNotificationRead({ body: { id: row.id } }); + gridApi.reload(); + Message.success('设置成功'); }; diff --git a/apps/web-ele/src/layouts/change-password.vue b/apps/web-ele/src/layouts/change-password.vue new file mode 100644 index 0000000..d52c298 --- /dev/null +++ b/apps/web-ele/src/layouts/change-password.vue @@ -0,0 +1,108 @@ + + + diff --git a/apps/web-antd/src/layouts/index.ts b/apps/web-ele/src/layouts/index.ts similarity index 100% rename from apps/web-antd/src/layouts/index.ts rename to apps/web-ele/src/layouts/index.ts diff --git a/apps/web-ele/src/layouts/my-profile.vue b/apps/web-ele/src/layouts/my-profile.vue new file mode 100644 index 0000000..c0d75e3 --- /dev/null +++ b/apps/web-ele/src/layouts/my-profile.vue @@ -0,0 +1,400 @@ + + + diff --git a/apps/web-antd/src/locales/README.md b/apps/web-ele/src/locales/README.md similarity index 100% rename from apps/web-antd/src/locales/README.md rename to apps/web-ele/src/locales/README.md diff --git a/apps/web-antd/src/locales/index.ts b/apps/web-ele/src/locales/index.ts similarity index 77% rename from apps/web-antd/src/locales/index.ts rename to apps/web-ele/src/locales/index.ts index 7f32bd1..57b87df 100644 --- a/apps/web-antd/src/locales/index.ts +++ b/apps/web-ele/src/locales/index.ts @@ -1,4 +1,4 @@ -import type { Locale } from 'ant-design-vue/es/locale'; +import type { Language } from 'element-plus/es/locale'; import type { App } from 'vue'; @@ -13,11 +13,11 @@ import { } from '@vben/locales'; import { preferences } from '@vben/preferences'; -import antdEnLocale from 'ant-design-vue/es/locale/en_US'; -import antdDefaultLocale from 'ant-design-vue/es/locale/zh_CN'; import dayjs from 'dayjs'; +import enLocale from 'element-plus/es/locale/lang/en'; +import defaultLocale from 'element-plus/es/locale/lang/zh-cn'; -const antdLocale = ref(antdDefaultLocale); +const elementLocale = ref(defaultLocale); const modules = import.meta.glob('./langs/**/*.json'); @@ -43,7 +43,7 @@ async function loadMessages(lang: SupportedLanguagesType) { * @param lang */ async function loadThirdPartyMessage(lang: SupportedLanguagesType) { - await Promise.all([loadAntdLocale(lang), loadDayjsLocale(lang)]); + await Promise.all([loadElementLocale(lang), loadDayjsLocale(lang)]); } /** @@ -74,17 +74,17 @@ async function loadDayjsLocale(lang: SupportedLanguagesType) { } /** - * 加载antd的语言包 + * 加载element-plus的语言包 * @param lang */ -async function loadAntdLocale(lang: SupportedLanguagesType) { +async function loadElementLocale(lang: SupportedLanguagesType) { switch (lang) { case 'en-US': { - antdLocale.value = antdEnLocale; + elementLocale.value = enLocale; break; } case 'zh-CN': { - antdLocale.value = antdDefaultLocale; + elementLocale.value = defaultLocale; break; } } @@ -99,4 +99,4 @@ async function setupI18n(app: App, options: LocaleSetupOptions = {}) { }); } -export { $t, antdLocale, setupI18n }; +export { $t, elementLocale, setupI18n }; diff --git a/apps/web-antd/src/locales/langs/en-US/abp.json b/apps/web-ele/src/locales/langs/en-US/abp.json similarity index 92% rename from apps/web-antd/src/locales/langs/en-US/abp.json rename to apps/web-ele/src/locales/langs/en-US/abp.json index 1649a3e..00d63ac 100644 --- a/apps/web-antd/src/locales/langs/en-US/abp.json +++ b/apps/web-ele/src/locales/langs/en-US/abp.json @@ -1,6 +1,7 @@ { "login": { "selectTenant": "Please select Tenant and ignore the non-tenant mode", + "inputCode": "Please enter the two-factor authentication code. If two-factor authentication has not been enabled for your account, please ignore this message.", "oidcTip": "Login......" }, "menu": { @@ -25,7 +26,8 @@ "code-genarate": "CodeGenarate", "code-entity": "Entity", "code-template-detail": "TemplateDetail", - "code-Preview": "Preview" + "code-Preview": "Preview", + "file": "FileManagement" }, "user": { "user": "User", @@ -39,6 +41,7 @@ "newPassword": "NewPassword", "confirmNewPassword": "ConfirmNewPassword", "changePassword": "ChangePassword", + "resetPassword": "ResetPassword", "status": "Status", "comfirmPassword": "ComfirmPassword", "comfirmDeleteUser": "Are you sure you want to delete the user", @@ -127,5 +130,11 @@ "featureManagement": "FeatureManagement", "connectionStringName": "ConnectionStringName", "connectionString": "ConnectionString" + }, + "file": { + "file": "File", + "name": "FileName", + "size": "Size", + "contentType": "ContentType" } } diff --git a/apps/web-antd/src/locales/langs/en-US/common.json b/apps/web-ele/src/locales/langs/en-US/common.json similarity index 92% rename from apps/web-antd/src/locales/langs/en-US/common.json rename to apps/web-ele/src/locales/langs/en-US/common.json index 54bc64e..4cb3128 100644 --- a/apps/web-antd/src/locales/langs/en-US/common.json +++ b/apps/web-ele/src/locales/langs/en-US/common.json @@ -33,7 +33,7 @@ "timeOut": "Request timed out!", "expandAll": "EexpandAll", "collapseAll": "CollapseAll", - "description": "description", - "comfirm": "Comfirm", - "valid": "Valid" + "pleaseSelect": "Please Select", + "upload": "Upload", + "download": "Download" } diff --git a/apps/web-ele/src/locales/langs/en-US/demos.json b/apps/web-ele/src/locales/langs/en-US/demos.json new file mode 100644 index 0000000..6eddebb --- /dev/null +++ b/apps/web-ele/src/locales/langs/en-US/demos.json @@ -0,0 +1,13 @@ +{ + "title": "Demos", + "elementPlus": "Element Plus", + "form": "Form", + "vben": { + "title": "Project", + "about": "About", + "document": "Document", + "antdv": "Ant Design Vue Version", + "naive-ui": "Naive UI Version", + "element-plus": "Element Plus Version" + } +} diff --git a/apps/web-antd/src/locales/langs/en-US/page.json b/apps/web-ele/src/locales/langs/en-US/page.json similarity index 100% rename from apps/web-antd/src/locales/langs/en-US/page.json rename to apps/web-ele/src/locales/langs/en-US/page.json diff --git a/apps/web-ele/src/locales/langs/en-US/textTemplate.json b/apps/web-ele/src/locales/langs/en-US/textTemplate.json new file mode 100644 index 0000000..1fd5d89 --- /dev/null +++ b/apps/web-ele/src/locales/langs/en-US/textTemplate.json @@ -0,0 +1,8 @@ +{ + "templateManagement": "TemplateManagement", + "templateList": "TemplateList", + "name": "Name", + "code": "Code", + "content": "Content", + "cultureName": "Language" +} diff --git a/apps/web-antd/src/locales/langs/zh-CN/abp.json b/apps/web-ele/src/locales/langs/zh-CN/abp.json similarity index 92% rename from apps/web-antd/src/locales/langs/zh-CN/abp.json rename to apps/web-ele/src/locales/langs/zh-CN/abp.json index b9d5d3b..ad20ae6 100644 --- a/apps/web-antd/src/locales/langs/zh-CN/abp.json +++ b/apps/web-ele/src/locales/langs/zh-CN/abp.json @@ -1,6 +1,7 @@ { "login": { "selectTenant": "请选择租户,非租户模式请忽略", + "inputCode": "请输入双因素验证码,如果账户没有开启双因素验证请忽略", "oidcTip": "登陆中......" }, "menu": { @@ -25,7 +26,8 @@ "code-genarate": "代码生成", "code-entity": "实体", "code-template-detail": "模板详情", - "code-Preview": "预览" + "code-Preview": "预览", + "file": "文件管理" }, "user": { "user": "用户", @@ -39,6 +41,7 @@ "newPassword": "新密码", "confirmNewPassword": "确认新密码", "changePassword": "修改密码", + "resetPassword": "重置密码", "status": "状态", "comfirmPassword": "确认密码", "comfirmDeleteUser": "确认删除用户", @@ -127,5 +130,11 @@ "featureManagement": "功能管理", "connectionStringName": "连接名称", "connectionString": "连接字符串" + }, + "file": { + "file": "文件", + "name": "文件名称", + "size": "文件大小", + "contentType": "文件类型" } } diff --git a/apps/web-antd/src/locales/langs/zh-CN/common.json b/apps/web-ele/src/locales/langs/zh-CN/common.json similarity index 93% rename from apps/web-antd/src/locales/langs/zh-CN/common.json rename to apps/web-ele/src/locales/langs/zh-CN/common.json index fa46172..e4b0bbd 100644 --- a/apps/web-antd/src/locales/langs/zh-CN/common.json +++ b/apps/web-ele/src/locales/langs/zh-CN/common.json @@ -33,7 +33,7 @@ "timeOut": "请求超时!", "expandAll": "展开全部", "collapseAll": "折叠全部", - "description": "描述", - "comfirm": "确认", - "valid": "验证" + "pleaseSelect": "请选择", + "upload": "上传", + "download": "下载" } diff --git a/apps/web-ele/src/locales/langs/zh-CN/demos.json b/apps/web-ele/src/locales/langs/zh-CN/demos.json new file mode 100644 index 0000000..ba6d6cc --- /dev/null +++ b/apps/web-ele/src/locales/langs/zh-CN/demos.json @@ -0,0 +1,13 @@ +{ + "title": "演示", + "elementPlus": "Element Plus", + "form": "表单演示", + "vben": { + "title": "项目", + "about": "关于", + "document": "文档", + "antdv": "Ant Design Vue 版本", + "naive-ui": "Naive UI 版本", + "element-plus": "Element Plus 版本" + } +} diff --git a/apps/web-antd/src/locales/langs/zh-CN/page.json b/apps/web-ele/src/locales/langs/zh-CN/page.json similarity index 100% rename from apps/web-antd/src/locales/langs/zh-CN/page.json rename to apps/web-ele/src/locales/langs/zh-CN/page.json diff --git a/apps/web-ele/src/locales/langs/zh-CN/textTemplate.json b/apps/web-ele/src/locales/langs/zh-CN/textTemplate.json new file mode 100644 index 0000000..75343e8 --- /dev/null +++ b/apps/web-ele/src/locales/langs/zh-CN/textTemplate.json @@ -0,0 +1,8 @@ +{ + "templateManagement": "模板管理", + "templateList": "模板列表", + "name": "名称", + "code": "编码", + "content": "内容", + "cultureName": "语言" +} diff --git a/apps/web-antd/src/main.ts b/apps/web-ele/src/main.ts similarity index 89% rename from apps/web-antd/src/main.ts rename to apps/web-ele/src/main.ts index 18a0409..625dbd6 100644 --- a/apps/web-antd/src/main.ts +++ b/apps/web-ele/src/main.ts @@ -1,12 +1,10 @@ import { initPreferences } from '@vben/preferences'; import { unmountGlobalLoading } from '@vben/utils'; -import { overridesPreferences } from './preferences'; // eslint-disable-next-line unused-imports/no-unused-imports import client from '#/api-client-config/index'; -// eslint-disable-next-line unused-imports/no-unused-imports -import clientblob from '#/api-client-config/index-blob'; +import { overridesPreferences } from './preferences'; /** * 应用初始化完成之后再进行页面加载渲染 */ diff --git a/apps/web-antd/src/preferences.ts b/apps/web-ele/src/preferences.ts similarity index 79% rename from apps/web-antd/src/preferences.ts rename to apps/web-ele/src/preferences.ts index 0f10284..92d11bc 100644 --- a/apps/web-antd/src/preferences.ts +++ b/apps/web-ele/src/preferences.ts @@ -13,11 +13,15 @@ export const overridesPreferences = defineOverridesPreferences({ enableCheckUpdates: false, // 检查更新的时间间隔,单位为分钟 checkUpdatesInterval: 1, + defaultAvatar: '/public/avatar-v1.webp', // 默认头像 }, theme: { mode: 'light', }, copyright: { - companyName: '集社', + companyName: 'Abp Vben5 Ele', + }, + logo: { + source: '/logo-v1.webp', // 网站图标 }, }); diff --git a/apps/web-antd/src/router/access.ts b/apps/web-ele/src/router/access.ts similarity index 87% rename from apps/web-antd/src/router/access.ts rename to apps/web-ele/src/router/access.ts index 3a48be2..2d07c89 100644 --- a/apps/web-antd/src/router/access.ts +++ b/apps/web-ele/src/router/access.ts @@ -6,7 +6,7 @@ import type { import { generateAccessible } from '@vben/access'; import { preferences } from '@vben/preferences'; -import { message } from 'ant-design-vue'; +import { ElMessage } from 'element-plus'; import { getAllMenusApi } from '#/api'; import { BasicLayout, IFrameView } from '#/layouts'; @@ -25,9 +25,9 @@ async function generateAccess(options: GenerateMenuAndRoutesOptions) { return await generateAccessible(preferences.app.accessMode, { ...options, fetchMenuListAsync: async () => { - message.loading({ - content: `${$t('common.loadingMenu')}...`, - duration: 1.5, + ElMessage({ + duration: 1500, + message: `${$t('common.loadingMenu')}...`, }); return await getAllMenusApi(); }, diff --git a/apps/web-antd/src/router/guard.ts b/apps/web-ele/src/router/guard.ts similarity index 92% rename from apps/web-antd/src/router/guard.ts rename to apps/web-ele/src/router/guard.ts index 503621d..f368894 100644 --- a/apps/web-antd/src/router/guard.ts +++ b/apps/web-ele/src/router/guard.ts @@ -1,6 +1,6 @@ import type { Router } from 'vue-router'; -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; +import { LOGIN_PATH } from '@vben/constants'; import { preferences } from '@vben/preferences'; import { useAccessStore, useUserStore } from '@vben/stores'; import { startProgress, stopProgress } from '@vben/utils'; @@ -56,7 +56,7 @@ function setupAccessGuard(router: Router) { return decodeURIComponent( (to.query?.redirect as string) || userStore.userInfo?.homePath || - DEFAULT_HOME_PATH, + preferences.app.defaultHomePath, ); } return true; @@ -75,7 +75,7 @@ function setupAccessGuard(router: Router) { path: LOGIN_PATH, // 如不需要,直接删除 query query: - to.fullPath === DEFAULT_HOME_PATH + to.fullPath === preferences.app.defaultHomePath ? {} : { redirect: encodeURIComponent(to.fullPath) }, // 携带当前跳转的页面,登录后重新跳转该页面 @@ -89,6 +89,7 @@ function setupAccessGuard(router: Router) { if (accessStore.isAccessChecked) { return true; } + // 生成路由表 // 当前登录用户拥有的角色标识列表 // const userInfo = userStore.userInfo || (await authStore.fetchUserInfo()); @@ -97,7 +98,6 @@ function setupAccessGuard(router: Router) { if (import.meta.env.VITE_REFRESH_ROLE && refreshCount > 0) { await authStore.getApplicationConfiguration(); } - const userRoles = accessStore.accessCodes ?? []; // 生成菜单和路由 @@ -113,8 +113,8 @@ function setupAccessGuard(router: Router) { accessStore.setAccessRoutes(accessibleRoutes); accessStore.setIsAccessChecked(true); const redirectPath = (from.query.redirect ?? - (to.path === DEFAULT_HOME_PATH - ? DEFAULT_HOME_PATH + (to.path === preferences.app.defaultHomePath + ? userStore.userInfo?.homePath || preferences.app.defaultHomePath : to.fullPath)) as string; return { diff --git a/apps/web-antd/src/router/index.ts b/apps/web-ele/src/router/index.ts similarity index 100% rename from apps/web-antd/src/router/index.ts rename to apps/web-ele/src/router/index.ts diff --git a/apps/web-antd/src/router/routes/core.ts b/apps/web-ele/src/router/routes/core.ts similarity index 79% rename from apps/web-antd/src/router/routes/core.ts rename to apps/web-ele/src/router/routes/core.ts index 7218da2..6e93c56 100644 --- a/apps/web-antd/src/router/routes/core.ts +++ b/apps/web-ele/src/router/routes/core.ts @@ -1,11 +1,12 @@ import type { RouteRecordRaw } from 'vue-router'; -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; +import { LOGIN_PATH } from '@vben/constants'; +import { preferences } from '@vben/preferences'; -import { AuthPageLayout, BasicLayout } from '#/layouts'; import { $t } from '#/locales'; -import Login from '#/views/_core/authentication/login.vue'; +const BasicLayout = () => import('#/layouts/basic.vue'); +const AuthPageLayout = () => import('#/layouts/auth.vue'); /** 全局404页面 */ const fallbackNotFoundRoute: RouteRecordRaw = { component: () => import('#/views/_core/fallback/not-found.vue'), @@ -34,7 +35,7 @@ const coreRoutes: RouteRecordRaw[] = [ }, name: 'Root', path: '/', - redirect: DEFAULT_HOME_PATH, + redirect: preferences.app.defaultHomePath, children: [], }, { @@ -50,7 +51,7 @@ const coreRoutes: RouteRecordRaw[] = [ { name: 'Login', path: 'login', - component: Login, + component: () => import('#/views/_core/authentication/login.vue'), meta: { title: $t('page.auth.login'), }, @@ -72,6 +73,14 @@ const coreRoutes: RouteRecordRaw[] = [ title: $t('page.auth.qrcodeLogin'), }, }, + { + name: 'OidcLogin', + path: 'oidc-login', + component: () => import('#/views/_core/authentication/oidc-login.vue'), + meta: { + title: $t('page.auth.thirdPartyLogin'), + }, + }, { name: 'ForgetPassword', path: 'forget-password', diff --git a/apps/web-antd/src/router/routes/index.ts b/apps/web-ele/src/router/routes/index.ts similarity index 100% rename from apps/web-antd/src/router/routes/index.ts rename to apps/web-ele/src/router/routes/index.ts diff --git a/apps/web-antd/src/router/routes/modules/dashboard.ts b/apps/web-ele/src/router/routes/modules/dashboard.ts similarity index 100% rename from apps/web-antd/src/router/routes/modules/dashboard.ts rename to apps/web-ele/src/router/routes/modules/dashboard.ts diff --git a/apps/web-ele/src/router/routes/modules/demos.ts b/apps/web-ele/src/router/routes/modules/demos.ts new file mode 100644 index 0000000..113f9e4 --- /dev/null +++ b/apps/web-ele/src/router/routes/modules/demos.ts @@ -0,0 +1,29 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + meta: { + icon: 'ic:baseline-view-in-ar', + keepAlive: true, + order: 1000, + title: $t('demos.title'), + }, + name: 'Demos', + path: '/demos', + children: [ + { + meta: { + title: $t('demos.elementPlus'), + icon: 'logos:element', + }, + name: 'NaiveDemos', + path: '/demos/element', + component: () => import('#/views/demos/element/index.vue'), + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-ele/src/router/routes/modules/file.ts b/apps/web-ele/src/router/routes/modules/file.ts new file mode 100644 index 0000000..308456c --- /dev/null +++ b/apps/web-ele/src/router/routes/modules/file.ts @@ -0,0 +1,32 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { BasicLayout } from '#/layouts'; +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + component: BasicLayout, + meta: { + icon: 'ant-design:folder-open-outlined', + order: 3, + title: $t('abp.menu.file'), + authority: ['FileManagement'], + }, + name: 'file', + path: '/file', + children: [ + { + name: 'abpFile', + path: 'page', + component: () => import('#/views/system/abpfiles/index.vue'), + meta: { + icon: 'ant-design:file-text-twotone', + title: $t('abp.menu.file'), + authority: ['FileManagement.File'], + }, + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-antd/src/router/routes/modules/system.ts b/apps/web-ele/src/router/routes/modules/system.ts similarity index 100% rename from apps/web-antd/src/router/routes/modules/system.ts rename to apps/web-ele/src/router/routes/modules/system.ts index b30e603..47abc4b 100644 --- a/apps/web-antd/src/router/routes/modules/system.ts +++ b/apps/web-ele/src/router/routes/modules/system.ts @@ -66,6 +66,16 @@ const routes: RouteRecordRaw[] = [ authority: ['AbpIdentity.FeatureManagement'], }, }, + { + name: 'DataDictionary', + path: 'data-dictionary', + component: () => import('#/views/system/abpdatadictionary/index.vue'), + meta: { + title: $t('abp.menu.dataDictionary'), + authority: ['AbpIdentity.DataDictionaryManagement'], + icon: 'ant-design:table-outlined', + }, + }, { name: 'AbpAuditLog', path: 'auditlog', @@ -106,16 +116,6 @@ const routes: RouteRecordRaw[] = [ icon: 'ant-design:font-size-outlined', }, }, - { - name: 'DataDictionary', - path: 'data-dictionary', - component: () => import('#/views/system/abpdatadictionary/index.vue'), - meta: { - title: $t('abp.menu.dataDictionary'), - authority: ['AbpIdentity.DataDictionaryManagement'], - icon: 'ant-design:table-outlined', - }, - }, { name: 'AbpNotification', path: 'notification', diff --git a/apps/web-antd/src/router/routes/modules/tenant.ts b/apps/web-ele/src/router/routes/modules/tenant.ts similarity index 100% rename from apps/web-antd/src/router/routes/modules/tenant.ts rename to apps/web-ele/src/router/routes/modules/tenant.ts diff --git a/apps/web-ele/src/router/routes/modules/textTemplate.ts b/apps/web-ele/src/router/routes/modules/textTemplate.ts new file mode 100644 index 0000000..bad0b65 --- /dev/null +++ b/apps/web-ele/src/router/routes/modules/textTemplate.ts @@ -0,0 +1,32 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { BasicLayout } from '#/layouts'; +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + component: BasicLayout, + meta: { + icon: 'ant-design:tool-outlined', + // order: 998, + title: $t('textTemplate.templateManagement'), + authority: ['AbpTemplateManagement'], + }, + name: 'TextTemplate', + path: '/TextTemplate', + children: [ + { + path: 'page', + name: 'TextTemplatePage', + component: () => import('#/views/textTemplate/index.vue'), + meta: { + icon: 'ant-design:file-markdown-filled', + title: $t('textTemplate.templateList'), + authority: ['AbpTemplateManagement.Template'], + }, + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-ele/src/router/routes/modules/vben.ts b/apps/web-ele/src/router/routes/modules/vben.ts new file mode 100644 index 0000000..4e7b854 --- /dev/null +++ b/apps/web-ele/src/router/routes/modules/vben.ts @@ -0,0 +1,91 @@ +import type { RouteRecordRaw } from 'vue-router'; + +import { BasicLayout, IFrameView } from '#/layouts'; +import { $t } from '#/locales'; + +const routes: RouteRecordRaw[] = [ + { + component: BasicLayout, + meta: { + badgeType: 'dot', + icon: 'ph:file-doc-light', + order: 9999, + title: $t('demos.vben.title'), + }, + name: 'VbenProject', + path: '/vben-admin', + children: [ + // { + // name: 'VbenAbout', + // path: '/vben-admin/about', + // component: () => import('#/views/_core/about/index.vue'), + // meta: { + // icon: 'lucide:copyright', + // title: $t('demos.vben.about'), + // }, + // }, + { + name: 'VbenDocument', + path: '/vben-admin/document', + component: IFrameView, + meta: { + icon: 'lucide:book-open-text', + link: 'https://doc.cncore.club/', + title: 'ABPPro文档', + }, + }, + { + name: 'VbenDocument', + path: '/vben-admin/document', + component: IFrameView, + meta: { + icon: 'lucide:book-open-text', + link: 'http://doc.china.cncore.club:81/', + title: 'ABPPro国内文档', + }, + }, + { + name: 'VbenDocument', + path: '/vben-admin/document', + component: IFrameView, + meta: { + icon: 'lucide:book-open-text', + link: 'https://abp.io/docs/latest/', + title: 'ABP官方文档', + }, + }, + { + name: 'VbenGithub', + path: '/vben-admin/github', + component: IFrameView, + meta: { + icon: 'mdi:github', + link: 'https://github.com/WangJunZzz/abp-vnext-pro', + title: 'Github', + }, + }, + { + name: 'VbenGithub', + path: '/vben-admin/github', + component: IFrameView, + meta: { + icon: 'ant-design:google-circle-filled', + link: 'https://gitee.com/WangJunZzz/abp-vnext-pro', + title: 'Gitee', + }, + }, + { + name: 'VbenGithub', + path: '/vben-admin/github', + component: IFrameView, + meta: { + icon: 'logos:element', + link: 'https://element-plus-docs.bklab.cn/zh-CN/', + title: 'Element Plus', + }, + }, + ], + }, +]; + +export default routes; diff --git a/apps/web-antd/src/store/auth.ts b/apps/web-ele/src/store/auth.ts similarity index 76% rename from apps/web-antd/src/store/auth.ts rename to apps/web-ele/src/store/auth.ts index 6216976..e71b1d8 100644 --- a/apps/web-antd/src/store/auth.ts +++ b/apps/web-ele/src/store/auth.ts @@ -1,22 +1,26 @@ import type { Recordable, UserInfo } from '@vben/types'; +import type { + ApplicationAuthConfigurationDto, + ApplicationConfigurationDto, +} from '#/api-client'; + import { ref } from 'vue'; import { useRouter } from 'vue-router'; -import { DEFAULT_HOME_PATH, LOGIN_PATH } from '@vben/constants'; +import { LOGIN_PATH } from '@vben/constants'; +import { preferences } from '@vben/preferences'; import { resetAllStores, useAccessStore, useUserStore } from '@vben/stores'; -import { message as Message, notification } from 'ant-design-vue'; +import { ElNotification, ElMessage as Message } from 'element-plus'; import { defineStore } from 'pinia'; +import { getUserInfoApi, logoutApi } from '#/api'; import { - type ApplicationAuthConfigurationDto, - type ApplicationConfigurationDto, getApiAbpApplicationConfiguration, - postApiAppAccountLogin, + postApiAppAccountLogin2Fa, postTenantsFind, } from '#/api-client'; -import { useSignalR } from '#/hooks/useSignalR'; import { $t } from '#/locales'; export const useAuthStore = defineStore('auth', () => { @@ -37,9 +41,7 @@ export const useAuthStore = defineStore('auth', () => { ) { // 异步处理用户登录操作并获取 accessToken let userInfo: null | UserInfo = null; - try { - loginLoading.value = true; // 判断是否租户登录 if (params.tenant) { const tenantResult = await postTenantsFind({ @@ -47,18 +49,17 @@ export const useAuthStore = defineStore('auth', () => { name: params.tenant, }, }); - if (tenantResult.data?.success) { userStore.setTenantInfo(tenantResult.data as any); } else { - Message.error(`${params.tenant}$t('abp.tenant.notExist')`); userStore.setTenantInfo(null); - delete params.tenant; + Message.error($t('abp.tenant.notExist')); return; } } - const { data = {} } = await postApiAppAccountLogin({ + loginLoading.value = true; + const { data = {} } = await postApiAppAccountLogin2Fa({ body: { ...params, }, @@ -66,22 +67,25 @@ export const useAuthStore = defineStore('auth', () => { // 如果成功获取到 accessToken if (data.token) { accessStore.setAccessToken(data.token); + accessStore.setRefreshToken(data.refreshToken as string); userInfo = data as any; userStore.setUserInfo(userInfo as any); await getApplicationConfiguration(); + if (accessStore.loginExpired) { accessStore.setLoginExpired(false); } else { onSuccess ? await onSuccess?.() - : await router.push(DEFAULT_HOME_PATH); + : await router.push( + userInfo?.homePath || preferences.app.defaultHomePath, + ); } - if (userInfo?.userName) { - notification.success({ - description: `${$t('authentication.loginSuccessDesc')}:${userInfo?.userName}`, - duration: 3, - message: $t('authentication.loginSuccess'), + ElNotification({ + message: `${$t('authentication.loginSuccessDesc')}:${userInfo?.userName}`, + title: $t('authentication.loginSuccess'), + type: 'success', }); } } @@ -99,9 +103,7 @@ export const useAuthStore = defineStore('auth', () => { async function logout(redirect: boolean = true) { try { - // await logoutApi(); - const { closeConnect } = useSignalR(); - closeConnect(); + await logoutApi(); } catch { // 不做任何处理 } @@ -120,16 +122,15 @@ export const useAuthStore = defineStore('auth', () => { } async function fetchUserInfo() { - const userInfo: null | UserInfo = null; - // userInfo = await getUserInfoApi(); - // userStore.setUserInfo(userInfo); + let userInfo: null | UserInfo = null; + userInfo = await getUserInfoApi(); + userStore.setUserInfo(userInfo); return userInfo; } function $reset() { loginLoading.value = false; } - async function getApplicationConfiguration() { const { data: authData } = await getApiAbpApplicationConfiguration({ query: { IncludeLocalizationResources: false }, diff --git a/apps/web-antd/src/store/index.ts b/apps/web-ele/src/store/index.ts similarity index 100% rename from apps/web-antd/src/store/index.ts rename to apps/web-ele/src/store/index.ts diff --git a/apps/web-antd/src/views/_core/README.md b/apps/web-ele/src/views/_core/README.md similarity index 100% rename from apps/web-antd/src/views/_core/README.md rename to apps/web-ele/src/views/_core/README.md diff --git a/apps/web-antd/src/views/_core/about/index.vue b/apps/web-ele/src/views/_core/about/index.vue similarity index 100% rename from apps/web-antd/src/views/_core/about/index.vue rename to apps/web-ele/src/views/_core/about/index.vue diff --git a/apps/web-antd/src/views/_core/authentication/code-login.vue b/apps/web-ele/src/views/_core/authentication/code-login.vue similarity index 100% rename from apps/web-antd/src/views/_core/authentication/code-login.vue rename to apps/web-ele/src/views/_core/authentication/code-login.vue diff --git a/apps/web-antd/src/views/_core/authentication/forget-password.vue b/apps/web-ele/src/views/_core/authentication/forget-password.vue similarity index 100% rename from apps/web-antd/src/views/_core/authentication/forget-password.vue rename to apps/web-ele/src/views/_core/authentication/forget-password.vue diff --git a/apps/web-antd/src/views/_core/authentication/login.vue b/apps/web-ele/src/views/_core/authentication/login.vue similarity index 85% rename from apps/web-antd/src/views/_core/authentication/login.vue rename to apps/web-ele/src/views/_core/authentication/login.vue index 2e228ef..938482c 100644 --- a/apps/web-antd/src/views/_core/authentication/login.vue +++ b/apps/web-ele/src/views/_core/authentication/login.vue @@ -6,7 +6,7 @@ import { computed, onBeforeMount, ref } from 'vue'; import { AuthenticationLogin, z } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { getApiAbpApplicationConfiguration } from '#/api-client/index'; +import { getApiAppAbpProBasicApplicationConfiguration } from '#/api-client/index'; import { useAuthStore } from '#/store'; defineOptions({ name: 'Login' }); @@ -15,7 +15,6 @@ const authStore = useAuthStore(); const showThirdPartyLogin = ref(false); const thirdPartLoginList = ref([]); const showTenant = ref(false); - const formSchema = computed((): VbenFormSchema[] => { return [ { @@ -31,6 +30,7 @@ const formSchema = computed((): VbenFormSchema[] => { componentProps: { placeholder: $t('authentication.usernameTip'), }, + fieldName: 'name', label: $t('authentication.username'), rules: z @@ -38,6 +38,7 @@ const formSchema = computed((): VbenFormSchema[] => { .min(1, { message: $t('authentication.usernameTip') }) .default('admin'), }, + { component: 'VbenInputPassword', componentProps: { @@ -50,16 +51,23 @@ const formSchema = computed((): VbenFormSchema[] => { .min(1, { message: $t('authentication.passwordTip') }) .default('1q2w3E*'), }, + { + component: 'VbenInput', + componentProps: { + placeholder: $t('abp.login.inputCode'), + }, + fieldName: 'code', + label: $t('abp.user.code'), + }, ]; }); onBeforeMount(async () => { - const result = await getApiAbpApplicationConfiguration(); + const result = await getApiAppAbpProBasicApplicationConfiguration(); showThirdPartyLogin.value = result.data?.oidcConfiguration ?.enabled as boolean; thirdPartLoginList.value = result.data?.oidcConfiguration ?.oidcConfiguration as []; - // 是否启用多租户 showTenant.value = result.data?.multiTenancy?.isEnabled ?? false; }); diff --git a/apps/web-ele/src/views/_core/authentication/oidc-login.vue b/apps/web-ele/src/views/_core/authentication/oidc-login.vue new file mode 100644 index 0000000..4a23936 --- /dev/null +++ b/apps/web-ele/src/views/_core/authentication/oidc-login.vue @@ -0,0 +1,55 @@ + + + diff --git a/apps/web-antd/src/views/_core/authentication/qrcode-login.vue b/apps/web-ele/src/views/_core/authentication/qrcode-login.vue similarity index 100% rename from apps/web-antd/src/views/_core/authentication/qrcode-login.vue rename to apps/web-ele/src/views/_core/authentication/qrcode-login.vue diff --git a/apps/web-antd/src/views/_core/authentication/register.vue b/apps/web-ele/src/views/_core/authentication/register.vue similarity index 100% rename from apps/web-antd/src/views/_core/authentication/register.vue rename to apps/web-ele/src/views/_core/authentication/register.vue diff --git a/apps/web-antd/src/views/_core/fallback/coming-soon.vue b/apps/web-ele/src/views/_core/fallback/coming-soon.vue similarity index 100% rename from apps/web-antd/src/views/_core/fallback/coming-soon.vue rename to apps/web-ele/src/views/_core/fallback/coming-soon.vue diff --git a/apps/web-antd/src/views/_core/fallback/forbidden.vue b/apps/web-ele/src/views/_core/fallback/forbidden.vue similarity index 100% rename from apps/web-antd/src/views/_core/fallback/forbidden.vue rename to apps/web-ele/src/views/_core/fallback/forbidden.vue diff --git a/apps/web-antd/src/views/_core/fallback/internal-error.vue b/apps/web-ele/src/views/_core/fallback/internal-error.vue similarity index 100% rename from apps/web-antd/src/views/_core/fallback/internal-error.vue rename to apps/web-ele/src/views/_core/fallback/internal-error.vue diff --git a/apps/web-antd/src/views/_core/fallback/not-found.vue b/apps/web-ele/src/views/_core/fallback/not-found.vue similarity index 100% rename from apps/web-antd/src/views/_core/fallback/not-found.vue rename to apps/web-ele/src/views/_core/fallback/not-found.vue diff --git a/apps/web-antd/src/views/_core/fallback/offline.vue b/apps/web-ele/src/views/_core/fallback/offline.vue similarity index 100% rename from apps/web-antd/src/views/_core/fallback/offline.vue rename to apps/web-ele/src/views/_core/fallback/offline.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-ele/src/views/dashboard/analytics/analytics-trends.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue rename to apps/web-ele/src/views/dashboard/analytics/analytics-trends.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-visits-data.vue b/apps/web-ele/src/views/dashboard/analytics/analytics-visits-data.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/analytics-visits-data.vue rename to apps/web-ele/src/views/dashboard/analytics/analytics-visits-data.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-visits-sales.vue b/apps/web-ele/src/views/dashboard/analytics/analytics-visits-sales.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/analytics-visits-sales.vue rename to apps/web-ele/src/views/dashboard/analytics/analytics-visits-sales.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue b/apps/web-ele/src/views/dashboard/analytics/analytics-visits-source.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/analytics-visits-source.vue rename to apps/web-ele/src/views/dashboard/analytics/analytics-visits-source.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-visits.vue b/apps/web-ele/src/views/dashboard/analytics/analytics-visits.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/analytics-visits.vue rename to apps/web-ele/src/views/dashboard/analytics/analytics-visits.vue diff --git a/apps/web-antd/src/views/dashboard/analytics/index.vue b/apps/web-ele/src/views/dashboard/analytics/index.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/analytics/index.vue rename to apps/web-ele/src/views/dashboard/analytics/index.vue diff --git a/apps/web-antd/src/views/dashboard/workspace/index.vue b/apps/web-ele/src/views/dashboard/workspace/index.vue similarity index 100% rename from apps/web-antd/src/views/dashboard/workspace/index.vue rename to apps/web-ele/src/views/dashboard/workspace/index.vue diff --git a/apps/web-ele/src/views/demos/element/index.vue b/apps/web-ele/src/views/demos/element/index.vue new file mode 100644 index 0000000..0a7012d --- /dev/null +++ b/apps/web-ele/src/views/demos/element/index.vue @@ -0,0 +1,117 @@ + + + diff --git a/apps/web-ele/src/views/demos/form/basic.vue b/apps/web-ele/src/views/demos/form/basic.vue new file mode 100644 index 0000000..0ecab58 --- /dev/null +++ b/apps/web-ele/src/views/demos/form/basic.vue @@ -0,0 +1,191 @@ + + diff --git a/apps/web-antd/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue b/apps/web-ele/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue similarity index 91% rename from apps/web-antd/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue rename to apps/web-ele/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue index 1c9b055..6e10dc6 100644 --- a/apps/web-antd/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue +++ b/apps/web-ele/src/views/system/abpdatadictionary/DataDictionaryDetailModal.vue @@ -1,8 +1,6 @@ diff --git a/apps/web-ele/src/views/system/abpfiles/AddModal.vue b/apps/web-ele/src/views/system/abpfiles/AddModal.vue new file mode 100644 index 0000000..3f27ad9 --- /dev/null +++ b/apps/web-ele/src/views/system/abpfiles/AddModal.vue @@ -0,0 +1,39 @@ + + diff --git a/apps/web-ele/src/views/system/abpfiles/index.vue b/apps/web-ele/src/views/system/abpfiles/index.vue new file mode 100644 index 0000000..4a38edf --- /dev/null +++ b/apps/web-ele/src/views/system/abpfiles/index.vue @@ -0,0 +1,150 @@ + + + + diff --git a/apps/web-ele/src/views/system/abpfiles/schema.ts b/apps/web-ele/src/views/system/abpfiles/schema.ts new file mode 100644 index 0000000..7efcd54 --- /dev/null +++ b/apps/web-ele/src/views/system/abpfiles/schema.ts @@ -0,0 +1,99 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { computed } from 'vue'; + +import { useUserStore } from '@vben/stores'; + +import dayjs from 'dayjs'; + +import { postFilesDelete } from '#/api-client/index'; +import { $t } from '#/locales'; + +const userStore = useUserStore(); +export const querySchema = computed(() => [ + { + component: 'DatePicker', + fieldName: 'time', + label: $t('abp.log.executionTime'), + componentProps: { + type: 'daterange', + 'range-separator': '至', + 'value-format': 'YYYY-MM-DD', + }, + defaultValue: [ + dayjs().subtract(7, 'day').format('YYYY-MM-DD'), + dayjs().format('YYYY-MM-DD'), + ], + }, + { + component: 'Input', + fieldName: 'fileName', + label: $t('abp.file.name'), + }, +]); + +export const tableSchema: any = computed((): VxeGridProps['columns'] => [ + { title: $t('common.seq'), type: 'seq', width: 50 }, + { + title: $t('abp.file.name'), + minWidth: '150', + field: 'fileName', + }, + { + title: $t('abp.file.size'), + minWidth: '150', + field: 'beautifySize', + }, + { + title: $t('abp.file.contentType'), + minWidth: '150', + field: 'contentType', + }, + { + field: 'creationTime', + title: $t('common.createTime'), + minWidth: '150', + formatter: ({ cellValue }) => { + return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); + }, + }, + { + title: $t('common.action'), + field: 'action', + fixed: 'right', + width: '150', + slots: { default: 'action' }, + }, +]); + +export const addFormSchema = computed(() => [ + { + component: 'Upload', + fieldName: 'files', + label: $t('abp.file.file'), + componentProps: () => { + return { + listType: 'picture-card', + autoUpload: true, + multiple: true, + name: 'files', + action: `${import.meta.env.VITE_APP_API_ADDRESS}/Files/Upload?access_token=${ + userStore.userInfo?.token + }`, + onPreview: () => {}, + onRemove: async (file: any) => { + await postFilesDelete({ + body: { + id: file.response[0].id, + }, + }); + }, + }; + }, + renderComponentContent: () => { + return { + default: () => 'Upload', + }; + }, + }, +]); diff --git a/apps/web-antd/src/views/system/abplanguage/AddLanguageTextModal.vue b/apps/web-ele/src/views/system/abplanguage/AddLanguageTextModal.vue similarity index 95% rename from apps/web-antd/src/views/system/abplanguage/AddLanguageTextModal.vue rename to apps/web-ele/src/views/system/abplanguage/AddLanguageTextModal.vue index 98e47b4..db69340 100644 --- a/apps/web-antd/src/views/system/abplanguage/AddLanguageTextModal.vue +++ b/apps/web-ele/src/views/system/abplanguage/AddLanguageTextModal.vue @@ -3,7 +3,7 @@ import { onMounted } from 'vue'; import { useVbenModal } from '@vben/common-ui'; -import { message } from 'ant-design-vue'; +import { ElMessage as message } from 'element-plus'; import { useVbenForm } from '#/adapter/form'; import { postLanguageTextsAllResource } from '#/api-client'; @@ -25,7 +25,7 @@ const [Form, formApi] = useVbenForm({ // 垂直布局,label和input在不同行,值为vertical // 水平布局,label和input在同一行 layout: 'horizontal', - schema: addFormSchema, + schema: addFormSchema.value, wrapperClass: 'grid-cols-1', }); const [Modal, modalApi] = useVbenModal({ diff --git a/apps/web-antd/src/views/system/abplanguage/EditLanguageTextModal.vue b/apps/web-ele/src/views/system/abplanguage/EditLanguageTextModal.vue similarity index 94% rename from apps/web-antd/src/views/system/abplanguage/EditLanguageTextModal.vue rename to apps/web-ele/src/views/system/abplanguage/EditLanguageTextModal.vue index 047a55c..25683d4 100644 --- a/apps/web-antd/src/views/system/abplanguage/EditLanguageTextModal.vue +++ b/apps/web-ele/src/views/system/abplanguage/EditLanguageTextModal.vue @@ -3,7 +3,7 @@ import { ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; -import { message } from 'ant-design-vue'; +import { ElMessage as message } from 'element-plus'; import { useVbenForm } from '#/adapter/form'; import { postLanguageTextsUpdate } from '#/api-client/index'; @@ -25,7 +25,7 @@ const [Form, formApi] = useVbenForm({ // 垂直布局,label和input在不同行,值为vertical // 水平布局,label和input在同一行 layout: 'horizontal', - schema: editFormSchema, + schema: editFormSchema.value, wrapperClass: 'grid-cols-1', }); const [Modal, modalApi] = useVbenModal({ diff --git a/apps/web-antd/src/views/system/abplanguage/language.vue b/apps/web-ele/src/views/system/abplanguage/language.vue similarity index 76% rename from apps/web-antd/src/views/system/abplanguage/language.vue rename to apps/web-ele/src/views/system/abplanguage/language.vue index 0da91c7..5b32e38 100644 --- a/apps/web-antd/src/views/system/abplanguage/language.vue +++ b/apps/web-ele/src/views/system/abplanguage/language.vue @@ -2,12 +2,10 @@ import type { VbenFormProps } from '#/adapter/form'; import type { VxeGridProps } from '#/adapter/vxe-table'; -import { h } from 'vue'; - import { Page } from '@vben/common-ui'; import { $t } from '@vben/locales'; -import { Tag } from 'ant-design-vue'; +import { ElTag as Tag } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { postLanguagesPage } from '#/api-client'; @@ -19,11 +17,11 @@ defineOptions({ }); const formOptions: VbenFormProps = { - schema: languageQuerySchema, + schema: languageQuerySchema.value, }; const gridOptions: VxeGridProps = { - columns: languageTableSchema, + columns: languageTableSchema.value, toolbarConfig: { custom: true, }, @@ -56,15 +54,12 @@ const [Grid] = useVbenVxeGrid({ formOptions, gridOptions }); diff --git a/apps/web-antd/src/views/system/abplanguage/languagetext.vue b/apps/web-ele/src/views/system/abplanguage/languagetext.vue similarity index 95% rename from apps/web-antd/src/views/system/abplanguage/languagetext.vue rename to apps/web-ele/src/views/system/abplanguage/languagetext.vue index 6321861..d4889e4 100644 --- a/apps/web-antd/src/views/system/abplanguage/languagetext.vue +++ b/apps/web-ele/src/views/system/abplanguage/languagetext.vue @@ -6,7 +6,7 @@ import { h, onMounted } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; -import { Tag } from 'ant-design-vue'; +import { ElTag as Tag } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { @@ -26,12 +26,12 @@ defineOptions({ }); const formOptions: VbenFormProps = { - schema: languageTextQuerySchema, + schema: languageTextQuerySchema.value, wrapperClass: 'grid-cols-4', }; const gridOptions: VxeGridProps = { - columns: languageTextTableSchema, + columns: languageTextTableSchema.value, toolbarConfig: { custom: true, }, @@ -120,7 +120,7 @@ const handleEdit = async (row: Record) => { :actions="[ { label: $t('common.edit'), - type: 'link', + link: true, size: 'small', onClick: handleEdit.bind(null, row), auth: ['AbpIdentity.LanguageTexts.Update'], diff --git a/apps/web-antd/src/views/system/abplanguage/schema.ts b/apps/web-ele/src/views/system/abplanguage/schema.ts similarity index 61% rename from apps/web-antd/src/views/system/abplanguage/schema.ts rename to apps/web-ele/src/views/system/abplanguage/schema.ts index 58b6a3b..749f0b6 100644 --- a/apps/web-antd/src/views/system/abplanguage/schema.ts +++ b/apps/web-ele/src/views/system/abplanguage/schema.ts @@ -1,31 +1,41 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { computed } from 'vue'; + import { $t } from '@vben/locales'; -export const languageQuerySchema: any = [ +export const languageQuerySchema = computed(() => [ { component: 'Input', fieldName: 'filter', label: $t('common.keyword'), }, -]; +]); -export const languageTableSchema: any = [ - { title: $t('common.seq'), type: 'seq', width: 50 }, - { field: 'cultureName', title: $t('abp.language.language'), minWidth: '150' }, - { - field: 'displayName', - title: $t('abp.language.showLanguage'), - minWidth: '150', - }, - // { field: 'flagIcon', title: '图标', minWidth: '150' }, - { - field: 'isEnabled', - title: $t('common.isEnable'), - minWidth: '150', - slots: { default: 'isEnabled' }, - }, -]; +export const languageTableSchema: any = computed( + (): VxeGridProps['columns'] => [ + { title: $t('common.seq'), type: 'seq', width: 50 }, + { + field: 'cultureName', + title: $t('abp.language.language'), + minWidth: '150', + }, + { + field: 'displayName', + title: $t('abp.language.showLanguage'), + minWidth: '150', + }, + // { field: 'flagIcon', title: '图标', minWidth: '150' }, + { + field: 'isEnabled', + title: $t('common.isEnable'), + minWidth: '150', + slots: { default: 'isEnabled' }, + }, + ], +); -export const languageTextQuerySchema: any = [ +export const languageTextQuerySchema = computed(() => [ { component: 'VbenSelect', fieldName: 'cultureName', @@ -57,27 +67,29 @@ export const languageTextQuerySchema: any = [ fieldName: 'filter', label: $t('common.keyword'), }, -]; +]); -export const languageTextTableSchema: any = [ - { title: $t('common.seq'), type: 'seq', width: 50 }, - { field: 'name', title: $t('abp.language.name'), minWidth: '150' }, - { field: 'value', title: $t('abp.language.value'), minWidth: '150' }, - { - field: 'resourceName', - title: $t('abp.language.resourceName'), - minWidth: '150', - }, - { - title: $t('common.action'), - field: 'action', - fixed: 'right', - width: '150', - slots: { default: 'action' }, - }, -]; +export const languageTextTableSchema: any = computed( + (): VxeGridProps['columns'] => [ + { title: $t('common.seq'), type: 'seq', width: 50 }, + { field: 'name', title: $t('abp.language.name'), minWidth: '150' }, + { field: 'value', title: $t('abp.language.value'), minWidth: '150' }, + { + field: 'resourceName', + title: $t('abp.language.resourceName'), + minWidth: '150', + }, + { + title: $t('common.action'), + field: 'action', + fixed: 'right', + width: '150', + slots: { default: 'action' }, + }, + ], +); -export const addFormSchema: any = [ +export const addFormSchema = computed(() => [ { component: 'VbenSelect', fieldName: 'cultureName', @@ -116,9 +128,9 @@ export const addFormSchema: any = [ component: 'Input', componentProps: {}, }, -]; +]); -export const editFormSchema: any = [ +export const editFormSchema = computed(() => [ { component: 'VbenSelect', fieldName: 'cultureName', @@ -160,4 +172,4 @@ export const editFormSchema: any = [ component: 'Input', componentProps: {}, }, -]; +]); diff --git a/apps/web-antd/src/views/system/abplog/audit.vue b/apps/web-ele/src/views/system/abplog/audit.vue similarity index 72% rename from apps/web-antd/src/views/system/abplog/audit.vue rename to apps/web-ele/src/views/system/abplog/audit.vue index ac2e8b9..9c87ea9 100644 --- a/apps/web-antd/src/views/system/abplog/audit.vue +++ b/apps/web-ele/src/views/system/abplog/audit.vue @@ -1,14 +1,19 @@ - - + + diff --git a/apps/web-antd/src/views/system/abplog/login.vue b/apps/web-ele/src/views/system/abplog/login.vue similarity index 95% rename from apps/web-antd/src/views/system/abplog/login.vue rename to apps/web-ele/src/views/system/abplog/login.vue index ce98ff8..3269c6e 100644 --- a/apps/web-antd/src/views/system/abplog/login.vue +++ b/apps/web-ele/src/views/system/abplog/login.vue @@ -14,12 +14,12 @@ defineOptions({ }); const formOptions: VbenFormProps = { - schema: logQuerySchema, + schema: logQuerySchema.value, wrapperClass: 'grid-cols-3', }; const gridOptions: VxeGridProps = { - columns: logTableSchema, + columns: logTableSchema.value, toolbarConfig: { custom: true, }, diff --git a/apps/web-ele/src/views/system/abplog/schema.ts b/apps/web-ele/src/views/system/abplog/schema.ts new file mode 100644 index 0000000..e996812 --- /dev/null +++ b/apps/web-ele/src/views/system/abplog/schema.ts @@ -0,0 +1,126 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { computed } from 'vue'; + +import dayjs from 'dayjs'; + +import { $t } from '#/locales'; + +export const logQuerySchema = computed(() => [ + { + component: 'DatePicker', + fieldName: 'time', + label: $t('abp.log.loginTime'), + componentProps: { + type: 'datetimerange', // 添加这个属性来启用日期范围选择 + startPlaceholder: '开始日期', // 添加占位符 + endPlaceholder: '结束日期', // 添加占位符 + valueFormat: 'YYYY-MM-DD', + // 'value-format': 'YYYY-MM-DD', + }, + // defaultValue: [ + // dayjs().subtract(0, 'day').format('YYYY-MM-DD'), + // dayjs().format('YYYY-MM-DD'), + // ], + }, + { + component: 'Input', + fieldName: 'userName', + label: $t('abp.log.userName'), + }, + { + component: 'Input', + fieldName: 'correlationId', + label: 'CorrelationId', + }, +]); + +export const logTableSchema: any = computed((): VxeGridProps['columns'] => [ + { title: $t('common.seq'), type: 'seq', width: 50 }, + { + field: 'applicationName', + title: $t('abp.log.applicationName'), + minWidth: '150', + }, + { field: 'identity', title: $t('abp.log.loginMode'), minWidth: '150' }, + { field: 'action', title: $t('abp.log.loginUrl'), minWidth: '150' }, + { field: 'userName', title: $t('abp.log.userName'), minWidth: '150' }, + { field: 'correlationId', title: 'CorrelationId', minWidth: '150' }, + { field: 'clientIpAddress', title: $t('abp.log.clientIp'), minWidth: '150' }, + { + field: 'creationTime', + title: $t('common.createTime'), + minWidth: '150', + formatter: ({ cellValue }) => { + return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); + }, + }, +]); + +export const auditLogQuerySchema = computed(() => [ + { + component: 'DatePicker', + fieldName: 'time', + label: $t('abp.log.executionTime'), + componentProps: { + type: 'daterange', + 'range-separator': '至', + 'value-format': 'YYYY-MM-DD', + }, + defaultValue: [ + dayjs().subtract(0, 'day').format('YYYY-MM-DD'), + dayjs().format('YYYY-MM-DD'), + ], + }, + { + component: 'Input', + fieldName: 'userName', + label: $t('abp.log.userName'), + }, + { + component: 'Input', + fieldName: 'correlationId', + label: 'CorrelationId', + }, + { + component: 'Input', + fieldName: 'url', + label: 'Url', + }, +]); + +export const auditLogTableSchema: any = computed( + (): VxeGridProps['columns'] => [ + { title: $t('common.seq'), type: 'seq', width: 50 }, + { field: 'url', title: 'Url', minWidth: '150' }, + { field: 'tenantName', title: $t('abp.log.tenant'), minWidth: '150' }, + { field: 'userName', title: $t('abp.log.userName'), minWidth: '150' }, + { + field: 'executionTime', + title: $t('abp.log.executionTime'), + minWidth: '150', + formatter: ({ cellValue }) => { + return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); + }, + }, + { + field: 'executionDuration', + title: $t('abp.log.responseTime'), + minWidth: '150', + }, + { + field: 'clientIpAddress', + title: $t('abp.log.clientIp'), + minWidth: '150', + }, + { field: 'correlationId', title: 'CorrelationId', minWidth: '150' }, + { field: 'exceptions', title: $t('abp.log.exception'), minWidth: '150' }, + { + field: 'action', + fixed: 'right', + slots: { default: 'action' }, + title: '操作', + width: 120, + }, + ], +); diff --git a/apps/web-antd/src/views/system/abpnotification/message.vue b/apps/web-ele/src/views/system/abpnotification/message.vue similarity index 79% rename from apps/web-antd/src/views/system/abpnotification/message.vue rename to apps/web-ele/src/views/system/abpnotification/message.vue index 95df5c2..a33fa69 100644 --- a/apps/web-antd/src/views/system/abpnotification/message.vue +++ b/apps/web-ele/src/views/system/abpnotification/message.vue @@ -6,11 +6,17 @@ import { ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; -import { message as Message, Modal, Tag } from 'ant-design-vue'; +// import { Button, message as Message, Modal, Space, Tag } from 'ant-design-vue'; +import { + ElMessage as Message, + ElMessageBox as Modal, + ElTag as Tag, +} from 'element-plus'; import { useVbenForm } from '#/adapter/form'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { + postNotificationDelete, postNotificationNotificationPage, postNotificationRead, postNotificationSendBroadCastErrorMessage, @@ -36,13 +42,13 @@ defineOptions({ }); const formOptions: VbenFormProps = { - schema: queryMessageSchema, + schema: queryMessageSchema.value, wrapperClass: 'grid-cols-5', }; const gridOptions: VxeGridProps = { checkboxConfig: {}, - columns: tableMessageSchema, + columns: tableMessageSchema.value, height: 'auto', keepSource: true, pagerConfig: {}, @@ -76,6 +82,7 @@ const [AddModal, addModalApi] = useVbenModal({ onConfirm: submit, onBeforeClose: () => { editRow.value = {}; + return true; }, }); const [AddBroadCastModal, addBroadCastModalApi] = useVbenModal({ @@ -83,6 +90,7 @@ const [AddBroadCastModal, addBroadCastModalApi] = useVbenModal({ onConfirm: broadCastSubmit, onBeforeClose: () => { editRow.value = {}; + return true; }, }); const [AddForm, addFormApi] = useVbenForm({ @@ -96,7 +104,7 @@ const [AddForm, addFormApi] = useVbenForm({ }, }, layout: 'horizontal', - schema: addMessageFormSchema, + schema: addMessageFormSchema.value, showCollapseButton: false, showDefaultActions: false, wrapperClass: 'grid-cols-1', @@ -112,7 +120,7 @@ const [AddBroadCastForm, addBroadCastFormApi] = useVbenForm({ }, }, layout: 'horizontal', - schema: addFormSchema, + schema: addFormSchema.value, showCollapseButton: false, showDefaultActions: false, wrapperClass: 'grid-cols-1', @@ -200,14 +208,19 @@ const onRead = (row: any) => { // Message.info('该消息已读,不需要重复设置'); return; } - Modal.confirm({ - title: $t('abp.message.confirmRead'), - onOk: async () => { - await postNotificationRead({ body: { id: row.id } }); - gridApi.reload(); - Message.success($t('common.success')); + Modal.confirm($t('abp.message.confirmRead')).then(async () => { + await postNotificationRead({ body: { id: row.id } }); + gridApi.reload(); + Message.success($t('common.success')); + }); +}; +const handleDelete = async (row: any) => { + await postNotificationDelete({ + body: { + id: row.id, }, }); + gridApi.reload(); }; @@ -227,19 +240,19 @@ const onRead = (row: any) => { @@ -260,7 +285,10 @@ const onRead = (row: any) => { - + diff --git a/apps/web-antd/src/views/system/abpnotification/notification.vue b/apps/web-ele/src/views/system/abpnotification/notification.vue similarity index 88% rename from apps/web-antd/src/views/system/abpnotification/notification.vue rename to apps/web-ele/src/views/system/abpnotification/notification.vue index 698e08e..577bf49 100644 --- a/apps/web-antd/src/views/system/abpnotification/notification.vue +++ b/apps/web-ele/src/views/system/abpnotification/notification.vue @@ -6,7 +6,13 @@ import { ref } from 'vue'; import { Page, useVbenModal } from '@vben/common-ui'; -import { Button, message as Message, Space, Tag } from 'ant-design-vue'; +// import { Button, message as Message, Space, Tag } from 'ant-design-vue'; +import { + ElButton as Button, + ElMessage as Message, + ElSpace as Space, + ElTag as Tag, +} from 'element-plus'; import { useVbenForm } from '#/adapter/form'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; @@ -25,13 +31,13 @@ defineOptions({ }); const formOptions: VbenFormProps = { - schema: querySchema, + schema: querySchema.value, wrapperClass: 'grid-cols-4', }; const gridOptions: VxeGridProps = { checkboxConfig: {}, - columns: tableSchema, + columns: tableSchema.value, height: 'auto', keepSource: true, pagerConfig: {}, @@ -79,7 +85,7 @@ const [AddForm, addFormApi] = useVbenForm({ }, }, layout: 'horizontal', - schema: addFormSchema, + schema: addFormSchema.value, showCollapseButton: false, showDefaultActions: false, wrapperClass: 'grid-cols-1', @@ -136,13 +142,13 @@ const openAddModal = async () => { diff --git a/apps/web-antd/src/views/system/abpnotification/schema.ts b/apps/web-ele/src/views/system/abpnotification/schema.ts similarity index 87% rename from apps/web-antd/src/views/system/abpnotification/schema.ts rename to apps/web-ele/src/views/system/abpnotification/schema.ts index 0597680..775e75b 100644 --- a/apps/web-antd/src/views/system/abpnotification/schema.ts +++ b/apps/web-ele/src/views/system/abpnotification/schema.ts @@ -1,10 +1,14 @@ +import type { VxeGridProps } from '#/adapter/vxe-table'; + +import { computed } from 'vue'; + import { z } from '@vben/common-ui'; import dayjs from 'dayjs'; import { $t } from '#/locales'; -export const querySchema: any = [ +export const querySchema = computed(() => [ { component: 'Input', fieldName: 'messageType', @@ -47,8 +51,8 @@ export const querySchema: any = [ ], }, }, -]; -export const tableSchema: any = [ +]); +export const tableSchema: any = computed((): VxeGridProps['columns'] => [ { title: $t('common.seq'), type: 'seq', width: 50 }, { field: 'title', title: $t('abp.message.title'), minWidth: '150' }, { field: 'content', title: $t('abp.message.content'), minWidth: '150' }, @@ -67,9 +71,9 @@ export const tableSchema: any = [ return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss'); }, }, -]; +]); -export const addFormSchema: any = [ +export const addFormSchema = computed(() => [ { component: 'Input', componentProps: {}, @@ -80,8 +84,10 @@ export const addFormSchema: any = [ .min(1, { message: $t('common.pleaseInput') + $t('abp.message.title') }), }, { - component: 'Textarea', - componentProps: {}, + component: 'Input', + componentProps: { + type: 'textarea', + }, fieldName: 'content', label: $t('abp.message.content'), rules: z.string().min(1, { @@ -111,29 +117,33 @@ export const addFormSchema: any = [ ], }, }, -]; +]); -export const addMessageFormSchema: any = [ +export const addMessageFormSchema = computed(() => [ { component: 'Input', componentProps: {}, fieldName: 'userName', - label: $t('abp.message.sender'), - rules: z.string().min(1, { message: '请输入接收人username' }), + label: $t('abp.message.receiver'), + required: true, }, { component: 'Input', componentProps: {}, fieldName: 'title', label: $t('abp.message.title'), - rules: z.string().min(1, { message: '请输入标题' }), + required: true, }, { - component: 'Textarea', - componentProps: {}, + component: 'Input', + componentProps: { + type: 'textarea', + }, fieldName: 'content', label: $t('abp.message.content'), - rules: z.string().min(1, { message: '请输入内容' }), + rules: z.string().min(1, { + message: $t('common.pleaseInput') + $t('abp.message.content'), + }), }, { component: 'Select', @@ -158,9 +168,9 @@ export const addMessageFormSchema: any = [ ], }, }, -]; +]); -export const tableMessageSchema: any = [ +export const tableMessageSchema: any = computed((): VxeGridProps['columns'] => [ { title: $t('common.seq'), type: 'seq', width: 50 }, { field: 'title', title: $t('abp.message.title'), minWidth: '150' }, { field: 'content', title: $t('abp.message.content'), minWidth: '150' }, @@ -173,12 +183,12 @@ export const tableMessageSchema: any = [ }, { field: 'senderUserName', - title: $t('abp.message.receiver'), + title: $t('abp.message.sender'), minWidth: '150', }, { field: 'receiveUserName', - title: $t('abp.message.sender'), + title: $t('abp.message.receiver'), minWidth: '150', }, { @@ -202,8 +212,8 @@ export const tableMessageSchema: any = [ width: '150', slots: { default: 'action' }, }, -]; -export const queryMessageSchema: any = [ +]); +export const queryMessageSchema = computed(() => [ { component: 'Input', fieldName: 'messageType', @@ -281,4 +291,4 @@ export const queryMessageSchema: any = [ ], }, }, -]; +]); diff --git a/apps/web-antd/src/views/system/abporganizationunit/OrgTreeAddModal.vue b/apps/web-ele/src/views/system/abporganizationunit/OrgTreeAddModal.vue similarity index 93% rename from apps/web-antd/src/views/system/abporganizationunit/OrgTreeAddModal.vue rename to apps/web-ele/src/views/system/abporganizationunit/OrgTreeAddModal.vue index 44ee456..a9a6864 100644 --- a/apps/web-antd/src/views/system/abporganizationunit/OrgTreeAddModal.vue +++ b/apps/web-ele/src/views/system/abporganizationunit/OrgTreeAddModal.vue @@ -1,6 +1,6 @@