Browse Source

1. 前端发布 8.2.29

2. 前端增加 Formater.join 用于格式化数组
3. 后端开发者工具增加上传功能
4. 修复导入菜单贡献项 bug
main
wangshaoping 2 months ago
parent
commit
728483e69d
  1. 12
      io.sc.engine.rule.frontend/src/views/shared/TestcaseParameterGrid.vue
  2. 2
      io.sc.platform.core.frontend/package.json
  3. 5
      io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts
  4. 4
      io.sc.platform.core.frontend/template-project/package.json
  5. 21
      io.sc.platform.core/src/main/java/io/sc/platform/core/validation/CodeValidator.java
  6. 43
      io.sc.platform.core/src/main/java/io/sc/platform/core/validation/annotation/Code.java
  7. 2
      io.sc.platform.developer.frontend/package.json
  8. 2
      io.sc.platform.developer.frontend/src/components/index.ts
  9. 112
      io.sc.platform.developer.frontend/src/i18n/messages.json
  10. 112
      io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json
  11. 112
      io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json
  12. 4
      io.sc.platform.developer.frontend/src/menus/menus.json
  13. 124
      io.sc.platform.developer.frontend/src/routes/routes.json
  14. 12
      io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue
  15. 26
      io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue
  16. 16
      io.sc.platform.developer.frontend/src/views/plugin/Security.vue
  17. 24
      io.sc.platform.developer/src/main/java/io/sc/platform/developer/tools/controller/ToolsWebController.java
  18. 3
      io.sc.platform.developer/src/main/resources/META-INF/platform/plugins/components.json
  19. 1
      io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java
  20. 8
      io.sc.standard.frontend/src/views/standard/FinancialReportingSubject.vue

12
io.sc.engine.rule.frontend/src/views/shared/TestcaseParameterGrid.vue

