diff --git a/gradle.properties b/gradle.properties index b4be81da..fc9e893b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ application_version=1.0.0 platform_group=io.sc platform_version=8.1.20 platform_plugin_version=8.1.13 -platform_core_frontend_version=8.1.67 +platform_core_frontend_version=8.1.75 ########################################################### # dependencies version diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json index 734cd1c5..e5d908fa 100644 --- a/io.sc.platform.core.frontend/package.json +++ b/io.sc.platform.core.frontend/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.70", + "version": "8.1.76", "description": "前端核心包,用于快速构建前端的脚手架", "//main": "库的主文件", "main": "dist/platform-core.js", diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts index 7278d5cf..516f8018 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/BooleanFormater.ts @@ -14,4 +14,11 @@ const trueFalseFormater = (value) => { return i18n.global.t('false'); }; -export { yesNoFormater, trueFalseFormater }; +const enableTagFormater = (value) => { + return { + componentType: 'WEnableTag', + attrs: { enable: value }, + }; +}; + +export { yesNoFormater, trueFalseFormater, enableTagFormater }; diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts index e9c7db0e..bb1dde83 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts @@ -1,11 +1,15 @@ import type { EnumType } from '@/platform/types'; -import { yesNoFormater, trueFalseFormater } from './BooleanFormater'; +import { yesNoFormater, trueFalseFormater, enableTagFormater } from './BooleanFormater'; import { dateOnlyFormater } from './DatetimeFormater'; import { EnumFormater } from './EnumFormater'; class Formater { static #enumFormaterMap = {}; + public static enableTag() { + return enableTagFormater; + } + public static yesNo() { return yesNoFormater; } diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/options/BooleanOptions.ts b/io.sc.platform.core.frontend/src/platform/components-ext/options/BooleanOptions.ts index 97096866..2adf7e96 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/options/BooleanOptions.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/options/BooleanOptions.ts @@ -1,17 +1,33 @@ import { i18n } from '@/platform/plugin'; -const yesNo = () => { - return [ - { value: true, label: i18n.global.t('yes') }, - { value: false, label: i18n.global.t('no') }, - ]; +const yesNo = (includeEmpty: boolean = true) => { + if (includeEmpty) { + return [ + { value: null, label: '' }, + { value: true, label: i18n.global.t('yes') }, + { value: false, label: i18n.global.t('no') }, + ]; + } else { + return [ + { value: true, label: i18n.global.t('yes') }, + { value: false, label: i18n.global.t('no') }, + ]; + } }; -const trueFalse = () => { - return [ - { value: true, label: i18n.global.t('true') }, - { value: false, label: i18n.global.t('false') }, - ]; +const trueFalse = (includeEmpty: boolean = true) => { + if (includeEmpty) { + return [ + { value: null, label: '' }, + { value: true, label: i18n.global.t('true') }, + { value: false, label: i18n.global.t('false') }, + ]; + } else { + return [ + { value: true, label: i18n.global.t('true') }, + { value: false, label: i18n.global.t('false') }, + ]; + } }; export { yesNo, trueFalse }; diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/options/EnumOptions.ts b/io.sc.platform.core.frontend/src/platform/components-ext/options/EnumOptions.ts index 7943423f..fd98f62a 100644 --- a/io.sc.platform.core.frontend/src/platform/components-ext/options/EnumOptions.ts +++ b/io.sc.platform.core.frontend/src/platform/components-ext/options/EnumOptions.ts @@ -8,9 +8,12 @@ class EnumOptions { this.#options = options; } - public options() { + public options(includeEmpty: boolean = true) { if (this.#options) { const result = []; + if (includeEmpty) { + result.push({ value: null, label: '' }); + } for (const option of this.#options) { result.push({ value: option.value, diff --git a/io.sc.platform.core.frontend/src/platform/components/index.ts b/io.sc.platform.core.frontend/src/platform/components/index.ts index 9ffd34dd..b5d42198 100644 --- a/io.sc.platform.core.frontend/src/platform/components/index.ts +++ b/io.sc.platform.core.frontend/src/platform/components/index.ts @@ -26,6 +26,7 @@ import WInfoPanel from './panel/WInfoPanel.vue'; import WGrid from './grid/WGrid.vue'; import WToolbar from './toolbar/WToolbar.vue'; +import WEnableTag from './tag/WEnableTag.vue'; export default { install: (app: App) => { @@ -55,6 +56,7 @@ export default { app.component('WGrid', WGrid); app.component('WToolbar', WToolbar); + app.component('WEnableTag', WEnableTag); }, }; @@ -80,6 +82,7 @@ export { WPassword, WGrid, WToolbar, + WEnableTag, }; export { PlatformIconEnum } from './utils'; diff --git a/io.sc.platform.system.frontend/src/views/user/RoleStatusTag.vue b/io.sc.platform.core.frontend/src/platform/components/tag/WEnableTag.vue similarity index 100% rename from io.sc.platform.system.frontend/src/views/user/RoleStatusTag.vue rename to io.sc.platform.core.frontend/src/platform/components/tag/WEnableTag.vue diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts index 41302731..c063cd01 100644 --- a/io.sc.platform.core.frontend/src/platform/index.ts +++ b/io.sc.platform.core.frontend/src/platform/index.ts @@ -108,7 +108,19 @@ export { Options } from './components-ext'; /** * 导出 UI 组件 */ -export { WPlatformPage, WIconEmpty, WHScreenDiv, WColorInput, WColorInputPalette, WPosition, WCodemirror, WSelect, WGrid, WTreeGrid } from './components'; +export { + WPlatformPage, + WIconEmpty, + WHScreenDiv, + WColorInput, + WColorInputPalette, + WPosition, + WCodemirror, + WSelect, + WGrid, + WTreeGrid, + WEnableTag, +} from './components'; export { PlatformIconEnum } from './components'; export { PageStatusEnum } from './components'; diff --git a/io.sc.platform.core.frontend/src/platform/plugin/axios.ts b/io.sc.platform.core.frontend/src/platform/plugin/axios.ts index d2183046..cd707ab1 100644 --- a/io.sc.platform.core.frontend/src/platform/plugin/axios.ts +++ b/io.sc.platform.core.frontend/src/platform/plugin/axios.ts @@ -4,7 +4,6 @@ import { i18n } from './i18n'; import { PConst } from '@/platform/PConst'; import { Environment } from '@/platform/plugin/environment'; import { NotifyManager } from './manager'; -import { Tools } from '@/platform/utils'; const ignoredUrls: string[] = [PConst.API_I18N_MESSAGES_URL, PConst.API_APP_CONFIGURE_URL]; const gc = Environment.getConfigure(); diff --git a/io.sc.platform.core.frontend/src/platform/plugin/quasar.ts b/io.sc.platform.core.frontend/src/platform/plugin/quasar.ts index 8237b18f..708e9245 100644 --- a/io.sc.platform.core.frontend/src/platform/plugin/quasar.ts +++ b/io.sc.platform.core.frontend/src/platform/plugin/quasar.ts @@ -4,8 +4,6 @@ import type { I18nMessageLocaleType } from '@/platform/types'; import { Environment } from '@/platform/plugin/environment'; import { I18nMessageManager } from '@/platform/plugin/manager'; -import { QBtn } from 'quasar'; - const gc = Environment.getConfigure(); const eventBus: any = new EventBus(); diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 6915f7e4..853e1567 100644 --- a/io.sc.platform.core.frontend/template-project/package.json +++ b/io.sc.platform.core.frontend/template-project/package.json @@ -1,6 +1,6 @@ { "name": "platform-core", - "version": "8.1.70", + "version": "8.1.76", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -92,7 +92,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.70", + "platform-core": "8.1.76", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties index f0abeae2..551168c8 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties @@ -100,7 +100,7 @@ normal=Normal oldValue=Old Value operationSuccess=Operation Sucess order=Order -org=Org +org=Organization parent=Parent parentId=Parent ID path=Path @@ -149,3 +149,9 @@ webContainer=Web Container weixin=WeiXin welcome=Welcome yes=Yes +rawPassword=Raw Password +newPassword=New Password +confirmNewPassword=Confirm New Password +accountExpired=Expired +accountLocked=Locked +credentialsExpired=Credentials Expired diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties index 006e146b..8630cafc 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties @@ -149,3 +149,9 @@ webContainer=Web \u5BB9\u5668 weixin=\u5FAE\u4FE1 welcome=\u6B61\u8FCE yes=\u662F +rawPassword=\u539F\u5BC6\u78BC +newPassword=\u65B0\u5BC6\u78BC +confirmNewPassword=\u78BA\u8A8D\u65B0\u5BC6\u78BC +accountExpired=\u904E\u671F +accountLocked=\u9396\u5B9A +credentialsExpired=\u5BC6\u78BC\u904E\u671F diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties index 57ee4cee..0d28087b 100644 --- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties +++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties @@ -148,4 +148,10 @@ version=\u7248\u672C webContainer=Web \u5BB9\u5668 weixin=\u5FAE\u4FE1 welcome=\u6B22\u8FCE -yes=\u662F \ No newline at end of file +yes=\u662F +rawPassword=\u539F\u5BC6\u7801 +newPassword=\u65B0\u5BC6\u7801 +confirmNewPassword=\u786E\u8BA4\u65B0\u5BC6\u7801 +accountExpired=\u8FC7\u671F +accountLocked=\u9501\u5B9A +credentialsExpired=\u5BC6\u7801\u8FC7\u671F \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index 4bef69a7..243ec9ff 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.70", + "platform-core": "8.1.75", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue b/io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue index 2244df9d..4b2ebc03 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue @@ -3,15 +3,17 @@ :title="$t('menu.developer.plugin.applicationProperties')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/applicationProperties')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'order', label: $t('order') }, - { width: '20%', name: 'module', label: $t('module') }, - { width: '40%', name: 'description', label: $t('description') }, + { width: 50, name: 'order', label: $t('order'), align: 'right', sortable: false }, + { width: 150, name: 'module', label: $t('module'), sortable: false }, + { width: 200, name: 'description', label: $t('description'), sortable: false }, { - width: '40%', + width: 300, name: 'properties', label: $t('properties'), + sortable: false, format: (properties) => { properties = properties || []; let result = ''; @@ -21,7 +23,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url') }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Components.vue b/io.sc.platform.developer.frontend/src/views/plugin/Components.vue index 0defcb11..cc4303f9 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Components.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Components.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.components')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/components')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '40%', + width: 300, name: 'includes', label: $t('include'), + sortable: false, format: (includes) => { includes = includes || []; let result = ''; @@ -19,9 +21,10 @@ }, }, { - width: '40%', + width: 300, name: 'excludes', label: $t('exclude'), + sortable: false, format: (excludes) => { excludes = excludes || []; let result = ''; @@ -31,7 +34,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Directories.vue b/io.sc.platform.developer.frontend/src/views/plugin/Directories.vue index f6990654..acea4002 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Directories.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Directories.vue @@ -3,15 +3,16 @@ :title="$t('menu.developer.plugin.directories')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/directories')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'name', label: $t('name') }, - { width: '40%', name: 'path', label: $t('path') }, - { width: '40%', name: 'autoCreate', label: $t('autoCreate') }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'name', label: $t('name'), sortable: false }, + { width: 200, name: 'path', label: $t('path'), sortable: false }, + { width: 100, name: 'autoCreate', label: $t('autoCreate'), format: Formater.yesNo(), sortable: false }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue b/io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue index 773dae5f..64a13afc 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue @@ -3,12 +3,15 @@ :title="$t('menu.developer.plugin.frontendModule')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/frontendModule')" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: 100, name: 'name', label: $t('name') }, + { width: 200, name: 'name', label: $t('name'), sortable: false }, { - width: '40%', + width: 200, name: 'components', label: $t('component'), + sortable: false, format: (components) => { components = components || []; let result = ''; @@ -19,9 +22,10 @@ }, }, { - width: '40%', + width: 300, name: 'resources', label: $t('resource'), + sortable: false, format: (resources) => { resources = resources || []; let result = ''; @@ -31,7 +35,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/FrontendRoutes.vue b/io.sc.platform.developer.frontend/src/views/plugin/FrontendRoutes.vue index 82293aec..91155d01 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/FrontendRoutes.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/FrontendRoutes.vue @@ -3,15 +3,17 @@ :title="$t('menu.developer.plugin.frontendModule')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/frontendRoute')" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '40%', name: 'name', label: $t('name') }, - { width: '40%', name: 'parent', label: $t('parent') }, - { width: '40%', name: 'path', label: $t('path') }, - { width: '40%', name: 'module', label: $t('module') }, - { width: '40%', name: 'priority', label: $t('priority') }, - { width: '40%', name: 'component', label: $t('component') }, - { width: '40%', name: 'redirect', label: $t('redirect') }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 280, name: 'name', label: $t('name'), sortable: false }, + { width: 80, name: 'parent', label: $t('parent'), sortable: false }, + { width: 250, name: 'path', label: $t('path'), sortable: false }, + { width: 90, name: 'priority', label: $t('priority'), sortable: false }, + { width: 250, name: 'module', label: $t('module'), sortable: false }, + { width: 300, name: 'component', label: $t('component'), sortable: false }, + { width: 200, name: 'redirect', label: $t('redirect'), sortable: false }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Initializer.vue b/io.sc.platform.developer.frontend/src/views/plugin/Initializer.vue index 4a3a33f5..9fd1b03a 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Initializer.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Initializer.vue @@ -3,12 +3,13 @@ :title="$t('menu.developer.plugin.initializer')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/initializer')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'order', label: $t('order'), align: 'right' }, - { width: '40%', name: 'name', label: $t('name'), format: (value) => $t(value), align: 'left' }, - { width: '40%', name: 'description', label: $t('description'), format: (value) => $t(value), align: 'left' }, - { width: '40%', name: 'id', label: $t('className'), align: 'left' }, + { name: 'order', label: $t('order'), align: 'right', sortable: false }, + { name: 'name', label: $t('name'), format: (value) => $t(value), align: 'left', sortable: false }, + { name: 'description', label: $t('description'), format: (value) => $t(value), align: 'left', sortable: false }, + { name: 'id', label: $t('className'), align: 'left', sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/JsonSerializers.vue b/io.sc.platform.developer.frontend/src/views/plugin/JsonSerializers.vue index 018a3be2..635b11b4 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/JsonSerializers.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/JsonSerializers.vue @@ -3,12 +3,13 @@ :title="$t('menu.developer.plugin.jsonSerializers')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/jsonSerializers')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'className', label: $t('className') }, - { width: '40%', name: 'serializer', label: $t('serializer') }, - { width: '40%', name: 'deserializer', label: $t('deserializer') }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 280, name: 'className', label: $t('className'), sortable: false }, + { width: 420, name: 'serializer', label: $t('serializer'), sortable: false }, + { width: 420, name: 'deserializer', label: $t('deserializer'), sortable: false }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Messages.vue b/io.sc.platform.developer.frontend/src/views/plugin/Messages.vue index f052b345..884966a3 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Messages.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Messages.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.messages')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/messages')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '40%', + width: 300, name: 'includes', label: $t('include'), + sortable: false, format: (includes) => { includes = includes || []; let result = ''; @@ -19,9 +21,10 @@ }, }, { - width: '40%', + width: 300, name: 'excludes', label: $t('exclude'), + sortable: false, format: (excludes) => { excludes = excludes || []; let result = ''; @@ -31,7 +34,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/P6spy.vue b/io.sc.platform.developer.frontend/src/views/plugin/P6spy.vue index 914db73d..2fc890ed 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/P6spy.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/P6spy.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.p6spy')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/p6spy')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '40%', + width: 300, name: 'ignoredPatterns', label: $t('ignored'), + sortable: false, format: (ignoredPatterns) => { ignoredPatterns = ignoredPatterns || []; let result = ''; @@ -18,7 +20,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Parameters.vue b/io.sc.platform.developer.frontend/src/views/plugin/Parameters.vue index 113a608c..af739a81 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Parameters.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Parameters.vue @@ -1,17 +1,19 @@ diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Repositories.vue b/io.sc.platform.developer.frontend/src/views/plugin/Repositories.vue index af1c5160..108f3671 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Repositories.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Repositories.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.repositories')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/repositories')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '40%', + width: 300, name: 'includes', label: $t('include'), + sortable: false, format: (includes) => { includes = includes || []; let result = ''; @@ -19,9 +21,10 @@ }, }, { - width: '40%', + width: 300, name: 'excludes', label: $t('exclude'), + sortable: false, format: (excludes) => { excludes = excludes || []; let result = ''; @@ -31,7 +34,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/RestartProperties.vue b/io.sc.platform.developer.frontend/src/views/plugin/RestartProperties.vue index 877d9a73..ed84a7b9 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/RestartProperties.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/RestartProperties.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.restartProperties')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/restartProperties')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '20%', + width: 300, name: 'container', label: $t('webContainer'), + sortable: false, format: (containers) => { containers = containers || []; let result = ''; @@ -19,9 +21,10 @@ }, }, { - width: '40%', + width: 300, name: 'jar', label: $t('jar'), + sortable: false, format: (jars) => { jars = jars || []; let result = ''; @@ -31,7 +34,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Security.vue b/io.sc.platform.developer.frontend/src/views/plugin/Security.vue index 0631c169..2980b6c7 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Security.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Security.vue @@ -3,12 +3,14 @@ :title="$t('menu.developer.plugin.security')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/security')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ { - width: '40%', + width: 200, name: 'permitPatterns', - label: $t('include'), + label: $t('ignored'), + sortable: false, format: (permitPatterns) => { permitPatterns = permitPatterns || []; let result = ''; @@ -18,7 +20,7 @@ return result; }, }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 500, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/SystemProperties.vue b/io.sc.platform.developer.frontend/src/views/plugin/SystemProperties.vue index 7ab3c8c4..5c14c73f 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/SystemProperties.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/SystemProperties.vue @@ -3,11 +3,12 @@ :title="$t('menu.developer.plugin.systemProperties')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/systemProperties')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'name', label: $t('name') }, - { width: '40%', name: 'value', label: $t('path') }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'name', label: $t('name'), sortable: false }, + { width: 200, name: 'value', label: $t('value'), sortable: false }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/plugin/Ws.vue b/io.sc.platform.developer.frontend/src/views/plugin/Ws.vue index 7b4961c9..2432876c 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Ws.vue +++ b/io.sc.platform.developer.frontend/src/views/plugin/Ws.vue @@ -3,12 +3,13 @@ :title="$t('menu.developer.plugin.ws')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/plugins/ws')" - row-key="id" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: '20%', name: 'publish', label: $t('publish') }, - { width: '40%', name: 'beanName', label: $t('beanName') }, - { width: '40%', name: 'beanClass', label: $t('beanClass') }, - { width: '40%', name: 'configurationFileUrl', label: $t('url') }, + { width: 200, name: 'publish', label: $t('publish'), sortable: false }, + { width: 200, name: 'beanName', label: $t('beanName'), sortable: false }, + { width: 200, name: 'beanClass', label: $t('beanClass'), sortable: false }, + { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer.frontend/src/views/springboot/Bean.vue b/io.sc.platform.developer.frontend/src/views/springboot/Bean.vue index 67d0a818..8cc7c2e8 100644 --- a/io.sc.platform.developer.frontend/src/views/springboot/Bean.vue +++ b/io.sc.platform.developer.frontend/src/views/springboot/Bean.vue @@ -3,17 +3,12 @@ :title="$t('menu.developer.springboot.bean')" :toolbar-actions="['refresh', 'separator', 'view', 'export']" :fetch-data-url="Environment.apiContextPath('/api/developer/springboot/beans')" - :checkbox-selection="true" - :pagination="{ - sortBy: 'name', - descending: false, - reqPageStart: 0, - rowsPerPage: 0, - }" + :checkbox-selection="false" + :pageable="false" :columns="[ - { width: 600, name: 'name', label: $t('name') }, - { width: 500, name: 'type', label: $t('className') }, - { width: 100, name: 'configurationFileUrl', label: $t('url') }, + { width: 600, name: 'name', label: $t('name'), sortable: false }, + { width: 500, name: 'type', label: $t('className'), sortable: false }, + { width: 100, name: 'scope', label: $t('scope'), sortable: false }, ]" :viewer="{ panel: { @@ -50,7 +45,6 @@ return result; }, }, - { width: 100, name: 'configurationFileUrl', label: $t('url') }, ], }, }" diff --git a/io.sc.platform.developer.frontend/src/views/springboot/Mapping.vue b/io.sc.platform.developer.frontend/src/views/springboot/Mapping.vue index 7b98cb8f..d1268944 100644 --- a/io.sc.platform.developer.frontend/src/views/springboot/Mapping.vue +++ b/io.sc.platform.developer.frontend/src/views/springboot/Mapping.vue @@ -1,4 +1,124 @@ - + diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/InitializerWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/InitializerWebController.java index 5db0eee8..0bf858ee 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/InitializerWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/InitializerWebController.java @@ -3,8 +3,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.initializer.ApplicationInitializer; import io.sc.platform.core.util.Sorter; import io.sc.platform.developer.wrapper.plugins.InitializerWrapper; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,13 +17,13 @@ import java.util.ServiceLoader; public class InitializerWebController { @GetMapping("") @ResponseBody - public Page initializer(){ + public List initializer(){ List initializers =new ArrayList<>(); ServiceLoader loader = ServiceLoader.load(ApplicationInitializer.class,Thread.currentThread().getContextClassLoader()); loader.iterator().forEachRemaining(item -> { initializers.add(item); }); Sorter.sort(initializers); - return QueryResult.page(InitializerWrapper.from(initializers)); + return InitializerWrapper.from(initializers); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginApplicationPropertiesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginApplicationPropertiesWebController.java index 29842d4e..d2ce4f19 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginApplicationPropertiesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginApplicationPropertiesWebController.java @@ -2,8 +2,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; import io.sc.platform.core.plugins.item.ApplicationProperties; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,8 +14,7 @@ import java.util.List; public class PluginApplicationPropertiesWebController { @GetMapping("") @ResponseBody - public Page applicationProperties(){ - List plugins = PluginManager.getInstance().getApplicationProperties(); - return QueryResult.page(plugins); + public List applicationProperties(){ + return PluginManager.getInstance().getApplicationProperties(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginComponentsWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginComponentsWebController.java index 00983249..a4c91f82 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginComponentsWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginComponentsWebController.java @@ -2,8 +2,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; import io.sc.platform.core.plugins.item.Component; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,8 +14,7 @@ import java.util.List; public class PluginComponentsWebController { @GetMapping("") @ResponseBody - public Page components(){ - List plugins = PluginManager.getInstance().getComponents(); - return QueryResult.page(plugins); + public List components(){ + return PluginManager.getInstance().getComponents(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginDirectoriesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginDirectoriesWebController.java index d1e74264..aa729903 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginDirectoriesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginDirectoriesWebController.java @@ -2,8 +2,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; import io.sc.platform.core.plugins.item.Directory; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,8 +14,7 @@ import java.util.List; public class PluginDirectoriesWebController { @GetMapping("") @ResponseBody - public Page directories(){ - List plugins = PluginManager.getInstance().getDirectories(); - return QueryResult.page(plugins); + public List directories(){ + return PluginManager.getInstance().getDirectories(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendModuleWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendModuleWebController.java index d8051725..990486b1 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendModuleWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendModuleWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; -import io.sc.platform.core.plugins.item.Message; import io.sc.platform.mvc.plugins.PluginManager; import io.sc.platform.mvc.plugins.item.FrontEndModule; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginFrontendModuleWebController { @GetMapping("") @ResponseBody - public Page frontendModule(){ - List plugins = PluginManager.getInstance().getFrontEndModules(); - return QueryResult.page(plugins); + public List frontendModule(){ + return PluginManager.getInstance().getFrontEndModules(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendRouteWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendRouteWebController.java index a3bf782e..f50c3fcd 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendRouteWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginFrontendRouteWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.mvc.plugins.PluginManager; -import io.sc.platform.mvc.plugins.item.FrontEndModule; import io.sc.platform.mvc.plugins.item.FrontEndRoute; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginFrontendRouteWebController { @GetMapping("") @ResponseBody - public Page frontendRoute(){ - List plugins = PluginManager.getInstance().getFrontEndRoutes(); - return QueryResult.page(plugins); + public List frontendRoute(){ + return PluginManager.getInstance().getFrontEndRoutes(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginJsonSerializersWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginJsonSerializersWebController.java index 66e0fd87..244ee1db 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginJsonSerializersWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginJsonSerializersWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; -import io.sc.platform.core.plugins.item.Directory; import io.sc.platform.core.plugins.item.JsonSerializer; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginJsonSerializersWebController { @GetMapping("") @ResponseBody - public Page jsonSerializers(){ - List plugins = PluginManager.getInstance().getJsonSerializers(); - return QueryResult.page(plugins); + public List jsonSerializers(){ + return PluginManager.getInstance().getJsonSerializers(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginMessagesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginMessagesWebController.java index 5a407448..e3a22366 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginMessagesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginMessagesWebController.java @@ -2,9 +2,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; import io.sc.platform.core.plugins.item.Message; -import io.sc.platform.orm.plugins.item.Repository; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginMessagesWebController { @GetMapping("") @ResponseBody - public Page messages(){ - List plugins = PluginManager.getInstance().getMessages(); - return QueryResult.page(plugins); + public List messages(){ + return PluginManager.getInstance().getMessages(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginP6spyWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginP6spyWebController.java index 34139af7..7dc04b23 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginP6spyWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginP6spyWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; -import io.sc.platform.core.plugins.item.JsonSerializer; import io.sc.platform.jdbc.plugins.PluginManager; import io.sc.platform.jdbc.plugins.item.P6spy; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginP6spyWebController { @GetMapping("") @ResponseBody - public Page p6spy(){ - List plugins = PluginManager.getInstance().getP6spys(); - return QueryResult.page(plugins); + public List p6spy(){ + return PluginManager.getInstance().getP6spys(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginParametersWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginParametersWebController.java index c45381cd..04a9cdef 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginParametersWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginParametersWebController.java @@ -2,8 +2,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.mvc.plugins.PluginManager; import io.sc.platform.mvc.plugins.item.Parameter; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,8 +14,7 @@ import java.util.List; public class PluginParametersWebController { @GetMapping("") @ResponseBody - public Page parameters(){ - List plugins =PluginManager.getInstance().getParameters(); - return QueryResult.page(plugins); + public List parameters(){ + return PluginManager.getInstance().getParameters(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRepositoriesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRepositoriesWebController.java index 1abb9a97..9b1ddfbf 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRepositoriesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRepositoriesWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; -import io.sc.platform.core.plugins.item.Component; import io.sc.platform.orm.plugins.PluginManager; import io.sc.platform.orm.plugins.item.Repository; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginRepositoriesWebController { @GetMapping("") @ResponseBody - public Page repositories(){ - List plugins = PluginManager.getInstance().getRepositories(); - return QueryResult.page(plugins); + public List repositories(){ + return PluginManager.getInstance().getRepositories(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRestartPropertiesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRestartPropertiesWebController.java index 38c31a61..b137e65f 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRestartPropertiesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginRestartPropertiesWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.PluginManager; -import io.sc.platform.core.plugins.item.ApplicationProperties; import io.sc.platform.core.plugins.item.RestartProperties; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginRestartPropertiesWebController { @GetMapping("") @ResponseBody - public Page restartProperties(){ - List plugins = PluginManager.getInstance().getRestartProperties(); - return QueryResult.page(plugins); + public List restartProperties(){ + return PluginManager.getInstance().getRestartProperties(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSecurityWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSecurityWebController.java index 51ab157a..ae1aa7e7 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSecurityWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSecurityWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; -import io.sc.platform.mvc.plugins.item.FrontEndRoute; -import io.sc.platform.orm.service.support.QueryResult; import io.sc.platform.security.plugins.PluginManager; import io.sc.platform.security.plugins.item.Security; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginSecurityWebController { @GetMapping("") @ResponseBody - public Page security(){ - List plugins = PluginManager.getInstance().getSecurities(); - return QueryResult.page(plugins); + public List security(){ + return PluginManager.getInstance().getSecurities(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSwaggerWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSwaggerWebController.java index 491c73ad..b3441cab 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSwaggerWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSwaggerWebController.java @@ -1,9 +1,7 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.jdbc.plugins.item.P6spy; -import io.sc.platform.mvc.plugins.PluginManager; import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,7 +14,7 @@ import java.util.List; public class PluginSwaggerWebController { @GetMapping("") @ResponseBody - public Page swagger(){ - return QueryResult.emptyPage(); + public List swagger(){ + return QueryResult.emptyList(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSystemPropertiesWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSystemPropertiesWebController.java index f62c2dba..21cada03 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSystemPropertiesWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginSystemPropertiesWebController.java @@ -3,8 +3,6 @@ package io.sc.platform.developer.controller.plugins; import io.sc.platform.core.plugins.Plugin; import io.sc.platform.core.plugins.PluginManager; import io.sc.platform.developer.wrapper.plugins.SystemPropertyWrapper; -import io.sc.platform.orm.service.support.QueryResult; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,7 +17,7 @@ import java.util.Map; public class PluginSystemPropertiesWebController { @GetMapping("") @ResponseBody - public Page systemProperties(){ + public List systemProperties(){ List>> plugins = PluginManager.getInstance().getSystemPropertyPlugins(); List result =new ArrayList<>(); for(Plugin> plugin : plugins){ @@ -30,6 +28,6 @@ public class PluginSystemPropertiesWebController { result.add(wrapper); } } - return QueryResult.page(result); + return result; } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginWsWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginWsWebController.java index 13bf1db5..2432b316 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginWsWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/plugins/PluginWsWebController.java @@ -1,10 +1,7 @@ package io.sc.platform.developer.controller.plugins; -import io.sc.platform.jdbc.plugins.item.P6spy; -import io.sc.platform.orm.service.support.QueryResult; import io.sc.platform.ws.plugins.PluginManager; import io.sc.platform.ws.plugins.item.JaxWsWebservice; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -17,8 +14,7 @@ import java.util.List; public class PluginWsWebController { @GetMapping("") @ResponseBody - public Page ws(){ - List plugins = PluginManager.getInstance().getJaxWsWebservices(); - return QueryResult.page(plugins); + public List ws(){ + return PluginManager.getInstance().getJaxWsWebservices(); } } diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootBeansWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootBeansWebController.java index 1c459066..034042b5 100644 --- a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootBeansWebController.java +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootBeansWebController.java @@ -2,12 +2,10 @@ package io.sc.platform.developer.controller.springboot; import io.sc.platform.developer.wrapper.springboot.BeanWrapper; import io.sc.platform.orm.service.support.QueryParameter; -import io.sc.platform.orm.service.support.QueryResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.actuate.beans.BeansEndpoint; import org.springframework.boot.actuate.beans.BeansEndpoint.BeanDescriptor; import org.springframework.boot.actuate.beans.BeansEndpoint.ContextBeans; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Order; import org.springframework.stereotype.Controller; @@ -15,7 +13,10 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import java.util.*; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; @Controller @RequestMapping("/api/developer/springboot/beans") @@ -24,7 +25,7 @@ public class SpringbootBeansWebController { @GetMapping("") @ResponseBody - public Page beans(QueryParameter queryParameter){ + public List beans(QueryParameter queryParameter){ List result =new ArrayList<>(); Map contexts =beansEndpoint.beans().getContexts(); for(Map.Entry contextEntry : contexts.entrySet()){ @@ -53,7 +54,7 @@ public class SpringbootBeansWebController { } } } - return QueryResult.page(result); + return result; } private class BeanNameAscComparator implements Comparator { diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootRequestMappingWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootRequestMappingWebController.java new file mode 100644 index 00000000..5a426981 --- /dev/null +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/controller/springboot/SpringbootRequestMappingWebController.java @@ -0,0 +1,86 @@ +package io.sc.platform.developer.controller.springboot; + +import io.sc.platform.developer.wrapper.springboot.BeanWrapper; +import io.sc.platform.developer.wrapper.springboot.DespatcherServletWrapper; +import io.sc.platform.orm.service.support.QueryParameter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.actuate.web.mappings.HandlerMethodDescription; +import org.springframework.boot.actuate.web.mappings.MappingsEndpoint; +import org.springframework.boot.actuate.web.mappings.MappingsEndpoint.ApplicationMappings; +import org.springframework.boot.actuate.web.mappings.MappingsEndpoint.ContextMappings; +import org.springframework.boot.actuate.web.mappings.servlet.*; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.*; + +@Controller +@RequestMapping("/api/developer/springboot/mappings") +public class SpringbootRequestMappingWebController { + @Autowired MappingsEndpoint mappingsEndpoint; + + @GetMapping("dispatcherServletMappingDescriptions") + @ResponseBody + public List dispatcherServletMappingDescriptions(QueryParameter queryParameter){ + List result =new ArrayList<>(); + ApplicationMappings applicationMappings =mappingsEndpoint.mappings(); + Map contexts =applicationMappings.getContexts(); + for(Map.Entry contextEntry : contexts.entrySet()) { + ContextMappings contextMappings = contextEntry.getValue(); + Map mappings = contextMappings.getMappings(); + for (Map.Entry mapping : mappings.entrySet()) { + String name = mapping.getKey(); + if ("dispatcherServlets".equalsIgnoreCase(name)) { + Map> dispatcherServletMappings = (Map>) mapping.getValue(); + for(Map.Entry> dispatcherServletMapping : dispatcherServletMappings.entrySet()) { + result.addAll(dispatcherServletMapping.getValue()); + } + } + } + } + return result; + } + + @GetMapping("filterRegistrationMappingDescriptions") + @ResponseBody + public List filterRegistrationMappingDescriptions(QueryParameter queryParameter){ + List result =new ArrayList<>(); + ApplicationMappings applicationMappings =mappingsEndpoint.mappings(); + Map contexts =applicationMappings.getContexts(); + for(Map.Entry contextEntry : contexts.entrySet()) { + ContextMappings contextMappings = contextEntry.getValue(); + Map mappings = contextMappings.getMappings(); + for (Map.Entry mapping : mappings.entrySet()) { + String name = mapping.getKey(); + if ("servletFilters".equalsIgnoreCase(name)) { + List filters =(List)mapping.getValue(); + result.addAll(filters); + } + } + } + return result; + } + + @GetMapping("servletRegistrationMappingDescriptions") + @ResponseBody + public List servletRegistrationMappingDescriptions(QueryParameter queryParameter){ + List result =new ArrayList<>(); + ApplicationMappings applicationMappings =mappingsEndpoint.mappings(); + Map contexts =applicationMappings.getContexts(); + for(Map.Entry contextEntry : contexts.entrySet()) { + ContextMappings contextMappings = contextEntry.getValue(); + Map mappings = contextMappings.getMappings(); + for (Map.Entry mapping : mappings.entrySet()) { + String name = mapping.getKey(); + if ("servlets".equalsIgnoreCase(name)) { + List servlets =(List)mapping.getValue(); + result.addAll(servlets); + } + } + } + return result; + } +} diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/wrapper/springboot/DespatcherServletWrapper.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/wrapper/springboot/DespatcherServletWrapper.java new file mode 100644 index 00000000..b4e81c44 --- /dev/null +++ b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/wrapper/springboot/DespatcherServletWrapper.java @@ -0,0 +1,44 @@ +package io.sc.platform.developer.wrapper.springboot; + +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.Set; + +public class DespatcherServletWrapper { + private String className; + private String methodName; + private Set httpMethods; + private Set patterns; + + public String getClassName() { + return className; + } + + public void setClassName(String className) { + this.className = className; + } + + public String getMethodName() { + return methodName; + } + + public void setMethodName(String methodName) { + this.methodName = methodName; + } + + public Set getHttpMethods() { + return httpMethods; + } + + public void setHttpMethods(Set httpMethods) { + this.httpMethods = httpMethods; + } + + public Set getPatterns() { + return patterns; + } + + public void setPatterns(Set patterns) { + this.patterns = patterns; + } +} diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index e08957c8..797e8918 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -91,7 +91,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.67", + "platform-core": "8.1.75", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,4 @@ "vue-router": "4.2.5", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index 2b971b8b..32d0ee80 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.67", + "platform-core": "8.1.75", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.security.frontend/package.json b/io.sc.platform.security.frontend/package.json index 08534554..3a504661 100644 --- a/io.sc.platform.security.frontend/package.json +++ b/io.sc.platform.security.frontend/package.json @@ -4,7 +4,7 @@ "description": "", "private": false, "keywords": [ - + ], "author": "", "license": "ISC", @@ -99,6 +99,6 @@ "vue-dompurify-html": "5.0.1", "vue-i18n": "9.8.0", "vue-router": "4.2.5", - "platform-core": "8.1.67" + "platform-core": "8.1.75" } -} +} \ No newline at end of file diff --git a/io.sc.platform.system.frontend/package.json b/io.sc.platform.system.frontend/package.json index ae0717de..2cfc982a 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -78,7 +78,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.70", + "platform-core": "8.1.76", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", @@ -100,4 +100,4 @@ "codemirror": "6.0.1", "vue-codemirror6": "1.2.0" } -} +} \ No newline at end of file diff --git a/io.sc.platform.system.frontend/src/i18n/messages.json b/io.sc.platform.system.frontend/src/i18n/messages.json index a2ad755a..13210a4c 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages.json +++ b/io.sc.platform.system.frontend/src/i18n/messages.json @@ -1,4 +1,8 @@ { + "parameter.system":"System", + "parameter.system.homePage":"Home Page", + "parameter.login.encodePassword":"Login Password Encode", + "menu.system" : "System Manager", "menu.system.corporation" : "Corporation", "menu.system.user" : "User", @@ -17,33 +21,34 @@ "menu.system.monitor.resources" : "Resources", "menu.system.license" : "License", - "system.org.gridTitle":"Org Tree", - "system.announcement.gridTitle":"Announcement List", - "system.monitor.auditlog.gridTitle":"Audit Log List", - "system.user.grid.title":"User List", - "system.user.action.addUser":"Add User", - "system.user.action.addAllUser":"Add All User", - "system.user.action.removeUser":"Remove User", - "system.user.action.removeAllUser":"Remove All User", - "system.user.action.setPassword":"Set Password", - "system.user.action.setAllPassword":"Set All Password", - "system.user.action.resetPassword":"Reset Password", - "system.user.action.resetAllPassword":"Reset All Password", - "system.user.confirm.resetPassword":"Are you sure to reset the user's password?", - "system.user.confirm.resetAllPassword":"Are you sure to reset ALL user's password?", + "system.user.grid.toolbar.setPassword":"Set Password", + "system.user.grid.toolbar.setAllPassword":"Set All Password", + "system.user.grid.toolbar.resetPassword":"Reset Password", + "system.user.grid.toolbar.resetPassword.tip":"Are you sure to reset the user's password?", + "system.user.grid.toolbar.resetAllPassword":"Reset All Password", + "system.user.grid.toolbar.resetAllPassword.tip":"Are you sure to reset ALL user's password?", + "system.user.selectRole.grid.title":"Role List", + "system.user.selectRole.grid.toolbar.addRole":"Add Role", + "system.user.selectRole.grid.toolbar.addAllRole":"Add All Role", + "system.user.selectRole.grid.toolbar.addAllRole.tip":"Are you sure to add ALL roles to user?", + "system.user.selectRole.grid.toolbar.removeRole":"Remove Role", + "system.user.selectRole.grid.toolbar.removeRole.tip":"Are you sure to remove user's role?", + "system.user.selectRole.grid.toolbar.removeAllRole":"Remove All Role", + "system.user.selectRole.grid.toolbar.removeAllRole.tip":"Are you sure to remove user's ALL roles?", + "system.user.selectRole.dialog.title":"Available Role List", "system.role.grid.title":"Role List", - "system.role.action.addRole":"Add Role", - "system.role.action.addAllRole":"Add All Role", - "system.role.action.addAllRole.confirm":"Are you sure to add ALL roles to {userName} ({userLoginName})?", - "system.role.action.removeRole":"Remove Role", - "system.role.action.removeRole.confirm":"Are you sure to remove {userName} ({userLoginName}) user's role {roleCode} ({roleName})?", - "system.role.action.removeRole.confirms":"Are you sure to remove {userName} ({userLoginName}) user's {counter} roles?", - "system.role.action.removeAllRole":"Remove All Role", - "system.role.action.removeAllRole.confirm":"Are you sure to remove ALL roles to {userName} ({userLoginName})?", + "system.role.selectUser.grid.title":"User List", + "system.role.selectUser.grid.toolbar.addUser":"Add User", + "system.role.selectUser.grid.toolbar.addAllUser":"Add All User", + "system.role.selectUser.grid.toolbar.addAllUser.tip":"Are you sure to add ALL users to role?", + "system.role.selectUser.grid.toolbar.removeUser":"Remove User", + "system.role.selectUser.grid.toolbar.removeUser.tip":"Are you sure to remove role's user?", + "system.role.selectUser.grid.toolbar.removeAllUser":"Remove All User", + "system.role.selectUser.grid.toolbar.removeAllUser.tip":"Are you sure to remove role's ALL users?", + "system.role.selectUser.dialog.title":"Available User List", - "system.selectRoleByUserDialog.title":"Available Role List", "system.org.grid.title":"Org Tree", @@ -57,17 +62,5 @@ "system.monitor.log.tab.view":"Log View", "system.monitor.log.tab.download":"Log Download", - "system.monitor.log.tab.level":"Log Level", - - "rawPassword": "Raw Password", - "newPassword": "New Password", - "confirmNewPassword": "Confirm New Password", - "accountExpired": "Expired", - "accountLocked": "Locked", - "credentialsExpired": "Credentials Expired", - - - "parameter.system":"System", - "parameter.system.homePage":"Home Page", - "parameter.login.encodePassword":"Login Password Encode" + "system.monitor.log.tab.level":"Log Level", } diff --git a/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json index 5522f161..546f7344 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.platform.system.frontend/src/i18n/messages_tw_CN.json @@ -1,4 +1,8 @@ { + "parameter.system":"系統", + "parameter.system.homePage":"首頁", + "parameter.login.encodePassword":"登錄頁面密碼加密", + "menu.system" : "系統管理", "menu.system.corporation" : "法人管理", "menu.system.user" : "用戶管理", @@ -17,35 +21,39 @@ "menu.system.monitor.resources" : "系統資源", "menu.system.license" : "許可證管理", - "system.org.gridTitle":"機構樹", - "system.announcement.gridTitle":"公告列表", - "system.monitor.auditlog.gridTitle":"審計日誌列表", - "system.user.grid.title":"用戶列表", - "system.user.action.addUser":"添加用户", - "system.user.action.addAllUser":"添加所有用户", - "system.user.action.removeUser":"移除用户", - "system.user.action.removeAllUser":"移除所有用户", - "system.user.action.setPassword":"設置密碼", - "system.user.action.setAllPassword":"設置所有密碼", - "system.user.action.resetPassword":"重置密碼", - "system.user.action.resetAllPassword":"重置所有密碼", - "system.user.confirm.resetPassword":"您確認要重置用戶密碼嗎?", - "system.user.confirm.resetAllPassword":"您確認要重置所有用戶密碼嗎?", + "system.user.grid.toolbar.setPassword":"設置密碼", + "system.user.grid.toolbar.setAllPassword":"設置所有密碼", + "system.user.grid.toolbar.resetPassword":"重置密碼", + "system.user.grid.toolbar.resetPassword.tip":"您确定要重置用户密碼嗎?", + "system.user.grid.toolbar.resetAllPassword":"重置所有密碼", + "system.user.grid.toolbar.resetAllPassword.tip":"您确定要重置所有用户密碼嗎?", + "system.user.selectRole.grid.title":"角色列表", + "system.user.selectRole.grid.toolbar.addRole":"添加角色", + "system.user.selectRole.grid.toolbar.addAllRole":"添加所有角色", + "system.user.selectRole.grid.toolbar.addAllRole.tip":"您确定要给用户添加所有角色嗎?", + "system.user.selectRole.grid.toolbar.removeRole":"移除角色", + "system.user.selectRole.grid.toolbar.removeRole.tip":"您确定要移除用户的角色嗎?", + "system.user.selectRole.grid.toolbar.removeAllRole":"移除所有角色", + "system.user.selectRole.grid.toolbar.removeAllRole.tip":"您确定要將用户的所有角色移除嗎?", + "system.user.selectRole.dialog.title":"可選角色列表", "system.role.grid.title":"角色列表", - "system.role.action.addRole":"添加角色", - "system.role.action.addAllRole":"添加所有角色", - "system.role.action.addAllRole.confirm":"您確認要給 {userName} ({userLoginName}) 用戶添加所有角色嗎?", - "system.role.action.removeRole":"移除角色", - "system.role.action.removeRole.confirm":"您確定要移除 {userName} ({userLoginName}) 用戶的角色 {roleCode} ({roleName}) 吗?", - "system.role.action.removeRole.confirms":"您確定要移除 {userName} ({userLoginName}) 用戶的 {counter} 個角色吗?", - "system.role.action.removeAllRole":"移除所有角色", - "system.role.action.removeAllRole.confirm":"您確認要將 {userName} ({userLoginName}) 用戶的所有角色移除嗎?", + "system.role.selectUser.grid.title":"用戶列表", + "system.role.selectUser.grid.toolbar.addUser":"添加用户", + "system.role.selectUser.grid.toolbar.addAllUser":"添加所有用户", + "system.role.selectUser.grid.toolbar.addAllUser.tip":"您确定要给角色添加所有用户嗎?", + "system.role.selectUser.grid.toolbar.removeUser":"移除用户", + "system.role.selectUser.grid.toolbar.removeUser.tip":"您确定要移除角色的用户嗎?", + "system.role.selectUser.grid.toolbar.removeAllUser":"移除所有用户", + "system.role.selectUser.grid.toolbar.removeAllUser.tip":"您确定要移除角色的所有用户嗎?", + "system.role.selectUser.dialog.title":"可選用戶列表", - "system.selectRoleByUserDialog.title":"可選角色列表", - "system.org.grid.title":"機構樹", + + "system.org.gridTitle":"機構樹", + "system.announcement.gridTitle":"公告列表", + "system.monitor.auditlog.gridTitle":"審計日誌列表", "system.menu.action.addTop":"新增頂級菜單", "system.menu.action.addChild":"新增子菜單", @@ -57,14 +65,5 @@ "system.monitor.log.tab.download":"日誌下載", "system.monitor.log.tab.level":"日誌級別", - "rawPassword": "原密碼", - "newPassword": "新密碼", - "confirmNewPassword": "確認新密碼", - "accountExpired": "過期", - "accountLocked": "鎖定", - "credentialsExpired": "密碼過期", - "parameter.system":"系統", - "parameter.system.homePage":"首頁", - "parameter.login.encodePassword":"登錄頁面密碼加密" } diff --git a/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json index b761693f..567483c8 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.platform.system.frontend/src/i18n/messages_zh_CN.json @@ -1,4 +1,8 @@ { + "parameter.system":"系统", + "parameter.system.homePage":"首页", + "parameter.login.encodePassword":"登录页面密码加密", + "menu.system" : "系统管理", "menu.system.corporation" : "法人管理", "menu.system.user" : "用户管理", @@ -17,33 +21,39 @@ "menu.system.monitor.resources" : "系统资源", "menu.system.license" : "许可证管理", - "system.org.gridTitle":"机构树", - "system.announcement.gridTitle":"公告列表", - "system.monitor.auditlog.gridTitle":"审计日志列表", - "system.user.grid.title":"用户列表", - "system.user.action.addUser":"添加用户", - "system.user.action.addAllUser":"添加所有用户", - "system.user.action.removeUser":"移除用户", - "system.user.action.removeAllUser":"移除所有用户", - "system.user.action.setPassword":"设置密码", - "system.user.action.setAllPassword":"设置所有密码", - "system.user.action.resetPassword":"重置密码", - "system.user.action.resetAllPassword":"重置所有密码", - "system.user.confirm.resetPassword":"您确定要重置用户密码吗?", - "system.user.confirm.resetAllPassword":"您确定要重置所有用户密码吗?", + "system.user.grid.toolbar.setPassword":"设置密码", + "system.user.grid.toolbar.setAllPassword":"设置所有密码", + "system.user.grid.toolbar.resetPassword":"重置密码", + "system.user.grid.toolbar.resetPassword.tip":"您确定要重置用户密码吗?", + "system.user.grid.toolbar.resetAllPassword":"重置所有密码", + "system.user.grid.toolbar.resetAllPassword.tip":"您确定要重置所有用户密码吗?", + "system.user.selectRole.grid.title":"角色列表", + "system.user.selectRole.grid.toolbar.addRole":"添加角色", + "system.user.selectRole.grid.toolbar.addAllRole":"添加所有角色", + "system.user.selectRole.grid.toolbar.addAllRole.tip":"您确定要给用户添加所有角色吗?", + "system.user.selectRole.grid.toolbar.removeRole":"移除角色", + "system.user.selectRole.grid.toolbar.removeRole.tip":"您确定要移除用户的角色吗?", + "system.user.selectRole.grid.toolbar.removeAllRole":"移除所有角色", + "system.user.selectRole.grid.toolbar.removeAllRole.tip":"您确定要将用户的所有角色移除吗?", + "system.user.selectRole.dialog.title":"可选角色列表", "system.role.grid.title":"角色列表", - "system.role.action.addRole":"添加角色", - "system.role.action.addAllRole":"添加所有角色", - "system.role.action.addAllRole.confirm":"您确定要给 {userName} ({userLoginName}) 用户添加所有角色吗?", - "system.role.action.removeRole":"移除角色", - "system.role.action.removeRole.confirm":"您确定要移除 {userName} ({userLoginName}) 用户的角色 {roleCode} ({roleName}) 吗?", - "system.role.action.removeRole.confirms":"您确定要移除 {userName} ({userLoginName}) 用户的 {counter} 个角色吗?", - "system.role.action.removeAllRole":"移除所有角色", - "system.role.action.removeAllRole.confirm":"您确定要将 {userName} ({userLoginName}) 用户的所有角色移除吗?", + "system.role.selectUser.grid.title":"用户列表", + "system.role.selectUser.grid.toolbar.addUser":"添加用户", + "system.role.selectUser.grid.toolbar.addAllUser":"添加所有用户", + "system.role.selectUser.grid.toolbar.addAllUser.tip":"您确定要给角色添加所有用户吗?", + "system.role.selectUser.grid.toolbar.removeUser":"移除用户", + "system.role.selectUser.grid.toolbar.removeUser.tip":"您确定要移除角色的用户吗?", + "system.role.selectUser.grid.toolbar.removeAllUser":"移除所有用户", + "system.role.selectUser.grid.toolbar.removeAllUser.tip":"您确定要移除角色的所有用户吗?", + "system.role.selectUser.dialog.title":"可选用户列表", - "system.selectRoleByUserDialog.title":"可选角色列表", + + + "system.org.gridTitle":"机构树", + "system.announcement.gridTitle":"公告列表", + "system.monitor.auditlog.gridTitle":"审计日志列表", "system.org.grid.title":"机构树", @@ -59,14 +69,5 @@ "system.monitor.log.tab.level":"日志级别", - "rawPassword": "原密码", - "newPassword": "新密码", - "confirmNewPassword": "确认新密码", - "accountExpired": "过期", - "accountLocked": "锁定", - "credentialsExpired": "密码过期", - - "parameter.system":"系统", - "parameter.system.homePage":"首页", - "parameter.login.encodePassword":"登录页面密码加密" + } diff --git a/io.sc.platform.system.frontend/src/views/role/Role.vue b/io.sc.platform.system.frontend/src/views/role/Role.vue index 30483faf..55b70a25 100644 --- a/io.sc.platform.system.frontend/src/views/role/Role.vue +++ b/io.sc.platform.system.frontend/src/views/role/Role.vue @@ -1,311 +1,277 @@ diff --git a/io.sc.platform.system.frontend/src/views/user/SelectRoleDialog.vue b/io.sc.platform.system.frontend/src/views/user/SelectRoleDialog.vue index 627454e6..0415ef3f 100644 --- a/io.sc.platform.system.frontend/src/views/user/SelectRoleDialog.vue +++ b/io.sc.platform.system.frontend/src/views/user/SelectRoleDialog.vue @@ -16,9 +16,7 @@ many: roleIds, }) .then((response) => { - axios.get(Environment.apiContextPath('/api/system/role/queryRolesByUser?userId=') + userId).then((response) => { - roleGridRef.replaceRows(response.data.content); - }); + roleGridRef?.refresh(); close(); }); }, @@ -59,12 +57,7 @@ { name: 'status', label: t('status'), - format: (value, row) => { - return { - componentType: RoleStatusTag, - attrs: row, - }; - }, + format: Formater.enableTag(), }, { name: 'lastModifier', label: t('lastModifier') }, { name: 'lastModifyDate', label: t('lastModifyDate') }, @@ -77,7 +70,6 @@ import { ref, nextTick } from 'vue'; import { useI18n } from 'vue-i18n'; import { axios, Environment, Tools, EnumTools, Options, Formater } from 'platform-core'; -import RoleStatusTag from './RoleStatusTag.vue'; const { t } = useI18n(); @@ -89,11 +81,10 @@ EnumTools.fetch('io.sc.platform.orm.api.enums.DataComeFrom').then((data) => { DataComeFromEnum.value = data; }); -let userId, userGridRef, roleGridRef; +let userId, roleGridRef; const open = (param: object) => { userId = param.userId; - userGridRef = param.userGrid; roleGridRef = param.roleGrid; dialogRef.value.show(); diff --git a/io.sc.platform.system.frontend/src/views/user/SetPasswordDialog.vue b/io.sc.platform.system.frontend/src/views/user/SetPasswordDialog.vue index 66fc1217..4a214b14 100644 --- a/io.sc.platform.system.frontend/src/views/user/SetPasswordDialog.vue +++ b/io.sc.platform.system.frontend/src/views/user/SetPasswordDialog.vue @@ -7,7 +7,8 @@ :can-maximize="false" :buttons="[ { - label: $t('submit'), + label: $t('confirm'), + noCaps: true, click: () => { axios .post(Environment.apiContextPath('/api/system/user/' + actionType), { diff --git a/io.sc.platform.system.frontend/src/views/user/User.vue b/io.sc.platform.system.frontend/src/views/user/User.vue index 3cd5db22..f980c42f 100644 --- a/io.sc.platform.system.frontend/src/views/user/User.vue +++ b/io.sc.platform.system.frontend/src/views/user/User.vue @@ -6,11 +6,12 @@ ref="userGridRef" :title="$t('system.user.grid.title')" selection="multiple" + :data-url="Environment.apiContextPath('/api/system/user')" :query-form-fields="[ { name: 'loginName', label: $t('loginName'), type: 'text' }, { name: 'userName', label: $t('userName'), type: 'text' }, - { name: 'enable', label: $t('isEnable'), type: 'select', options: Options.yesNo() }, - { name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum) }, + { name: 'enable', label: $t('isEnable'), type: 'select', options: Options.yesNo(), queryOperator: 'equals' }, + { name: 'dataComeFrom', label: $t('dataComeFrom'), type: 'select', options: Options.enum(DataComeFromEnum), queryOperator: 'equals' }, ]" :toolbar-configure="{ noIcon: false }" :toolbar-actions="[ @@ -24,7 +25,7 @@ 'separator', { name: 'setPassword', - label: $t('system.user.action.setPassword'), + label: $t('system.user.grid.toolbar.setPassword'), icon: 'bi-shield-check', enableIf: function (selecteds) { return selecteds.length > 0; @@ -35,7 +36,7 @@ }, { name: 'setAllPassword', - label: $t('system.user.action.setAllPassword'), + label: $t('system.user.grid.toolbar.setAllPassword'), icon: 'bi-shield', enableIf: function (selecteds) { return true; @@ -47,29 +48,29 @@ 'separator', { name: 'resetPassword', - label: $t('system.user.action.resetPassword'), + label: $t('system.user.grid.toolbar.resetPassword'), icon: 'bi-shield-fill-check', enableIf: function (selecteds) { return selecteds.length > 0; }, click: function (selecteds) { - DialogManager.confirm(t('system.user.confirm.resetPassword'), () => { + DialogManager.confirm($t('system.user.grid.toolbar.resetPassword.tip'), () => { const userIds = Tools.extractProperties(selecteds, 'id'); axios.post(Environment.apiContextPath('/api/system/user/resetPassword'), userIds).then(() => { - NotifyManager.info(t('operationSuccess')); + NotifyManager.info($t('operationSuccess')); }); }); }, }, { name: 'resetAllPassword', - label: $t('system.user.action.resetAllPassword'), + label: $t('system.user.grid.toolbar.resetAllPassword'), icon: 'bi-shield-fill', enableIf: function (selecteds) { return true; }, click: function () { - DialogManager.confirm($t('system.user.confirm.resetAllPassword'), () => { + DialogManager.confirm($t('system.user.grid.toolbar.resetAllPassword.tip'), () => { axios.post(Environment.apiContextPath('/api/system/user/resetAllPassword')).then(() => { setPasswordDialogRef.value.hide(); NotifyManager.info($t('operationSuccess')); @@ -81,8 +82,6 @@ 'view', 'export', ]" - :data-url="Environment.apiContextPath('/api/system/user')" - row-key="id" :columns="[ { name: 'loginName', label: $t('loginName') }, { name: 'userName', label: $t('userName') }, @@ -166,7 +165,6 @@ }" @row-click=" (evt, row, index) => { - console.log(row.id); currentSelectedUserId = row.id; roleGridRef?.refresh(); orgTreeGridRef?.refresh(); @@ -177,7 +175,7 @@ diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java index f617c4d8..adeabb69 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java +++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java @@ -37,6 +37,8 @@ import org.springframework.util.StringUtils; import javax.persistence.criteria.Join; import javax.persistence.criteria.JoinType; +import javax.persistence.criteria.Root; +import javax.persistence.criteria.Subquery; import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import java.sql.PreparedStatement; @@ -186,8 +188,19 @@ public class UserServiceImpl extends DaoServiceImpl queryUsersByRole(String roleId, QueryParameter queryParameter) throws Exception { if(StringUtils.hasText(roleId)) { Specification specification = (root, query, criteriaBuilder) -> { - Join join = root.join("roles"); - return criteriaBuilder.equal(join.get("id"), roleId); + Subquery subquery =query.subquery(Integer.class); + // select 1 + subquery.select(criteriaBuilder.literal(1)); + + // from sys_user_role,sys_role + Root subQueryRoot =subquery.correlate(root); + Join join = subQueryRoot.join("roles"); + + // where sys_user.id_='xxx' + subquery.where(criteriaBuilder.equal(join.get("id"), roleId)); + + // where exists (...) + return criteriaBuilder.exists(subquery); }; return this.query(specification, queryParameter); } @@ -197,12 +210,23 @@ public class UserServiceImpl extends DaoServiceImpl queryOtherUsersByRole(String roleId, QueryParameter queryParameter) throws Exception { if(StringUtils.hasText(roleId)) { - Specification specification = (root, query, criteriaBuilder) -> { - query.distinct(true); - Join join = root.join("roles", JoinType.LEFT); - return criteriaBuilder.or(criteriaBuilder.isNull(join.get("id")),criteriaBuilder.notEqual(join.get("id"), roleId)); + Specification baseSpecification = (root, query, criteriaBuilder) -> { + Subquery subquery =query.subquery(Integer.class); + // select 1 + subquery.select(criteriaBuilder.literal(1)); + + // from sys_user_role,sys_role + Root subQueryRoot =subquery.correlate(root); + Join join = subQueryRoot.join("roles"); + + // where sys_user.id_='xxx' + subquery.where(criteriaBuilder.equal(join.get("id"), roleId)); + + // where exists (...) + return criteriaBuilder.not(criteriaBuilder.exists(subquery)); }; - return this.query(specification, queryParameter); + Specification specification =buildSpecification(queryParameter); + return this.query(baseSpecification.and(specification), queryParameter); } return QueryResult.emptyPage(); }