diff --git a/gradle.properties b/gradle.properties
index 6327bfd0..9bab43b1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -36,9 +36,9 @@ application_version=1.0.0
# platform
###########################################################
platform_group=io.sc
-platform_version=8.1.20
+platform_version=8.1.22
platform_plugin_version=8.1.13
-platform_core_frontend_version=8.1.83
+platform_core_frontend_version=8.1.88
###########################################################
# dependencies version
diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json
index df67488a..e28fc76e 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.87",
+ "version": "8.1.92",
"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 516f8018..3d794ed6 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
@@ -21,4 +21,11 @@ const enableTagFormater = (value) => {
};
};
-export { yesNoFormater, trueFalseFormater, enableTagFormater };
+const successFailedTagFormater = (value) => {
+ return {
+ componentType: 'WSuccessFailedTag',
+ attrs: { success: value },
+ };
+};
+
+export { yesNoFormater, trueFalseFormater, enableTagFormater, successFailedTagFormater };
diff --git a/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts b/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts
index 90e1cd7d..6c82d4a3 100644
--- a/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts
+++ b/io.sc.platform.core.frontend/src/platform/components-ext/formater/EnumFormater.ts
@@ -1,19 +1,25 @@
import type { OptionItemType } from '@/platform/types';
import { i18n } from '@/platform/plugin';
+import { Tools } from '@/platform/utils';
class EnumFormater {
#enumMap = {};
constructor(options: OptionItemType[]) {
for (const option of options) {
- this.#enumMap[option.value] = option.label;
+ if (!Tools.isUndefinedOrNull(option.value)) {
+ this.#enumMap[option.value] = option.label;
+ }
}
}
public formater() {
const enumMap = this.#enumMap;
return (value) => {
- return i18n.global.t(enumMap[value]);
+ if (!Tools.isUndefinedOrNull(value)) {
+ return i18n.global.t(enumMap[value]);
+ }
+ return '';
};
}
}
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 6083e4f4..2bf264dd 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,5 +1,5 @@
import type { EnumType } from '@/platform/types';
-import { yesNoFormater, trueFalseFormater, enableTagFormater } from './BooleanFormater';
+import { yesNoFormater, trueFalseFormater, enableTagFormater, successFailedTagFormater } from './BooleanFormater';
import { dateOnlyFormater } from './DatetimeFormater';
import { menuTypeFormater } from './MenuTypeFormater';
import { EnumFormater } from './EnumFormater';
@@ -11,6 +11,10 @@ class Formater {
return enableTagFormater;
}
+ public static successTag() {
+ return successFailedTagFormater;
+ }
+
public static yesNo() {
return yesNoFormater;
}
diff --git a/io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue b/io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue
similarity index 92%
rename from io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue
rename to io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue
index b31df7cd..095917a1 100644
--- a/io.sc.platform.core.frontend/src/platform/components/form/elements/WEditor.vue
+++ b/io.sc.platform.core.frontend/src/platform/components/form/elements/WSelectUserText.vue
@@ -2,18 +2,19 @@
* {{ attrs.label }}
+
@@ -22,7 +23,7 @@
import { ref, computed, defineProps, useAttrs } from 'vue';
import { FormValidators } from '@/platform/components';
-const textareaRef = ref();
+const textRef = ref();
const attrs = useAttrs();
const inRules = attrs.rules;
const props = defineProps({
@@ -65,8 +66,8 @@ const rulesComputed = computed(() => {
} else if (hideIfComputed.value) {
rules = [];
}
- if (textareaRef?.value) {
- textareaRef.value.resetValidation();
+ if (textRef?.value) {
+ textRef.value.resetValidation();
}
return rules;
});
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 b5d42198..a472af4f 100644
--- a/io.sc.platform.core.frontend/src/platform/components/index.ts
+++ b/io.sc.platform.core.frontend/src/platform/components/index.ts
@@ -27,6 +27,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';
+import WSuccessFailedTag from './tag/WSuccessFailedTag.vue';
export default {
install: (app: App) => {
@@ -57,6 +58,7 @@ export default {
app.component('WGrid', WGrid);
app.component('WToolbar', WToolbar);
app.component('WEnableTag', WEnableTag);
+ app.component('WSuccessFailedTag', WSuccessFailedTag);
},
};
@@ -83,6 +85,7 @@ export {
WGrid,
WToolbar,
WEnableTag,
+ WSuccessFailedTag,
};
export { PlatformIconEnum } from './utils';
diff --git a/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue b/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue
new file mode 100644
index 00000000..07143f98
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/tag/WSuccessFailedTag.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts
index c063cd01..9ffed838 100644
--- a/io.sc.platform.core.frontend/src/platform/index.ts
+++ b/io.sc.platform.core.frontend/src/platform/index.ts
@@ -120,6 +120,7 @@ export {
WGrid,
WTreeGrid,
WEnableTag,
+ WSuccessFailedTag,
} from './components';
export { PlatformIconEnum } from './components';
diff --git a/io.sc.platform.core.frontend/src/views/TreeGrid.vue b/io.sc.platform.core.frontend/src/views/TreeGrid.vue
index 16438869..91556376 100644
--- a/io.sc.platform.core.frontend/src/views/TreeGrid.vue
+++ b/io.sc.platform.core.frontend/src/views/TreeGrid.vue
@@ -1,56 +1,58 @@
-
+ :viewer="{
+ panel: {
+ columnNum: 1,
+ fields: [
+ { name: 'id', label: $t('id') },
+ { name: 'code', label: $t('code') },
+ { name: 'lang', label: $t('language') },
+ { name: 'message', label: $t('i18nMessage') },
+ { name: 'dataComeFrom', label: $t('dataComeFrom') },
+ { name: 'creator', label: $t('creator') },
+ { name: 'createDate', label: $t('createDate') },
+ { name: 'lastModifier', label: $t('lastModifier') },
+ { name: 'lastModifyDate', label: $t('lastModifyDate') },
+ { name: 'corporationCode', label: $t('corporationCode') },
+ ],
+ },
+ }"
+ @row-click="(evt, row, index) => {}"
+ >
+
-
diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json
index 5c4867b9..03654e94 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.87",
+ "version": "8.1.92",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@@ -92,7 +92,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.87",
+ "platform-core": "8.1.92",
"quasar": "2.14.2",
"tailwindcss": "3.4.0",
"vue": "3.4.3",
diff --git a/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue b/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue
index 16438869..91556376 100644
--- a/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue
+++ b/io.sc.platform.core.frontend/template-project/src/views/TreeGrid.vue
@@ -1,56 +1,58 @@
-
+ :viewer="{
+ panel: {
+ columnNum: 1,
+ fields: [
+ { name: 'id', label: $t('id') },
+ { name: 'code', label: $t('code') },
+ { name: 'lang', label: $t('language') },
+ { name: 'message', label: $t('i18nMessage') },
+ { name: 'dataComeFrom', label: $t('dataComeFrom') },
+ { name: 'creator', label: $t('creator') },
+ { name: 'createDate', label: $t('createDate') },
+ { name: 'lastModifier', label: $t('lastModifier') },
+ { name: 'lastModifyDate', label: $t('lastModifyDate') },
+ { name: 'corporationCode', label: $t('corporationCode') },
+ ],
+ },
+ }"
+ @row-click="(evt, row, index) => {}"
+ >
+
-
diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java
index 21abf486..8ac3c473 100644
--- a/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java
+++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/support/FileWrapper.java
@@ -1,18 +1,22 @@
package io.sc.platform.core.support;
+import io.sc.platform.core.util.StringUtil;
+
import java.util.Date;
public class FileWrapper {
private String name;
- private Date lastModified;
- private String size;
+ private Date lastModifyDate;
+ private long size;
+ private String commaSize;
public FileWrapper(){}
- public FileWrapper(String name,Date lastModified,String size){
+ public FileWrapper(String name,Date lastModifyDate,long size){
this.name =name;
- this.lastModified =lastModified;
+ this.lastModifyDate =lastModifyDate;
this.size =size;
+ this.commaSize = StringUtil.commaStyle(size);
}
public String getName() {
@@ -21,16 +25,27 @@ public class FileWrapper {
public void setName(String name) {
this.name = name;
}
- public Date getLastModified() {
- return lastModified;
+
+ public Date getLastModifyDate() {
+ return lastModifyDate;
}
- public void setLastModified(Date lastModified) {
- this.lastModified = lastModified;
+
+ public void setLastModifyDate(Date lastModifyDate) {
+ this.lastModifyDate = lastModifyDate;
}
- public String getSize() {
+
+ public long getSize() {
return size;
}
- public void setSize(String size) {
+ public void setSize(long size) {
this.size = size;
}
+
+ public String getCommaSize() {
+ return commaSize;
+ }
+
+ public void setCommaSize(String commaSize) {
+ this.commaSize = commaSize;
+ }
}
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 2016f8a8..e0e52932 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
@@ -115,6 +115,7 @@ query=Query
redirect=Redirect
refresh=Refresh
remove=Remove
+removeAll=Remove All
reset=Reset
restore=Restore
reverse=Reverse
@@ -156,4 +157,5 @@ confirmNewPassword=Confirm New Password
accountExpired=Expired
accountLocked=Locked
credentialsExpired=Credentials Expired
-javascript=JavaScript
+icon=Icon
+i18nMessage=I18N Message
\ No newline at end of file
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 710b8fa5..3db413c9 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
@@ -115,6 +115,7 @@ query=\u67E5\u8A62
redirect=\u91CD\u5B9A\u5411
refresh=\u5237\u65B0
remove=\u79FB\u9664
+removeAll=\u79FB\u9664\u6240\u6709
reset=\u91CD\u7F6E
restore=\u6062\u5FA9
reverse=\u53CD\u8F49
@@ -156,4 +157,5 @@ confirmNewPassword=\u78BA\u8A8D\u65B0\u5BC6\u78BC
accountExpired=\u904E\u671F
accountLocked=\u9396\u5B9A
credentialsExpired=\u5BC6\u78BC\u904E\u671F
-javascript=JavaScript
+icon=\u5716\u6A19
+i18nMessage=\u591A\u8A9E\u8A00\u6D88\u606F
\ No newline at end of file
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 2e8421c3..552d2ffb 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
@@ -115,6 +115,7 @@ query=\u67E5\u8BE2
redirect=\u91CD\u5B9A\u5411
refresh=\u5237\u65B0
remove=\u79FB\u9664
+removeAll=\u79FB\u9664\u6240\u6709
reset=\u91CD\u7F6E
restore=\u6062\u590D
reverse=\u53CD\u8F6C
@@ -156,4 +157,5 @@ confirmNewPassword=\u786E\u8BA4\u65B0\u5BC6\u7801
accountExpired=\u8FC7\u671F
accountLocked=\u9501\u5B9A
credentialsExpired=\u5BC6\u7801\u8FC7\u671F
-javascript=JavaScript
\ No newline at end of file
+icon=\u56FE\u6807
+i18nMessage=\u591A\u8BED\u8A00\u6D88\u606F
\ 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 7fe8487f..cf550c11 100644
--- a/io.sc.platform.developer.frontend/package.json
+++ b/io.sc.platform.developer.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.frontend",
- "version": "8.1.20",
+ "version": "8.1.22",
"description": "",
"private": false,
"keywords": [],
@@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.83",
+ "platform-core": "8.1.88",
"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/Menus.vue b/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue
index 27af1444..752ddac4 100644
--- a/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue
+++ b/io.sc.platform.developer.frontend/src/views/plugin/Menus.vue
@@ -1,4 +1,79 @@
- Menus
+
-
+
diff --git a/io.sc.platform.gradle/templates/pgp/app/build.gradle b/io.sc.platform.gradle/templates/pgp/app/build.gradle
index cd2ddcf8..e6e470a4 100644
--- a/io.sc.platform.gradle/templates/pgp/app/build.gradle
+++ b/io.sc.platform.gradle/templates/pgp/app/build.gradle
@@ -13,7 +13,11 @@ dependencies {
implementation (
project(":io.sc.platform.app"),
project(":io.sc.platform.developer"),
+
+ //project(":io.sc.platform.job.core"),
+ //project(":io.sc.platform.job.executor"),
//project(":io.sc.platform.job.manager"),
+
)
}
diff --git a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt
index de40ec3f..e8a7f8e9 100644
--- a/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt
+++ b/io.sc.platform.gradle/templates/pgp/app/src/main/java/app/platform/Application.java.txt
@@ -2,12 +2,9 @@ package app.platform;
import io.sc.platform.core.ApplicationLauncher;
import io.sc.platform.core.PlatformSpringBootServletInitializer;
-import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.WebApplicationInitializer;
-import java.sql.Types;
-
/**
* 应用程序入口
*/
diff --git a/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt b/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt
index 655059bd..04bd9898 100644
--- a/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt
+++ b/io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt
@@ -371,8 +371,6 @@ subprojects {
* pnpm sync
*----------------------------------------------------------------*/
task frontendNpmSync(type:Exec){
- commandLine 'cd', '.'
- /*
if(isFrontendProject(file('.')) && !project.name.contains("io.sc.platform.security.frontend")){
workingDir '.'
if(org.gradle.internal.os.OperatingSystem.current().isWindows()){
@@ -386,7 +384,7 @@ subprojects {
}else{
commandLine 'cd', '.'
}
- }*/
+ }
}
tasks.frontendNpmSync.doFirst {
if(isFrontendProject(file('.'))) {
diff --git a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties
index 7a5cf595..9bab43b1 100644
--- a/io.sc.platform.gradle/templates/pgp/setup/gradle.properties
+++ b/io.sc.platform.gradle/templates/pgp/setup/gradle.properties
@@ -36,9 +36,9 @@ application_version=1.0.0
# platform
###########################################################
platform_group=io.sc
-platform_version=8.1.19
+platform_version=8.1.22
platform_plugin_version=8.1.13
-platform_core_frontend_version=8.1.45
+platform_core_frontend_version=8.1.88
###########################################################
# dependencies version
@@ -50,6 +50,7 @@ cxf_version=3.2.7
dm_hibernate_version=8.1.2.192
flowable_version=6.8.0
guava_version=31.1-jre
+ipaddress_version=5.4.0
jackson_version=2.13.5
jasypt_version=2.1.2
jboss_logging_version=3.3.2.Final
@@ -64,6 +65,7 @@ mybatis_version=3.5.10
opencsv_version=5.7.1
oshi_version=6.4.2
p6spy_version=3.9.1
+pinyin4j_version=2.5.1
poi_ooxml_version=3.17
schemacrawler_version=16.19.11
#schemacrawler_version=14.21.02
@@ -71,7 +73,7 @@ spring_boot_version=2.7.18
spring_cloud_alibaba_version=2021.0.4.0
spring_cloud_context_version=3.1.4
spring_cloud_version=2021.0.8
-spring_security_oauth2_authorization_server_version=0.4.4
+spring_security_oauth2_authorization_server_version=0.4.5
spring_statemachine_version=3.2.1
webjars_locator_weblogic_version=0.10
zip4j_version=2.11.5
diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json
index 9a5ea6ae..7e175caa 100644
--- a/io.sc.platform.lcdp.frontend/package.json
+++ b/io.sc.platform.lcdp.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.lcdp.frontend",
- "version": "8.1.20",
+ "version": "8.1.22",
"description": "",
"private": false,
"keywords": [],
@@ -91,7 +91,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.83",
+ "platform-core": "8.1.88",
"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 7f39f5e9..019551f0 100644
--- a/io.sc.platform.mvc.frontend/package.json
+++ b/io.sc.platform.mvc.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.mvc.frontend",
- "version": "8.1.20",
+ "version": "8.1.22",
"description": "",
"private": false,
"keywords": [],
@@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.83",
+ "platform-core": "8.1.88",
"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.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java
index faa34eb9..ce908a88 100644
--- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java
+++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/support/QueryResult.java
@@ -2,7 +2,9 @@ package io.sc.platform.orm.service.support;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -23,4 +25,20 @@ public class QueryResult {
return new PageImpl(Collections.emptyList());
}
}
+
+ public static Page page(List list, Pageable pageable){
+ if(list!=null && !list.isEmpty()) {
+ int page =pageable.getPageNumber();
+ int pageSize =pageable.getPageSize();
+ int total =list.size();
+ int first =pageSize * page;
+ List result =new ArrayList<>();
+ for(int i=first;i(result,pageable,total);
+ }else{
+ return new PageImpl(Collections.emptyList());
+ }
+ }
}
diff --git a/io.sc.platform.security.frontend/package.json b/io.sc.platform.security.frontend/package.json
index 0d1438eb..5ff4acca 100644
--- a/io.sc.platform.security.frontend/package.json
+++ b/io.sc.platform.security.frontend/package.json
@@ -1,10 +1,10 @@
{
"name": "io.sc.platform.security.frontend",
- "version": "8.1.20",
+ "version": "8.1.22",
"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.83"
+ "platform-core": "8.1.88"
}
-}
+}
\ 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 8fcc549d..1677d3e3 100644
--- a/io.sc.platform.system.frontend/package.json
+++ b/io.sc.platform.system.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.system.frontend",
- "version": "8.1.20",
+ "version": "8.1.22",
"description": "",
"private": false,
"keywords": [],
@@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.87",
+ "platform-core": "8.1.92",
"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 d57403c5..274ecdbd 100644
--- a/io.sc.platform.system.frontend/src/i18n/messages.json
+++ b/io.sc.platform.system.frontend/src/i18n/messages.json
@@ -51,6 +51,8 @@
"system.shared.selectMenu.grid.toolbar.save":"Save",
"system.shared.selectMenu.grid.toolbar.save.tip":"Are you sure to update menus?",
+ "system.shared.importMenuPlugin.dialog.title": "Import Menu Plugins",
+
"system.corporation.grid.title":"Corporation Tree",
"system.corporation.grid.toolbar.addTop":"Add Top Corporation",
"system.corporation.grid.toolbar.addChild":"Add Child Corporation",
@@ -66,19 +68,29 @@
"system.role.grid.title":"Role List",
"system.org.grid.title":"Organization Tree",
- "system.org.grid.toolbar.addTop":"Add Top Org",
- "system.org.grid.toolbar.addChild":"Add Child Org",
"system.menu.grid.title":"Menu Tree",
- "system.menu.grid.toolbar.addTop":"Add Top Menu",
- "system.menu.grid.toolbar.addChild":"Add Child Menu",
"system.menu.grid.entity.titleI18nKey":"Title i18n Key",
- "system.menu.grid.entity.routeName":"Title i18n Key",
+ "system.menu.grid.entity.javaScript":"JavaScript",
+ "system.menu.grid.entity.routeName":"Route Name",
+ "system.menu.grid.entity.routeQuery":"Route Query",
+ "system.menu.grid.entity.url":"URL",
+ "system.menu.grid.entity.urlOpenType":"URL Open Type",
"system.announcementManager.grid.title":"Announcement List",
"system.notification.grid.title":"Messages List",
+ "system.i18n.grid.toolbar.removeAll.tip":"Are you sure to remove ALL i18n messages?",
+ "system.i18n.grid.toolbar.importAll.tip":"Are you sure to import ALL i18n messages?",
+
+ "system.monitor.log.viewer.logRows":"The Last Row Count of Log File",
+ "system.monitor.log.viewer.autoRefresh":"Auto Refresh(1 / 2 sec, stop after 300 times auto refreshed)",
+ "system.monitor.log.viewer.action.refreshNow":"Refresh",
+ "system.monitor.log.download.grid.title":"Log File List",
+ "system.monitor.log.level.grid.title":"Log Level List",
+ "system.monitor.log.level.entity.configuredLevel":"Configured",
+ "system.monitor.log.level.entity.effectiveLevel":"Effective",
"system.monitor.log.tab.view":"Log View",
"system.monitor.log.tab.download":"Log Download",
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 3b8e8573..d7f612ed 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
@@ -87,17 +87,35 @@
"system.shared.selectMenu.grid.toolbar.save":"保存",
"system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜單吗?",
+ "system.shared.importMenuPlugin.dialog.title": "導入菜單插件",
+
"system.announcement.gridTitle":"公告列表",
"system.monitor.auditlog.gridTitle":"審計日誌列表",
- "system.menu.action.addTop":"新增頂級菜單",
- "system.menu.action.addChild":"新增子菜單",
+ "system.menu.grid.title":"菜單樹",
+ "system.menu.grid.entity.titleI18nKey":"標題多語言消息鍵",
+ "system.menu.grid.entity.javaScript":"JavaScript",
+ "system.menu.grid.entity.routeName":"路由名稱",
+ "system.menu.grid.entity.routeQuery":"路由查詢參數",
+ "system.menu.grid.entity.url":"URL",
+ "system.menu.grid.entity.urlOpenType":"URL 打開方式",
"system.announcementManager.grid.title":"公告列表",
"system.notification.grid.title":"消息列表",
+ "system.i18n.grid.toolbar.removeAll.tip":"您確定要刪除所有多語言消息嗎?",
+ "system.i18n.grid.toolbar.importAll.tip":"您確定要所導入所有多語言消息嗎?",
+
+ "system.monitor.log.viewer.logRows":"顯示日誌文件最後行數",
+ "system.monitor.log.viewer.autoRefresh":"自動刷新(頻率:1次/2秒,超過 300 次后停止自動刷新)",
+ "system.monitor.log.viewer.action.refreshNow":"刷新",
+ "system.monitor.log.download.grid.title":"日誌文件列表",
+ "system.monitor.log.level.grid.title":"日誌級別列表",
+ "system.monitor.log.level.entity.configuredLevel":"配置級別",
+ "system.monitor.log.level.entity.effectiveLevel":"生效級別",
+
"system.corporation.action.addTop":"新增頂級法人",
"system.corporation.action.addChild":"新增子法人",
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 2a6915d1..9661e87f 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
@@ -51,6 +51,8 @@
"system.shared.selectMenu.grid.toolbar.save":"保存",
"system.shared.selectMenu.grid.toolbar.save.tip":"您确定要更新菜单吗?",
+ "system.shared.importMenuPlugin.dialog.title": "导入菜单插件",
+
"system.corporation.grid.title":"法人树",
"system.corporation.grid.toolbar.addTop":"新增顶级法人",
"system.corporation.grid.toolbar.addChild":"新增子法人",
@@ -66,18 +68,30 @@
"system.role.grid.title":"角色列表",
"system.org.grid.title":"机构树",
- "system.org.grid.toolbar.addTop":"新增顶级机构",
- "system.org.grid.toolbar.addChild":"新增子机构",
"system.menu.grid.title":"菜单树",
- "system.menu.grid.toolbar.addTop":"新增顶级菜单",
- "system.menu.grid.toolbar.addChild":"新增子菜单",
+ "system.menu.grid.entity.titleI18nKey":"标题多语言消息键",
+ "system.menu.grid.entity.javaScript":"JavaScript",
+ "system.menu.grid.entity.routeName":"路由名称",
+ "system.menu.grid.entity.routeQuery":"路由查询参数",
+ "system.menu.grid.entity.url":"URL",
+ "system.menu.grid.entity.urlOpenType":"URL 打开方式",
"system.announcementManager.grid.title":"公告列表",
"system.notification.grid.title":"消息列表",
-
+ "system.i18n.grid.toolbar.removeAll.tip":"您确定要删除所有多语言消息吗?",
+ "system.i18n.grid.toolbar.importAll.tip":"您确定要导入所有多语言消息吗?",
+
+
+ "system.monitor.log.viewer.logRows":"显示日志文件最后行数",
+ "system.monitor.log.viewer.autoRefresh":"自动刷新(频率:1次/2秒,超过 300 次后停止自动刷新)",
+ "system.monitor.log.viewer.action.refreshNow":"刷新",
+ "system.monitor.log.download.grid.title":"日志文件列表",
+ "system.monitor.log.level.grid.title":"日志级别列表",
+ "system.monitor.log.level.entity.configuredLevel":"配置级别",
+ "system.monitor.log.level.entity.effectiveLevel":"生效级别",
"system.announcement.gridTitle":"公告列表",
"system.monitor.auditlog.gridTitle":"审计日志列表",
diff --git a/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue b/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue
index 28bd4a66..5940c582 100644
--- a/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue
+++ b/io.sc.platform.system.frontend/src/views/dictionary/Dictionary.vue
@@ -1,62 +1,63 @@
-
+ {}"
+ >
diff --git a/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue b/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue
new file mode 100644
index 00000000..a162985e
--- /dev/null
+++ b/io.sc.platform.system.frontend/src/views/menu/ImportMenuPluginDialog.vue
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
diff --git a/io.sc.platform.system.frontend/src/views/menu/Menu.vue b/io.sc.platform.system.frontend/src/views/menu/Menu.vue
index a2f850cf..9fafbed5 100644
--- a/io.sc.platform.system.frontend/src/views/menu/Menu.vue
+++ b/io.sc.platform.system.frontend/src/views/menu/Menu.vue
@@ -34,7 +34,10 @@
{
name: 'import',
label: $t('import'),
- click: () => {},
+ icon: 'bi-arrow-right-circle',
+ click: () => {
+ importMenuPluginDialogRef.open();
+ },
},
'separator',
'view',
@@ -44,7 +47,7 @@
{
width: '100%',
name: 'titleI18nKey',
- label: $t('name'),
+ label: $t('system.menu.grid.entity.titleI18nKey'),
sortable: false,
format: (value, row) => {
if (row.type === 'SEPARATOR') {
@@ -66,33 +69,57 @@
:editor="{
dialog: {
width: '600px',
- height: '550px',
+ height: '450px',
},
form: {
colsNum: 1,
fields: [
- { name: 'type', label: $t('type'), type: 'select', required: true, options: Options.enum(MenuTypeEnum, false) },
- { name: 'titleI18nKey', label: $t('titleI18nKey'), type: 'text', required: true },
+ { name: 'type', label: $t('type'), type: 'select', required: true, options: Options.enum(MenuTypeEnum, false), defaultValue: 'GROUP' },
+ { name: 'titleI18nKey', label: $t('system.menu.grid.entity.titleI18nKey'), type: 'text', required: true },
{ name: 'icon', label: $t('icon'), type: 'text' },
{ name: 'enable', label: $t('enable'), type: 'checkbox', defaultValue: true },
{ name: 'order', label: $t('order'), type: 'text' },
{
name: 'javaScript',
- label: $t('javascript'),
+ label: $t('system.menu.grid.entity.javaScript'),
+ type: 'textarea',
+ showIf: (form) => {
+ return form.getFieldValue('type') === 'JAVASCRIPT';
+ },
+ },
+ {
+ name: 'routeName',
+ label: $t('system.menu.grid.entity.routeName'),
type: 'text',
- enableIf: (row) => {
- console.log(row);
+ showIf: (form) => {
+ return form.getFieldValue('type') === 'ROUTE';
+ },
+ },
+ {
+ name: 'routeQuery',
+ label: $t('system.menu.grid.entity.routeQuery'),
+ type: 'text',
+ showIf: (form) => {
+ return form.getFieldValue('type') === 'ROUTE';
+ },
+ },
+ {
+ name: 'url',
+ label: $t('url'),
+ type: 'text',
+ showIf: (form) => {
+ return form.getFieldValue('type') === 'URL';
},
},
- { name: 'routeName', label: $t('routeName'), type: 'text' },
- { name: 'routeQuery', label: $t('routeQuery'), type: 'text' },
- { name: 'url', label: $t('url'), type: 'text' },
{
name: 'urlOpenType',
- label: $t('urlOpenType'),
+ label: $t('system.menu.grid.entity.urlOpenType'),
type: 'select',
options: Options.enum(UrlOpenTypeEnum, false),
defaultValue: 'NEW_WINDOW',
+ showIf: (form) => {
+ return form.getFieldValue('type') === 'URL';
+ },
},
],
},
@@ -167,6 +194,7 @@
+
@@ -177,6 +205,7 @@ import { ref } from 'vue';
import { Environment, axios, EnumTools, Formater, Options } from 'platform-core';
import SelectRoleGrid from '../shared/SelectRoleGrid.vue';
import SelectOrgTreeGrid from '../shared/SelectOrgTreeGrid.vue';
+import ImportMenuPluginDialog from './ImportMenuPluginDialog.vue';
import AddTopMenuDialog from './AddTopMenuDialog.vue';
import AddMenuDialog from './AddMenuDialog.vue';
import EditMenuDialog from './EditMenuDialog.vue';
@@ -189,6 +218,7 @@ console.log(Options.enum(UrlOpenTypeEnum, false));
const menuTreeGridRef = ref();
const roleGridRef = ref();
const orgTreeGridRef = ref();
+const importMenuPluginDialogRef = ref();
const selectedTabRef = ref('role');
const currentSelectedMenuId = ref('');
diff --git a/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue b/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue
index 2eb7e4c5..309ff0e4 100644
--- a/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue
+++ b/io.sc.platform.system.frontend/src/views/monitor/AuditLog.vue
@@ -1,39 +1,93 @@
-
+ {}"
+ >
+
diff --git a/io.sc.platform.system.frontend/src/views/monitor/Log.vue b/io.sc.platform.system.frontend/src/views/monitor/Log.vue
index 73132ca9..3f827028 100644
--- a/io.sc.platform.system.frontend/src/views/monitor/Log.vue
+++ b/io.sc.platform.system.frontend/src/views/monitor/Log.vue
@@ -3,21 +3,21 @@
-
+
@@ -27,43 +27,90 @@
-
-
+
-
-
+
diff --git a/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue b/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue
index 73070a5d..7f470f60 100644
--- a/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue
+++ b/io.sc.platform.system.frontend/src/views/parameter/Parameter.vue
@@ -1,73 +1,91 @@
-
-
-
-
-
-
-
-
-
-
-
+ {}"
+ >
diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java
index e0a297d4..a17b1c23 100644
--- a/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java
+++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/dictionary/jpa/entity/DictionaryEntity.java
@@ -47,7 +47,7 @@ public class DictionaryEntity extends CorporationAuditorEntity {
@Override
public DictionaryVo toVo() {
DictionaryVo vo =new DictionaryVo();
- CorporationAuditorEntity.toVo(vo,this);
+ super.toVo(vo);
vo.setId(this.getId());
vo.setCode(this.getCode());
vo.setValue(this.getValue());
diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java
index 4779d7cc..4115ad0d 100644
--- a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java
+++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/jpa/entity/I18nEntity.java
@@ -52,7 +52,7 @@ public class I18nEntity extends CorporationAuditorEntity {
@Override
public I18nVo toVo() {
I18nVo vo =new I18nVo();
- CorporationAuditorEntity.toVo(vo,this);
+ super.toVo(vo);
vo.setId(this.getId());
vo.setCode(this.getCode());
vo.setLang(this.getLang().toString());
diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java
index 805351b0..7d2f8845 100644
--- a/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java
+++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/i18n/service/impl/I18nServiceImpl.java
@@ -42,6 +42,10 @@ public class I18nServiceImpl extends DaoServiceImpl map) throws Exception{
- service.addMenu(map);
- }
-
- @PostMapping("updateMenu")
- public void updateMenu(@RequestBody Map map) throws Exception{
- service.updateMenu(map);
- }
-
/**
* 列出所有菜单树,并且将角色所拥有的菜单列表作出标记
* @param roleId 角色ID
@@ -157,6 +148,11 @@ public class MenuWebController extends RestCrudController getAllMenuPlugins() throws Exception{
+ return service.getAllMenuPlugins();
+ }
+
/**
* 将菜单插件导入到菜单表中
* @param pluginIds 需要导入的菜单插件ID集合
diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java
index a31abfa6..5c8bfdef 100644
--- a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java
+++ b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/MenuService.java
@@ -7,16 +7,12 @@ import io.sc.platform.system.api.menu.MenuVo;
import io.sc.platform.system.menu.jpa.entity.MenuEntity;
import io.sc.platform.system.menu.jpa.repository.MenuRepository;
import io.sc.platform.system.org.jpa.entity.OrgEntity;
+import io.sc.platform.system.plugins.item.MenuItem;
import java.util.List;
import java.util.Map;
public interface MenuService extends DaoService {
- public void addMenu(Map map) throws Exception;
-
- public void updateMenu(Map map) throws Exception;
-
-
public List getMenusByUser(String userId) throws Exception;
@@ -91,6 +87,7 @@ public interface MenuService extends DaoService wrapper) throws Exception;
+ public List