diff --git a/io.sc.engine.rule.frontend/src/views/shared/TestcaseParameterGrid.vue b/io.sc.engine.rule.frontend/src/views/shared/TestcaseParameterGrid.vue index 15e8397f..acd37eca 100644 --- a/io.sc.engine.rule.frontend/src/views/shared/TestcaseParameterGrid.vue +++ b/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; }, }, { diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java index 422c4422..71c71e2a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/DictionaryEntity.java @@ -43,7 +43,7 @@ public class DictionaryEntity extends CorporationAuditorEntity imp @Column(name="ID_", length=36) @Size(max=36) protected String id; - + //代码 @Column(name="CODE_", length=254) @Size(max=254) diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json index b8fd535c..a683e658 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.2.28", + "version": "8.2.29", "description": "前端核心包,用于快速构建前端的脚手架", "//main": "库的主文件", "main": "dist/platform-core.js", 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 75507df7..48375061 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 @@ -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 = '
') { return new ReplaceFormater(token, replacer).formater(); } diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 5e4d4f33..68bbf6fc 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.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", diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/validation/CodeValidator.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/validation/CodeValidator.java new file mode 100644 index 00000000..507e6a2d --- /dev/null +++ b/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 { + @Override + public void initialize(Code constraintAnnotation) { + ConstraintValidator.super.initialize(constraintAnnotation); + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext context) { + System.out.println(">>>>>>>>" + value); + return false; + } + + +} diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/validation/annotation/Code.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/validation/annotation/Code.java new file mode 100644 index 00000000..d9515779 --- /dev/null +++ b/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[] payload() default { }; + + @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE }) + @Retention(RUNTIME) + @Documented + @interface List { + Code[] value(); + } +} diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index 77d083e6..ab72bbea 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/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", @@ -122,4 +122,4 @@ "vue-router": "4.5.0", "xml-formatter": "3.6.3" } -} \ No newline at end of file +} diff --git a/io.sc.platform.developer.frontend/src/components/index.ts b/io.sc.platform.developer.frontend/src/components/index.ts index d3767f04..d61ff478 100644 --- a/io.sc.platform.developer.frontend/src/components/index.ts +++ b/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, diff --git a/io.sc.platform.developer.frontend/src/i18n/messages.json b/io.sc.platform.developer.frontend/src/i18n/messages.json index 960d8787..7d641139 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages.json +++ b/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" } diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json index 07f40dc2..d0ee0868 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json +++ b/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": "導入結果" } diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json index a46a57b8..6aca4d7b 100644 --- a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json +++ b/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": "导入结果" } diff --git a/io.sc.platform.developer.frontend/src/menus/menus.json b/io.sc.platform.developer.frontend/src/menus/menus.json index 448c678e..bd0d6dc8 100644 --- a/io.sc.platform.developer.frontend/src/menus/menus.json +++ b/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"}, diff --git a/io.sc.platform.developer.frontend/src/routes/routes.json b/io.sc.platform.developer.frontend/src/routes/routes.json index ac3b6e7d..8bb1499f 100644 --- a/io.sc.platform.developer.frontend/src/routes/routes.json +++ b/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": {} } ] 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 b3f5c7b0..e7b98021 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/ApplicationProperties.vue +++ b/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 + '
'; - } - return result; - }, + format: Formater.join('
'), + title: Formater.join('\n'), }, { width: 200, name: 'configurationFileUrl', label: $t('url') }, ]" @@ -29,5 +23,5 @@ 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 30a410b1..9ebed79a 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/FrontendModule.vue +++ b/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 + '
'; - } - return result; - }, + format: Formater.join('
'), + 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 + '
'; - } - return result; - }, + format: Formater.join('
'), + title: Formater.join('\n'), }, - { width: 200, name: 'configurationFileUrl', label: $t('url'), sortable: false }, + { width: 100, 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 253de387..6c17b98a 100644 --- a/io.sc.platform.developer.frontend/src/views/plugin/Security.vue +++ b/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 + '
'; - } - return result; - }, + format: Formater.join('
'), + title: Formater.join('\n'), }, - { width: 500, name: 'configurationFileUrl', label: $t('url'), sortable: false }, + { width: 350, name: 'configurationFileUrl', label: $t('url'), sortable: false }, ]" > diff --git a/io.sc.platform.developer/src/main/java/io/sc/platform/developer/tools/controller/ToolsWebController.java b/io.sc.platform.developer/src/main/java/io/sc/platform/developer/tools/controller/ToolsWebController.java new file mode 100644 index 00000000..ca1e9011 --- /dev/null +++ b/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)); + } + } +} diff --git a/io.sc.platform.developer/src/main/resources/META-INF/platform/plugins/components.json b/io.sc.platform.developer/src/main/resources/META-INF/platform/plugins/components.json index 61c35fef..b35e8f15 100644 --- a/io.sc.platform.developer/src/main/resources/META-INF/platform/plugins/components.json +++ b/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" ] } \ No newline at end of file diff --git a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java b/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java index ce8bce3e..1b586292 100644 --- a/io.sc.platform.system/src/main/java/io/sc/platform/system/menu/service/impl/MenuServiceImpl.java +++ b/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 entities =pluginConverter.fromVo(result); entities =treeBuilder.buildAndGetRoots(entities); for(MenuEntity entity : entities){ + entity.setParent(null);//导入到菜单树的根目录下 entity.clearId(); } repository.saveAll(entities); diff --git a/io.sc.standard.frontend/src/views/standard/FinancialReportingSubject.vue b/io.sc.standard.frontend/src/views/standard/FinancialReportingSubject.vue index 50921765..7f8a5b09 100644 --- a/io.sc.standard.frontend/src/views/standard/FinancialReportingSubject.vue +++ b/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) {