diff --git a/README.adoc b/README.adoc index 7395026f..40a32873 100644 --- a/README.adoc +++ b/README.adoc @@ -1,3 +1,15 @@ . 用户管理功能中,设置用户机构时,机构树直接展示已经选择的机构,新增“选入”、“选出”功能,用于修改机构 . 用户管理功能中,可修改设置用户所属默认机构,默认角色等 -. \ No newline at end of file +. + + + +DDL: +1. 给 RE_MODEL_PARAMETER_ADDITION 表增加字段 +ALTER TABLE RE_MODEL_PARAMETER_ADDITION ADD LABEL_ varchar(255) NULL COMMENT '组件标题'; +ALTER TABLE RE_MODEL_PARAMETER_ADDITION ADD VALUE_SCALE_ SMALLINT NULL COMMENT '精度(小数位数)'; +ALTER TABLE RE_MODEL_PARAMETER_ADDITION ADD MIN_VALUE_ varchar(255) NULL COMMENT '最小值(包含)'; +ALTER TABLE RE_MODEL_PARAMETER_ADDITION ADD MAX_VALUE_ varchar(255) NULL COMMENT '最大值(包含)'; + +2. 给 RE_MODEL_PARAMETER 表增加字段 +ALTER TABLE RE_MODEL_PARAMETER ADD DISABLE_ON_AUTO_SELECTED_ SMALLINT NULL COMMENT '当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项'; \ No newline at end of file diff --git a/build.gradle b/build.gradle index bcbb5291..3dd82c39 100644 --- a/build.gradle +++ b/build.gradle @@ -337,7 +337,7 @@ subprojects { publications{ publication(MavenPublication){ from components.java - //artifact sourcesJar + artifact sourcesJar //artifact javadocJar versionMapping { usage('java-api') { diff --git a/cips.frontend/package.json b/cips.frontend/package.json index 7843ab86..a0c053ee 100644 --- a/cips.frontend/package.json +++ b/cips.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/erm.frontend/package.json b/erm.frontend/package.json index 4b85e70a..d48fac90 100644 --- a/erm.frontend/package.json +++ b/erm.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/gradle.properties b/gradle.properties index ce958564..544313c3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 org.gradle.configureondemand=true systemProp.org.gradle.internal.publish.checksums.insecure=true org.gradle.parallel=true -org.gradle.workers.max=2 +org.gradle.workers.max=1 ########################################################### # Maven private repository configuration @@ -39,7 +39,7 @@ application_version=1.0.0 platform_group=io.sc platform_version=8.2.32 platform_plugin_version=8.2.10 -platform_core_frontend_version=8.2.122 +platform_core_frontend_version=8.2.123 ########################################################### # dependencies version diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index 7456fcac..278e64f5 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterInOptionAddtion.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterInOptionAddtion.java index fe0440c8..f6b3eb31 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterInOptionAddtion.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterInOptionAddtion.java @@ -7,12 +7,15 @@ public class ParameterInOptionAddtion { protected String code; protected String name; protected String description; - protected QualitativeAdditionComponentType componentType; protected String condition; protected Boolean enable =true; - protected Boolean required =true; protected Integer order; - + protected QualitativeAdditionComponentType componentType; + protected Boolean required =true; + protected String label; + protected Integer valueScale; + protected String minValue; + protected String maxValue; protected Integer textareaHeight; protected Integer textMinLength; protected Integer textMaxLength; @@ -52,14 +55,6 @@ public class ParameterInOptionAddtion { this.description = description; } - public QualitativeAdditionComponentType getComponentType() { - return componentType; - } - - public void setComponentType(QualitativeAdditionComponentType componentType) { - this.componentType = componentType; - } - public String getCondition() { return condition; } @@ -76,6 +71,22 @@ public class ParameterInOptionAddtion { this.enable = enable; } + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public QualitativeAdditionComponentType getComponentType() { + return componentType; + } + + public void setComponentType(QualitativeAdditionComponentType componentType) { + this.componentType = componentType; + } + public Boolean getRequired() { return required; } @@ -84,12 +95,36 @@ public class ParameterInOptionAddtion { this.required = required; } - public Integer getOrder() { - return order; + public String getLabel() { + return label; } - public void setOrder(Integer order) { - this.order = order; + public void setLabel(String label) { + this.label = label; + } + + public Integer getValueScale() { + return valueScale; + } + + public void setValueScale(Integer valueScale) { + this.valueScale = valueScale; + } + + public String getMinValue() { + return minValue; + } + + public void setMinValue(String minValue) { + this.minValue = minValue; + } + + public String getMaxValue() { + return maxValue; + } + + public void setMaxValue(String maxValue) { + this.maxValue = maxValue; } public Integer getTextareaHeight() { diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java index e6aa44c3..218ed177 100644 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java @@ -18,6 +18,8 @@ import com.fasterxml.jackson.annotation.JsonTypeName; @JsonTypeName("IN_OPTION") @JsonIgnoreProperties(ignoreUnknown=true) public class InOptionParameter extends Parameter { + //当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项 + protected Boolean disableOnAutoSelected; //选项列表 protected List options =new ArrayList<>(); //不录项列表 @@ -28,6 +30,12 @@ public class InOptionParameter extends Parameter { return ParameterType.IN_OPTION; } + public Boolean getDisableOnAutoSelected() { + return disableOnAutoSelected; + } + public void setDisableOnAutoSelected(Boolean disableOnAutoSelected) { + this.disableOnAutoSelected = disableOnAutoSelected; + } public List getOptions() { return options; } diff --git a/io.sc.engine.rule.frontend/package.json b/io.sc.engine.rule.frontend/package.json index e3b76dac..88df3b24 100644 --- a/io.sc.engine.rule.frontend/package.json +++ b/io.sc.engine.rule.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.engine.rule.frontend/src/i18n/messages.json b/io.sc.engine.rule.frontend/src/i18n/messages.json index 8a34cdb6..80cab5fa 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages.json @@ -80,6 +80,7 @@ "re.parameter.grid.entity.libVersion": "Library Version", "re.parameter.grid.entity.indicatorCode": "Indicator", "re.parameter.grid.entity.persistentAsIndicator": "Persistent As Indicator", + "re.parameter.grid.entity.disableOnAutoSelected": "Disabled On System Auto Selected a Option", "re.parameter.grid.entity.properties": "Extension Properties", "re.parameter.grid.entity.property.name": "Property Name", "re.parameter.grid.entity.property.value": "Property Value", @@ -102,20 +103,24 @@ "re.option.grid.entity.inputValue": "Input Value", "re.option.grid.entity.value": "Value", "re.option.grid.entity.title": "Title", - "re.option.grid.entity.config": "Configure", + "re.option.grid.entity.config": "Condition of Auto Selected(Auto Select Item When Condition is true)", "re.addition.grid.title": "Addition Items", "re.addition.grid.entity.code": "Code", "re.addition.grid.entity.name": "Name", "re.addition.grid.entity.description": "Description", + "re.addition.grid.entity.condition": "Show Condition(Show the Addition Item When Condition is true)", "re.addition.grid.entity.componentType": "Component Type", - "re.addition.grid.entity.condition": "Condition", - "re.addition.grid.entity.textareaHeight": "Height of Textarea(Unit:pixel)", - "re.addition.grid.entity.textMinLength": "Minimal Length of Text", - "re.addition.grid.entity.textMaxLength": "Maximum Length of Text", + "re.addition.grid.entity.valueScale": "Value Scale", + "re.addition.grid.entity.minValue": "Minimum(Include)", + "re.addition.grid.entity.maxValue": "Maximum(Include)", + "re.addition.grid.entity.textareaHeight": "Height(Unit:pixel)", + "re.addition.grid.entity.textMinLength": "Minimal Length(Include)", + "re.addition.grid.entity.textMaxLength": "Maximum Length(Include)", "re.addition.grid.entity.prompt": "Prompts", - "re.addition.grid.entity.attachmentExtendNames": "Extend Names of Attachment to upload(split by comma when multiple)", - "re.addition.grid.entity.attachmentMaxCount": "Max Count of Attachment to upload", + "re.addition.grid.entity.attachmentExtendNames": "Extend Names of Attachment(split by comma when multiple)", + "re.addition.grid.entity.attachmentExtendNames2": "Extend Names of Attachment(split by comma when multiple, e.g., xlsx, pdf, docx)", + "re.addition.grid.entity.attachmentMaxCount": "Max Count of Attachment", "re.processor.dialog.decisionTree.title": "Decision Tree Designer", "re.processor.dialog.executionFlow.title": "Execution Flow Designer", diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json index 1ae16b76..0f3d17ef 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json @@ -80,6 +80,7 @@ "re.parameter.grid.entity.libVersion": "指標庫版本", "re.parameter.grid.entity.indicatorCode": "指標", "re.parameter.grid.entity.persistentAsIndicator": "是否作為指標存儲", + "re.parameter.grid.entity.disableOnAutoSelected": "當系統自動選擇了輸入選項中的某一項時, 是否禁止用戶選擇其他項", "re.parameter.grid.entity.properties": "擴展屬性", "re.parameter.grid.entity.property.name": "屬性名", "re.parameter.grid.entity.property.value": "屬性值", @@ -102,20 +103,24 @@ "re.option.grid.entity.inputValue": "輸入值", "re.option.grid.entity.value": "計算值", "re.option.grid.entity.title": "顯示文本", - "re.option.grid.entity.config": "配置", + "re.option.grid.entity.config": "自動選擇條件(當條件滿足時,自動選中該項)", "re.addition.grid.title": "補錄項", "re.addition.grid.entity.code": "代碼", "re.addition.grid.entity.name": "名稱", "re.addition.grid.entity.description": "描述", + "re.addition.grid.entity.condition": "顯示條件(當條件成立時,顯示該補錄項)", "re.addition.grid.entity.componentType": "組件類型", - "re.addition.grid.entity.condition": "觸發條件", - "re.addition.grid.entity.textareaHeight": "文本框高度(單位:像素)", - "re.addition.grid.entity.textMinLength": "文本框允許輸入的字符個數(最小值)", - "re.addition.grid.entity.textMaxLength": "文本框允許輸入的字符個數(最大值)", + "re.addition.grid.entity.valueScale": "精度(小數位數)", + "re.addition.grid.entity.minValue": "最小值(包含)", + "re.addition.grid.entity.maxValue": "最大值(包含)", + "re.addition.grid.entity.textareaHeight": "高度(單位:像素)", + "re.addition.grid.entity.textMinLength": "最小長度(包含)", + "re.addition.grid.entity.textMaxLength": "最大長度(包含)", "re.addition.grid.entity.prompt": "提示詞", - "re.addition.grid.entity.attachmentExtendNames": "允許上傳附件的文件擴展名(多個採用逗號分隔)", - "re.addition.grid.entity.attachmentMaxCount": "允許上傳附件的最大個數", + "re.addition.grid.entity.attachmentExtendNames": "附件文件擴展名(多個採用逗號分隔)", + "re.addition.grid.entity.attachmentExtendNames2": "附件文件擴展名(多個採用逗號分隔, 示例: xlsx, pdf, docx)", + "re.addition.grid.entity.attachmentMaxCount": "附件最大個數", "re.processor.dialog.decisionTree.title": "決策樹設計器", "re.processor.dialog.executionFlow.title": "執行流設計器", diff --git a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json index ab591dc3..16f04870 100644 --- a/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json +++ b/io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json @@ -80,6 +80,7 @@ "re.parameter.grid.entity.libVersion": "指标库版本", "re.parameter.grid.entity.indicatorCode": "指标", "re.parameter.grid.entity.persistentAsIndicator": "是否作为指标存储", + "re.parameter.grid.entity.disableOnAutoSelected": "当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项", "re.parameter.grid.entity.properties": "扩展属性", "re.parameter.grid.entity.property.name": "属性名", "re.parameter.grid.entity.property.value": "属性值", @@ -103,20 +104,24 @@ "re.option.grid.entity.inputValue": "输入值", "re.option.grid.entity.value": "计算值", "re.option.grid.entity.title": "显示文本", - "re.option.grid.entity.config": "配置", + "re.option.grid.entity.config": "自动选择条件(当条件满足时,自动选中该项)", "re.addition.grid.title": "补录项", "re.addition.grid.entity.code": "代码", "re.addition.grid.entity.name": "名称", "re.addition.grid.entity.description": "描述", + "re.addition.grid.entity.condition": "显示条件(当条件成立时,显示该补录项)", "re.addition.grid.entity.componentType": "组件类型", - "re.addition.grid.entity.condition": "触发条件", - "re.addition.grid.entity.textareaHeight": "文本框高度(单位:像素)", - "re.addition.grid.entity.textMinLength": "文本框允许输入的字符个数(最小值)", - "re.addition.grid.entity.textMaxLength": "文本框允许输入的字符个数(最大值)", + "re.addition.grid.entity.valueScale": "精度(小数位数)", + "re.addition.grid.entity.minValue": "最小值(包含)", + "re.addition.grid.entity.maxValue": "最大值(包含)", + "re.addition.grid.entity.textareaHeight": "高度(单位:像素)", + "re.addition.grid.entity.textMinLength": "最小长度(包含)", + "re.addition.grid.entity.textMaxLength": "最大长度(包含)", "re.addition.grid.entity.prompt": "提示词", - "re.addition.grid.entity.attachmentExtendNames": "允许上传附件的文件扩展名(多个采用逗号分隔)", - "re.addition.grid.entity.attachmentMaxCount": "允许上传附件的最大个数", + "re.addition.grid.entity.attachmentExtendNames": "附件文件扩展名(多个采用逗号分隔)", + "re.addition.grid.entity.attachmentExtendNames2": "附件文件扩展名(多个采用逗号分隔, 示例: xlsx, pdf, docx)", + "re.addition.grid.entity.attachmentMaxCount": "附件最大个数", "re.processor.dialog.decisionTree.title": "决策树设计器", "re.processor.dialog.executionFlow.title": "执行流设计器", diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Addition.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Addition.vue index e744ca7f..275c6387 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Addition.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Addition.vue @@ -53,25 +53,23 @@ align: 'center', format: Formater.enableTag(), }, - { - width: 70, - name: 'required', - label: $t('required'), - align: 'center', - format: Formater.yesNo(), - }, { width: 120, name: 'code', label: $t('re.addition.grid.entity.code'), }, { - width: 200, + width: 300, name: 'name', label: $t('re.addition.grid.entity.name'), }, { - width: 200, + width: 300, + name: 'condition', + label: $t('re.addition.grid.entity.condition'), + }, + { + width: 100, name: 'description', label: $t('re.addition.grid.entity.description'), }, @@ -80,53 +78,105 @@ name: 'componentType', label: $t('re.addition.grid.entity.componentType'), format: (value: any, row: any) => { - let text = $t('io.sc.engine.rule.core.enums.QualitativeAdditionComponentType.' + value); - if ('TEXTS' === value) { - text += '(' + row.rows + ')'; - } else if ('ATTACHMENT' === value) { - text += '(' + row.attachmentMaxCount + ')'; - } - return text; + return $t('io.sc.engine.rule.core.enums.QualitativeAdditionComponentType.' + value); }, }, { width: 200, - name: 'condition', - label: $t('re.addition.grid.entity.condition'), + name: 'label', + label: $t('title'), }, { - width: 300, + width: 70, + name: 'required', + label: $t('required'), + format: Formater.yesNo(), + }, + { + width: 120, + name: 'valueScale', + label: $t('re.addition.grid.entity.valueScale'), + align: 'right', + }, + { + width: 120, + name: 'minValue', + label: $t('re.addition.grid.entity.minValue'), + align: 'right', + }, + { + width: 120, + name: 'maxValue', + label: $t('re.addition.grid.entity.maxValue'), + align: 'right', + }, + { + width: 120, + name: 'textareaHeight', + label: $t('re.addition.grid.entity.textareaHeight'), + align: 'right', + }, + { + width: 120, + name: 'textMinLength', + label: $t('re.addition.grid.entity.textMinLength'), + align: 'right', + }, + { + width: 120, + name: 'textMaxLength', + label: $t('re.addition.grid.entity.textMaxLength'), + align: 'right', + }, + { + width: 200, name: 'prompt', label: $t('re.addition.grid.entity.prompt'), }, + { + width: 300, + name: 'attachmentExtendNames', + label: $t('re.addition.grid.entity.attachmentExtendNames'), + }, + { + width: 120, + name: 'attachmentMaxCount', + label: $t('re.addition.grid.entity.attachmentMaxCount'), + align: 'right', + }, ]" :editor="{ dialog: { - width: '600px', + width: '700px', }, form: { - colsNum: 1, + colsNum: 2, fields: [ - { name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, showIf: false }, + { colSpan: 2, name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, showIf: false }, { + colSpan: 2, name: 'code', label: $t('re.addition.grid.entity.code'), type: 'w-text', requiredIf: true, }, { + colSpan: 2, name: 'name', label: $t('re.addition.grid.entity.name'), type: 'w-text', requiredIf: true, }, { + colSpan: 2, name: 'description', label: $t('re.addition.grid.entity.description'), type: 'w-textarea', rows: 3, }, + { colSpan: 2, name: 'enable', label: $t('enable'), type: 'w-checkbox', defaultValue: true }, { + colSpan: 2, name: 'condition', label: $t('re.addition.grid.entity.condition'), type: 'w-code-mirror', @@ -146,7 +196,38 @@ options: EngineEnums.QualitativeAdditionComponentType.options, requiredIf: true, }, + { name: 'required', label: $t('required'), type: 'w-checkbox', defaultValue: false }, + { colSpan: 2, name: 'label', label: $t('title'), type: 'w-text' }, + { + colSpan: 2, + name: 'valueScale', + label: $t('re.addition.grid.entity.valueScale'), + type: 'w-integer', + showIf: (args: any) => { + const type = args.form.getFieldValue('componentType'); + return type === 'DECIMAL'; + }, + }, + { + name: 'minValue', + label: $t('re.addition.grid.entity.minValue'), + type: 'w-text', + showIf: (args: any) => { + const type = args.form.getFieldValue('componentType'); + return type === 'INTEGER' || type === 'DECIMAL'; + }, + }, + { + name: 'maxValue', + label: $t('re.addition.grid.entity.maxValue'), + type: 'w-text', + showIf: (args: any) => { + const type = args.form.getFieldValue('componentType'); + return type === 'INTEGER' || type === 'DECIMAL'; + }, + }, { + colSpan: 2, name: 'textareaHeight', label: $t('re.addition.grid.entity.textareaHeight'), type: 'w-integer', @@ -174,20 +255,9 @@ }, }, { - name: 'prompt', - label: $t('re.addition.grid.entity.prompt'), - type: 'w-textarea', - rows: 3, - defaultValue: 3, - showIf: (args: any) => { - const type = args.form.getFieldValue('componentType'); - return type === 'TEXT' || type === 'TEXTS'; - }, - }, - - { + colSpan: 2, name: 'attachmentExtendNames', - label: $t('re.addition.grid.entity.attachmentExtendNames'), + label: $t('re.addition.grid.entity.attachmentExtendNames2'), type: 'w-text', defaultValue: '.pdf, .docx', showIf: (args: any) => { @@ -196,6 +266,7 @@ }, }, { + colSpan: 2, name: 'attachmentMaxCount', label: $t('re.addition.grid.entity.attachmentMaxCount'), type: 'w-integer', @@ -205,34 +276,20 @@ return type === 'ATTACHMENT'; }, }, - - { name: 'enable', label: $t('enable'), type: 'w-checkbox', defaultValue: true }, - { name: 'required', label: $t('required'), type: 'w-checkbox', defaultValue: true }, - ], - }, - }" - :viewer="{ - panel: { - columnNum: 1, - fields: [ - { name: 'id', label: $t('id') }, - { name: 'parameter', label: $t('parameter') }, - { name: 'code', label: $t('re.addition.grid.entity.code') }, - { name: 'name', label: $t('re.addition.grid.entity.name') }, - { name: 'description', label: $t('re.addition.grid.entity.description') }, - { name: 'componentType', label: $t('re.addition.grid.entity.component') }, - { name: 'condition', label: $t('re.addition.grid.entity.condition') }, - { name: 'enable', label: $t('isEnable') }, - { name: 'required', label: $t('isRequired') }, - { name: 'order', label: $t('order') }, - - { name: 'textareaHeight', label: $t('re.addition.grid.entity.textareaHeight') }, - { name: 'textMinLength', label: $t('re.addition.grid.entity.textMinLength') }, - { name: 'textMaxLength', label: $t('re.addition.grid.entity.textMaxLength') }, - { name: 'prompt', label: $t('re.addition.grid.entity.prompt') }, - { name: 'attachmentExtendNames', label: $t('re.addition.grid.entity.attachmentExtendNames') }, - { name: 'attachmentMaxCount', label: $t('re.addition.grid.entity.attachmentMaxCount') }, - ...CorporationAuditorEntityManager.getViewerFields(), + { + colSpan: 2, + name: 'prompt', + label: $t('re.addition.grid.entity.prompt'), + type: 'w-code-mirror', + toolbar: false, + lang: 'java', + rows: 3, + placeholder: true, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletionManager.autoCompletion(), + userDefinedFunctions: userDefinedFunctionsManager.userDefinedFunctions(), + }, ], }, }" diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue index 4131a6fe..d7eee1e8 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue @@ -50,7 +50,6 @@ { width: 100, name: 'inputValue', label: $t('re.option.grid.entity.inputValue') }, { width: 100, name: 'value', label: $t('re.option.grid.entity.value') }, { width: 400, name: 'title', label: $t('re.option.grid.entity.title') }, - { width: 200, name: 'description', label: $t('description') }, { width: 400, name: 'config', @@ -59,6 +58,7 @@ return PlaceHolder.replace(value); }, }, + { width: 200, name: 'description', label: $t('description') }, ]" :editor="{ dialog: { diff --git a/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue b/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue index 00875ecd..38dd7006 100644 --- a/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue +++ b/io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue @@ -178,7 +178,7 @@ ]" :editor="{ dialog: { - width: '600px', + width: '800px', }, form: { colsNum: 1, @@ -218,6 +218,15 @@ ...valueTypeManager.getEditorFields(), { name: 'order', label: $t('order'), type: 'w-number', showIf: false }, { name: 'persistentAsIndicator', label: $t('re.parameter.grid.entity.persistentAsIndicator'), type: 'w-checkbox', defaultValue: true }, + { + name: 'disableOnAutoSelected', + label: $t('re.parameter.grid.entity.disableOnAutoSelected'), + type: 'w-checkbox', + defaultValue: false, + showIf: (args: any) => { + return 'IN_OPTION' === args.form.getFieldValue('type'); + }, + }, { name: 'properties', label: $t('re.parameter.grid.entity.properties'), @@ -253,13 +262,13 @@ ], columns: [ { - width: '30%', + width: 100, name: 'name', label: $t('re.parameter.grid.entity.property.name'), format: EngineEnums.ParameterPropertiesName.formater, }, { - width: '70%', + width: 450, name: 'value', label: $t('re.parameter.grid.entity.property.value'), sortable: false, @@ -267,21 +276,94 @@ return PlaceHolder.replace(value); }, }, + { + width: 100, + name: 'componentType', + label: $t('re.addition.grid.entity.componentType'), + format: (value: any, row: any) => { + return $t('io.sc.engine.rule.core.enums.QualitativeAdditionComponentType.' + value); + }, + }, + { + width: 200, + name: 'label', + label: $t('title'), + }, + { + width: 70, + name: 'required', + label: $t('required'), + format: Formater.yesNo(), + }, + { + width: 120, + name: 'valueScale', + label: $t('re.addition.grid.entity.valueScale'), + align: 'right', + }, + { + width: 120, + name: 'minValue', + label: $t('re.addition.grid.entity.minValue'), + align: 'right', + }, + { + width: 120, + name: 'maxValue', + label: $t('re.addition.grid.entity.maxValue'), + align: 'right', + }, + { + width: 120, + name: 'textareaHeight', + label: $t('re.addition.grid.entity.textareaHeight'), + align: 'right', + }, + { + width: 120, + name: 'textMinLength', + label: $t('re.addition.grid.entity.textMinLength'), + align: 'right', + }, + { + width: 120, + name: 'textMaxLength', + label: $t('re.addition.grid.entity.textMaxLength'), + align: 'right', + }, + { + width: 200, + name: 'prompt', + label: $t('re.addition.grid.entity.prompt'), + }, + { + width: 300, + name: 'attachmentExtendNames', + label: $t('re.addition.grid.entity.attachmentExtendNames'), + }, + { + width: 120, + name: 'attachmentMaxCount', + label: $t('re.addition.grid.entity.attachmentMaxCount'), + align: 'right', + }, ], editor: { dialog: { width: '600px', }, form: { - colsNum: 1, + colsNum: 2, fields: [ { + colSpan: 2, name: 'name', label: $t('re.parameter.grid.entity.property.name'), type: 'w-select', options: EngineEnums.ParameterPropertiesName.options, }, { + colSpan: 2, name: 'value', label: $t('re.parameter.grid.entity.property.value'), type: 'w-code-mirror', @@ -293,9 +375,152 @@ placeholder: true, autoCompletion: autoCompletionManager.autoCompletion(), }, + { + name: 'componentType', + label: $t('re.addition.grid.entity.componentType'), + type: 'w-select', + options: EngineEnums.QualitativeAdditionComponentType.options, + requiredIf: true, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + return 'MODIFY_IF' === name; + }, + }, + { + name: 'required', + label: $t('required'), + type: 'w-checkbox', + defaultValue: false, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + return 'MODIFY_IF' === name; + }, + }, + { + colSpan: 2, + name: 'label', + label: $t('title'), + type: 'w-text', + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + return 'MODIFY_IF' === name; + }, + }, + { + colSpan: 2, + name: 'valueScale', + label: $t('re.addition.grid.entity.valueScale'), + type: 'w-integer', + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && 'DECIMAL' === type; + }, + }, + { + name: 'minValue', + label: $t('re.addition.grid.entity.minValue'), + type: 'w-text', + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && ('INTEGER' === type || 'DECIMAL' === type); + }, + }, + { + name: 'maxValue', + label: $t('re.addition.grid.entity.maxValue'), + type: 'w-text', + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && ('INTEGER' === type || 'DECIMAL' === type); + }, + }, + { + colSpan: 2, + name: 'textareaHeight', + label: $t('re.addition.grid.entity.textareaHeight'), + type: 'w-integer', + defaultValue: 100, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && 'TEXTS' === type; + }, + }, + { + name: 'textMinLength', + label: $t('re.addition.grid.entity.textMinLength'), + type: 'w-integer', + defaultValue: 0, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && ('TEXT' === type || 'TEXTS' === type); + }, + }, + { + name: 'textMaxLength', + label: $t('re.addition.grid.entity.textMaxLength'), + type: 'w-integer', + defaultValue: 1024, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && ('TEXT' === type || 'TEXTS' === type); + }, + }, + { + colSpan: 2, + name: 'attachmentExtendNames', + label: $t('re.addition.grid.entity.attachmentExtendNames2'), + type: 'w-text', + defaultValue: '.pdf, .docx', + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && 'ATTACHMENT' === type; + }, + }, + { + colSpan: 2, + name: 'attachmentMaxCount', + label: $t('re.addition.grid.entity.attachmentMaxCount'), + type: 'w-integer', + defaultValue: 1, + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + const type = args.form.getFieldValue('componentType'); + return 'MODIFY_IF' === name && 'ATTACHMENT' === type; + }, + }, + { + colSpan: 2, + name: 'prompt', + label: $t('re.addition.grid.entity.prompt'), + type: 'w-code-mirror', + toolbar: false, + lang: 'java', + rows: 3, + placeholder: true, + lineWrap: true, + lineBreak: false, + autoCompletion: autoCompletionManager.autoCompletion(), + userDefinedFunctions: userDefinedFunctionsManager.userDefinedFunctions(), + showIf: (args: any) => { + const name = args.form.getFieldValue('name'); + return 'MODIFY_IF' === name; + }, + }, ], }, }, + onBeforeEditorDataSubmit: (args) => { + args.callback(normalize(args.data)); + // console.log(args); + // Tools.mergeObject(args.data, normalize(args.data)); + }, }, ], }, @@ -336,7 +561,7 @@ const localData: any[] = grid.getRows(); const properties: any = []; localData.forEach((item) => { - properties.push({ name: item.name, value: item.value }); + properties.push(normalize(item)); }); args.data.properties = Tools.object2Json(properties); } @@ -403,6 +628,7 @@ import { LibManager } from '@/views/shared/LibManager'; import { TemplateImportAndExportManager } from '@/views/shared/TemplateImportAndExportManager'; import { EngineEnums } from '@/views/shared/enums/EngineEnums'; import { AutoCompletionManager } from '@/views/shared/AutoCompletionManager'; +import { UserDefinedFunctionsManager } from '@/views/shared/UserDefinedFunctionsManager'; import { PlaceHolder } from '@/utils/PlaceHolder'; import { toRaw } from 'vue'; import { nextTick } from 'vue'; @@ -425,6 +651,7 @@ const templateImportAndExportDialogRef = ref(); const importDialogRef = ref(); const valueTypeManager = new ValueTypeManager(); const autoCompletionManager = new AutoCompletionManager(); +const userDefinedFunctionsManager = new UserDefinedFunctionsManager(); const templateImportAndExportManager = new TemplateImportAndExportManager(templateImportAndExportDialogRef); onMounted(() => { @@ -439,6 +666,76 @@ const setDefaultValue = (defaultValue: string) => { gridRef.value.getSelectedRow().defaultValue = defaultValue; }; +const normalize = (item: any) => { + if (Tools.isUndefinedOrNull(item)) { + return; + } + if (item.name === 'SHOW_IF') { + return { + name: item.name, + value: item.value, + }; + } else { + const property = { + name: item.name, + value: item.value, + componentType: item.componentType, + required: item.required, + label: item.label, + valueScale: item.valueScale, + minValue: item.minValue, + maxValue: item.maxValue, + textareaHeight: item.textareaHeight, + textMinLength: item.textMinLength, + textMaxLength: item.textMaxLength, + attachmentExtendNames: item.attachmentExtendNames, + attachmentMaxCount: item.attachmentMaxCount, + prompt: item.prompt, + }; + switch (property.componentType) { + case 'INTEGER': + property.valueScale = null; + property.textareaHeight = null; + property.textMinLength = null; + property.textMaxLength = null; + property.attachmentExtendNames = null; + property.attachmentMaxCount = null; + break; + case 'DECIMAL': + property.textareaHeight = null; + property.textMinLength = null; + property.textMaxLength = null; + property.attachmentExtendNames = null; + property.attachmentMaxCount = null; + break; + case 'TEXT': + property.valueScale = null; + property.minValue = null; + property.maxValue = null; + property.textareaHeight = null; + property.attachmentExtendNames = null; + property.attachmentMaxCount = null; + break; + case 'TEXTS': + property.valueScale = null; + property.minValue = null; + property.maxValue = null; + property.attachmentExtendNames = null; + property.attachmentMaxCount = null; + break; + case 'ATTACHMENT': + property.valueScale = null; + property.minValue = null; + property.maxValue = null; + property.textareaHeight = null; + property.textMinLength = null; + property.textMaxLength = null; + break; + } + return property; + } +}; + defineExpose({ refresh, setDefaultValue, diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RuleEngineWorkFlowInitializer.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RuleEngineWorkFlowInitializer.java index 348cd365..d8e117e7 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RuleEngineWorkFlowInitializer.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/initializer/RuleEngineWorkFlowInitializer.java @@ -58,12 +58,14 @@ public class RuleEngineWorkFlowInitializer implements ApplicationInitializer{ entity.setVersion(1); entity.setCanClaimTask(false); entity.setXml(getRuleEngineWorkflowXmlContent()); - entity.setBusinessDescriptionSql("" + - "select \n" + - " CONCAT(CODE_,':',VERSION_) BUSSINESS_KEY,\n" + - " CONCAT(NAME_,'_V',VERSION_) BUSSINESS_DESCRIPTION\n" + + entity.setBusinessDescriptionSql( + "select\n" + + " CONCAT(CODE_,':',VERSION_) BUSINESS_KEY,\n" + + " NAME_ CUST_NO,\n" + + " CONCAT('V',VERSION_) CUST_NAME,\n" + + " NULL PROCESS_STATUS\n" + "from RE_RESOURCE\n" + - "where CONCAT(CODE_,':',VERSION_) in (${bussinessKeys})" + "where CONCAT(CODE_,':',VERSION_) = '${businessKey}'" ); entity.setTaskHandFrontendModelName("io.sc.engine.rule.frontend"); entity.setTaskHandFrontendComponentName("io.sc.engine.rule.frontend.workflow.ApprovalComponent"); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java index 6e8fc25b..3d6148e8 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java @@ -34,6 +34,7 @@ public class ParameterEntityConverter { }else if(entity instanceof InOptionParameterEntity) { InOptionParameterEntity _entity =(InOptionParameterEntity)entity; InOptionParameter _po =new InOptionParameter(); + _po.setDisableOnAutoSelected(_entity.getDisableOnAutoSelected()); _po.setOptions(ParameterInOptionItemEntityConverter.toPo(_entity.getOptions())); _po.setAdditons(ParameterInOptionAdditionEntityConverter.toPo(_entity.getAdditions())); po =_po; @@ -106,6 +107,8 @@ public class ParameterEntityConverter { }else if(po instanceof InOptionParameter) { InOptionParameter _po =(InOptionParameter)po; InOptionParameterEntity _entity =new InOptionParameterEntity(); + _entity.setDisableOnAutoSelected(_po.getDisableOnAutoSelected()); + List options =ParameterInOptionItemEntityConverter.fromPo(_po.getOptions()); if(options!=null && options.size()>0) { for(ParameterInOptionItemEntity option : options) { diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterInOptionAdditionEntityConverter.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterInOptionAdditionEntityConverter.java index c85770d6..89f5858a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterInOptionAdditionEntityConverter.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterInOptionAdditionEntityConverter.java @@ -22,11 +22,16 @@ public class ParameterInOptionAdditionEntityConverter { po.setCode(entity.getCode()); po.setName(entity.getName()); po.setDescription(entity.getDescription()); - po.setComponentType(entity.getComponentType()); po.setCondition(entity.getCondition()); po.setEnable(entity.getEnable()); - po.setRequired(entity.getRequired()); po.setOrder(entity.getOrder()); + + po.setComponentType(entity.getComponentType()); + po.setRequired(entity.getRequired()); + po.setLabel(entity.getLabel()); + po.setValueScale(entity.getValueScale()); + po.setMinValue(entity.getMinValue()); + po.setMaxValue(entity.getMaxValue()); po.setTextareaHeight(entity.getTextareaHeight()); po.setTextMinLength(entity.getTextMinLength()); po.setTextMaxLength(entity.getTextMaxLength()); @@ -66,11 +71,16 @@ public class ParameterInOptionAdditionEntityConverter { entity.setCode(po.getCode()); entity.setName(po.getName()); entity.setDescription(po.getDescription()); - entity.setComponentType(po.getComponentType()); entity.setCondition(po.getCondition()); entity.setEnable(po.getEnable()); - entity.setRequired(po.getRequired()); entity.setOrder(po.getOrder()); + + entity.setComponentType(po.getComponentType()); + entity.setRequired(po.getRequired()); + entity.setLabel(po.getLabel()); + entity.setValueScale(po.getValueScale()); + entity.setMinValue(po.getMinValue()); + entity.setMaxValue(po.getMaxValue()); entity.setTextareaHeight(po.getTextareaHeight()); entity.setTextMinLength(po.getTextMinLength()); entity.setTextMaxLength(po.getTextMaxLength()); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java index c975ce21..7881c82d 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.code.generator.impl.processor.ConditionRange; import io.sc.engine.rule.core.enums.ParameterType; +import io.sc.engine.rule.core.enums.QualitativeAdditionComponentType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.CodeAndNameReplacer; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; @@ -26,6 +27,7 @@ import org.springframework.util.StringUtils; import javax.persistence.*; import javax.validation.constraints.Size; +import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -412,6 +414,8 @@ public class ParameterEntity extends CorporationAuditorEntity imple }); for (Property property : properties) { property.setValue(parameterAndValueType.replace(property.getValue(), mode)); + property.setPrompt(parameterAndValueType.replace(property.getPrompt(), mode)); + property.normalize(); } return ObjectMapperUtil.json().writeValueAsString(properties); } catch (Exception e) { @@ -422,6 +426,64 @@ public class ParameterEntity extends CorporationAuditorEntity imple static class Property { String name; String value; + QualitativeAdditionComponentType componentType; + Boolean required; + String label; + Integer valueScale; + String minValue; + String maxValue; + Integer textareaHeight; + Integer textMinLength; + Integer textMaxLength; + String attachmentExtendNames; + Integer attachmentMaxCount; + String prompt; + + public void normalize(){ + if(componentType==null) { + return; + } + switch (componentType){ + case INTEGER: + valueScale = null; + textareaHeight = null; + textMinLength = null; + textMaxLength = null; + attachmentExtendNames = null; + attachmentMaxCount = null; + break; + case DECIMAL: + textareaHeight = null; + textMinLength = null; + textMaxLength = null; + attachmentExtendNames = null; + attachmentMaxCount = null; + break; + case TEXT: + valueScale = null; + minValue = null; + maxValue = null; + textareaHeight = null; + attachmentExtendNames = null; + attachmentMaxCount = null; + break; + case TEXTS: + valueScale = null; + minValue = null; + maxValue = null; + attachmentExtendNames = null; + attachmentMaxCount = null; + break; + case ATTACHMENT: + valueScale = null; + minValue = null; + maxValue = null; + textareaHeight = null; + textMinLength = null; + textMaxLength = null; + break; + } + } public String getName() { return name; @@ -438,6 +500,102 @@ public class ParameterEntity extends CorporationAuditorEntity imple public void setValue(String value) { this.value = value; } + + public QualitativeAdditionComponentType getComponentType() { + return componentType; + } + + public void setComponentType(QualitativeAdditionComponentType componentType) { + this.componentType = componentType; + } + + public Boolean getRequired() { + return required; + } + + public void setRequired(Boolean required) { + this.required = required; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Integer getValueScale() { + return valueScale; + } + + public void setValueScale(Integer valueScale) { + this.valueScale = valueScale; + } + + public String getMinValue() { + return minValue; + } + + public void setMinValue(String minValue) { + this.minValue = minValue; + } + + public String getMaxValue() { + return maxValue; + } + + public void setMaxValue(String maxValue) { + this.maxValue = maxValue; + } + + public Integer getTextareaHeight() { + return textareaHeight; + } + + public void setTextareaHeight(Integer textareaHeight) { + this.textareaHeight = textareaHeight; + } + + public Integer getTextMinLength() { + return textMinLength; + } + + public void setTextMinLength(Integer textMinLength) { + this.textMinLength = textMinLength; + } + + public Integer getTextMaxLength() { + return textMaxLength; + } + + public void setTextMaxLength(Integer textMaxLength) { + this.textMaxLength = textMaxLength; + } + + public String getAttachmentExtendNames() { + return attachmentExtendNames; + } + + public void setAttachmentExtendNames(String attachmentExtendNames) { + this.attachmentExtendNames = attachmentExtendNames; + } + + public Integer getAttachmentMaxCount() { + return attachmentMaxCount; + } + + public void setAttachmentMaxCount(Integer attachmentMaxCount) { + this.attachmentMaxCount = attachmentMaxCount; + } + + public String getPrompt() { + return prompt; + } + + public void setPrompt(String prompt) { + this.prompt = prompt; + } } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java index 7c80e10c..a2ce6229 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionAdditionEntity.java @@ -51,11 +51,6 @@ public class ParameterInOptionAdditionEntity extends CorporationAuditorEntity getOptions() { return options; } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionAdditionServiceImpl.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionAdditionServiceImpl.java index 8703673c..8bc1501a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionAdditionServiceImpl.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionAdditionServiceImpl.java @@ -71,13 +71,13 @@ public class ParameterInOptionAdditionServiceImpl extends DaoServiceImpl + @@ -264,12 +265,21 @@ - - + + + + + + + + + + + diff --git a/io.sc.engine.rule.server/src/main/resources/workflow/io/sc/engine/rule/Sample.bpmn b/io.sc.engine.rule.server/src/main/resources/workflow/io/sc/engine/rule/Sample.bpmn index 38cd4733..d8e8cc2a 100644 --- a/io.sc.engine.rule.server/src/main/resources/workflow/io/sc/engine/rule/Sample.bpmn +++ b/io.sc.engine.rule.server/src/main/resources/workflow/io/sc/engine/rule/Sample.bpmn @@ -1,12 +1,16 @@ - - + + - + + + + + - + @@ -15,7 +19,7 @@ - + @@ -41,22 +45,22 @@ - - + + - + - - - + + + - - - + + + - - + + diff --git a/io.sc.engine.st.frontend/package.json b/io.sc.engine.st.frontend/package.json index 76449460..9e4b898e 100644 --- a/io.sc.engine.st.frontend/package.json +++ b/io.sc.engine.st.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.ai.frontend/package.json b/io.sc.platform.ai.frontend/package.json index f045fbca..0416f16e 100644 --- a/io.sc.platform.ai.frontend/package.json +++ b/io.sc.platform.ai.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json index 98643c32..40e8a780 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.122", + "version": "8.2.123", "description": "前端核心包,用于快速构建前端的脚手架", "//main": "库的主文件", "main": "dist/platform-core.js", diff --git a/io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue b/io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue index 2ae388f4..5f53e912 100644 --- a/io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue +++ b/io.sc.platform.core.frontend/src/platform/views/home/MyDoneTask.vue @@ -45,7 +45,7 @@
- {{ 999 + $t(item.startTimeAndNowDiffUnit) + $t('before') }} + {{ $t(item.startTimeAndNowDiffUnit) + $t('before') }}
{{ item.startTime }} diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json index 955113cc..84949fb8 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.122", + "version": "8.2.123", "description": "前端核心包,用于快速构建前端的脚手架", "private": false, "keywords": [], @@ -111,7 +111,7 @@ "mockjs": "1.1.0", "node-sql-parser": "5.3.6", "pinia": "2.3.0", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", 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 d7277cbe..4d7f93c9 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 @@ -267,4 +267,6 @@ required=Required settings=Settings reply=Reply defaultRoleName=Default Role Name -async=Asynchronous \ No newline at end of file +async=Asynchronous +valueScale=Value Scale +scale=Scale \ 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 eceed5dd..fea7aee3 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 @@ -267,4 +267,6 @@ required=\u5FC5\u9700 settings=\u8A2D\u7F6E reply=\u56DE\u5FA9 defaultRoleName=\u9ED8\u8A8D\u89D2\u8272\u540D\u7A31 -async=\u7570\u6B65 \ No newline at end of file +async=\u7570\u6B65 +valueScale=\u503C\u7CBE\u5EA6 +scale=\u7CBE\u5EA6 \ 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 70148e7b..89752677 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 @@ -267,4 +267,6 @@ required=\u5FC5\u9700 settings=\u8BBE\u7F6E reply=\u56DE\u590D defaultRoleName=\u9ED8\u8BA4\u89D2\u8272\u540D\u79F0 -async=\u5F02\u6B65 \ No newline at end of file +async=\u5F02\u6B65 +valueScale=\u503C\u7CBE\u5EA6 +scale=\u7CBE\u5EA6 \ No newline at end of file diff --git a/io.sc.platform.developer.doc/package.json b/io.sc.platform.developer.doc/package.json index 64c5d051..7de11bdd 100644 --- a/io.sc.platform.developer.doc/package.json +++ b/io.sc.platform.developer.doc/package.json @@ -28,7 +28,7 @@ "vuepress": "2.0.0-rc.15" }, "dependencies": { - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "vue": "3.5.13", "vue-i18n": "11.0.1" diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json index e936970a..e8e79bbb 100644 --- a/io.sc.platform.developer.frontend/package.json +++ b/io.sc.platform.developer.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/extension/listener/start/ProcessStartListener.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/extension/listener/start/ProcessStartListener.java new file mode 100644 index 00000000..d917694b --- /dev/null +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/extension/listener/start/ProcessStartListener.java @@ -0,0 +1,69 @@ +package io.sc.platform.flowable.extension.listener.start; + +import io.sc.platform.flowable.enums.ProcessStatus; +import io.sc.platform.flowable.jpa.entity.ProcessEntity; +import io.sc.platform.flowable.service.ProcessEntityService; +import io.sc.platform.flowable.support.BusinessKeyAndDescriptionWrapper; +import io.sc.platform.flowable.support.BusinessKeyAndDescriptionWrapperMapper; +import io.sc.platform.util.StringUtil; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +@Service("processStartListener") +public class ProcessStartListener implements ExecutionListener { + @Autowired private ProcessEntityService processEntityService; + @Autowired private JdbcTemplate jdbcTemplate; + + @Override + public void notify(DelegateExecution execution) { + insertProcInsExtByDefinitionId(execution.getProcessDefinitionId(),execution.getProcessInstanceId(),execution.getProcessInstanceBusinessKey()); + } + + private void insertProcInsExtByDefinitionId(String processDefinitionId, String processInstanceId, String businessKey){ + if(!StringUtils.hasText(processDefinitionId) || !StringUtils.hasText(processInstanceId) || !StringUtils.hasText(businessKey)){ + return; + } + + ProcessEntity entity =processEntityService.getRepository().findByDeployedId(processDefinitionId); + if(entity==null || !StringUtils.hasText(entity.getBusinessDescriptionSql())){ + return; + } + + Map variables =new HashMap<>(); + variables.put("businessKey", StringUtil.escapeSqlSpecialChar(businessKey)); + + String sql =StringUtil.format(entity.getBusinessDescriptionSql(),variables); + BusinessKeyAndDescriptionWrapper wrapper =jdbcTemplate.queryForObject(sql,new BusinessKeyAndDescriptionWrapperMapper()); + if(wrapper==null){ + return; + } + jdbcTemplate.update("insert into SYS_PROCESS_INST_EXT(PROC_INST_ID_,CUST_NO_,CUST_NAME_) values(?,?,?)",processInstanceId,wrapper.getCustNo(),wrapper.getCustName()); + } + + private void insertProcInsExtByDefinitionKey(String processDefinitionKey,String processInstanceId,String businessKey){ + if(!StringUtils.hasText(processDefinitionKey) || !StringUtils.hasText(processInstanceId) || !StringUtils.hasText(businessKey)){ + return; + } + ProcessEntity entity =processEntityService.getRepository().findByKeyAndStatus(processDefinitionKey, ProcessStatus.RELEASE); + if(entity==null || !StringUtils.hasText(entity.getBusinessDescriptionSql())){ + return; + } + + Map variables =new HashMap<>(); + variables.put("businessKey",StringUtil.escapeSqlSpecialChar(businessKey)); + + String sql =StringUtil.format(entity.getBusinessDescriptionSql(),variables); + BusinessKeyAndDescriptionWrapper wrapper =jdbcTemplate.queryForObject(sql,new BusinessKeyAndDescriptionWrapperMapper()); + if(wrapper==null){ + return; + } + jdbcTemplate.update("insert into SYS_PROCESS_INST_EXT(PROC_INST_ID_,CUST_NO_,CUST_NAME_) values(?,?,?)",processInstanceId,wrapper.getCustNo(),wrapper.getCustName()); + } +} diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java index ea87f65d..ab2216ad 100644 --- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java +++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java @@ -87,7 +87,6 @@ public class ProcessOperationServiceImpl implements ProcessOperationService { builder.transientVariables(convertTransientVariables(variables,transientVariables)); ProcessInstance processInstance =builder.start(); - insertProcInsExtByDefinitionKey(processDefinitionKey,processInstance.getId(),bussinessKey); return startProcess(processInstance,variables,transientVariables,autoCompleteFirstTask); } @@ -111,7 +110,6 @@ public class ProcessOperationServiceImpl implements ProcessOperationService { builder.transientVariables(convertTransientVariables(variables,transientVariables)); ProcessInstance processInstance =builder.start(); - insertProcInsExtByDefinitionId(processDefinitionId,processInstance.getId(),bussinessKey); return startProcess(processInstance,variables,transientVariables,autoCompleteFirstTask); } @@ -509,49 +507,6 @@ public class ProcessOperationServiceImpl implements ProcessOperationService { managementService.executeCommand(new JumpTaskCommand(taskId,targetActivityId,targetAssignee)); } - @Transactional - private void insertProcInsExtByDefinitionKey(String processDefinitionKey,String processInstanceId,String businessKey){ - if(!StringUtils.hasText(processDefinitionKey) || !StringUtils.hasText(processInstanceId) || !StringUtils.hasText(businessKey)){ - return; - } - ProcessEntity entity =processEntityService.getRepository().findByKeyAndStatus(processDefinitionKey, ProcessStatus.RELEASE); - if(entity==null || !StringUtils.hasText(entity.getBusinessDescriptionSql())){ - return; - } - - Map variables =new HashMap<>(); - variables.put("businessKey",StringUtil.escapeSqlSpecialChar(businessKey)); - - String sql =StringUtil.format(entity.getBusinessDescriptionSql(),variables); - BusinessKeyAndDescriptionWrapper wrapper =jdbcTemplate.queryForObject(sql,new BusinessKeyAndDescriptionWrapperMapper()); - if(wrapper==null){ - return; - } - jdbcTemplate.update("insert into SYS_PROCESS_INST_EXT(PROC_INST_ID_,CUST_NO_,CUST_NAME_) values(?,?,?)",processInstanceId,wrapper.getCustNo(),wrapper.getCustName()); - } - - @Transactional - private void insertProcInsExtByDefinitionId(String processDefinitionId, String processInstanceId, String businessKey){ - if(!StringUtils.hasText(processDefinitionId) || !StringUtils.hasText(processInstanceId) || !StringUtils.hasText(businessKey)){ - return; - } - - ProcessEntity entity =processEntityService.getRepository().findByDeployedId(processDefinitionId); - if(entity==null || !StringUtils.hasText(entity.getBusinessDescriptionSql())){ - return; - } - - Map variables =new HashMap<>(); - variables.put("businessKey",StringUtil.escapeSqlSpecialChar(businessKey)); - - String sql =StringUtil.format(entity.getBusinessDescriptionSql(),variables); - BusinessKeyAndDescriptionWrapper wrapper =jdbcTemplate.queryForObject(sql,new BusinessKeyAndDescriptionWrapperMapper()); - if(wrapper==null){ - return; - } - jdbcTemplate.update("insert into SYS_PROCESS_INST_EXT(PROC_INST_ID_,CUST_NO_,CUST_NAME_) values(?,?,?)",processInstanceId,wrapper.getCustNo(),wrapper.getCustName()); - } - private AssigneeQueryService getAssignmentStrategySpringBean(BpmnModel model,ProcessInstance processInstance,UserTask taskDefine) { String beanName =DEFAULT_ASSIGNMENT_STRATEGY_SPRING_BEAN_NAME; String processDefinitionKey =processInstance.getProcessDefinitionKey(); diff --git a/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/components.json b/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/components.json index d8976f80..0d3e4220 100644 --- a/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/components.json +++ b/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/components.json @@ -2,6 +2,7 @@ "includes":[ "io.sc.platform.flowable.controller", "io.sc.platform.flowable.service.impl", - "io.sc.platform.flowable.extension.listener.task" + "io.sc.platform.flowable.extension.listener.task", + "io.sc.platform.flowable.extension.listener.start" ] } diff --git a/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/parameters.json b/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/parameters.json index dab0ee15..2e7766d5 100644 --- a/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/parameters.json +++ b/io.sc.platform.flowable/src/main/resources/META-INF/platform/plugins/parameters.json @@ -7,7 +7,7 @@ "parentId": "parameter.system.workbench", "code": "parameter.system.workbench.processDefines", "multiLineText": true, - "defaultValue": "{}", + "defaultValue": "{\"RULE_ENGINE_APPROVING\":\"模型发布\"}", "order": 100 }, /*系统/工作台/流程状态*/ diff --git a/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn b/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn index 01cb5639..33486c3b 100644 --- a/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn +++ b/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn @@ -1,116 +1,116 @@ - - - - + + + + {"A2":"platformAssigneeQueryService"} - - + + + + + + - - + - - - - - - - - + + + + + + + + - + + + + - + + - - - - - - - - - + + + + + + - - - - + + + + - - - - + - + + + + - + - + - - - - - + + + + + - - - + + + - - - + + + - - - + + + + + - - - + + + - - - + + + - - - - - + + + diff --git a/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn20.xml b/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn20.xml index 0d6641f2..33486c3b 100644 --- a/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn20.xml +++ b/io.sc.platform.flowable/src/main/resources/io/sc/platform/flowable/sample/Sample.bpmn20.xml @@ -1,12 +1,16 @@ - + {"A2":"platformAssigneeQueryService"} - + + + + + @@ -56,10 +60,10 @@
- - + + - + @@ -78,9 +82,9 @@ - - - + + + @@ -92,8 +96,8 @@ - - + + @@ -105,8 +109,8 @@ - - + + diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json index f80a4831..3aaa3ade 100644 --- a/io.sc.platform.lcdp.frontend/package.json +++ b/io.sc.platform.lcdp.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue index 4257b926..ddd1100e 100644 --- a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue +++ b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue @@ -258,6 +258,7 @@ sql += ' CONCAT(CODE_,\':\',VERSION_) BUSINESS_KEY,\n'; sql += ' NAME_ CUST_NO,\n'; sql += ' CONCAT(\'V\',VERSION_) CUST_NAME,\n'; + sql += ' NULL PROCESS_STATUS\n'; sql += 'from RE_RESOURCE\n'; sql += 'where CONCAT(CODE_,\':\',VERSION_) = \'${businessKey}\'\n'; sql += '\n'; diff --git a/io.sc.platform.license.keygen.frontend/package.json b/io.sc.platform.license.keygen.frontend/package.json index d9bd3a32..77e35bbe 100644 --- a/io.sc.platform.license.keygen.frontend/package.json +++ b/io.sc.platform.license.keygen.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json index b4a0906e..1584c0d3 100644 --- a/io.sc.platform.mvc.frontend/package.json +++ b/io.sc.platform.mvc.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.scheduler.manager.frontend/package.json b/io.sc.platform.scheduler.manager.frontend/package.json index a30c1b3c..587ac352 100644 --- a/io.sc.platform.scheduler.manager.frontend/package.json +++ b/io.sc.platform.scheduler.manager.frontend/package.json @@ -113,7 +113,7 @@ "node-sql-parser": "5.3.6", "pinia": "2.3.0", "pinia-undo": "0.2.4", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.system.frontend/package.json b/io.sc.platform.system.frontend/package.json index d511c2e8..a40dc3d7 100644 --- a/io.sc.platform.system.frontend/package.json +++ b/io.sc.platform.system.frontend/package.json @@ -112,7 +112,7 @@ "mockjs": "1.1.0", "node-sql-parser": "5.3.6", "pinia": "2.3.0", - "platform-core": "8.2.122", + "platform-core": "8.2.123", "quasar": "2.17.6", "sort-array": "5.0.0", "svg-path-commander": "2.1.7", diff --git a/io.sc.platform.system.frontend/src/i18n/messages.json b/io.sc.platform.system.frontend/src/i18n/messages.json index a9c98a53..e270f0a5 100644 --- a/io.sc.platform.system.frontend/src/i18n/messages.json +++ b/io.sc.platform.system.frontend/src/i18n/messages.json @@ -49,8 +49,12 @@ "system.shared.selectRole.dialog.title": "Select Roles", "system.shared.selectRole.dialog.grid.title": "Available Role List", - "system.shared.selectOrg.grid.title": "Organization Tree", - "system.shared.selectOrg.grid.toolbar.save.tip": "Are you sure to update organizations?", + "system.shared.selectOrg.grid.title": "Included Organization Tree", + "system.shared.selectOrg.grid.toolbar.selectIn": "Select In", + "system.shared.selectOrg.grid.toolbar.selectOut": "Select Out", + "system.shared.selectOrg.grid.toolbar.selectOut.tip": "Are you sure to select out the organizations?", + "system.shared.selectOrg.dialog.title": "Select Organization", + "system.shared.selectOrg.dialog.grid.title": "All Organization", "system.shared.selectApplication.grid.title": "Included Application List", "system.shared.selectApplication.grid.toolbar.selectIn": "Select In", 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 4dc34da9..d247765c 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 @@ -49,8 +49,12 @@ "system.shared.selectRole.dialog.title": "選擇角色", "system.shared.selectRole.dialog.grid.title": "可選角色列表", - "system.shared.selectOrg.grid.title": "機構樹", - "system.shared.selectOrg.grid.toolbar.save.tip": "您确定要更新機構吗?", + "system.shared.selectOrg.grid.title": "已包含機構樹", + "system.shared.selectOrg.grid.toolbar.selectIn": "選入", + "system.shared.selectOrg.grid.toolbar.selectOut": "選出", + "system.shared.selectOrg.grid.toolbar.selectOut.tip": "您確定要選出機構嗎?", + "system.shared.selectOrg.dialog.title": "選擇機構", + "system.shared.selectOrg.dialog.grid.title": "所有機構", "system.shared.selectApplication.grid.title": "已包含應用列表", "system.shared.selectApplication.grid.toolbar.selectIn": "選入", 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 610176bd..a4d30999 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 @@ -49,8 +49,12 @@ "system.shared.selectRole.dialog.title": "选择角色", "system.shared.selectRole.dialog.grid.title": "可选角色列表", - "system.shared.selectOrg.grid.title": "机构树", - "system.shared.selectOrg.grid.toolbar.save.tip": "您确定要更新机构吗?", + "system.shared.selectOrg.grid.title": "已包含机构树", + "system.shared.selectOrg.grid.toolbar.selectIn": "选入", + "system.shared.selectOrg.grid.toolbar.selectOut": "选出", + "system.shared.selectOrg.grid.toolbar.selectOut.tip": "您确定要选出机构吗?", + "system.shared.selectOrg.dialog.title": "选择机构", + "system.shared.selectOrg.dialog.grid.title": "所有机构", "system.shared.selectApplication.grid.title": "已包含应用列表", "system.shared.selectApplication.grid.toolbar.selectIn": "选入", diff --git a/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeDialog.vue b/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeDialog.vue new file mode 100644 index 00000000..87c11458 --- /dev/null +++ b/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeDialog.vue @@ -0,0 +1,87 @@ + + diff --git a/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue b/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue index 2a5e2c5c..4ae2297e 100644 --- a/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue +++ b/io.sc.platform.system.frontend/src/views/shared/SelectOrgTreeGrid.vue @@ -1,77 +1,101 @@