@ -85,8 +85,8 @@
format: (value: any, row: any) => {
return Tools.escapeHtml(value);
},
title: (args: any) => {
return args.value;
title: (value: any, row: any) => {
return value;
},
},
{
@ -100,8 +100,8 @@
}
return value;
},
title: (args: any) => {
return args.value;
title: (value: any, row: any) => {
return value;
},
},
{
@ -121,8 +121,8 @@
format: (value: any, row: any) => {
return Tools.escapeHtml(value);
},
title: (args: any) => {
return args.value;
title: (value: any, row: any) => {
return value;
},
},
{

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.28",
"version": "8.2.29",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",

5
io.sc.platform.core.frontend/src/platform/components-ext/formater/index.ts

@ -8,6 +8,7 @@ import { simpleClassNameFormater } from './SimpleClassNameFormater';
import { SplitFormater } from './SplitFormater';
import { ReplaceFormater } from './ReplaceFormater';
import { i18nFormater } from './I18nFormater';
import { JoinFormater } from './JoinFormater';
import { percentFormater } from './PercentFormater';
import { thousandsFormater } from './ThousandsFormater';
@ -57,6 +58,10 @@ class Formater {
return new SplitFormater(spliter, replacer).formater();
}
public static join(joiner: string) {
return new JoinFormater(joiner).formater();
}
public static replaceAll(token: string = '\n', replacer: string = '<br/>') {
return new ReplaceFormater(token, replacer).formater();
}

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{
"name": "platform-core",
"version": "8.2.28",
"version": "8.2.29",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@ -110,7 +110,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.4",
"pinia": "2.2.6",
"platform-core": "8.2.28",
"platform-core": "8.2.29",
"quasar": "2.17.4",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.5",

21
io.sc.platform.core/src/main/java/io/sc/platform/core/validation/CodeValidator.java

@ -0,0 +1,21 @@
package io.sc.platform.core.validation;
import io.sc.platform.core.validation.annotation.Code;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class CodeValidator implements ConstraintValidator<Code, String> {
@Override
public void initialize(Code constraintAnnotation) {
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
System.out.println(">>>>>>>>" + value);
return false;
}
}

43
io.sc.platform.core/src/main/java/io/sc/platform/core/validation/annotation/Code.java

@ -0,0 +1,43 @@
package io.sc.platform.core.validation.annotation;
import io.sc.platform.core.validation.CodeValidator;
import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.constraints.Pattern;
import java.lang.annotation.Documented;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Repeatable(Code.List.class)
@Documented
@Constraint(validatedBy= CodeValidator.class)
public @interface Code {
/**
* @return the error message template
*/
String message() default "{javax.validation.constraints.Pattern.message}";
/**
* @return the groups the constraint belongs to
*/
Class<?>[] groups() default { };
/**
* @return the payload associated to the constraint
*/
Class<? extends Payload>[] payload() default { };
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@Documented
@interface List {
Code[] value();
}
}

2
io.sc.platform.developer.frontend/package.json

@ -111,7 +111,7 @@
"node-sql-parser": "5.3.4",
"pinia": "2.2.6",
"pinia-undo": "0.2.4",
"platform-core": "8.2.28",
"platform-core": "8.2.29",
"quasar": "2.17.4",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.5",

2
io.sc.platform.developer.frontend/src/components/index.ts

@ -28,6 +28,7 @@ import component_developer_plugin_SystemProperties from '@/views/plugin/SystemPr
import component_developer_backend_importLiquibase from '@/views/backend/ImportLiquibase.vue';
import component_developer_backend_exportLiquibase from '@/views/backend/ExportLiquibase.vue';
import component_developer_backend_sql from '@/views/backend/sql/Sql.vue';
import component_developer_backend_upload from '@/views/backend/Upload.vue';
import component_developer_frontend_Icons from '@/views/frontend/Icons.vue';
import component_developer_frontend_SvgEditor from '@/views/frontend/SvgEditor.vue';
import component_developer_frontend_SvgPathEditor from '@/views/frontend/SvgPathEditor.vue';
@ -60,6 +61,7 @@ const localComponents = {
'component.developer.backend.importLiquibase': component_developer_backend_importLiquibase,
'component.developer.backend.exportLiquibase': component_developer_backend_exportLiquibase,
'component.developer.backend.sql': component_developer_backend_sql,
'component.developer.backend.upload': component_developer_backend_upload,
'component.developer.frontend.Icons': component_developer_frontend_Icons,
'component.developer.frontend.SvgEditor': component_developer_frontend_SvgEditor,
'component.developer.frontend.SvgPathEditor': component_developer_frontend_SvgPathEditor,

112
io.sc.platform.developer.frontend/src/i18n/messages.json

@ -1,68 +1,70 @@
{
"menu.developer" : "Developer Tools",
"menu.developer.help" : "Developer Help",
"menu.developer.springboot" : "Spring Boot Container",
"menu.developer.springboot.bean" : "Bean",
"menu.developer.springboot.mapping" : "Request Mapping",
"menu.developer.springboot.environment" : "Environment",
"menu.developer.springboot.autoconfigure" : "Auto Configure",
"menu.developer": "Developer Tools",
"menu.developer.help": "Developer Help",
"menu.developer.springboot": "Spring Boot Container",
"menu.developer.springboot.bean": "Bean",
"menu.developer.springboot.mapping": "Request Mapping",
"menu.developer.springboot.environment": "Environment",
"menu.developer.springboot.autoconfigure": "Auto Configure",
"menu.developer.plugin" : "Platform Plugins",
"menu.developer.plugin.applicationProperties" : "Application Properties",
"menu.developer.plugin.components" : "Auto Scan Components",
"menu.developer.plugin.directories" : "Directories",
"menu.developer.plugin.initializer" : "Initializer",
"menu.developer.plugin.jsonSerializers" : "Json Serializer",
"menu.developer.plugin.messages" : "I18n Messages",
"menu.developer.plugin.restartProperties" : "Restart Properties",
"menu.developer.plugin.security" : "Security",
"menu.developer.plugin.p6spy" : "p6spy",
"menu.developer.plugin.systemProperties" : "System Properties",
"menu.developer.plugin.parameters" : "System Parameter",
"menu.developer.plugin.swagger" : "Swagger",
"menu.developer.plugin.repositories" : "JPA Repository",
"menu.developer.plugin.liquibase" : "Liquibase",
"menu.developer.plugin.frontendModule" : "Front End Module",
"menu.developer.plugin.frontendRoutes" : "Front End Route",
"menu.developer.plugin.menus" : "Menu",
"menu.developer.plugin.ws" : "WebService",
"menu.developer.plugin": "Platform Plugins",
"menu.developer.plugin.applicationProperties": "Application Properties",
"menu.developer.plugin.components": "Auto Scan Components",
"menu.developer.plugin.directories": "Directories",
"menu.developer.plugin.initializer": "Initializer",
"menu.developer.plugin.jsonSerializers": "Json Serializer",
"menu.developer.plugin.messages": "I18n Messages",
"menu.developer.plugin.restartProperties": "Restart Properties",
"menu.developer.plugin.security": "Security",
"menu.developer.plugin.p6spy": "p6spy",
"menu.developer.plugin.systemProperties": "System Properties",
"menu.developer.plugin.parameters": "System Parameter",
"menu.developer.plugin.swagger": "Swagger",
"menu.developer.plugin.repositories": "JPA Repository",
"menu.developer.plugin.liquibase": "Liquibase",
"menu.developer.plugin.frontendModule": "Front End Module",
"menu.developer.plugin.frontendRoutes": "Front End Route",
"menu.developer.plugin.menus": "Menu",
"menu.developer.plugin.ws": "WebService",
"menu.developer.backend" : "Back End Tools",
"menu.developer.backend.import.liquibase" : "Data Import",
"menu.developer.backend.export.liquibase" : "Data Export",
"menu.developer.backend.sql" : "SQL",
"menu.developer.backend": "Back End Tools",
"menu.developer.backend.import.liquibase": "Data Import",
"menu.developer.backend.export.liquibase": "Data Export",
"menu.developer.backend.sql": "SQL",
"menu.developer.backend.upload": "Upload File",
"menu.developer.backend.upload.pleaseSelectFile": "Please select a file to upload.",
"menu.developer.frontend" : "Front End Tools",
"menu.developer.frontend.icons" : "Icons",
"menu.developer.frontend": "Front End Tools",
"menu.developer.frontend.icons": "Icons",
"menu.developer.frontend.svgEditor": "SVG Editor",
"menu.developer.frontend.svgPathEditor": "SVG Path Editor",
"menu.developer.frontend.svgToPath": "SVG to PATH",
"developer.backend.import.liquibase.deleteFirst" : "Delete data before import?",
"developer.backend.import.liquibase.import.tip" : "Are you sure to import?",
"developer.backend.import.liquibase.deleteFirst": "Delete data before import?",
"developer.backend.import.liquibase.import.tip": "Are you sure to import?",
"developer.backend.export.liquibase.datasource" : "Datasource",
"developer.backend.export.liquibase.schema" : "Schema",
"developer.backend.export.liquibase.tables" : "Tables",
"developer.backend.export.liquibase.export.tip" : "Are you sure to export?",
"developer.backend.export.liquibase.datasource": "Datasource",
"developer.backend.export.liquibase.schema": "Schema",
"developer.backend.export.liquibase.tables": "Tables",
"developer.backend.export.liquibase.export.tip": "Are you sure to export?",
"developer.backend.sql.datasource" : "Datasource",
"developer.backend.sql.schema" : "Schema",
"developer.backend.sql.action.execute" : "Execute",
"developer.backend.sql.action.executeAll" : "Execute All",
"developer.backend.sql.action.import" : "Import",
"developer.backend.sql.datasource": "Datasource",
"developer.backend.sql.schema": "Schema",
"developer.backend.sql.action.execute": "Execute",
"developer.backend.sql.action.executeAll": "Execute All",
"developer.backend.sql.action.import": "Import",
"developer.backend.sql.import.dialog.title" : "Data Import",
"developer.backend.sql.import.dialog.step.upload" : "Upload File",
"developer.backend.sql.import.dialog.step.upload.fileTip" : "Please select a .xlsx or .csv file",
"developer.backend.sql.import.dialog.step.dataView" : "View Data",
"developer.backend.sql.import.dialog.step.mapping" : "Table and field mapping",
"developer.backend.sql.import.dialog.title": "Data Import",
"developer.backend.sql.import.dialog.step.upload": "Upload File",
"developer.backend.sql.import.dialog.step.upload.fileTip": "Please select a .xlsx or .csv file",
"developer.backend.sql.import.dialog.step.dataView": "View Data",
"developer.backend.sql.import.dialog.step.mapping": "Table and field mapping",
"developer.backend.sql.import.dialog.step.mapping.table": "Table Name:",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex" : "Field Name Row Index",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no" : "Excel No.",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName" : "Field Name",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType" : "Field Type",
"developer.backend.sql.import.dialog.step.import" : "Import",
"developer.backend.sql.import.dialog.step.import.progress" : "Current Running Task:",
"developer.backend.sql.import.dialog.step.result" : "Result",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex": "Field Name Row Index",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no": "Excel No.",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName": "Field Name",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType": "Field Type",
"developer.backend.sql.import.dialog.step.import": "Import",
"developer.backend.sql.import.dialog.step.import.progress": "Current Running Task:",
"developer.backend.sql.import.dialog.step.result": "Result"
}

112
io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json

@ -1,68 +1,70 @@
{
"menu.developer" : "開發者工具",
"menu.developer.help" : "開發者幫助文檔",
"menu.developer.springboot" : "Spring Boot 容器",
"menu.developer.springboot.bean" : "Bean",
"menu.developer.springboot.mapping" : "Request Mapping",
"menu.developer.springboot.environment" : "Environment",
"menu.developer.springboot.autoconfigure" : "Auto Configure",
"menu.developer": "開發者工具",
"menu.developer.help": "開發者幫助文檔",
"menu.developer.springboot": "Spring Boot 容器",
"menu.developer.springboot.bean": "Bean",
"menu.developer.springboot.mapping": "Request Mapping",
"menu.developer.springboot.environment": "Environment",
"menu.developer.springboot.autoconfigure": "Auto Configure",
"menu.developer.plugin" : "平台插件",
"menu.developer.plugin.applicationProperties" : "Application Properties",
"menu.developer.plugin.components" : "自動掃描組件",
"menu.developer.plugin.directories" : "目錄",
"menu.developer.plugin.initializer" : "初始化器",
"menu.developer.plugin.jsonSerializers" : "Json 序列化器",
"menu.developer.plugin.messages" : "國際化多語言消息",
"menu.developer.plugin.restartProperties" : "Restart Properties",
"menu.developer.plugin.security" : "安全",
"menu.developer.plugin.p6spy" : "p6spy",
"menu.developer.plugin.systemProperties" : "System Properties",
"menu.developer.plugin.parameters" : "系統參數",
"menu.developer.plugin.swagger" : "Swagger",
"menu.developer.plugin.repositories" : "JPA Repository",
"menu.developer.plugin.liquibase" : "Liquibase",
"menu.developer.plugin.frontendModule" : "前端模塊",
"menu.developer.plugin.frontendRoutes" : "前端路由",
"menu.developer.plugin.menus" : "菜單",
"menu.developer.plugin.ws" : "Web 服務",
"menu.developer.plugin": "平台插件",
"menu.developer.plugin.applicationProperties": "Application Properties",
"menu.developer.plugin.components": "自動掃描組件",
"menu.developer.plugin.directories": "目錄",
"menu.developer.plugin.initializer": "初始化器",
"menu.developer.plugin.jsonSerializers": "Json 序列化器",
"menu.developer.plugin.messages": "國際化多語言消息",
"menu.developer.plugin.restartProperties": "Restart Properties",
"menu.developer.plugin.security": "安全",
"menu.developer.plugin.p6spy": "p6spy",
"menu.developer.plugin.systemProperties": "System Properties",
"menu.developer.plugin.parameters": "系統參數",
"menu.developer.plugin.swagger": "Swagger",
"menu.developer.plugin.repositories": "JPA Repository",
"menu.developer.plugin.liquibase": "Liquibase",
"menu.developer.plugin.frontendModule": "前端模塊",
"menu.developer.plugin.frontendRoutes": "前端路由",
"menu.developer.plugin.menus": "菜單",
"menu.developer.plugin.ws": "Web 服務",
"menu.developer.backend" : "後端工具",
"menu.developer.backend.import.liquibase" : "數據導入",
"menu.developer.backend.export.liquibase" : "數據導出",
"menu.developer.backend.sql" : "SQL",
"menu.developer.backend": "後端工具",
"menu.developer.backend.import.liquibase": "數據導入",
"menu.developer.backend.export.liquibase": "數據導出",
"menu.developer.backend.sql": "SQL",
"menu.developer.backend.upload": "上傳文件",
"menu.developer.backend.upload.pleaseSelectFile": "請選擇一個本地文件, 然後重試。",
"menu.developer.frontend" : "前端工具",
"menu.developer.frontend.icons" : "圖標庫",
"menu.developer.frontend": "前端工具",
"menu.developer.frontend.icons": "圖標庫",
"menu.developer.frontend.svgEditor": "SVG 編輯器",
"menu.developer.frontend.svgPathEditor": "SVG 路徑編輯器",
"menu.developer.frontend.svgToPath": "SVG 轉 PATH",
"developer.backend.import.liquibase.deleteFirst" : "導入數據前首先刪除原數據?",
"developer.backend.import.liquibase.import.tip" : "您確定要導入嗎?",
"developer.backend.import.liquibase.deleteFirst": "導入數據前首先刪除原數據?",
"developer.backend.import.liquibase.import.tip": "您確定要導入嗎?",
"developer.backend.export.liquibase.datasource" : "數據源",
"developer.backend.export.liquibase.schema" : "方案",
"developer.backend.export.liquibase.tables" : "表",
"developer.backend.export.liquibase.export.tip" : "您確定要導出嗎?",
"developer.backend.export.liquibase.datasource": "數據源",
"developer.backend.export.liquibase.schema": "方案",
"developer.backend.export.liquibase.tables": "表",
"developer.backend.export.liquibase.export.tip": "您確定要導出嗎?",
"developer.backend.sql.datasource" : "數據源",
"developer.backend.sql.schema" : "方案",
"developer.backend.sql.action.execute" : "執行",
"developer.backend.sql.action.executeAll" : "執行所有",
"developer.backend.sql.action.import" : "數據導入",
"developer.backend.sql.datasource": "數據源",
"developer.backend.sql.schema": "方案",
"developer.backend.sql.action.execute": "執行",
"developer.backend.sql.action.executeAll": "執行所有",
"developer.backend.sql.action.import": "數據導入",
"developer.backend.sql.import.dialog.title" : "數據導入",
"developer.backend.sql.import.dialog.step.upload" : "上傳文件",
"developer.backend.sql.import.dialog.step.upload.fileTip" : "請選擇一個 .xlsx 或 .csv 文件",
"developer.backend.sql.import.dialog.step.dataView" : "查看數據",
"developer.backend.sql.import.dialog.step.mapping" : "表和字段映射",
"developer.backend.sql.import.dialog.title": "數據導入",
"developer.backend.sql.import.dialog.step.upload": "上傳文件",
"developer.backend.sql.import.dialog.step.upload.fileTip": "請選擇一個 .xlsx 或 .csv 文件",
"developer.backend.sql.import.dialog.step.dataView": "查看數據",
"developer.backend.sql.import.dialog.step.mapping": "表和字段映射",
"developer.backend.sql.import.dialog.step.mapping.table": "數據庫表名:",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex" : "數據庫表字段名行號",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no" : "Excel 序號",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName" : "字段名",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType" : "數據類型",
"developer.backend.sql.import.dialog.step.import" : "導入",
"developer.backend.sql.import.dialog.step.import.progress" : "當前正在執行的任務進度:",
"developer.backend.sql.import.dialog.step.result" : "導入結果",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex": "數據庫表字段名行號",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no": "Excel 序號",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName": "字段名",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType": "數據類型",
"developer.backend.sql.import.dialog.step.import": "導入",
"developer.backend.sql.import.dialog.step.import.progress": "當前正在執行的任務進度:",
"developer.backend.sql.import.dialog.step.result": "導入結果"
}

112
io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json

@ -1,68 +1,70 @@
{
"menu.developer" : "开发者工具",
"menu.developer.help" : "开发者帮助文档",
"menu.developer.springboot" : "Spring Boot 容器",
"menu.developer.springboot.bean" : "Bean",
"menu.developer.springboot.mapping" : "Request Mapping",
"menu.developer.springboot.environment" : "Environment",
"menu.developer.springboot.autoconfigure" : "Auto Configure",
"menu.developer": "开发者工具",
"menu.developer.help": "开发者帮助文档",
"menu.developer.springboot": "Spring Boot 容器",
"menu.developer.springboot.bean": "Bean",
"menu.developer.springboot.mapping": "Request Mapping",
"menu.developer.springboot.environment": "Environment",
"menu.developer.springboot.autoconfigure": "Auto Configure",
"menu.developer.plugin" : "平台插件",
"menu.developer.plugin.applicationProperties" : "Application Properties",
"menu.developer.plugin.components" : "自动扫描组件",
"menu.developer.plugin.directories" : "目录",
"menu.developer.plugin.initializer" : "初始化器",
"menu.developer.plugin.jsonSerializers" : "Json 序列化器",
"menu.developer.plugin.messages" : "国际化多语言消息",
"menu.developer.plugin.restartProperties" : "Restart Properties",
"menu.developer.plugin.security" : "安全",
"menu.developer.plugin.p6spy" : "p6spy",
"menu.developer.plugin.systemProperties" : "System Properties",
"menu.developer.plugin.parameters" : "系统参数",
"menu.developer.plugin.swagger" : "Swagger",
"menu.developer.plugin.repositories" : "JPA Repository",
"menu.developer.plugin.liquibase" : "Liquibase",
"menu.developer.plugin.frontendModule" : "前端模块",
"menu.developer.plugin.frontendRoutes" : "前端路由",
"menu.developer.plugin.menus" : "菜单",
"menu.developer.plugin.ws" : "Web 服务",
"menu.developer.plugin": "平台插件",
"menu.developer.plugin.applicationProperties": "Application Properties",
"menu.developer.plugin.components": "自动扫描组件",
"menu.developer.plugin.directories": "目录",
"menu.developer.plugin.initializer": "初始化器",
"menu.developer.plugin.jsonSerializers": "Json 序列化器",
"menu.developer.plugin.messages": "国际化多语言消息",
"menu.developer.plugin.restartProperties": "Restart Properties",
"menu.developer.plugin.security": "安全",
"menu.developer.plugin.p6spy": "p6spy",
"menu.developer.plugin.systemProperties": "System Properties",
"menu.developer.plugin.parameters": "系统参数",
"menu.developer.plugin.swagger": "Swagger",
"menu.developer.plugin.repositories": "JPA Repository",
"menu.developer.plugin.liquibase": "Liquibase",
"menu.developer.plugin.frontendModule": "前端模块",
"menu.developer.plugin.frontendRoutes": "前端路由",
"menu.developer.plugin.menus": "菜单",
"menu.developer.plugin.ws": "Web 服务",
"menu.developer.backend" : "后端工具",
"menu.developer.backend.import.liquibase" : "数据导入",
"menu.developer.backend.export.liquibase" : "数据导出",
"menu.developer.backend.sql" : "SQL",
"menu.developer.backend": "后端工具",
"menu.developer.backend.import.liquibase": "数据导入",
"menu.developer.backend.export.liquibase": "数据导出",
"menu.developer.backend.sql": "SQL",
"menu.developer.backend.upload": "上传文件",
"menu.developer.backend.upload.pleaseSelectFile": "请选择一个本地文件, 然后重试。",
"menu.developer.frontend" : "前端工具",
"menu.developer.frontend.icons" : "图标库",
"menu.developer.frontend": "前端工具",
"menu.developer.frontend.icons": "图标库",
"menu.developer.frontend.svgEditor": "SVG 编辑器",
"menu.developer.frontend.svgPathEditor": "SVG 路径编辑器",
"menu.developer.frontend.svgToPath": "SVG 转 PATH",
"developer.backend.import.liquibase.deleteFirst" : "导入数据前首先删除原数据?",
"developer.backend.import.liquibase.import.tip" : "您确定要导入吗?",
"developer.backend.import.liquibase.deleteFirst": "导入数据前首先删除原数据?",
"developer.backend.import.liquibase.import.tip": "您确定要导入吗?",
"developer.backend.export.liquibase.datasource" : "数据源",
"developer.backend.export.liquibase.schema" : "方案",
"developer.backend.export.liquibase.tables" : "表",
"developer.backend.export.liquibase.export.tip" : "您确定要导出吗?",
"developer.backend.export.liquibase.datasource": "数据源",
"developer.backend.export.liquibase.schema": "方案",
"developer.backend.export.liquibase.tables": "表",
"developer.backend.export.liquibase.export.tip": "您确定要导出吗?",
"developer.backend.sql.datasource" : "数据源",
"developer.backend.sql.schema" : "方案",
"developer.backend.sql.action.execute" : "执行",
"developer.backend.sql.action.executeAll" : "执行所有",
"developer.backend.sql.action.import" : "数据导入",
"developer.backend.sql.datasource": "数据源",
"developer.backend.sql.schema": "方案",
"developer.backend.sql.action.execute": "执行",
"developer.backend.sql.action.executeAll": "执行所有",
"developer.backend.sql.action.import": "数据导入",
"developer.backend.sql.import.dialog.title" : "数据导入",
"developer.backend.sql.import.dialog.step.upload" : "上传文件",
"developer.backend.sql.import.dialog.step.upload.fileTip" : "请选择一个 .xlsx 或 .csv 文件",
"developer.backend.sql.import.dialog.step.dataView" : "查看数据",
"developer.backend.sql.import.dialog.step.mapping" : "表和字段映射",
"developer.backend.sql.import.dialog.title": "数据导入",
"developer.backend.sql.import.dialog.step.upload": "上传文件",
"developer.backend.sql.import.dialog.step.upload.fileTip": "请选择一个 .xlsx 或 .csv 文件",
"developer.backend.sql.import.dialog.step.dataView": "查看数据",
"developer.backend.sql.import.dialog.step.mapping": "表和字段映射",
"developer.backend.sql.import.dialog.step.mapping.table": "数据库表名:",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex" : "数据库表字段名行号",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no" : "Excel 序号",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName" : "字段名",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType" : "数据类型",
"developer.backend.sql.import.dialog.step.import" : "导入",
"developer.backend.sql.import.dialog.step.import.progress" : "当前正在执行的任务进度:",
"developer.backend.sql.import.dialog.step.result" : "导入结果",
"developer.backend.sql.import.dialog.step.mapping.fieldNameRowIndex": "数据库表字段名行号",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.no": "Excel 序号",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.fieldName": "字段名",
"developer.backend.sql.import.dialog.step.mapping.grid.entity.javaType": "数据类型",
"developer.backend.sql.import.dialog.step.import": "导入",
"developer.backend.sql.import.dialog.step.import.progress": "当前正在执行的任务进度:",
"developer.backend.sql.import.dialog.step.result": "导入结果"
}

4
io.sc.platform.developer.frontend/src/menus/menus.json

@ -78,7 +78,9 @@
/*//*/
{"type":"ROUTE", "order":200, "parentId":"menu.developer.backend", "id":"menu.developer.backend.export.liquibase", "titleI18nKey":"menu.developer.backend.export.liquibase", "icon":"bi-database-down", "routeName":"route.developer.backend.export.liquibase"},
/*//SQL*/
{"type":"ROUTE", "order":200, "parentId":"menu.developer.backend", "id":"menu.developer.backend.sql", "titleI18nKey":"menu.developer.backend.sql", "icon":"bi-filetype-sql", "routeName":"route.developer.backend.sql"},
{"type":"ROUTE", "order":300, "parentId":"menu.developer.backend", "id":"menu.developer.backend.sql", "titleI18nKey":"menu.developer.backend.sql", "icon":"bi-filetype-sql", "routeName":"route.developer.backend.sql"},
/*//*/
{"type":"ROUTE", "order":400, "parentId":"menu.developer.backend", "id":"menu.developer.backend.upload", "titleI18nKey":"menu.developer.backend.upload", "icon":"cloud_upload", "routeName":"route.developer.backend.upload"},
/*/*/
{"type":"GROUP", "order":600, "parentId":"menu.developer", "id":"menu.developer.frontend", "titleI18nKey":"menu.developer.frontend", "icon":"bi-layout-text-window"},

124
io.sc.platform.developer.frontend/src/routes/routes.json

@ -9,9 +9,7 @@
"componentPath": "@/views/Help.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/help/**/*"
]
"permissions": ["/system/developer/help/**/*"]
}
},
{
@ -24,9 +22,7 @@
"componentPath": "@/views/springboot/Autoconfigure.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/springboot/autoconfigure/**/*"
]
"permissions": ["/system/developer/springboot/autoconfigure/**/*"]
}
},
{
@ -39,9 +35,7 @@
"componentPath": "@/views/springboot/Bean.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/springboot/bean/**/*"
]
"permissions": ["/system/developer/springboot/bean/**/*"]
}
},
{
@ -54,9 +48,7 @@
"componentPath": "@/views/springboot/Environment.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/springboot/environment/**/*"
]
"permissions": ["/system/developer/springboot/environment/**/*"]
}
},
{
@ -69,9 +61,7 @@
"componentPath": "@/views/springboot/Mapping.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/springboot/mapping/**/*"
]
"permissions": ["/system/developer/springboot/mapping/**/*"]
}
},
{
@ -84,9 +74,7 @@
"componentPath": "@/views/plugin/ApplicationProperties.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/applicationProperties/**/*"
]
"permissions": ["/system/developer/plugin/applicationProperties/**/*"]
}
},
{
@ -99,9 +87,7 @@
"componentPath": "@/views/plugin/Components.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/components/**/*"
]
"permissions": ["/system/developer/plugin/components/**/*"]
}
},
{
@ -114,9 +100,7 @@
"componentPath": "@/views/plugin/Directories.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/directories/**/*"
]
"permissions": ["/system/developer/plugin/directories/**/*"]
}
},
{
@ -129,9 +113,7 @@
"componentPath": "@/views/plugin/FrontendModule.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/frontendModule/**/*"
]
"permissions": ["/system/developer/plugin/frontendModule/**/*"]
}
},
{
@ -144,9 +126,7 @@
"componentPath": "@/views/plugin/FrontendRoutes.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/frontendRoutes/**/*"
]
"permissions": ["/system/developer/plugin/frontendRoutes/**/*"]
}
},
{
@ -159,9 +139,7 @@
"componentPath": "@/views/plugin/Initializer.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/initializer/**/*"
]
"permissions": ["/system/developer/plugin/initializer/**/*"]
}
},
{
@ -174,9 +152,7 @@
"componentPath": "@/views/plugin/JsonSerializers.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/jsonSerializers/**/*"
]
"permissions": ["/system/developer/plugin/jsonSerializers/**/*"]
}
},
{
@ -189,9 +165,7 @@
"componentPath": "@/views/plugin/Menus.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/menus/**/*"
]
"permissions": ["/system/developer/plugin/menus/**/*"]
}
},
{
@ -204,9 +178,7 @@
"componentPath": "@/views/plugin/Messages.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/messages/**/*"
]
"permissions": ["/system/developer/plugin/messages/**/*"]
}
},
{
@ -219,9 +191,7 @@
"componentPath": "@/views/plugin/P6spy.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/p6spy/**/*"
]
"permissions": ["/system/developer/plugin/p6spy/**/*"]
}
},
{
@ -234,9 +204,7 @@
"componentPath": "@/views/plugin/Parameters.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/parameters/**/*"
]
"permissions": ["/system/developer/plugin/parameters/**/*"]
}
},
{
@ -249,9 +217,7 @@
"componentPath": "@/views/plugin/Repositories.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/repositories/**/*"
]
"permissions": ["/system/developer/plugin/repositories/**/*"]
}
},
{
@ -264,9 +230,7 @@
"componentPath": "@/views/plugin/Liquibase.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/repositories/**/*"
]
"permissions": ["/system/developer/plugin/repositories/**/*"]
}
},
{
@ -279,9 +243,7 @@
"componentPath": "@/views/plugin/RestartProperties.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/restartProperties/**/*"
]
"permissions": ["/system/developer/plugin/restartProperties/**/*"]
}
},
{
@ -294,9 +256,7 @@
"componentPath": "@/views/plugin/Security.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/security/**/*"
]
"permissions": ["/system/developer/plugin/security/**/*"]
}
},
{
@ -309,9 +269,7 @@
"componentPath": "@/views/plugin/Ws.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/ws/**/*"
]
"permissions": ["/system/developer/plugin/ws/**/*"]
}
},
{
@ -324,9 +282,7 @@
"componentPath": "@/views/plugin/Swagger.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/swagger/**/*"
]
"permissions": ["/system/developer/plugin/swagger/**/*"]
}
},
{
@ -339,9 +295,7 @@
"componentPath": "@/views/plugin/SystemProperties.vue",
"redirect": null,
"meta": {
"permissions": [
"/system/developer/plugin/systemProperties/**/*"
]
"permissions": ["/system/developer/plugin/systemProperties/**/*"]
}
},
{
@ -353,8 +307,7 @@
"component": "component.developer.backend.importLiquibase",
"componentPath": "@/views/backend/ImportLiquibase.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
"name": "route.developer.backend.export.liquibase",
@ -365,8 +318,7 @@
"component": "component.developer.backend.exportLiquibase",
"componentPath": "@/views/backend/ExportLiquibase.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
"name": "route.developer.backend.sql",
@ -377,8 +329,18 @@
"component": "component.developer.backend.sql",
"componentPath": "@/views/backend/sql/Sql.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
"name": "route.developer.backend.upload",
"path": "developer/backend/upload",
"parent": "/",
"priority": 0,
"module": "io.sc.platform.developer.frontend",
"component": "component.developer.backend.upload",
"componentPath": "@/views/backend/Upload.vue",
"redirect": null,
"meta": {}
},
{
@ -390,8 +352,7 @@
"component": "component.developer.frontend.Icons",
"componentPath": "@/views/frontend/Icons.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
"name": "route.developer.frontend.svgEditor",
@ -402,8 +363,7 @@
"component": "component.developer.frontend.SvgEditor",
"componentPath": "@/views/frontend/SvgEditor.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
"name": "route.developer.frontend.svgPathEditor",
@ -414,8 +374,7 @@
"component": "component.developer.frontend.SvgPathEditor",
"componentPath": "@/views/frontend/SvgPathEditor.vue",
"redirect": null,
"meta": {
}
"meta": {}
},
{
@ -427,7 +386,6 @@
"component": "component.developer.frontend.SvgToPath",
"componentPath": "@/views/frontend/SvgToPath.vue",
"redirect": null,
"meta": {
}
"meta": {}
}
]

