@@ -490,7 +490,8 @@ public class ModelFormHelper { | |||
field.put("id", pdf.id); | |||
field.put("field", pdf.field); | |||
field.put("name", pdf.name); | |||
field.put("label", pdf.label); | |||
String label = (String) field.get("field_text"); | |||
field.put("label", StringUtils.isEmpty(label)? pdf.label: label); | |||
field.put("required", pdf.isFieldNotNull()); | |||
final SwEnum.DataTypeBean dtb = SwEnum.DataType.instance.getByValue(pdf.dataType); | |||
if (dtb != null) { | |||
@@ -2,10 +2,10 @@ package cc.smtweb.system.bpm.web.design.form.model; | |||
import cc.smtweb.framework.core.common.SwConsts; | |||
import cc.smtweb.framework.core.common.SwEnum; | |||
import cc.smtweb.framework.core.exception.BizException; | |||
import cc.smtweb.framework.core.exception.SwException; | |||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||
import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; | |||
import cc.smtweb.system.bpm.web.design.form.model.flow.LcFlowWorker; | |||
import org.apache.commons.lang3.StringUtils; | |||
import java.util.*; | |||
@@ -22,6 +22,7 @@ public class ModelFactory { | |||
mapWorker = new HashMap<>(); | |||
mapWorker.put(SwConsts.DEF_ROOT_ID, new BaseModelWorker()); | |||
mapWorker.put(SwEnum.ModelType.LC_SINGLE.value, new LcSinlgeWorker()); | |||
mapWorker.put(SwEnum.ModelType.LC_FLOW.value, new LcFlowWorker()); | |||
} | |||
public static ModelFactory getInstance() { | |||
@@ -0,0 +1,75 @@ | |||
package cc.smtweb.system.bpm.web.design.form.model.flow; | |||
import cc.smtweb.framework.core.common.SwEnum; | |||
import cc.smtweb.framework.core.common.SwMap; | |||
import cc.smtweb.framework.core.db.DbEngine; | |||
import cc.smtweb.framework.core.db.EntityDao; | |||
import cc.smtweb.framework.core.exception.SwException; | |||
import cc.smtweb.framework.core.util.JsonUtil; | |||
import cc.smtweb.framework.core.util.StringUtil; | |||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||
import cc.smtweb.system.bpm.web.design.form.ModelFormCache; | |||
import cc.smtweb.system.bpm.web.design.form.ModelFormHelper; | |||
import cc.smtweb.system.bpm.web.design.form.model.BaseModelWorker; | |||
import org.apache.commons.lang3.StringUtils; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
/** | |||
* @Author: tanghp | |||
* @Date: 2022-08-26 9:48 | |||
* @Desc: 列表卡片(含工作流) | |||
*/ | |||
public class LcFlowWorker extends BaseModelWorker { | |||
private final static String listTmpl = "model_list_flow"; | |||
private final static String cardTmpl = "model_card_flow"; | |||
@Override | |||
protected void saveModule(ModelForm bean, List<ModelForm> listFormChild) { | |||
EntityDao<ModelForm> dao = DbEngine.getInstance().findDao(ModelForm.class); | |||
SwMap opts = bean.getOpts(); | |||
SwMap cfg = opts.readMap(ModelFormHelper.OPT_CONFIG); | |||
SwMap cfgPage = new SwMap(); | |||
cfg.put(ModelFormHelper.OPT_PAGE, cfgPage); | |||
// 添加列表页面名称 | |||
String listFormName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.LIST.value); | |||
cfgPage.put(SwEnum.PageType.LIST.value, listFormName); | |||
// 添加卡片页面名称 | |||
String cardFormName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.CARD.value); | |||
cfgPage.put(SwEnum.PageType.CARD.value, cardFormName); | |||
bean.setOption(JsonUtil.encodeString(opts)); | |||
if (bean.isNew()) {//新增 | |||
List<ModelForm> insertList = new ArrayList<>(); | |||
ModelForm listPage = createPage(bean, SwEnum.PageType.LIST.value); | |||
listFormChild.add(listPage); | |||
insertList.add(listPage); | |||
ModelForm cardPage = createPage(bean, SwEnum.PageType.CARD.value); | |||
listFormChild.add(cardPage); | |||
insertList.add(cardPage); | |||
dao.batchInsertEntity(insertList); | |||
} else {//修改,先不考虑修改模型的情况 todo | |||
} | |||
} | |||
@Override | |||
public void buildSaveModel(ModelForm bean) { | |||
ModelForm parent = ModelFormCache.getInstance().get(bean.getParent()); | |||
if(parent==null){ | |||
return; | |||
} | |||
String listFormName = parent.getName()+ StringUtil.upFirst(SwEnum.PageType.LIST.value); | |||
String cardFormName = parent.getName()+ StringUtil.upFirst(SwEnum.PageType.CARD.value); | |||
if(listFormName.equals(bean.getName())){ | |||
ModelFormHelper.buildSaveModelByTmpl(bean, listTmpl); | |||
}else if(cardFormName.equals(bean.getName())){ | |||
ModelFormHelper.buildSaveModelByTmpl(bean, cardTmpl); | |||
} | |||
} | |||
} |
@@ -41,24 +41,6 @@ | |||
], | |||
</#if> | |||
"button": [ | |||
<#if (tmpl_Type == "model_list")> | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
"props": { | |||
"label": "编辑", | |||
"type": "primary", | |||
"leftIcon": "edit", | |||
"action": "button:edit", | |||
"dataset": "${group.dataset}", | |||
"text": true, | |||
"link": false, | |||
"linkType": "", | |||
"nextAction": "", | |||
"fxLink": "" | |||
} | |||
}, | |||
<#elseif (tmpl_Type == "model_list_card")> | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
@@ -68,14 +50,9 @@ | |||
"leftIcon": "edit", | |||
"action": "button:editCard", | |||
"link": false, | |||
"text": true, | |||
"linkType": "dialog", | |||
"fxLink": "dialog:cardDialog", | |||
"fxLink_text": "${param.cardTitle}" | |||
"text": true | |||
} | |||
}, | |||
</#if> | |||
{ | |||
},{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
"props": { | |||
@@ -0,0 +1,358 @@ | |||
{ | |||
"version": 6, | |||
"form": [ | |||
{ | |||
"page": { | |||
"id": "id${newId()}", | |||
"type": "fx-page", | |||
"props": { | |||
"title": "编辑", | |||
"key": "${newId()}", | |||
"tipsExpand": false | |||
} | |||
}, | |||
"graph": { | |||
"shape": "panel", | |||
"id": "root_panel", | |||
"type": "fx-split-panel", | |||
"props": { | |||
"horizontal": false, | |||
"shadow": "", | |||
"scroll": false, | |||
"size": "", | |||
"name": "s0" | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-split-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "50", | |||
"horizontal": true, | |||
"scroll": false, | |||
"name": "s11" | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"alignY": "center", | |||
"size": "200", | |||
"paddingLeft": 20 | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-title", | |||
"props": { | |||
"label": "${title}", | |||
"showPrefix": true | |||
} | |||
} | |||
] | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"alignY": "center", | |||
"paddingRight": 20 | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-button-group", | |||
"props": { | |||
"menus": [], | |||
"textAlign": "right" | |||
}, | |||
"slots": { | |||
"default": [ | |||
{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "删除", | |||
"leftIcon": "delete", | |||
"type": "", | |||
"action": "button:remove" | |||
}, | |||
"id": "${newId()}" | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-button", | |||
"props": { | |||
"label": "新增", | |||
"type": "primary", | |||
"linkType": "curr", | |||
"leftIcon": "plus" | |||
} | |||
}, | |||
{ | |||
"id": "id182e345bb7b", | |||
"type": "fx-button", | |||
"props": { | |||
"label": "返回", | |||
"type": "success", | |||
"size": "default", | |||
"preAction": "", | |||
"action": "button:return", | |||
"leftIcon": "list-top" | |||
}, | |||
"events": {} | |||
} | |||
] | |||
} | |||
} | |||
] | |||
} | |||
] | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "0" | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-divider", | |||
"props": { | |||
"label": "", | |||
"contentPosition": "center", | |||
"direction": "horizontal" | |||
} | |||
} | |||
] | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-split-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "", | |||
"horizontal": false, | |||
"scroll": true, | |||
"name": "s12" | |||
}, | |||
"children": [ | |||
{ | |||
<#list layout.card as group> | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "0", | |||
<#if param.col lte 1> | |||
"gridTemplateColumns": "1fr 2fr", | |||
<#elseif param.col gte 2> | |||
"gridTemplateColumns": "1fr 1fr 1fr", | |||
</#if> | |||
"paddingTop": 32 | |||
}, | |||
<#assign fields = group.fields> | |||
"children": [ | |||
<#list fields as field> | |||
{ | |||
"id": "id${newId()}", | |||
<#if (field.readonly = true)> | |||
"type": "fx-text", | |||
<#else> | |||
"type": "${field.editor}", | |||
</#if> | |||
"props": { | |||
"label": "${field.label}", | |||
"type": "text", | |||
"dataset": "${field.dataset}", | |||
"required": "${field.required}", | |||
"field": "${field.id}", | |||
<#if field.maxlength gt 0> | |||
"maxlength": ${field.maxlength}, | |||
</#if> | |||
"placeholder": "请输入内容", | |||
<#if (param.col = 2)> | |||
"tips": "${field.desc}", | |||
</#if> | |||
"labelWidth": 100, | |||
<#if (field.readonly = true)> | |||
"readonly": true, | |||
<#else> | |||
"readonly": false, | |||
</#if> | |||
"affixError": true | |||
}, | |||
"events": {} | |||
} | |||
<#if field_has_next> | |||
<#if (param.col lte 1 )> | |||
<#if (field.desc != "")> | |||
,{ | |||
"id": "id181d83cdb41", | |||
"type": "fx-label", | |||
"props": { | |||
"label": "${field.desc}", | |||
"labelWidth": 0, | |||
"affixError": true, | |||
"labelAlign": "left" | |||
} | |||
} | |||
<#else> | |||
,{ | |||
"id": "id${newId()}", | |||
"type": "fx-placeholder", | |||
"props": { | |||
"label": "占位" | |||
}, | |||
"layout": { | |||
"row": 1 | |||
} | |||
} | |||
</#if> | |||
</#if> | |||
<#if (param.col = 2 && ((field_index+1) % 2 = 0 ) )> | |||
,{ | |||
"id": "id${newId()}", | |||
"type": "fx-placeholder", | |||
"props": { | |||
"label": "占位" | |||
}, | |||
"layout": { | |||
"row": 1 | |||
} | |||
} | |||
</#if> | |||
, | |||
</#if> | |||
</#list> | |||
] | |||
</#list> | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"name": "d2" | |||
}, | |||
"children": [] | |||
} | |||
] | |||
}, | |||
{ | |||
"id": "182e345bb14", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "10", | |||
"backgroundColor": "--color-transparent" | |||
}, | |||
"children": [] | |||
}, | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "50", | |||
"alignY": "center", | |||
"alignX": "center" | |||
}, | |||
"children": [ | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-button-group", | |||
"props": { | |||
"menus": [] | |||
}, | |||
"slots": { | |||
"default": [ | |||
{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "保存并新增", | |||
"type": "primary", | |||
"action": "button:saveAndAdd", | |||
"linkType": "curr" | |||
}, | |||
"id": "${newId()}" | |||
}, | |||
{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "保存", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:save" | |||
}, | |||
"id": "${newId()}" | |||
},{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "提交", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:submit" | |||
}, | |||
"id": "${newId()}" | |||
},{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "取回", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:retake" | |||
}, | |||
"id": "${newId()}" | |||
},{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "驳回", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:reject" | |||
}, | |||
"id": "${newId()}" | |||
},{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "作废", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:cancel" | |||
}, | |||
"id": "${newId()}" | |||
},{ | |||
"type": "fx-button", | |||
"props": { | |||
"label": "终止", | |||
"leftIcon": "save", | |||
"type": "success", | |||
"action": "button:interrupt" | |||
}, | |||
"id": "${newId()}" | |||
} | |||
] | |||
} | |||
} | |||
] | |||
} | |||
] | |||
} | |||
} | |||
], | |||
"model": [ | |||
<#list datasets as dataset> | |||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||
</#list> | |||
], | |||
"option": { | |||
"widgetRef": [${widgetRef}], | |||
"vars": [] | |||
} | |||
} |
@@ -0,0 +1,109 @@ | |||
{ | |||
<#list layout.list as group> | |||
"form": | |||
[ | |||
{ | |||
"page": { | |||
"id": "p${newId()}", | |||
"type": "fx-page", | |||
"props": { | |||
"title": "${title}", | |||
"key": "${newId()}" | |||
} | |||
}, | |||
"graph": { | |||
"shape": "panel", | |||
"id": "root_panel", | |||
"type": "fx-split-panel", | |||
"props": { | |||
"horizontal": false, | |||
"shadow": "" | |||
}, | |||
"children": [ | |||
<#if (group.cfilters?size>0)> | |||
<#include "incModel/inc_list_query.ftl"/> | |||
</#if> | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "50", | |||
"label": "查询条件", | |||
"colNum": 2, | |||
"alignY": "center", | |||
"paddingLeft": 20, | |||
"paddingRight": 20, | |||
"shadow": "" | |||
}, | |||
"children": [ | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-title", | |||
"props": { | |||
"label": "${title}", | |||
"fontSize": 15, | |||
"color": "#313131", | |||
"fontWeight": "bold", | |||
"showPrefix": true, | |||
"prefixWidth": 5, | |||
"prefixHeight": 15, | |||
"prefixColor": "#1E90FF" | |||
} | |||
}, | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button-group", | |||
"props": { | |||
"menus": [], | |||
"textAlign": "right" | |||
}, | |||
"slots": { | |||
"default": [ | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
"props": { | |||
"label": "新增", | |||
"leftIcon": "plus", | |||
"type": "primary", | |||
"action": "button:addCard", | |||
"link": false, | |||
"linkType": "", | |||
"fxLink": "" | |||
} | |||
} | |||
] | |||
} | |||
} | |||
] | |||
}, | |||
<#include "incModel/inc_list_table.ftl"/> | |||
{ | |||
"id": "${newId()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"size": "15", | |||
"backgroundColor": "transparent" | |||
}, | |||
"children": [] | |||
} | |||
] | |||
} | |||
} | |||
<#if (group.sfilters?size>0)> | |||
<#include "incModel/inc_query_sfilters.ftl"/> | |||
</#if> | |||
], | |||
</#list> | |||
"model": [ | |||
<#list datasets as dataset> | |||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||
</#list> | |||
], | |||
"option": { | |||
"widgetRef": [${widgetRef}], | |||
"vars": [] | |||
} | |||
} |
@@ -339,6 +339,7 @@ public interface SwEnum { | |||
class ModelType extends StrEnum { | |||
public static ModelType instance = new ModelType(); | |||
public static StrEnumBean LC_SINGLE = instance.addEnum("LC_SINGLE", "简单列表(含卡片)"); | |||
public static StrEnumBean LC_FLOW = instance.addEnum("LC_FLOW", "列表卡片(含工作流)"); | |||
} | |||
// 权限类型 | |||