Browse Source

基础框架发布: 8.2.47

1) 规则引擎参数属性增加“是否多选框”
  ALTER TABLE re_model_parameter ADD IS_UI_MULTI_SELECT_ SMALLINT NULL COMMENT '是否采用多选框';

前端核心框架发布: 8.2.141
  1) 修复表格内容显示时出现大量警告的问题
main
wangshaoping 2 days ago
parent
commit
a7088bfa8f
  1. 2
      cips.frontend/.npmrc
  2. 2
      cips.frontend/package.json
  3. 2
      erm.frontend/.npmrc
  4. 2
      erm.frontend/package.json
  5. 2
      gradle.properties
  6. 2
      io.sc.engine.mv.frontend/.npmrc
  7. 2
      io.sc.engine.mv.frontend/package.json
  8. 27
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/ResourceAbstracts.java
  9. 51
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/DecisionTree.java
  10. 1
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ModelCategory.java
  11. 3
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ParameterPropertiesName.java
  12. 15
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/parser/DecisionTreeParser.java
  13. 1
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/GraphNode.java
  14. 21
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/ResourceAbstractsNode.java
  15. 8
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java
  16. 7
      io.sc.engine.rule.core/src/main/resources/META-INF/platform/plugins/rule-engine-dictionary.json
  17. 4
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/java/template/impl/resource.tpl
  18. 1
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/java/template/import_render.tpl
  19. 4
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/impl/resource.tpl
  20. 1
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl
  21. 1
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary.properties
  22. 1
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary_tw_CN.properties
  23. 1
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary_zh_CN.properties
  24. 2
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums.properties
  25. 2
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties
  26. 2
      io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties
  27. 2
      io.sc.engine.rule.frontend/.npmrc
  28. 2
      io.sc.engine.rule.frontend/package.json
  29. 5
      io.sc.engine.rule.frontend/src/i18n/messages.json
  30. 4
      io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json
  31. 4
      io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json
  32. 210
      io.sc.engine.rule.frontend/src/views/resources/designer/DecisionTreeDialog.vue
  33. 11
      io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue
  34. 110
      io.sc.engine.rule.frontend/src/views/shared/SelectResourceDialog.vue
  35. 4
      io.sc.engine.rule.frontend/src/views/shared/Validator.vue
  36. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java
  37. 12
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InOptionParameterEntity.java
  38. 10
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/InOptionParameterVo.java
  39. 9
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/impl/ResourceServiceImpl.java
  40. 1
      io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Schema_DDL.xml
  41. 2
      io.sc.engine.st.frontend/.npmrc
  42. 2
      io.sc.engine.st.frontend/package.json
  43. 2
      io.sc.platform.ai.frontend/.npmrc
  44. 2
      io.sc.platform.ai.frontend/package.json
  45. 2
      io.sc.platform.core.frontend/package.json
  46. 30
      io.sc.platform.core.frontend/src/platform/components/grid/TdContent.vue
  47. 3
      io.sc.platform.core.frontend/src/views/testcase/form/form.vue
  48. 2
      io.sc.platform.core.frontend/template-project/.npmrc
  49. 4
      io.sc.platform.core.frontend/template-project/package.json
  50. 3
      io.sc.platform.core.frontend/template-project/src/views/testcase/form/form.vue
  51. 2
      io.sc.platform.developer.doc/.npmrc
  52. 2
      io.sc.platform.developer.doc/package.json
  53. 2
      io.sc.platform.developer.frontend/.npmrc
  54. 2
      io.sc.platform.developer.frontend/package.json
  55. 2
      io.sc.platform.lcdp.frontend/.npmrc
  56. 2
      io.sc.platform.lcdp.frontend/package.json
  57. 2
      io.sc.platform.license.keygen.frontend/.npmrc
  58. 2
      io.sc.platform.license.keygen.frontend/package.json
  59. 1
      io.sc.platform.license.keygen.frontend/src/views/license/KeyGenerator.vue
  60. 2
      io.sc.platform.mvc.frontend/.npmrc
  61. 2
      io.sc.platform.mvc.frontend/package.json
  62. 2
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/autoconfigure/support/PlatformRepositoryFactoryBean.java
  63. 2
      io.sc.platform.scheduler.manager.frontend/.npmrc
  64. 2
      io.sc.platform.scheduler.manager.frontend/package.json
  65. 2
      io.sc.platform.system.frontend/.npmrc
  66. 2
      io.sc.platform.system.frontend/package.json
  67. 2
      io.sc.standard.frontend/.npmrc
  68. 2
      io.sc.standard.frontend/package.json
  69. 2
      io.sc.website/.npmrc
  70. 2
      io.sc.website/package.json
  71. 2
      wra.report.frontend/.npmrc
  72. 2
      wra.report.frontend/package.json

2
cips.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
cips.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
erm.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
erm.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
gradle.properties

@ -39,7 +39,7 @@ application_version=1.0.0
platform_group=io.sc platform_group=io.sc
platform_version=8.2.44 platform_version=8.2.44
platform_plugin_version=8.2.10 platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.140 platform_core_frontend_version=8.2.141
########################################################### ###########################################################
# dependencies version # dependencies version

2
io.sc.engine.mv.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.engine.mv.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

27
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/ResourceAbstracts.java

@ -0,0 +1,27 @@
package io.sc.engine.rule.core;
import io.sc.engine.rule.core.enums.DeployStatus;
import java.util.Date;
import java.util.List;
/**
* 资源摘要信息
*/
public class ResourceAbstracts {
private List<ResourceAbstract> resourceAbstracts;
public ResourceAbstracts(){}
public ResourceAbstracts(List<ResourceAbstract> resourceAbstracts){
this.resourceAbstracts =resourceAbstracts;
}
public List<ResourceAbstract> getResourceAbstracts() {
return resourceAbstracts;
}
public void setResourceAbstracts(List<ResourceAbstract> resourceAbstracts) {
this.resourceAbstracts = resourceAbstracts;
}
}

51
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/DecisionTree.java