12
io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue

@ -14,14 +14,8 @@
name: 'properties',
label: $t('properties'),
sortable: false,
format: (properties) => {
properties = properties || [];
let result = '';
for (const property of properties) {
result += property + '<br/>';
}
return result;
},
format: Formater.join('<br/>'),
title: Formater.join('\n'),
},
{ width: 200, name: 'configurationFileUrl', label: $t('url') },
]"
@ -29,5 +23,5 @@
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
import { Environment } from 'platform-core';
import { Environment, Formater } from 'platform-core';
</script>

26
io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue

@ -12,34 +12,22 @@
name: 'components',
label: $t('component'),
sortable: false,
format: (components) => {
components = components || [];
let result = '';
for (const component of components) {
result += component + '<br/>';
}
return result;
},
format: Formater.join('<br/>'),
title: Formater.join('\n'),
},
{
width: 300,
width: 400,
name: 'resources',
label: $t('resource'),
sortable: false,
format: (resources) => {
resources = resources || [];
let result = '';
for (const resource of resources) {
result += resource + '<br/>';
}
return result;
},
format: Formater.join('<br/>'),
title: Formater.join('\n'),
},
{ width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false },
{ width: 100, name: 'configurationFileUrl', label: $t('url'), sortable: false },
]"
></w-grid>
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
import { Environment } from 'platform-core';
import { Environment, Formater } from 'platform-core';
</script>

16
io.sc.platform.developer.frontend/src/views/plugin/Security.vue

@ -7,24 +7,18 @@
:pageable="false"
:columns="[
{
width: 200,
width: 350,
name: 'permitPatterns',
label: $t('ignored'),
sortable: false,
format: (permitPatterns) => {
permitPatterns = permitPatterns || [];
let result = '';
for (const permitPattern of permitPatterns) {
result += permitPattern + '<br/>';
}
return result;
format: Formater.join('<br/>'),
title: Formater.join('\n'),
},
},
{ width: 500, name: 'configurationFileUrl', label: $t('url'), sortable: false },
{ width: 350, name: 'configurationFileUrl', label: $t('url'), sortable: false },
]"
></w-grid>
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
import { Environment } from 'platform-core';
import { Environment, Formater } from 'platform-core';
</script>

24
io.sc.platform.developer/src/main/java/io/sc/platform/developer/tools/controller/ToolsWebController.java

@ -0,0 +1,24 @@
package io.sc.platform.developer.tools.controller;
import io.sc.platform.core.DirectoryManager;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.Locale;
@RestController("io.sc.platform.developer.sql.controller.ToolsWebController")
@RequestMapping("/api/developer/tools")
public class ToolsWebController {
@PostMapping(value="upload")
public void upload(@RequestParam(name="file",required=false) MultipartFile multipartFile,Locale locale) throws Exception{
if(multipartFile!=null && !multipartFile.isEmpty()) {
String file =DirectoryManager.getInstance().getByName("dir.work.web.upload") + "/" + multipartFile.getOriginalFilename();
multipartFile.transferTo(new File(file));
}
}
}