@ -6,6 +6,7 @@ import io.sc.engine.rule.core.po.model.Parameter;
import io.sc.engine.rule.core.po.model.processor.DecisionTreeParameterProcessor; import io.sc.engine.rule.core.po.model.processor.DecisionTreeParameterProcessor;
import io.sc.engine.rule.core.util.GroovyExpressionReplacer; import io.sc.engine.rule.core.util.GroovyExpressionReplacer;
import io.sc.engine.rule.core.util.ValueTypeUtil; import io.sc.engine.rule.core.util.ValueTypeUtil;
import io.sc.platform.util.CollectionUtil;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -67,6 +68,12 @@ public class DecisionTree {
sb.append(generateResourceAbstractGroovyCode(methodNameCache,parameter,modelAbstractNode,methodName)); sb.append(generateResourceAbstractGroovyCode(methodNameCache,parameter,modelAbstractNode,methodName));
methodNameCache.put(methodName, null); methodNameCache.put(methodName, null);
} }
}else if(node instanceof ResourceAbstractsNode) {
ResourceAbstractsNode modelAbstractsNode =(ResourceAbstractsNode)node;
if(!methodNameCache.containsKey(methodName)) {
sb.append(generateResourceAbstractsGroovyCode(methodNameCache,parameter,modelAbstractsNode,methodName));
methodNameCache.put(methodName, null);
}
} }
return sb.toString(); return sb.toString();
} }
@ -91,12 +98,12 @@ public class DecisionTree {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
if(i==0) { if(i==0) {
sb.append("\tif(ObjectUtil.equal((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(), null)).append("),(").append(GroovyExpressionReplacer.groovy(edge.getValue(), edge.getValueType())).append("))){").append("\n"); sb.append("\t\tif(ObjectUtil.equal((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(), null)).append("),(").append(GroovyExpressionReplacer.groovy(edge.getValue(), edge.getValueType())).append("))){").append("\n");
}else { }else {
if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) { if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) {
sb.append("else if(ObjectUtil.equal((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(),null)).append("),(").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("))){").append("\n"); sb.append("\telse if(ObjectUtil.equal((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(),null)).append("),(").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("))){").append("\n");
}else { }else {
sb.append("else {").append("\n"); sb.append("\telse {").append("\n");
isElse =true; isElse =true;
} }
} }
@ -109,13 +116,13 @@ public class DecisionTree {
} }
} }
} }
sb.append("\t\t").append("return Tree_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); sb.append("\t\t\t").append("return Tree_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n");
sb.append("\t}"); sb.append("\t\t}");
} }
if(!isElse) { if(!isElse) {
sb.append("\n return null;"); sb.append("\n\t\treturn null;");
} }
sb.append("\n}\n\n"); sb.append("\n\t}\n\n");
//继续生成后续方法 //继续生成后续方法
for(GraphNode out :outs) { for(GraphNode out :outs) {
sb.append(_generateGroovyCode(methodNameCache,parameter,out.getOuts().get(0))); sb.append(_generateGroovyCode(methodNameCache,parameter,out.getOuts().get(0)));
@ -167,6 +174,36 @@ public class DecisionTree {
return sb.toString(); return sb.toString();
} }
/**
* 生成决策树多模型摘要节点 groovy 代码
* @param methodNameCache 方法名缓存
* @param parameter 参数
* @param expressionNode 表达式节点
* @param methodName 方法名
* @return 代码
*/
private String generateResourceAbstractsGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ResourceAbstractsNode expressionNode,String methodName) {
StringBuilder sb =new StringBuilder();
sb.append("\tprivate static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(") throws Exception {//多资源").append("\n");
sb.append("\t\tList<ResourceAbstract> items =new ArrayList<>();").append("\n");
List<ResourceAbstractNode> resourceAbstracts = expressionNode.getResourceAbstracts();
if(CollectionUtil.hasElements(resourceAbstracts)){
for(ResourceAbstractNode node : resourceAbstracts){
String code =GroovyExpressionReplacer.groovy(node.getCode(),String.class.getName());
String version =GroovyExpressionReplacer.groovy(node.getVersion(),Integer.class.getName());
if(version==null || version.trim().isEmpty()) {
version ="null";
}
sb.append("\t\titems.add(new ResourceAbstract(").append(code).append(",").append(version).append("));").append("\n");
}
}
sb.append("\t\t").append("return new ").append(parameter.getValueType()).append("(items);").append("\n");
sb.append("\t}").append("\n\n");
return sb.toString();
}
/** /**
* 对条件边进行排序将有条件值的排在前面无条件值的放在后面以便生成 groovy 代码时将无条件值的转为 else 语句 * 对条件边进行排序将有条件值的排在前面无条件值的放在后面以便生成 groovy 代码时将无条件值的转为 else 语句

1
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ModelCategory.java

@ -10,5 +10,6 @@ public enum ModelCategory {
RULE, //规则 RULE, //规则
GOVE, //政府融资平台 GOVE, //政府融资平台
DIR, //目录 DIR, //目录
QUESTION, //问卷
OTHER //其他模型 OTHER //其他模型
} }

3
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ParameterPropertiesName.java

@ -2,5 +2,6 @@ package io.sc.engine.rule.core.enums;
public enum ParameterPropertiesName { public enum ParameterPropertiesName {
SHOW_IF, // 是否可现实 SHOW_IF, // 是否可现实
MODIFY_IF; // 是否可修改 MODIFY_IF, // 是否可修改
RULE; // 规则
} }

15
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/parser/DecisionTreeParser.java

@ -4,13 +4,17 @@ import java.awt.Color;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.Type;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.sc.engine.rule.core.mxgraph.po.*; import io.sc.engine.rule.core.mxgraph.po.*;
import io.sc.platform.util.ObjectMapperUtil;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import io.sc.engine.rule.core.mxgraph.support.DecisionTreeMxGraph; import io.sc.engine.rule.core.mxgraph.support.DecisionTreeMxGraph;
@ -105,6 +109,17 @@ public class DecisionTreeParser {
node.setCode(cell.getAttribute("code")); node.setCode(cell.getAttribute("code"));
node.setVersion(cell.getAttribute("version")); node.setVersion(cell.getAttribute("version"));
result.put(id, node); result.put(id, node);
}else if(GraphNode.RESOURCE_ABSTRACTS.equalsIgnoreCase(type)) {
ResourceAbstractsNode node =new ResourceAbstractsNode();
node.setId(id);
node.setLabel(label);
try {
List<ResourceAbstractNode> resourceAbstractNodes = ObjectMapperUtil.json().readValue(cell.getAttribute("resourceAbstracts"), new TypeReference<List<ResourceAbstractNode>>() {});
node.setResourceAbstracts(resourceAbstractNodes);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
result.put(id, node);
}else if(GraphNode.EDGE_CONDITION_BRANCH.equalsIgnoreCase(type)) { }else if(GraphNode.EDGE_CONDITION_BRANCH.equalsIgnoreCase(type)) {
EdgeConditionBranchNode node =new EdgeConditionBranchNode(); EdgeConditionBranchNode node =new EdgeConditionBranchNode();
node.setId(id); node.setId(id);

1
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/GraphNode.java

@ -15,6 +15,7 @@ public class GraphNode {
public static final String EXPRESSION ="Expression"; public static final String EXPRESSION ="Expression";
public static final String COMMAND_SET ="CommandSet"; public static final String COMMAND_SET ="CommandSet";
public static final String RESOURCE_ABSTRACT ="ResourceAbstract"; public static final String RESOURCE_ABSTRACT ="ResourceAbstract";
public static final String RESOURCE_ABSTRACTS ="ResourceAbstracts";
public static final String CONFIGURABLE_RESOURCE_ABSTRACT ="ConfigurableResourceAbstract"; public static final String CONFIGURABLE_RESOURCE_ABSTRACT ="ConfigurableResourceAbstract";
public static final String SUB_MODEL_ABSTRACT ="SubModelAbstract"; public static final String SUB_MODEL_ABSTRACT ="SubModelAbstract";
public static final String EDGE_CONDITION_BRANCH ="EdgeConditionBranch"; public static final String EDGE_CONDITION_BRANCH ="EdgeConditionBranch";

21
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/ResourceAbstractsNode.java

@ -0,0 +1,21 @@
package io.sc.engine.rule.core.mxgraph.po;
import java.util.ArrayList;
import java.util.List;
/**
* 多模型摘要节点
* @author wangshaoping
*
*/
public class ResourceAbstractsNode extends GraphNode{
private List<ResourceAbstractNode> resourceAbstracts =new ArrayList<>();
public List<ResourceAbstractNode> getResourceAbstracts() {
return resourceAbstracts;
}
public void setResourceAbstracts(List<ResourceAbstractNode> resourceAbstracts) {
this.resourceAbstracts = resourceAbstracts;
}
}

8
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java

@ -22,6 +22,8 @@ public class InOptionParameter extends Parameter {
protected Boolean disableOnAutoSelected; protected Boolean disableOnAutoSelected;
//当参数类型是输入(选项)时,是否采用选择框呈现 //当参数类型是输入(选项)时,是否采用选择框呈现
protected Boolean uiSelect; protected Boolean uiSelect;
//当参数类型是输入(选项)时,是否采用多选框呈现
protected Boolean uiMultiSelect;
//选项列表 //选项列表
protected List<ParameterInOptionItem> options =new ArrayList<>(); protected List<ParameterInOptionItem> options =new ArrayList<>();
@ -45,6 +47,12 @@ public class InOptionParameter extends Parameter {
public void setUiSelect(Boolean uiSelect) { public void setUiSelect(Boolean uiSelect) {
this.uiSelect = uiSelect; this.uiSelect = uiSelect;
} }
public Boolean getUiMultiSelect() {
return uiMultiSelect;
}
public void setUiMultiSelect(Boolean uiMultiSelect) {
this.uiMultiSelect = uiMultiSelect;
}
public List<ParameterInOptionItem> getOptions() { public List<ParameterInOptionItem> getOptions() {
return options; return options;
} }

7
io.sc.engine.rule.core/src/main/resources/META-INF/platform/plugins/rule-engine-dictionary.json

@ -10,7 +10,8 @@
{ "type": "JAVA_CLASS", "order": 800, "id": "java.util.Map", "parent": "re.dictionary.category.base", "code": "java.util.Map", "nameI18nKey": "java.util.Map", "description": "字典类型", "version": null}, { "type": "JAVA_CLASS", "order": 800, "id": "java.util.Map", "parent": "re.dictionary.category.base", "code": "java.util.Map", "nameI18nKey": "java.util.Map", "description": "字典类型", "version": null},
{ "type": "FOLDER", "order": 2000, "id": "re.dictionary.category.engine", "parent": null, "code": "re.dictionary.category.engine", "nameI18nKey": "re.dictionary.category.engine", "description": "引擎内置类型", "version": null}, { "type": "FOLDER", "order": 2000, "id": "re.dictionary.category.engine", "parent": null, "code": "re.dictionary.category.engine", "nameI18nKey": "re.dictionary.category.engine", "description": "引擎内置类型", "version": null},
{ "type": "JAVA_CLASS", "order": 100, "id": "io.sc.engine.rule.core.ResourceAbstract", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.ResourceAbstract", "nameI18nKey": "io.sc.engine.rule.core.ResourceAbstract", "description": "资源摘要", "version": null}, { "type": "JAVA_CLASS", "order": 100, "id": "io.sc.engine.rule.core.ResourceAbstract", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.ResourceAbstract", "nameI18nKey": "io.sc.engine.rule.core.ResourceAbstract", "description": "资源摘要", "version": null},
{ "type": "JAVA_CLASS", "order": 200, "id": "io.sc.engine.rule.core.SingleRuleResult", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.SingleRuleResult", "nameI18nKey": "io.sc.engine.rule.core.SingleRuleResult", "description": "单规则结果", "version": null}, { "type": "JAVA_CLASS", "order": 200, "id": "io.sc.engine.rule.core.ResourceAbstracts", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.ResourceAbstracts", "nameI18nKey": "io.sc.engine.rule.core.ResourceAbstracts", "description": "多资源摘要", "version": null},
{ "type": "JAVA_CLASS", "order": 300, "id": "io.sc.engine.rule.core.RuleSetResult", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.RuleSetResult", "nameI18nKey": "io.sc.engine.rule.core.RuleSetResult", "description": "规则集结果", "version": null}, { "type": "JAVA_CLASS", "order": 300, "id": "io.sc.engine.rule.core.SingleRuleResult", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.SingleRuleResult", "nameI18nKey": "io.sc.engine.rule.core.SingleRuleResult", "description": "单规则结果", "version": null},
{ "type": "FOLDER", "order": 3000, "id": "re.dictionary.category.customization", "parent": null, "code": "re.dictionary.category.customization", "nameI18nKey": "re.dictionary.category.customization", "description": "用户自定义类型", "version": null} { "type": "JAVA_CLASS", "order": 400, "id": "io.sc.engine.rule.core.RuleSetResult", "parent": "re.dictionary.category.engine", "code": "io.sc.engine.rule.core.RuleSetResult", "nameI18nKey": "io.sc.engine.rule.core.RuleSetResult", "description": "规则集结果", "version": null},
{ "type": "FOLDER", "order": 5000, "id": "re.dictionary.category.customization", "parent": null, "code": "re.dictionary.category.customization", "nameI18nKey": "re.dictionary.category.customization", "description": "用户自定义类型", "version": null}
] ]

4
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/java/template/impl/resource.tpl

@ -141,8 +141,8 @@ public class #(className(resource.code,resource.version)) {
#if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) #if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString())
#for(processor : parameter.processors) #for(processor : parameter.processors)
#if("DECISION_TREE"==processor.type.toString()) #if("DECISION_TREE"==processor.type.toString())
//决策树函数: #(parameter.name)(#(parameter.type)) //决策树函数: #(parameter.name)(#(parameter.type))
#(DecisionTree.groovy(parameter,processor)) #(DecisionTree.groovy(parameter,processor))
#end #end
#end #end
#end #end

1
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/java/template/import_render.tpl

@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import io.sc.engine.rule.core.client.Executor; import io.sc.engine.rule.core.client.Executor;
import io.sc.engine.rule.core.ResourceAbstract; import io.sc.engine.rule.core.ResourceAbstract;
import io.sc.engine.rule.core.ResourceAbstracts;
import io.sc.engine.rule.core.RuleSetResult; import io.sc.engine.rule.core.RuleSetResult;
import io.sc.engine.rule.core.SingleRuleResult; import io.sc.engine.rule.core.SingleRuleResult;
import io.sc.engine.rule.core.FieldValidator; import io.sc.engine.rule.core.FieldValidator;

4
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/impl/resource.tpl

@ -139,8 +139,8 @@ class #(className(resource.code,resource.version)) {
#if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) #if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString())
#for(processor : parameter.processors) #for(processor : parameter.processors)
#if("DECISION_TREE"==processor.type.toString()) #if("DECISION_TREE"==processor.type.toString())
//决策树函数: #(parameter.name)(#(parameter.type)) //决策树函数: #(parameter.name)(#(parameter.type))
#(DecisionTree.groovy(parameter,processor)) #(DecisionTree.groovy(parameter,processor))
#end #end
#end #end
#end #end

1
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl

@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
import groovy.transform.Canonical; import groovy.transform.Canonical;
import io.sc.engine.rule.core.client.Executor; import io.sc.engine.rule.core.client.Executor;
import io.sc.engine.rule.core.ResourceAbstract; import io.sc.engine.rule.core.ResourceAbstract;
import io.sc.engine.rule.core.ResourceAbstracts;
import io.sc.engine.rule.core.RuleSetResult; import io.sc.engine.rule.core.RuleSetResult;
import io.sc.engine.rule.core.SingleRuleResult; import io.sc.engine.rule.core.SingleRuleResult;
import io.sc.engine.rule.core.FieldValidator; import io.sc.engine.rule.core.FieldValidator;

1
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary.properties

@ -21,5 +21,6 @@ java.util.Map=Map
# \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B # \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B
io.sc.engine.rule.core.ResourceAbstract=Resource Abstract io.sc.engine.rule.core.ResourceAbstract=Resource Abstract
io.sc.engine.rule.core.ResourceAbstracts=Multiple Resource Abstract
io.sc.engine.rule.core.SingleRuleResult=Single Rule Result io.sc.engine.rule.core.SingleRuleResult=Single Rule Result
io.sc.engine.rule.core.RuleSetResult=Rule Set Result io.sc.engine.rule.core.RuleSetResult=Rule Set Result

1
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary_tw_CN.properties

@ -21,5 +21,6 @@ java.util.Map=\u5B57\u5178
# \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B # \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B
io.sc.engine.rule.core.ResourceAbstract=\u8CC7\u6E90\u6458\u8981 io.sc.engine.rule.core.ResourceAbstract=\u8CC7\u6E90\u6458\u8981
io.sc.engine.rule.core.ResourceAbstracts=\u591A\u8CC7\u6E90\u6458\u8981
io.sc.engine.rule.core.SingleRuleResult=\u55AE\u898F\u5247\u7D50\u679C io.sc.engine.rule.core.SingleRuleResult=\u55AE\u898F\u5247\u7D50\u679C
io.sc.engine.rule.core.RuleSetResult=\u898F\u5247\u96C6\u7D50\u679C io.sc.engine.rule.core.RuleSetResult=\u898F\u5247\u96C6\u7D50\u679C

1
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/dictionary_zh_CN.properties

@ -21,5 +21,6 @@ java.util.Map=\u5B57\u5178
# \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B # \u5F15\u64CE\u5185\u7F6E\u7C7B\u578B
io.sc.engine.rule.core.ResourceAbstract=\u8D44\u6E90\u6458\u8981 io.sc.engine.rule.core.ResourceAbstract=\u8D44\u6E90\u6458\u8981
io.sc.engine.rule.core.ResourceAbstracts=\u591A\u8D44\u6E90\u6458\u8981
io.sc.engine.rule.core.SingleRuleResult=\u5355\u89C4\u5219\u7ED3\u679C io.sc.engine.rule.core.SingleRuleResult=\u5355\u89C4\u5219\u7ED3\u679C
io.sc.engine.rule.core.RuleSetResult=\u89C4\u5219\u96C6\u7ED3\u679C io.sc.engine.rule.core.RuleSetResult=\u89C4\u5219\u96C6\u7ED3\u679C

2
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums.properties

@ -14,6 +14,7 @@ io.sc.engine.rule.core.enums.ModelCategory.ADJUSTMENT=Adjustment
io.sc.engine.rule.core.enums.ModelCategory.RULE=Rule io.sc.engine.rule.core.enums.ModelCategory.RULE=Rule
io.sc.engine.rule.core.enums.ModelCategory.GOVE=Government financing platform io.sc.engine.rule.core.enums.ModelCategory.GOVE=Government financing platform
io.sc.engine.rule.core.enums.ModelCategory.DIR=Directory io.sc.engine.rule.core.enums.ModelCategory.DIR=Directory
io.sc.engine.rule.core.enums.ModelCategory.QUESTION=Question
io.sc.engine.rule.core.enums.ModelCategory.OTHER=Other io.sc.engine.rule.core.enums.ModelCategory.OTHER=Other
#================================================ #================================================
@ -37,6 +38,7 @@ io.sc.engine.rule.core.enums.DeployStatus.APPROVING=Approving
#================================================ #================================================
io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=Show If io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=Show If
io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=Modify If io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=Modify If
io.sc.engine.rule.core.enums.ParameterPropertiesName.RULE=Rule
#================================================ #================================================
# \u53C2\u6570\u7C7B\u578B\u679A\u4E3E # \u53C2\u6570\u7C7B\u578B\u679A\u4E3E

2
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_tw_CN.properties

@ -14,6 +14,7 @@ io.sc.engine.rule.core.enums.ModelCategory.ADJUSTMENT=\u8ABF\u6574\u9805
io.sc.engine.rule.core.enums.ModelCategory.RULE=\u898F\u5247 io.sc.engine.rule.core.enums.ModelCategory.RULE=\u898F\u5247
io.sc.engine.rule.core.enums.ModelCategory.GOVE=\u653F\u5E9C\u878D\u8CC7\u5E73\u53F0 io.sc.engine.rule.core.enums.ModelCategory.GOVE=\u653F\u5E9C\u878D\u8CC7\u5E73\u53F0
io.sc.engine.rule.core.enums.ModelCategory.DIR=\u76EE\u9304 io.sc.engine.rule.core.enums.ModelCategory.DIR=\u76EE\u9304
io.sc.engine.rule.core.enums.ModelCategory.QUESTION=\u554F\u5377
io.sc.engine.rule.core.enums.ModelCategory.OTHER=\u5176\u4ED6 io.sc.engine.rule.core.enums.ModelCategory.OTHER=\u5176\u4ED6
#================================================ #================================================
@ -37,6 +38,7 @@ io.sc.engine.rule.core.enums.DeployStatus.APPROVING=\u5BE9\u6279\u4E2D
#================================================ #================================================
io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=\u662F\u5426\u53EF\u663E\u793A io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=\u662F\u5426\u53EF\u663E\u793A
io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=\u662F\u5426\u53EF\u4FEE\u6539 io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=\u662F\u5426\u53EF\u4FEE\u6539
io.sc.engine.rule.core.enums.ParameterPropertiesName.RULE=\u898F\u5247
#================================================ #================================================
# \u53C2\u6570\u7C7B\u578B\u679A\u4E3E # \u53C2\u6570\u7C7B\u578B\u679A\u4E3E

2
io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/i18n/enums_zh_CN.properties

@ -14,6 +14,7 @@ io.sc.engine.rule.core.enums.ModelCategory.ADJUSTMENT=\u8C03\u6574\u9879
io.sc.engine.rule.core.enums.ModelCategory.RULE=\u89C4\u5219 io.sc.engine.rule.core.enums.ModelCategory.RULE=\u89C4\u5219
io.sc.engine.rule.core.enums.ModelCategory.GOVE=\u653F\u5E9C\u878D\u8D44\u5E73\u53F0 io.sc.engine.rule.core.enums.ModelCategory.GOVE=\u653F\u5E9C\u878D\u8D44\u5E73\u53F0
io.sc.engine.rule.core.enums.ModelCategory.DIR=\u76EE\u5F55 io.sc.engine.rule.core.enums.ModelCategory.DIR=\u76EE\u5F55
io.sc.engine.rule.core.enums.ModelCategory.QUESTION=\u95EE\u5377
io.sc.engine.rule.core.enums.ModelCategory.OTHER=\u5176\u4ED6 io.sc.engine.rule.core.enums.ModelCategory.OTHER=\u5176\u4ED6
#================================================ #================================================
@ -37,6 +38,7 @@ io.sc.engine.rule.core.enums.DeployStatus.APPROVING=\u5BA1\u6279\u4E2D
#================================================ #================================================
io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=\u662F\u5426\u663E\u793A io.sc.engine.rule.core.enums.ParameterPropertiesName.SHOW_IF=\u662F\u5426\u663E\u793A
io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=\u662F\u5426\u53EF\u4FEE\u6539 io.sc.engine.rule.core.enums.ParameterPropertiesName.MODIFY_IF=\u662F\u5426\u53EF\u4FEE\u6539
io.sc.engine.rule.core.enums.ParameterPropertiesName.RULE=\u89C4\u5219
#================================================ #================================================
# \u53C2\u6570\u7C7B\u578B\u679A\u4E3E # \u53C2\u6570\u7C7B\u578B\u679A\u4E3E

2
io.sc.engine.rule.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.engine.rule.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

5
io.sc.engine.rule.frontend/src/i18n/messages.json

@ -99,6 +99,7 @@
"re.parameter.grid.entity.indicatorCode": "Indicator", "re.parameter.grid.entity.indicatorCode": "Indicator",
"re.parameter.grid.entity.persistentAsIndicator": "Persistent As Indicator", "re.parameter.grid.entity.persistentAsIndicator": "Persistent As Indicator",
"re.parameter.grid.entity.uiSelect": "Is Select Component In UI", "re.parameter.grid.entity.uiSelect": "Is Select Component In UI",
"re.parameter.grid.entity.uiMultiSelect": "Is Multiple Select Component In UI",
"re.parameter.grid.entity.disableOnAutoSelected": "Disabled On System Auto Selected a Option", "re.parameter.grid.entity.disableOnAutoSelected": "Disabled On System Auto Selected a Option",
"re.parameter.grid.entity.properties": "Extension Properties", "re.parameter.grid.entity.properties": "Extension Properties",
"re.parameter.grid.entity.property.name": "Property Name", "re.parameter.grid.entity.property.name": "Property Name",
@ -383,6 +384,10 @@
"re.graph.vertex.resourceAbstract.label": "RA", "re.graph.vertex.resourceAbstract.label": "RA",
"re.graph.vertex.resourceAbstract.title": "Resource", "re.graph.vertex.resourceAbstract.title": "Resource",
"re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "Resource", "re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "Resource",
"re.graph.vertex.resourceAbstract.entity.resourceAbstractIds": "Resources",
"re.graph.vertex.resourceAbstracts.label": "RAS",
"re.graph.vertex.resourceAbstracts.title": "Resources",
"re.graph.vertex.resourceAbstracts.entity.resourceAbstractId": "Resources",
"re.graph.vertex.commandSet.label": "Commands", "re.graph.vertex.commandSet.label": "Commands",
"re.graph.vertex.commandSet.title": "Commands", "re.graph.vertex.commandSet.title": "Commands",
"re.graph.vertex.commandSet.entity.commands": "Commands", "re.graph.vertex.commandSet.entity.commands": "Commands",

4
io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json

@ -99,6 +99,7 @@
"re.parameter.grid.entity.indicatorCode": "指標", "re.parameter.grid.entity.indicatorCode": "指標",
"re.parameter.grid.entity.persistentAsIndicator": "是否作為指標存儲", "re.parameter.grid.entity.persistentAsIndicator": "是否作為指標存儲",
"re.parameter.grid.entity.uiSelect": "是否採用下拉選擇框", "re.parameter.grid.entity.uiSelect": "是否採用下拉選擇框",
"re.parameter.grid.entity.uiMultiSelect": "是否採用多選框",
"re.parameter.grid.entity.disableOnAutoSelected": "當系統自動選擇了輸入選項中的某一項時, 是否禁止用戶選擇其他項", "re.parameter.grid.entity.disableOnAutoSelected": "當系統自動選擇了輸入選項中的某一項時, 是否禁止用戶選擇其他項",
"re.parameter.grid.entity.properties": "擴展屬性", "re.parameter.grid.entity.properties": "擴展屬性",
"re.parameter.grid.entity.property.name": "屬性名", "re.parameter.grid.entity.property.name": "屬性名",
@ -386,6 +387,9 @@
"re.graph.vertex.resourceAbstract.label": "資源", "re.graph.vertex.resourceAbstract.label": "資源",
"re.graph.vertex.resourceAbstract.title": "資源", "re.graph.vertex.resourceAbstract.title": "資源",
"re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "資源", "re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "資源",
"re.graph.vertex.resourceAbstracts.label": "多資源",
"re.graph.vertex.resourceAbstracts.title": "多資源",
"re.graph.vertex.resourceAbstracts.entity.resourceAbstractIds": "多資源",
"re.graph.vertex.commandSet.label": "指令集", "re.graph.vertex.commandSet.label": "指令集",
"re.graph.vertex.commandSet.title": "指令集", "re.graph.vertex.commandSet.title": "指令集",
"re.graph.vertex.commandSet.entity.commands": "指令集", "re.graph.vertex.commandSet.entity.commands": "指令集",

4
io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json

@ -99,6 +99,7 @@
"re.parameter.grid.entity.indicatorCode": "指标", "re.parameter.grid.entity.indicatorCode": "指标",
"re.parameter.grid.entity.persistentAsIndicator": "是否作为指标存储", "re.parameter.grid.entity.persistentAsIndicator": "是否作为指标存储",
"re.parameter.grid.entity.uiSelect": "是否采用下拉选择框", "re.parameter.grid.entity.uiSelect": "是否采用下拉选择框",
"re.parameter.grid.entity.uiMultiSelect": "是否多选框",
"re.parameter.grid.entity.disableOnAutoSelected": "当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项", "re.parameter.grid.entity.disableOnAutoSelected": "当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项",
"re.parameter.grid.entity.properties": "扩展属性", "re.parameter.grid.entity.properties": "扩展属性",
"re.parameter.grid.entity.property.name": "属性名", "re.parameter.grid.entity.property.name": "属性名",
@ -389,6 +390,9 @@
"re.graph.vertex.resourceAbstract.label": "资源", "re.graph.vertex.resourceAbstract.label": "资源",
"re.graph.vertex.resourceAbstract.title": "资源", "re.graph.vertex.resourceAbstract.title": "资源",
"re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "资源", "re.graph.vertex.resourceAbstract.entity.resourceAbstractId": "资源",
"re.graph.vertex.resourceAbstracts.label": "多资源",
"re.graph.vertex.resourceAbstracts.title": "多资源",
"re.graph.vertex.resourceAbstracts.entity.resourceAbstractIds": "多资源",
"re.graph.vertex.commandSet.label": "指令集", "re.graph.vertex.commandSet.label": "指令集",
"re.graph.vertex.commandSet.title": "指令集", "re.graph.vertex.commandSet.title": "指令集",
"re.graph.vertex.commandSet.entity.commands": "指令集", "re.graph.vertex.commandSet.entity.commands": "指令集",

210
io.sc.engine.rule.frontend/src/views/resources/designer/DecisionTreeDialog.vue

@ -1,15 +1,19 @@
<template> <template>
<w-dialog ref="dialogRef" :title="$t('re.processor.dialog.decisionTree.title')" :can-maximize="false" :maximized="true" body-padding="0px 2px 2px 2px"> <div>
<w-graph v-model="modelValueRef" :vertex-defines="vertexDefines" :edge-defines="edgeDefines" @save="save"></w-graph> <w-dialog ref="dialogRef" :title="$t('re.processor.dialog.decisionTree.title')" :can-maximize="false" :maximized="true" body-padding="0px 2px 2px 2px">
</w-dialog> <w-graph v-model="modelValueRef" :vertex-defines="vertexDefines" :edge-defines="edgeDefines" @save="save"></w-graph>
</w-dialog>
<SelectResourceDialog ref="selectResourceDialogRef" @after-selected="afterSelectResourceSelected"></SelectResourceDialog>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref } from 'vue';
import { $t, axios, Environment, NotifyManager } from 'platform-core'; import { $t, axios, Environment, NotifyManager, Tools } from 'platform-core';
import { AutoCompletionManager } from '@/views/shared/AutoCompletionManager'; import { AutoCompletionManager } from '@/views/shared/AutoCompletionManager';
import { UserDefinedFunctionsManager } from '@/views/shared/UserDefinedFunctionsManager'; import { UserDefinedFunctionsManager } from '@/views/shared/UserDefinedFunctionsManager';
import { PlaceHolder } from '@/utils/PlaceHolder'; import { PlaceHolder } from '@/utils/PlaceHolder';
import { EngineEnums } from '@/views/shared/enums/EngineEnums'; import { EngineEnums } from '@/views/shared/enums/EngineEnums';
import SelectResourceDialog from '@/views/shared/SelectResourceDialog.vue';
const dialogRef = ref(); const dialogRef = ref();
const processorIdRef = ref(); const processorIdRef = ref();
@ -18,6 +22,7 @@ const modelValueRef = ref();
const autoCompletionManager = new AutoCompletionManager(); const autoCompletionManager = new AutoCompletionManager();
const userDefinedFunctionsManager = new UserDefinedFunctionsManager(); const userDefinedFunctionsManager = new UserDefinedFunctionsManager();
const resourceAbstractsRef = ref(); const resourceAbstractsRef = ref();
const selectResourceDialogRef = ref();
const edgeDefines = [ const edgeDefines = [
{ {
@ -334,6 +339,179 @@ const vertexDefines = [
]; ];
}, },
}, },
{
type: 'ResourceAbstracts',
thumbnail: {
shape: 'doubleEllipse',
paths: [
'<path fill="white" stroke-width="1" stroke="black" d="M1 12a11 8 0 1 0 22 0a11 8 0 1 0 -22 0"></path>',
'<path fill="white" stroke-width="1" stroke="black" d="M3 12a9 6 0 1 0 18 0a9 6 0 1 0 -18 0"></path>',
],
label: $t('re.graph.vertex.resourceAbstracts.label'),
title: $t('re.graph.vertex.resourceAbstracts.title'),
strokeColor: 'black',
strokeWidth: 1,
},
cell: {
shape: 'doubleEllipse',
size: [120, 60],
},
getLabel: (value: any) => {
console.log('getLabel', value);
if (value.resourceAbstractIds && value.resourceAbstractIds.length > 0) {
const resourceAbstracts = findResourceAbstractByIds(value.resourceAbstractIds);
console.log(resourceAbstracts.length);
if (resourceAbstracts && resourceAbstracts.length > 0) {
const result = [];
for (const element of resourceAbstracts) {
result.push(element.name + '(V' + element.version + ')');
}
return Tools.join(result, '\n');
}
}
return '';
},
getValue: (dom: any) => {
console.log('getValue');
if (dom) {
const resourceAbstracts = Tools.json2Object(dom.getAttribute('resourceAbstracts'));
if (resourceAbstracts && resourceAbstracts.length > 0) {
let ids = [];
for (const resourceAbstract of resourceAbstracts) {
const item = findResourceAbstractByCodeAndVersion(resourceAbstract.code, resourceAbstract.version.toString());
if (item) {
ids.push(item.id);
}
}
return { resourceAbstractIds: ids };
}
}
return {
resourceAbstractIds: [],
};
},
setValue: (dom: any, value: any) => {
console.log('setValue');
if (value.resourceAbstractIds && value.resourceAbstractIds.length > 0) {
const resourceAbstracts = findResourceAbstractByIds(value.resourceAbstractIds);
if (resourceAbstracts && resourceAbstracts.length > 0) {
let items = [];
for (const element of resourceAbstracts) {
items.push({ code: element.code, version: element.version });
}
dom.setAttribute('resourceAbstracts', Tools.object2Json(items));
return;
}
}
dom.setAttribute('resourceAbstracts', '[]');
},
getFormFields: () => {
return [
{
name: 'resourceAbstractIds2',
label: $t('re.graph.vertex.resourceAbstracts.entity.resourceAbstractIds'),
type: 'w-grid',
height: 300,
localMode: true,
autoFetchData: false,
dndMode: 'local',
pageable: false,
configButton: false,
toolbarConfigure: { noIcon: false },
toolbarActions: [
{
name: 'selectIn',
label: $t('system.shared.selectRole.grid.toolbar.selectIn'),
icon: 'bi-download',
click: (args: any) => {
selectResourceDialogRef.value.open(args.grid);
},
},
{
name: 'selectOut',
label: $t('system.shared.selectRole.grid.toolbar.selectOut'),
icon: 'bi-upload',
click: (args: any) => {
console.log(args.grid);
args.grid.removeLocalData(args.grid.getSelectedRows());
},
},
],
columns: [
{ width: '100%', name: 'name', label: $t('name') },
{ width: 60, name: 'version', label: $t('version') },
{
width: 80,
name: 'status',
label: $t('status'),
align: 'center',
format: EngineEnums.DeployStatus.formater,
},
],
editor: {},
onAfterEditorDataSubmit: (args: any) => {},
},
{
name: 'resourceAbstractIds',
label: $t('re.graph.vertex.resourceAbstracts.entity.resourceAbstractIds'),
type: 'w-grid-select',
multiple: true,
displayValue: (args: any) => {
return args.data.name + '(V' + args.data.version + ')';
},
grid: {
title: $t('re.graph.vertex.resourceAbstracts.entity.resourceAbstractIds'),
denseBody: true,
hideBottom: true,
configButton: true,
checkboxSelection: false,
tree: true,
treeTickStrategy: 'strict',
treeIcon: (row: any) => {
if (row.type === 'FOLDER') {
return { name: 'folder', color: 'amber' };
} else if (row.type === 'MODEL') {
return { name: 'bi-boxes' };
} else if (row.type === 'SCORE_CARD') {
return { name: 'bi-card-list' };
} else {
return { name: row.icon };
}
},
selectableIf: (args: any) => {
return args.data.type === 'MODEL';
},
dataUrl: Environment.apiContextPath('/api/re/resource'),
pageable: false,
sortBy: ['type', 'namec', '-lastModifyDate'],
toolbarConfigure: { noIcon: false },
toolbarActions: ['refresh', 'expand'],
columns: [
{ width: '100%', name: 'name', label: $t('name') },
{
width: 80,
name: 'type',
label: $t('type'),
format: (value: any, row: any) => {
if (value !== 'FOLDER') {
return EngineEnums.ResourceType.formater(value);
}
},
},
{ width: 60, name: 'version', label: $t('version') },
{
width: 80,
name: 'status',
label: $t('status'),
align: 'center',
format: EngineEnums.DeployStatus.formater,
},
],
},
},
];
},
},
]; ];
const findResourceAbstractById = (id: string) => { const findResourceAbstractById = (id: string) => {
@ -345,7 +523,20 @@ const findResourceAbstractById = (id: string) => {
return null; return null;
}; };
const findResourceAbstractByCodeAndVersion = (code: string, version: number) => { const findResourceAbstractByIds = (ids: string[]) => {
const result = [];
if (ids && ids.length > 0) {
for (const id of ids) {
const item = findResourceAbstractById(id);
if (item) {
result.push(item);
}
}
}
return result;
};
const findResourceAbstractByCodeAndVersion = (code: string, version: string) => {
for (const item of resourceAbstractsRef.value) { for (const item of resourceAbstractsRef.value) {
if (item.code === code && item.version.toString() === version) { if (item.code === code && item.version.toString() === version) {
return item; return item;
@ -381,6 +572,15 @@ const save = (xml: string) => {
}); });
}; };
const afterSelectResourceSelected = (owner: any, selecteds: any) => {
if (selecteds && selecteds.length > 0) {
for (const selected of selecteds) {
selected.selected = false;
}
}
owner.addLocalData(selecteds);
};
defineExpose({ defineExpose({
open, open,
close, close,

11
io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue

@ -236,12 +236,21 @@
return 'IN_OPTION' === args.form.getFieldValue('type'); return 'IN_OPTION' === args.form.getFieldValue('type');
}, },
}, },
{
name: 'uiMultiSelect',
label: $t('re.parameter.grid.entity.uiMultiSelect'),
type: 'w-checkbox',
defaultValue: false,
showIf: (args: any) => {
return 'IN_OPTION' === args.form.getFieldValue('type');
},
},
{ {
name: 'properties', name: 'properties',
label: $t('re.parameter.grid.entity.properties'), label: $t('re.parameter.grid.entity.properties'),
type: 'w-grid', type: 'w-grid',
title: $t('re.parameter.grid.entity.properties'), title: $t('re.parameter.grid.entity.properties'),
height: 200, height: 150,
localMode: true, localMode: true,
dbClickOperation: 'edit', dbClickOperation: 'edit',
autoFetchData: false, autoFetchData: false,

110
io.sc.engine.rule.frontend/src/views/shared/SelectResourceDialog.vue

@ -0,0 +1,110 @@
<template>
<w-dialog
ref="dialogRef"
:title="$t('re.resources.grid.title')"
width="800px"
height="600px"
:can-maximize="false"
:buttons="[
{
label: $t('confirm'),
click: () => {
const ids = Tools.extractProperties(treeGridRef.getSelectedRows(), 'id');
emit('afterSelected', _owner, treeGridRef.getSelectedRows());
close();
},
},
]"
>
<w-grid
ref="treeGridRef"
:title="$t('system.shared.selectOrg.dialog.grid.title')"
hide-bottom
:dense-body="true"
:config-button="false"
:tree="true"
selection="multiple"
:checkbox-selection="true"
tree-tick-strategy="strict"
ticked-field="selected"
:tree-icon="
(row) => {
if (row.type === 'FOLDER') {
return { name: 'folder', color: 'amber' };
} else if (row.type === 'MODEL') {
return { name: 'bi-boxes' };
} else {
return { name: row.icon };
}
}
"
:selectable-if="
(args: any) => {
return args.data.type === 'MODEL';
}
"
:fetch-data-url="Environment.apiContextPath('/api/re/resource')"
:auto-fetch-data="true"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['refresh', 'separator', 'expand']"
:columns="[
{
width: 400,
name: 'namec',
label: $t('name'),
format: (value: any, row: any) => {
return row.name;
},
},
{
width: 80,
name: 'type',
label: $t('type'),
showIf: false,
format: EngineEnums.ResourceType.formater,
},
{ width: 150, name: 'code', label: $t('code'), showIf: false },
{ width: 60, name: 'version', label: $t('version'), align: 'right' },
{
width: 60,
name: 'status',
label: $t('status'),
align: 'center',
format: EngineEnums.DeployStatus.formater,
},
{ width: 100, name: 'lastModifier', label: $t('lastModifier') },
{ width: 140, name: 'lastModifyDate', label: $t('lastModifyDate') },
]"
></w-grid>
</w-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Environment, Formater, Tools } from 'platform-core';
import { EngineEnums } from '@/views/shared/enums/EngineEnums';
const emit = defineEmits<{
(e: 'afterSelected', owner: string[], selecteds: any): void;
}>();
const dialogRef = ref();
const treeGridRef = ref();
let _owner;
const open = (owner: any) => {
_owner = owner;
dialogRef.value.show();
};
const close = () => {
dialogRef.value.hide();
};
defineExpose({
open,
close,
});
await EngineEnums.init();
</script>

4
io.sc.engine.rule.frontend/src/views/shared/Validator.vue

@ -188,9 +188,9 @@
@after-editor-open=" @after-editor-open="
(args: any) => { (args: any) => {
if (type === 'parameter') { if (type === 'parameter') {
autoCompletionManager.load(Environment.apiContextPath('/api/re/common/autoCompletionByParameterId/' + owner.id)); autoCompletionManager.load(Environment.apiContextPath('/api/re/common/parameterAndValueType/findByParameterId/' + owner.id));
} else if (type === 'indicator') { } else if (type === 'indicator') {
autoCompletionManager.load(Environment.apiContextPath('/api/re/common/autoCompletionByIndicatorId/' + owner.id)); autoCompletionManager.load(Environment.apiContextPath('/api/re/common/parameterAndValueType/findByIndicatorId/' + owner.id));
} }
userDefinedFunctionsManager.load(); userDefinedFunctionsManager.load();
} }

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java

@ -36,6 +36,7 @@ public class ParameterEntityConverter {
InOptionParameter _po =new InOptionParameter(); InOptionParameter _po =new InOptionParameter();
_po.setDisableOnAutoSelected(_entity.getDisableOnAutoSelected()); _po.setDisableOnAutoSelected(_entity.getDisableOnAutoSelected());
_po.setUiSelect(_entity.getUiSelect()); _po.setUiSelect(_entity.getUiSelect());
_po.setUiMultiSelect(_entity.getUiMultiSelect());
_po.setOptions(ParameterInOptionItemEntityConverter.toPo(_entity.getOptions())); _po.setOptions(ParameterInOptionItemEntityConverter.toPo(_entity.getOptions()));
_po.setAdditons(ParameterInOptionAdditionEntityConverter.toPo(_entity.getAdditions())); _po.setAdditons(ParameterInOptionAdditionEntityConverter.toPo(_entity.getAdditions()));
po =_po; po =_po;
@ -110,6 +111,7 @@ public class ParameterEntityConverter {
InOptionParameterEntity _entity =new InOptionParameterEntity(); InOptionParameterEntity _entity =new InOptionParameterEntity();
_entity.setDisableOnAutoSelected(_po.getDisableOnAutoSelected()); _entity.setDisableOnAutoSelected(_po.getDisableOnAutoSelected());
_entity.setUiSelect(_po.getUiSelect()); _entity.setUiSelect(_po.getUiSelect());
_entity.setUiMultiSelect(_po.getUiMultiSelect());
List<ParameterInOptionItemEntity> options =ParameterInOptionItemEntityConverter.fromPo(_po.getOptions()); List<ParameterInOptionItemEntity> options =ParameterInOptionItemEntityConverter.fromPo(_po.getOptions());
if(options!=null && options.size()>0) { if(options!=null && options.size()>0) {

12
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InOptionParameterEntity.java

@ -29,6 +29,11 @@ public class InOptionParameterEntity extends ParameterEntity {
@Convert(converter= NumericBooleanConverter.class) @Convert(converter= NumericBooleanConverter.class)
protected Boolean uiSelect; protected Boolean uiSelect;
//当参数类型是输入(选项)时,是否采用多选框呈现
@Column(name="IS_UI_MULTI_SELECT_")
@Convert(converter= NumericBooleanConverter.class)
protected Boolean uiMultiSelect;
//选项列表 //选项列表
@OneToMany(mappedBy="parameter",cascade= {CascadeType.PERSIST}) @OneToMany(mappedBy="parameter",cascade= {CascadeType.PERSIST})
@OrderBy("order") @OrderBy("order")
@ -46,6 +51,7 @@ public class InOptionParameterEntity extends ParameterEntity {
vo.setType(this.getType()); vo.setType(this.getType());
vo.setDisableOnAutoSelected(this.getDisableOnAutoSelected()); vo.setDisableOnAutoSelected(this.getDisableOnAutoSelected());
vo.setUiSelect(this.getUiSelect()); vo.setUiSelect(this.getUiSelect());
vo.setUiMultiSelect(this.getUiMultiSelect());
return vo; return vo;
} }
@ -71,6 +77,12 @@ public class InOptionParameterEntity extends ParameterEntity {
public void setUiSelect(Boolean uiSelect) { public void setUiSelect(Boolean uiSelect) {
this.uiSelect = uiSelect; this.uiSelect = uiSelect;
} }
public Boolean getUiMultiSelect() {
return uiMultiSelect;
}
public void setUiMultiSelect(Boolean uiMultiSelect) {
this.uiMultiSelect = uiMultiSelect;
}
public List<ParameterInOptionItemEntity> getOptions() { public List<ParameterInOptionItemEntity> getOptions() {
return options; return options;

10
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/InOptionParameterVo.java

@ -11,6 +11,8 @@ public class InOptionParameterVo extends ParameterVo {
protected Boolean disableOnAutoSelected; protected Boolean disableOnAutoSelected;
//当参数类型是输入(选项)时,是否采用选择框呈现 //当参数类型是输入(选项)时,是否采用选择框呈现
protected Boolean uiSelect; protected Boolean uiSelect;
//当参数类型是输入(选项)时,是否采用多选框呈现
protected Boolean uiMultiSelect;
@Override @Override
public ParameterType getType() { public ParameterType getType() {
@ -32,4 +34,12 @@ public class InOptionParameterVo extends ParameterVo {
public void setUiSelect(Boolean uiSelect) { public void setUiSelect(Boolean uiSelect) {
this.uiSelect = uiSelect; this.uiSelect = uiSelect;
} }
public Boolean getUiMultiSelect() {
return uiMultiSelect;
}
public void setUiMultiSelect(Boolean uiMultiSelect) {
this.uiMultiSelect = uiMultiSelect;
}
} }

9
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/impl/ResourceServiceImpl.java

@ -34,6 +34,7 @@ import io.sc.engine.rule.server.resource.converter.ResourceEntityConverter;
import io.sc.engine.rule.server.resource.entity.FolderResourceEntity; import io.sc.engine.rule.server.resource.entity.FolderResourceEntity;
import io.sc.engine.rule.server.resource.entity.ModelResourceEntity; import io.sc.engine.rule.server.resource.entity.ModelResourceEntity;
import io.sc.engine.rule.server.resource.entity.ResourceEntity; import io.sc.engine.rule.server.resource.entity.ResourceEntity;
import io.sc.engine.rule.server.resource.exception.ResourceAlreadyExistsException;
import io.sc.engine.rule.server.resource.repository.ResourceRepository; import io.sc.engine.rule.server.resource.repository.ResourceRepository;
import io.sc.engine.rule.server.resource.service.ResourceQueryService; import io.sc.engine.rule.server.resource.service.ResourceQueryService;
import io.sc.engine.rule.server.resource.service.ResourceService; import io.sc.engine.rule.server.resource.service.ResourceService;
@ -54,6 +55,7 @@ import io.sc.platform.system.role.jpa.entity.RoleEntity;
import io.sc.platform.system.role.service.RoleService; import io.sc.platform.system.role.service.RoleService;
import io.sc.platform.util.CollectionUtil; import io.sc.platform.util.CollectionUtil;
import io.sc.platform.util.ObjectMapperUtil; import io.sc.platform.util.ObjectMapperUtil;
import io.sc.platform.util.ObjectUtil;
import org.flowable.engine.ProcessEngine; import org.flowable.engine.ProcessEngine;
import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstance;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -510,7 +512,7 @@ public class ResourceServiceImpl extends DaoServiceImpl<ResourceEntity, String,
*/ */
private void checkConstraint(AuditLogAction action,ResourceEntity entity) throws Exception { private void checkConstraint(AuditLogAction action,ResourceEntity entity) throws Exception {
if(existsSameNameEntityInParent(action,entity)) { if(existsSameNameEntityInParent(action,entity)) {
throw new LibAlreadyExistsException(); throw new ResourceAlreadyExistsException();
} }
} }
@ -538,7 +540,10 @@ public class ResourceServiceImpl extends DaoServiceImpl<ResourceEntity, String,
return true; return true;
case UPDATE: case UPDATE:
for(ResourceEntity element : entities) { for(ResourceEntity element : entities) {
if(!element.getId().equals(entity.getId())) { if(!Objects.equals(element.getId(),entity.getId())
&& !Objects.equals(element.getCode(),entity.getCode())
&& !Objects.equals(element.getVersion(),entity.getVersion())
) {
return true; return true;
} }
} }

1
io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule_Engine_Database_Schema_DDL.xml

@ -170,6 +170,7 @@
<column name="IS_PERSISTENT_AS_INDICATOR" type="SMALLINT" remarks="是否作为指标存储"/> <column name="IS_PERSISTENT_AS_INDICATOR" type="SMALLINT" remarks="是否作为指标存储"/>
<column name="DISABLE_ON_AUTO_SELECTED_" type="SMALLINT" remarks="当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项"/> <column name="DISABLE_ON_AUTO_SELECTED_" type="SMALLINT" remarks="当系统自动选择了输入选项中某一项时, 是否禁止用户选择其他项"/>
<column name="IS_UI_SELECT_" type="SMALLINT" remarks="当参数类型是输入(选项)时,是否采用选择框呈现,false:单选框; true: 下拉选择框"/> <column name="IS_UI_SELECT_" type="SMALLINT" remarks="当参数类型是输入(选项)时,是否采用选择框呈现,false:单选框; true: 下拉选择框"/>
<column name="IS_UI_MULTI_SELECT_" type="SMALLINT" remarks="当参数类型是输入(选项)时,是否采用多选框呈现,false:单选框; true: 多选框"/>
<column name="PROPERTIES_" type="CLOB" remarks="属性"/> <column name="PROPERTIES_" type="CLOB" remarks="属性"/>
<!-- 审计字段 --> <!-- 审计字段 -->

2
io.sc.engine.st.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.engine.st.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.ai.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

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

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

30
io.sc.platform.core.frontend/src/platform/components/grid/TdContent.vue

@ -1,18 +1,20 @@
<template> <template>
<template v-if="!Tools.isEmpty(value) && typeof value === 'object' && value.componentType && value.bindModelValue"> <div>
<component <template v-if="!Tools.isEmpty(value) && typeof value === 'object' && value.componentType && value.bindModelValue">
:is="value.componentType" <component
v-bind="value.attrs" :is="value.componentType"
v-model="tools.dataFM.getRow(tools.table.rows, props.row[Constant.FIELD_NAMES.ROW_KEY], false)[col.name]" v-bind="value.attrs"
></component> v-model="tools.dataFM.getRow(tools.table.rows, props.row[Constant.FIELD_NAMES.ROW_KEY], false)[col.name]"
</template> ></component>
<template v-else-if="!Tools.isEmpty(value) && typeof value === 'object' && value.componentType"> </template>
<component :is="value.componentType" v-bind="value.attrs"></component> <template v-else-if="!Tools.isEmpty(value) && typeof value === 'object' && value.componentType">
</template> <component :is="value.componentType" v-bind="value.attrs"></component>
<template v-else> </template>
<span v-if="col.html" v-dompurify-html="Tools.isUndefinedOrNull(value) ? '' : value"></span> <template v-else>
<span v-else>{{ value }}</span> <span v-if="col.html" v-dompurify-html="Tools.isUndefinedOrNull(value) ? '' : value"></span>
</template> <span v-else>{{ value }}</span>
</template>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">

3
io.sc.platform.core.frontend/src/views/testcase/form/form.vue

@ -6,7 +6,8 @@
db-click-operation="edit" db-click-operation="edit"
selection="multiple" selection="multiple"
:checkbox-selection="true" :checkbox-selection="true"
:data-url="Environment.apiContextPath('/api/system/i18n')" :tree="true"
:data-url="Environment.apiContextPath('/api/system/org')"
:query-form-fields="[ :query-form-fields="[
{ name: 'code', label: $t('code'), type: 'w-text' }, { name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'message', label: $t('i18nMessage'), type: 'w-text' }, { name: 'message', label: $t('i18nMessage'), type: 'w-text' },

2
io.sc.platform.core.frontend/template-project/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.140", "version": "8.2.141",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

3
io.sc.platform.core.frontend/template-project/src/views/testcase/form/form.vue

@ -6,7 +6,8 @@
db-click-operation="edit" db-click-operation="edit"
selection="multiple" selection="multiple"
:checkbox-selection="true" :checkbox-selection="true"
:data-url="Environment.apiContextPath('/api/system/i18n')" :tree="true"
:data-url="Environment.apiContextPath('/api/system/org')"
:query-form-fields="[ :query-form-fields="[
{ name: 'code', label: $t('code'), type: 'w-text' }, { name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'message', label: $t('i18nMessage'), type: 'w-text' }, { name: 'message', label: $t('i18nMessage'), type: 'w-text' },

2
io.sc.platform.developer.doc/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15" "vuepress": "2.0.0-rc.15"
}, },
"dependencies": { "dependencies": {
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"vue": "3.5.13", "vue": "3.5.13",
"vue-i18n": "11.0.1" "vue-i18n": "11.0.1"

2
io.sc.platform.developer.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.lcdp.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.license.keygen.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.platform.license.keygen.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

1
io.sc.platform.license.keygen.frontend/src/views/license/KeyGenerator.vue

@ -42,6 +42,7 @@
width: 200, width: 200,
name: 'macAddresses', name: 'macAddresses',
label: $t('license.keygen.grid.entity.macAddressesOnly'), label: $t('license.keygen.grid.entity.macAddressesOnly'),
html: true,
format: (value, row) => { format: (value, row) => {
if (value) { if (value) {
let str = ''; let str = '';

2
io.sc.platform.mvc.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.orm/src/main/java/io/sc/platform/orm/autoconfigure/support/PlatformRepositoryFactoryBean.java

@ -16,4 +16,6 @@ public class PlatformRepositoryFactoryBean<R extends Repository<T, ID>, T, ID ex
protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) { protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
return new PlatformRepositoryFactory(entityManager); return new PlatformRepositoryFactory(entityManager);
} }
} }

2
io.sc.platform.scheduler.manager.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.platform.scheduler.manager.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.system.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

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

@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.standard.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.standard.frontend/package.json

@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.website/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
io.sc.website/package.json

@ -28,6 +28,6 @@
}, },
"dependencies": { "dependencies": {
"vue": "3.5.13", "vue": "3.5.13",
"platform-core": "8.2.140" "platform-core": "8.2.141"
} }
} }

2
wra.report.frontend/.npmrc

@ -12,4 +12,4 @@ git-checks=false
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
# 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f # 上海农商银行内网令牌: NpmToken.ed1a68b7-543f-3c15-8451-2edbc0de057f
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.8d45fdad-a169-3f2d-b245-440815bc5e7e

2
wra.report.frontend/package.json

@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.140", "platform-core": "8.2.141",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

Loading…
Cancel
Save