3
io.sc.platform.developer/src/main/resources/META-INF/platform/plugins/components.json

@ -3,6 +3,7 @@
"io.sc.platform.developer.controller.plugins",
"io.sc.platform.developer.controller.springboot",
"io.sc.platform.developer.sql.controller",
"io.sc.platform.developer.sql.service.impl"
"io.sc.platform.developer.sql.service.impl",
"io.sc.platform.developer.tools.controller"
]
}

1
io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java

@ -472,6 +472,7 @@ public class MenuServiceImpl extends DaoServiceImpl<MenuEntity, String, MenuRepo
List<MenuEntity> entities =pluginConverter.fromVo(result);
entities =treeBuilder.buildAndGetRoots(entities);
for(MenuEntity entity : entities){
entity.setParent(null);//导入到菜单树的根目录下
entity.clearId();
}
repository.saveAll(entities);

8
io.sc.standard.frontend/src/views/standard/FinancialReportingSubject.vue

@ -103,8 +103,8 @@
width: 200,
name: 'name',
label: $t('name'),
title: (args: any) => {
return args.value;
title: (value: any, row: any) => {
return value;
},
format: (value: any, row: any) => {
if (value) {
@ -126,8 +126,8 @@
width: 200,
name: 'mappingName',
label: $t('name'),
title: (args: any) => {
return args.value;
title: (value: any, row: any) => {
return value;
},
format: (value: any, row: any) => {
if (value) {

Loading…
Cancel
Save