@@ -0,0 +1,25 @@ | |||||
package cc.smtweb.system.bpm.web.design.form.model; | |||||
import cc.smtweb.framework.core.common.SwEnum; | |||||
import cc.smtweb.framework.core.util.StringUtil; | |||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 22:57 | |||||
*/ | |||||
public class LcLtMsWorker extends LcMsWorker { | |||||
private final static String templateList = "model_tree_list"; | |||||
private final static String templateCard = "model_card_ms"; | |||||
@Override | |||||
protected String getTmplId(ModelForm bean) { | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.LIST.value))){ | |||||
return templateList; | |||||
} | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.CARD.value))){ | |||||
return templateCard; | |||||
} | |||||
return super.getTmplId(bean); | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package cc.smtweb.system.bpm.web.design.form.model; | |||||
import cc.smtweb.framework.core.common.SwEnum; | |||||
import cc.smtweb.framework.core.util.StringUtil; | |||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/26 10:20 | |||||
*/ | |||||
public class LcLtWorker extends LcNormalWorker { | |||||
private final static String templateList = "model_tree_list"; | |||||
private final static String templateCard = "model_card_normal"; | |||||
@Override | |||||
protected String getTmplId(ModelForm bean) { | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.LIST.value))){ | |||||
return templateList; | |||||
} | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.CARD.value))){ | |||||
return templateCard; | |||||
} | |||||
return super.getTmplId(bean); | |||||
} | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package cc.smtweb.system.bpm.web.design.form.model; | |||||
import cc.smtweb.framework.core.common.SwEnum; | |||||
import cc.smtweb.framework.core.util.StringUtil; | |||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 12:11 | |||||
*/ | |||||
public class LcMsWorker extends LcNormalWorker{ | |||||
private final static String templateList = "model_list_normal"; | |||||
private final static String templateCard = "model_card_ms"; | |||||
@Override | |||||
protected String getTmplId(ModelForm bean) { | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.LIST.value))){ | |||||
return templateList; | |||||
} | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.CARD.value))){ | |||||
return templateCard; | |||||
} | |||||
return super.getTmplId(bean); | |||||
} | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package cc.smtweb.system.bpm.web.design.form.model; | |||||
import cc.smtweb.framework.core.common.SwEnum; | |||||
import cc.smtweb.framework.core.db.DbEngine; | |||||
import cc.smtweb.framework.core.db.EntityDao; | |||||
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.ModelFormHelper; | |||||
import org.springframework.util.Assert; | |||||
import java.util.List; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/26 10:20 | |||||
*/ | |||||
public class LcNormalWorker extends BaseModelWorker { | |||||
private final static String templateList = "model_list_normal"; | |||||
private final static String templateCard = "model_card_normal"; | |||||
@Override | |||||
protected void saveModule(ModelForm bean, List<ModelForm> listFormChild) { | |||||
EntityDao<ModelForm> dao = DbEngine.getInstance().findDao(ModelForm.class); | |||||
String baseName = ModelFormHelper.getPageName(bean); | |||||
String listName = baseName + StringUtil.upFirst(SwEnum.PageType.LIST.value); | |||||
String cardName = baseName + StringUtil.upFirst(SwEnum.PageType.CARD.value); | |||||
bean.setOption(JsonUtil.encodeString(bean.getOpts())); | |||||
ModelForm listPage; | |||||
ModelForm cardPage; | |||||
if (bean.isNew()) { | |||||
//新增 | |||||
listPage = createPage(bean, SwEnum.PageType.LIST.value); | |||||
cardPage = createPage(bean, SwEnum.PageType.CARD.value); | |||||
listFormChild.add(listPage); | |||||
listFormChild.add(cardPage); | |||||
dao.batchInsertEntity(listFormChild); | |||||
} else { | |||||
//修改,先不考虑修改模型的情况 todo | |||||
listPage = ModelFormHelper.getFromCache(listName); | |||||
cardPage = ModelFormHelper.getFromCache(cardName); | |||||
Assert.isTrue(listPage != null && cardPage != null, "获取页面失败"); | |||||
listFormChild.add(listPage); | |||||
listFormChild.add(cardPage); | |||||
boolean modified = false; | |||||
//服务名发生变化 | |||||
if (!StringUtil.isStrEquals(listPage.getService(), bean.getService())) { | |||||
listPage.setService(bean.getService()); | |||||
cardPage.setService(bean.getService()); | |||||
modified = true; | |||||
} | |||||
if (modified) { | |||||
dao.batchUpdateEntity(listFormChild, "mf_content,mf_dataset,mf_tmpl"); | |||||
} | |||||
} | |||||
} | |||||
@Override | |||||
protected String getTmplId(ModelForm bean) { | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.LIST.value))){ | |||||
return templateList; | |||||
} | |||||
if (bean.getName().endsWith(StringUtil.upFirst(SwEnum.PageType.CARD.value))){ | |||||
return templateCard; | |||||
} | |||||
return super.getTmplId(bean); | |||||
} | |||||
} |
@@ -4,20 +4,17 @@ import cc.smtweb.framework.core.common.SwEnum; | |||||
import cc.smtweb.framework.core.common.SwMap; | import cc.smtweb.framework.core.common.SwMap; | ||||
import cc.smtweb.framework.core.db.DbEngine; | import cc.smtweb.framework.core.db.DbEngine; | ||||
import cc.smtweb.framework.core.db.EntityDao; | import cc.smtweb.framework.core.db.EntityDao; | ||||
import cc.smtweb.framework.core.util.CommUtil; | |||||
import cc.smtweb.framework.core.util.JsonUtil; | import cc.smtweb.framework.core.util.JsonUtil; | ||||
import cc.smtweb.framework.core.util.StringUtil; | import cc.smtweb.framework.core.util.StringUtil; | ||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | 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.ModelFormHelper; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Set; | |||||
/** | /** | ||||
* Created by Akmm at 2022-08-14 12:17 | * Created by Akmm at 2022-08-14 12:17 | ||||
*/ | */ | ||||
public class LcSinlgeWorker extends BaseModelWorker { | |||||
public class LcSingleWorker extends BaseModelWorker { | |||||
private final static String tmpl = "model_list_card"; | private final static String tmpl = "model_list_card"; | ||||
@Override | @Override | ||||
@@ -31,7 +28,7 @@ public class LcSinlgeWorker extends BaseModelWorker { | |||||
String formName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.LIST.value); | String formName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.LIST.value); | ||||
cfgPage.put(SwEnum.PageType.LIST.value, formName); | cfgPage.put(SwEnum.PageType.LIST.value, formName); | ||||
bean.setOption(JsonUtil.encodeString(opts)); | bean.setOption(JsonUtil.encodeString(opts)); | ||||
ModelForm page; | ModelForm page; | ||||
if (bean.isNew()) {//新增 | if (bean.isNew()) {//新增 | ||||
page = createPage(bean, SwEnum.PageType.LIST.value); | page = createPage(bean, SwEnum.PageType.LIST.value); |
@@ -2,7 +2,6 @@ package cc.smtweb.system.bpm.web.design.form.model; | |||||
import cc.smtweb.framework.core.common.SwConsts; | import cc.smtweb.framework.core.common.SwConsts; | ||||
import cc.smtweb.framework.core.common.SwEnum; | import cc.smtweb.framework.core.common.SwEnum; | ||||
import cc.smtweb.framework.core.exception.BizException; | |||||
import cc.smtweb.framework.core.exception.SwException; | import cc.smtweb.framework.core.exception.SwException; | ||||
import cc.smtweb.system.bpm.web.design.form.ModelForm; | 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.ModelFormHelper; | ||||
@@ -21,7 +20,11 @@ public class ModelFactory { | |||||
instance = new ModelFactory(); | instance = new ModelFactory(); | ||||
mapWorker = new HashMap<>(); | mapWorker = new HashMap<>(); | ||||
mapWorker.put(SwConsts.DEF_ROOT_ID, new BaseModelWorker()); | mapWorker.put(SwConsts.DEF_ROOT_ID, new BaseModelWorker()); | ||||
mapWorker.put(SwEnum.ModelType.LC_SINGLE.value, new LcSinlgeWorker()); | |||||
mapWorker.put(SwEnum.ModelType.LC_SINGLE.value, new LcSingleWorker()); | |||||
mapWorker.put(SwEnum.ModelType.LC_NORMAL.value, new LcNormalWorker()); | |||||
mapWorker.put(SwEnum.ModelType.LC_LT.value, new LcLtWorker()); | |||||
mapWorker.put(SwEnum.ModelType.LC_MS.value, new LcMsWorker()); | |||||
mapWorker.put(SwEnum.ModelType.LC_LT_MS.value, new LcLtMsWorker()); | |||||
} | } | ||||
public static ModelFactory getInstance() { | public static ModelFactory getInstance() { | ||||
@@ -0,0 +1,64 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.mastersub; | |||||
import cc.smtweb.framework.core.cache.AbstractCache; | |||||
import cc.smtweb.framework.core.cache.CacheManager; | |||||
import cc.smtweb.framework.core.common.R; | |||||
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.db.cache.ModelTableCache; | |||||
import cc.smtweb.framework.core.db.jdbc.AbsDbWorker; | |||||
import cc.smtweb.framework.core.db.vo.ModelTable; | |||||
import cc.smtweb.framework.core.exception.BizException; | |||||
import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; | |||||
import org.springframework.util.Assert; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 20:40 | |||||
*/ | |||||
public class LCMsDelHandler extends AbstractDynPageHandler { | |||||
/** | |||||
* 删除指定数据集,入参{pageId, dataset, id} | |||||
* | |||||
* @return | |||||
*/ | |||||
public R del() { | |||||
long id = params.readLong("id"); | |||||
if (id <= 0L) throw new BizException("没有收到待删除记录Id(" + id + ")!"); | |||||
SwMap props = form.getOpts().readMap("config").readMap("props"); | |||||
//主表 | |||||
ModelTable masterTable = ModelTableCache.getInstance().get(props.readLong("masterTable",-1L)); | |||||
Assert.notNull(masterTable,"未获取到主表配置"); | |||||
//获取子表 | |||||
ModelTable subTable = ModelTableCache.getInstance().get(props.readLong("subTable",-1L)); | |||||
String subForeignKey = props.readString("subForeignKey","-1"); | |||||
Assert.isTrue(subTable!= null && !subForeignKey.equals("-1"),"未获取到子表配置"); | |||||
// | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
DbEngine engine = DbEngine.getInstance(); | |||||
EntityDao masterDao = engine.findDao(masterTable.getName()); | |||||
EntityDao subDao = engine.findDao(subTable.getName()); | |||||
masterDao.deleteEntity(id); | |||||
subDao.deleteEntity("where " + subForeignKey + " = ?", id); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
if (masterTable.isNeedCache()) { | |||||
AbstractCache cache = CacheManager.getIntance().getCache(masterTable.getName()); | |||||
cache.remove(id); | |||||
} | |||||
if (subTable.isNeedCache()) { | |||||
AbstractCache cache = CacheManager.getIntance().getCache(masterTable.getName()); | |||||
cache.remove(id); | |||||
} | |||||
} | |||||
}); | |||||
return R.success(); | |||||
} | |||||
} |
@@ -0,0 +1,88 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.mastersub; | |||||
import cc.smtweb.framework.core.common.R; | |||||
import cc.smtweb.framework.core.common.SwMap; | |||||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||||
import cc.smtweb.system.bpm.web.engine.dynPage.AbstractDynPageHandler; | |||||
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageHelper; | |||||
import cc.smtweb.system.bpm.web.engine.dynPage.DynPageListHandler; | |||||
import cc.smtweb.system.bpm.web.engine.dynPage.DynRetBean; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||||
import org.springframework.util.Assert; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 21:44 | |||||
*/ | |||||
public class LCMsLoadHandler extends AbstractDynPageHandler { | |||||
//新增卡片操作,初始化定义的数据集 | |||||
public R add() { | |||||
String dataSet = params.readString("dataset"); | |||||
PageDataset addDataSet = this.datasets.findByName(dataSet); | |||||
Assert.notNull(addDataSet, "未获取到数据集:" + dataSet); | |||||
SwMap data; | |||||
//懒加载,给个空对象 | |||||
if (addDataSet.lazy) { | |||||
data = new SwMap(); | |||||
} else { | |||||
data = DynPageHelper.createBean(addDataSet); | |||||
} | |||||
return R.success(LCSingleHelper.buildRetData(addDataSet.name, data)); | |||||
} | |||||
public R load() { | |||||
//过滤条件 | |||||
SwMap filter = params.readMap("filter"); | |||||
//对应的数据集定义 | |||||
String dataSet = params.readString("dataset"); | |||||
PageDataset loadDataSet = this.datasets.findByName(dataSet); | |||||
Assert.notNull(loadDataSet, "未获取到数据集:" + dataSet); | |||||
SwMap data = provider.loadData(filter, loadDataSet); | |||||
return R.success(LCSingleHelper.buildRetData(loadDataSet.name, data)); | |||||
} | |||||
private DynPageListHandler getListWorker(SwMap filter, PageDataset pageDataSet) { | |||||
DynPageListHandler listHandler = new DynPageListHandler(form.getId(), filter, pageDataSet); | |||||
listHandler.init(params, us); | |||||
return listHandler; | |||||
} | |||||
/** | |||||
* 列表数据 | |||||
* @return | |||||
*/ | |||||
public R list() { | |||||
//过滤条件 | |||||
SwMap filter = params.readMap("filter"); | |||||
//对应的数据集定义 | |||||
String dataSet = params.readString("dataset"); | |||||
PageDataset listDataSet = this.datasets.findByName(dataSet); | |||||
Assert.notNull(listDataSet, "未获取到数据集:" + dataSet); | |||||
DynRetBean bean = DynRetBean.createList(getListWorker(filter, listDataSet).buildListData()); | |||||
return R.success(bean); | |||||
} | |||||
/** | |||||
* 计算分页数据 | |||||
* | |||||
* @return | |||||
*/ | |||||
public R getTotal() { | |||||
//过滤条件 | |||||
SwMap filter = params.readMap("filter"); | |||||
//对应的数据集定义 | |||||
String dataSet = params.readString("dataset"); | |||||
PageDataset listDataSet = this.datasets.findByName(dataSet); | |||||
Assert.notNull(listDataSet, "未获取到数据集:" + dataSet); | |||||
return getListWorker(filter, listDataSet).getTotal(); | |||||
} | |||||
} |
@@ -0,0 +1,138 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.mastersub; | |||||
import cc.smtweb.framework.core.common.R; | |||||
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.db.cache.ModelTableCache; | |||||
import cc.smtweb.framework.core.db.impl.DefaultEntity; | |||||
import cc.smtweb.framework.core.db.jdbc.AbsDbWorker; | |||||
import cc.smtweb.framework.core.db.vo.ModelTable; | |||||
import cc.smtweb.framework.core.exception.BizException; | |||||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleHelper; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleSaveHandler; | |||||
import org.springframework.util.Assert; | |||||
import java.util.ArrayList; | |||||
import java.util.Set; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 21:03 | |||||
*/ | |||||
public class LCMsSaveHandler extends LCSingleSaveHandler { | |||||
private String cardMaster = "cardMaster"; | |||||
private String listSub = "listSub"; | |||||
/** | |||||
* 保存指定数据集操作,入参:{pageId,dataset:"", data:{form:{},list: {total:0,rows:[]}}, filter:{}} | |||||
*/ | |||||
public R save() { | |||||
//数据集 | |||||
String dbName = params.readString("dataset"); | |||||
SwMap filter = params.readMap("filter"); | |||||
//待保存数据 | |||||
SwMap data = params.readMap("data"); | |||||
if (data == null) throw new BizException("没有收到待保存的的数据:" + dbName + "!"); | |||||
String subForeignKey = form.getOpts().readMap("config").readMap("props").readString("subForeignKey","-1"); | |||||
Assert.isTrue(!subForeignKey.equals("-1"),"未获取到子表外键配置"); | |||||
//对应的数据集定义 | |||||
PageDataset masterDataSet = findDataset(cardMaster); | |||||
PageDataset subDataSet = findDataset(listSub); | |||||
Assert.isTrue(masterDataSet != null && subDataSet != null,"没有找到数据集"); | |||||
//读取待保存的bean | |||||
DefaultEntity masterBean = readBeanFromPage(masterDataSet, data.readMap(cardMaster).readMap("form")); | |||||
if (filter != null && masterBean.isNew()) { | |||||
//有过滤条件,将关联的值设上 | |||||
setLinkValue(masterDataSet, masterBean, f -> filter.get(f.name)); | |||||
} | |||||
// 读取子表数据 | |||||
SwMap details = params.readMap("details"); | |||||
Assert.notNull(details,"没有收到待保存的明细数据"); | |||||
ArrayList<DefaultEntity> inserted = new ArrayList<>(); | |||||
ArrayList<DefaultEntity> updated = new ArrayList<>(); | |||||
details.readListMap("inserted").forEach(row -> { | |||||
SwMap rowData = new SwMap(); | |||||
rowData.putAll(row); | |||||
DefaultEntity insertBean = readBeanFromPage(subDataSet, rowData); | |||||
insertBean.put(subForeignKey,masterBean.getEntityId()); | |||||
inserted.add(insertBean); | |||||
}); | |||||
details.readListMap("updated").forEach(row -> { | |||||
SwMap rowData = new SwMap(); | |||||
rowData.putAll(row); | |||||
DefaultEntity updateBean = readBeanFromPage(subDataSet, rowData); | |||||
updated.add(updateBean); | |||||
}); | |||||
Set<Long> deleted = details.readLongSet("deleted"); | |||||
// | |||||
checkBean(masterBean); | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
saveBean(masterBean); | |||||
ModelTable subTable = ModelTableCache.getInstance().get(subDataSet.masterTable); | |||||
Assert.notNull(subTable,"未获取到子表"); | |||||
EntityDao<DefaultEntity> dao = DbEngine.getInstance().findDao(subTable.getName()); | |||||
dao.batchInsertEntity(inserted); | |||||
dao.batchUpdateEntity(updated); | |||||
if (deleted != null){ | |||||
dao.deleteEntity(deleted); | |||||
} | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
afterCommit(masterBean); | |||||
} | |||||
@Override | |||||
public void doAfterDbRollback() { | |||||
afterRollback(masterBean); | |||||
} | |||||
}); | |||||
return R.success(LCSingleHelper.buildRetData(masterDataSet.name, masterBean.getData())); | |||||
} | |||||
/** | |||||
* 从页面获取待保存的bean | |||||
* | |||||
* @param pageDataSet | |||||
* @param data | |||||
* @return | |||||
*/ | |||||
protected DefaultEntity readBeanFromPage(PageDataset pageDataSet, SwMap data) { | |||||
ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); | |||||
if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); | |||||
long id = data.readLong(table.getIdField()); | |||||
EntityDao<DefaultEntity> dao = DbEngine.getInstance().findDao(table.getName()); | |||||
DefaultEntity bean; | |||||
if (id <= 0L) { | |||||
bean = dao.createBean(); | |||||
bean.setIsNew(true); | |||||
//暂时不考虑list保存的情况 | |||||
bean.getData().putAll(data); | |||||
setNewId(bean); | |||||
} else { | |||||
bean = dao.queryEntity(id); | |||||
if (bean == null) { | |||||
throw new BizException("没有找到待保存的记录:" + table.getName() + "." + id); | |||||
} | |||||
//暂时不考虑list保存的情况 | |||||
bean.getData().putAll(data); | |||||
bean.setIsNew(false); | |||||
} | |||||
return bean; | |||||
} | |||||
} |
@@ -0,0 +1,67 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.mastersub; | |||||
import cc.smtweb.framework.core.annotation.SwBody; | |||||
import cc.smtweb.framework.core.annotation.SwService; | |||||
import cc.smtweb.framework.core.common.R; | |||||
import cc.smtweb.framework.core.common.SwMap; | |||||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||||
import cc.smtweb.framework.core.session.UserSession; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/28 20:38 | |||||
*/ | |||||
@SwService | |||||
public class LCMsService extends LCSingleService { | |||||
private final static String TYPE_MODEL_LIST = "modelList"; | |||||
private final static String TYPE_MODEL_ADD = "modelAdd"; | |||||
private final static String TYPE_MODEL_LOAD = "modelLoad"; | |||||
private final static String TYPE_MODEL_SAVE = "modelSave"; | |||||
private final static String TYPE_MODEL_DEL = "modelDel"; | |||||
@Override | |||||
protected AbstractHandler createHandler(String type) { | |||||
switch (type) { | |||||
case TYPE_MODEL_LIST: | |||||
case TYPE_MODEL_LOAD: | |||||
case TYPE_MODEL_ADD: | |||||
return new LCMsLoadHandler(); | |||||
case TYPE_MODEL_SAVE: | |||||
return new LCMsSaveHandler(); | |||||
case TYPE_MODEL_DEL: | |||||
return new LCMsDelHandler(); | |||||
} | |||||
return super.createHandler(type); | |||||
} | |||||
//保存 | |||||
public R modelSave(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_SAVE, handler -> ((LCMsSaveHandler)handler).save()); | |||||
} | |||||
//读取 | |||||
public R modelLoad(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_LOAD, handler -> ((LCMsLoadHandler)handler).load()); | |||||
} | |||||
//读取 | |||||
public R modelAdd(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_ADD, handler -> ((LCMsLoadHandler)handler).add()); | |||||
} | |||||
//删除 | |||||
public R modelDel(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((LCMsDelHandler)handler).del()); | |||||
} | |||||
//列表数据 | |||||
public R modelList(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCMsLoadHandler)handler).list()); | |||||
} | |||||
//列表总记录数及合计栏 | |||||
public R modelListTotal(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_LIST, handler -> ((LCMsLoadHandler)handler).getTotal()); | |||||
} | |||||
} |
@@ -0,0 +1,58 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||||
import cc.smtweb.framework.core.cache.AbstractCache; | |||||
import cc.smtweb.framework.core.cache.CacheManager; | |||||
import cc.smtweb.framework.core.common.R; | |||||
import cc.smtweb.framework.core.db.DbEngine; | |||||
import cc.smtweb.framework.core.db.EntityDao; | |||||
import cc.smtweb.framework.core.db.cache.ModelTableCache; | |||||
import cc.smtweb.framework.core.db.jdbc.AbsDbWorker; | |||||
import cc.smtweb.framework.core.db.vo.ModelTable; | |||||
import cc.smtweb.framework.core.exception.BizException; | |||||
import cc.smtweb.system.bpm.web.design.form.define.PageDataset; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleDelHandler; | |||||
import org.springframework.util.Assert; | |||||
/** | |||||
* Created by Akmm at 2022/4/21 17:53 | |||||
* 删除操作 | |||||
*/ | |||||
public class LCNormalDelHandler extends LCSingleDelHandler { | |||||
/** | |||||
* 删除指定数据集,入参{pageId, dataset, id} | |||||
* | |||||
* @return | |||||
*/ | |||||
public R del() { | |||||
long id = params.readLong("id"); | |||||
if (id == 0L) throw new BizException("没有收到待删除记录Id(" + id + ")!"); | |||||
//数据集 | |||||
String dataSet = params.readString("dataset"); | |||||
PageDataset delDataSet = this.datasets.findByName(dataSet); | |||||
Assert.notNull(delDataSet,"未获取到数据集:"+dataSet); | |||||
// | |||||
checkBean(delDataSet, id); | |||||
// | |||||
DbEngine.getInstance().doTrans(new AbsDbWorker() { | |||||
@Override | |||||
public void work() { | |||||
ModelTable table = ModelTableCache.getInstance().get(delDataSet.masterTable); | |||||
if (table == null) throw new BizException("没有找到指定的的表定义:" + delDataSet.name + "!"); | |||||
EntityDao dao = DbEngine.getInstance().findDao(table.getName()); | |||||
dao.deleteEntity(id); | |||||
localDel(id, table); | |||||
} | |||||
@Override | |||||
public void doAfterDbCommit() { | |||||
ModelTable table = ModelTableCache.getInstance().get(delDataSet.masterTable); | |||||
if (table.isNeedCache()) { | |||||
AbstractCache cache = CacheManager.getIntance().getCache(table.getName()); | |||||
cache.remove(id); | |||||
} | |||||
localDelSuccess(id, table); | |||||
} | |||||
}); | |||||
return R.success(); | |||||
} | |||||
} |
@@ -0,0 +1,30 @@ | |||||
package cc.smtweb.system.bpm.web.engine.model.listcard.normal; | |||||
import cc.smtweb.framework.core.annotation.SwBody; | |||||
import cc.smtweb.framework.core.annotation.SwService; | |||||
import cc.smtweb.framework.core.common.R; | |||||
import cc.smtweb.framework.core.common.SwMap; | |||||
import cc.smtweb.framework.core.mvc.service.AbstractHandler; | |||||
import cc.smtweb.framework.core.session.UserSession; | |||||
import cc.smtweb.system.bpm.web.engine.model.listcard.single.LCSingleService; | |||||
/** | |||||
* @Author:lip | |||||
* @Date : 2022/8/27 13:54 | |||||
*/ | |||||
@SwService | |||||
public class LCNormalService extends LCSingleService { | |||||
@Override | |||||
protected AbstractHandler createHandler(String type) { | |||||
if (type.equals(TYPE_MODEL_DEL)){ | |||||
return new LCNormalDelHandler(); | |||||
} | |||||
return super.createHandler(type); | |||||
} | |||||
//删除 | |||||
public R modelDel(@SwBody SwMap params, UserSession us) { | |||||
return pageHandler(params, us, TYPE_MODEL_DEL, handler -> ((LCNormalDelHandler)handler).del()); | |||||
} | |||||
} |
@@ -87,7 +87,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { | |||||
protected DefaultEntity readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { | protected DefaultEntity readBeanFromPage(PageDataset pageDataSet, SwMap pageData) { | ||||
ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); | ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); | ||||
if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); | if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); | ||||
SwMap data = pageData.readMap(pageDataSet.name); | SwMap data = pageData.readMap(pageDataSet.name); | ||||
if (data == null) throw new BizException("没有找到待保存的表数据:" + pageDataSet.name); | if (data == null) throw new BizException("没有找到待保存的表数据:" + pageDataSet.name); | ||||
data = data.readMap("form"); | data = data.readMap("form"); | ||||
@@ -212,7 +212,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { | |||||
} | } | ||||
} | } | ||||
interface IGetValue { | |||||
public interface IGetValue { | |||||
Object getValue(PageDatasetFilter f); | Object getValue(PageDatasetFilter f); | ||||
} | } | ||||
} | } |
@@ -0,0 +1,78 @@ | |||||
<#assign tmpl_Type = tmplType> | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "", | |||||
"label": "列表", | |||||
"colNum": 0, | |||||
"paddingLeft": 20, | |||||
"paddingRight": 20, | |||||
"shadow": "" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table", | |||||
"props": { | |||||
"label": "表格", | |||||
"border": true, | |||||
"stripe": true, | |||||
"showHeader": true, | |||||
"fit": true, | |||||
"dataset": "${group.dataset}", | |||||
"actionWidth": 120 | |||||
}, | |||||
"slots": { | |||||
<#if (group.fields?size>0)> | |||||
<#assign fields = group.fields> | |||||
"default": [ | |||||
<#list fields as col> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table-column", | |||||
"props": { | |||||
"field": "${col.id}", | |||||
"label": "${col.label}" | |||||
} | |||||
} | |||||
<#if col_has_next>,</#if> | |||||
</#list> | |||||
], | |||||
</#if> | |||||
"button": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "编辑", | |||||
"type": "primary", | |||||
"leftIcon": "edit", | |||||
"action": "button:loadRow", | |||||
"link": false, | |||||
"text": true, | |||||
"linkType": "dialog", | |||||
"fxLink": "dialog:cardSubDialog", | |||||
"fxLink_text": "子表编辑卡片" | |||||
} | |||||
}, | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "删除", | |||||
"type": "danger", | |||||
"leftIcon": "delete-themes", | |||||
"action": "button:delRow", | |||||
"link": false, | |||||
"text": true, | |||||
"confirm": "" | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
"events": {} | |||||
} | |||||
] | |||||
}, |
@@ -41,7 +41,7 @@ | |||||
], | ], | ||||
</#if> | </#if> | ||||
"button": [ | "button": [ | ||||
<#if (tmpl_Type == "model_list")> | |||||
<#if (tmpl_Type == "model_list_card")> | |||||
{ | { | ||||
"id": "id${newId()}", | "id": "id${newId()}", | ||||
"type": "fx-button", | "type": "fx-button", | ||||
@@ -49,16 +49,33 @@ | |||||
"label": "编辑", | "label": "编辑", | ||||
"type": "primary", | "type": "primary", | ||||
"leftIcon": "edit", | "leftIcon": "edit", | ||||
"action": "button:edit", | |||||
"action": "button:editCard", | |||||
"link": false, | |||||
"text": true, | |||||
"linkType": "dialog", | |||||
"fxLink": "dialog:cardDialog", | |||||
"fxLink_text": "${param.cardTitle}" | |||||
} | |||||
}, | |||||
<#elseif (tmpl_Type == "model_list_normal" || tmpl_Type == "model_tree_list")> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "编辑", | |||||
"type": "primary", | |||||
"leftIcon": "edit", | |||||
"action": "button:editCard", | |||||
"dataset": "${group.dataset}", | "dataset": "${group.dataset}", | ||||
"text": true, | "text": true, | ||||
"link": false, | "link": false, | ||||
"linkType": "", | |||||
"linkType": "curr", | |||||
"nextAction": "", | "nextAction": "", | ||||
"fxLink": "" | |||||
"fxLink": "", | |||||
"fxLink_text": "" | |||||
} | } | ||||
}, | }, | ||||
<#elseif (tmpl_Type == "model_list_card")> | |||||
<#else > | |||||
{ | { | ||||
"id": "id${newId()}", | "id": "id${newId()}", | ||||
"type": "fx-button", | "type": "fx-button", | ||||
@@ -66,12 +83,13 @@ | |||||
"label": "编辑", | "label": "编辑", | ||||
"type": "primary", | "type": "primary", | ||||
"leftIcon": "edit", | "leftIcon": "edit", | ||||
"action": "button:editCard", | |||||
"link": false, | |||||
"action": "button:edit", | |||||
"dataset": "${group.dataset}", | |||||
"text": true, | "text": true, | ||||
"linkType": "dialog", | |||||
"fxLink": "dialog:cardDialog", | |||||
"fxLink_text": "${param.cardTitle}" | |||||
"link": false, | |||||
"linkType": "curr", | |||||
"nextAction": "", | |||||
"fxLink": "" | |||||
} | } | ||||
}, | }, | ||||
</#if> | </#if> | ||||
@@ -0,0 +1,489 @@ | |||||
{ | |||||
"version": 6, | |||||
"form": [ | |||||
{ | |||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-page", | |||||
"props": { | |||||
"title": "${title}", | |||||
"key": "${newId()}", | |||||
"tipsExpand": false | |||||
} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"shadow": "" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"scroll": true | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "60" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"showDropdown": false, | |||||
"dataset":"${layout.cardMaster[0].dataset}" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存", | |||||
"leftIcon": "save", | |||||
"type": "success", | |||||
"action": "button:saveCard" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "删除", | |||||
"leftIcon": "delete", | |||||
"type": "danger", | |||||
"action": "button:delCard" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "返回", | |||||
"leftIcon": "return", | |||||
"action": "button:return" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"alignX": "stretch", | |||||
"size": "0" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-divider", | |||||
"props": { | |||||
"label": "", | |||||
"contentPosition": "center", | |||||
"direction": "horizontal" | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "0", | |||||
"paddingTop": 15, | |||||
"colNum": "${param.masterCol}" | |||||
}, | |||||
<#assign mfields = layout.cardMaster[0].fields> | |||||
"children": [ | |||||
<#list mfields as mfield> | |||||
{ | |||||
"id": "id${newId()}", | |||||
<#if (mfield.readonly = true)> | |||||
"type": "fx-text", | |||||
"disabled": true, | |||||
<#else> | |||||
"type": "${mfield.editor}", | |||||
</#if> | |||||
"props": { | |||||
"label": "${mfield.label}", | |||||
"dataset": "${mfield.dataset}", | |||||
"field": "${mfield.id}", | |||||
"required": "${mfield.required}", | |||||
<#if mfield.maxlength gt 0> | |||||
"maxlength": ${mfield.maxlength}, | |||||
</#if> | |||||
"placeholder": "请输入${mfield.label}", | |||||
<#if (param.masterCol gte 2)> | |||||
"tips": "${mfield.desc}", | |||||
</#if> | |||||
"labelWidth": 100, | |||||
<#if (mfield.readonly = true)> | |||||
"readonly": true, | |||||
<#else> | |||||
"readonly": false, | |||||
</#if> | |||||
"affixError": true | |||||
}, | |||||
"events": {} | |||||
} | |||||
<#if mfield_has_next> | |||||
<#if (param.masterCol lte 1 )> | |||||
<#if (mfield.desc != "")> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-label", | |||||
"props": { | |||||
"label": "${mfield.desc}", | |||||
"labelWidth": 0, | |||||
"affixError": true, | |||||
"labelAlign": "left" | |||||
} | |||||
} | |||||
<#else> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-placeholder", | |||||
"props": { | |||||
"label": "占位" | |||||
}, | |||||
"layout": { | |||||
"row": 1 | |||||
} | |||||
} | |||||
</#if> | |||||
</#if> | |||||
, | |||||
</#if> | |||||
</#list> | |||||
] | |||||
}, | |||||
{ | |||||
"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-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "50", | |||||
"alignX": "end", | |||||
"alignY": "center", | |||||
"paddingRight": 20, | |||||
"colNum": 2, | |||||
"gridTemplateColumns": "92px 1fr" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-title", | |||||
"props": { | |||||
<#if (param.listSubTitle == "")> | |||||
"label": "明细列表", | |||||
<#else> | |||||
"label": "${param.listSubTitle}", | |||||
</#if> | |||||
"fontWeight": "bold", | |||||
"showPrefix": true, | |||||
"fontSize": 16, | |||||
"prefixWidth": 5 | |||||
} | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"showDropdown": false | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "新增", | |||||
"leftIcon": "plus", | |||||
"type": "primary", | |||||
"action": "button:addRow", | |||||
"linkType": "dialog", | |||||
"fxLink": "dialog:cardSubDialog", | |||||
"fxLink_text": "子表编辑卡片", | |||||
"nextAction": "", | |||||
"preAction": "", | |||||
"dataset": "${layout.listSub[0].dataset}" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
<#assign group = layout.listSub[0]> | |||||
<#include "incModel/inc_clist_ms.ftl"/> | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "15", | |||||
"backgroundColor": "transparent" | |||||
}, | |||||
"children": [] | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
}, | |||||
{ | |||||
"page": { | |||||
"id": "${newId()}", | |||||
"type": "fx-dialog", | |||||
"props": { | |||||
"title": "子表编辑卡片", | |||||
"key": "cardSubDialog", | |||||
"width": "670px", | |||||
"height": "560px", | |||||
"showPrefix": true | |||||
}, | |||||
"events": {} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"shadow": "never" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "50", | |||||
"alignX": "start", | |||||
"alignY": "center", | |||||
"paddingLeft": 20 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-title", | |||||
"props": { | |||||
<#if (param.cardSubTitle == "")> | |||||
"label": "明细编辑", | |||||
<#else> | |||||
"label": "${param.cardSubTitle}", | |||||
</#if> | |||||
"fontWeight": "bold", | |||||
"fontSize": 16, | |||||
"showPrefix": true | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"paddingLeft": 50, | |||||
"colNum": "${param.subCol}" | |||||
}, | |||||
<#assign sfields = layout.listSub[0].fields> | |||||
"children": [ | |||||
<#list sfields as sfield> | |||||
{ | |||||
"id": "id${newId()}", | |||||
<#if (sfield.readonly = true)> | |||||
"type": "fx-text", | |||||
"disabled": true, | |||||
<#else> | |||||
"type": "${sfield.editor}", | |||||
</#if> | |||||
"props": { | |||||
"label": "${sfield.label}", | |||||
"dataset": "${sfield.dataset}", | |||||
"field": "${sfield.id}", | |||||
"required": "${sfield.required}", | |||||
<#if sfield.maxlength gt 0> | |||||
"maxlength": ${sfield.maxlength}, | |||||
</#if> | |||||
"placeholder": "请输入${sfield.label}", | |||||
<#if (param.subCol gte 2)> | |||||
"tips": "${sfield.desc}", | |||||
</#if> | |||||
"labelWidth": 100, | |||||
<#if (sfield.readonly = true)> | |||||
"readonly": true, | |||||
<#else> | |||||
"readonly": false, | |||||
</#if> | |||||
"affixError": true | |||||
}, | |||||
"events": {} | |||||
} | |||||
<#if sfield_has_next> | |||||
<#if (param.subCol lte 1 )> | |||||
<#if (sfield.desc != "")> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-label", | |||||
"props": { | |||||
"label": "${sfield.desc}", | |||||
"labelWidth": 0, | |||||
"affixError": true, | |||||
"labelAlign": "left" | |||||
} | |||||
} | |||||
<#else> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-placeholder", | |||||
"props": { | |||||
"label": "占位" | |||||
}, | |||||
"layout": { | |||||
"row": 1 | |||||
} | |||||
} | |||||
</#if> | |||||
</#if> | |||||
, | |||||
</#if> | |||||
</#list> | |||||
] | |||||
}, | |||||
{ | |||||
"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-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "50", | |||||
"alignX": "end", | |||||
"paddingRight": 20, | |||||
"alignY": "center" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"showDropdown": false | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存", | |||||
"leftIcon": "save", | |||||
"type": "success", | |||||
"action": "button:saveRow", | |||||
"dataset": "${layout.listSub[0].dataset}", | |||||
"nextAction": "button:closeDialog" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存并新增", | |||||
"type": "primary", | |||||
"action": "button:saveRow", | |||||
"linkType": "curr", | |||||
"dataset": "${layout.listSub[0].dataset}", | |||||
"nextAction": "button:addRow" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "返回", | |||||
"leftIcon": "return", | |||||
"action": "button:closeDialog" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
], | |||||
"model": [ | |||||
<#list datasets as dataset> | |||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
</#list> | |||||
], | |||||
"option": { | |||||
"widgetRef": [${widgetRef}], | |||||
"vars": [] | |||||
} | |||||
} |
@@ -0,0 +1,162 @@ | |||||
{ | |||||
"version": 6, | |||||
"form": [ | |||||
{ | |||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-page", | |||||
"props": { | |||||
"title": "${title}", | |||||
"key": "${newId()}", | |||||
"tipsExpand": false | |||||
} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"shadow": "never" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "60" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"showDropdown": false, | |||||
"dataset":"${layout.card[0].dataset}" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存", | |||||
"leftIcon": "save", | |||||
"type": "success", | |||||
"action": "button:saveCard" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "删除", | |||||
"leftIcon": "delete", | |||||
"type": "danger", | |||||
"action": "button:delCard" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "返回", | |||||
"leftIcon": "return", | |||||
"action": "button:return" | |||||
}, | |||||
"id": "${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"colNum": "${param.col}" | |||||
}, | |||||
<#assign dfields = layout.card[0].fields> | |||||
"children": [ | |||||
<#list dfields as dfield> | |||||
{ | |||||
"id": "id${newId()}", | |||||
<#if (dfield.readonly = true)> | |||||
"type": "fx-text", | |||||
"disabled": true, | |||||
<#else> | |||||
"type": "${dfield.editor}", | |||||
</#if> | |||||
"props": { | |||||
"label": "${dfield.label}", | |||||
"dataset": "${dfield.dataset}", | |||||
"field": "${dfield.id}", | |||||
"required": "${dfield.required}", | |||||
<#if dfield.maxlength gt 0> | |||||
"maxlength": ${dfield.maxlength}, | |||||
</#if> | |||||
"placeholder": "请输入${dfield.label}", | |||||
<#if (param.col gte 2)> | |||||
"tips": "${dfield.desc}", | |||||
</#if> | |||||
"labelWidth": 100, | |||||
<#if (dfield.readonly = true)> | |||||
"readonly": true, | |||||
<#else> | |||||
"readonly": false, | |||||
</#if> | |||||
"affixError": true | |||||
}, | |||||
"events": {} | |||||
} | |||||
<#if dfield_has_next> | |||||
<#if (param.col lte 1 )> | |||||
<#if (dfield.desc != "")> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-label", | |||||
"props": { | |||||
"label": "${dfield.desc}", | |||||
"labelWidth": 0, | |||||
"affixError": true, | |||||
"labelAlign": "left" | |||||
} | |||||
} | |||||
<#else> | |||||
,{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-placeholder", | |||||
"props": { | |||||
"label": "占位" | |||||
}, | |||||
"layout": { | |||||
"row": 1 | |||||
} | |||||
} | |||||
</#if> | |||||
</#if> | |||||
, | |||||
</#if> | |||||
</#list> | |||||
] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
], | |||||
"model": [ | |||||
<#list datasets as dataset> | |||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
</#list> | |||||
], | |||||
"option": { | |||||
"widgetRef": [${widgetRef}], | |||||
"vars": [] | |||||
} | |||||
} |
@@ -0,0 +1,111 @@ | |||||
{ | |||||
<#list layout.list as group> | |||||
"form": [ | |||||
{ | |||||
"page": { | |||||
"id": "${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": { | |||||
"showDropdown": false, | |||||
"dataset": "${group.dataset}" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "新增", | |||||
"leftIcon": "plus", | |||||
"type": "primary", | |||||
"action": "button:addCard", | |||||
"link": false, | |||||
"linkType": "curr", | |||||
"fxLink": "", | |||||
"fxLink_text": "" | |||||
}, | |||||
"id": "id${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
<#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> | |||||
], | |||||
"model": [ | |||||
<#list datasets as dataset> | |||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
</#list> | |||||
], | |||||
"option": { | |||||
"widgetRef": [${widgetRef}], | |||||
"vars": [] | |||||
} | |||||
</#list> | |||||
} |
@@ -1,433 +1,195 @@ | |||||
{ | { | ||||
"version": 6, | |||||
<#list layout.c1 as group> | |||||
<#list layout.list as group> | |||||
"form": [ | "form": [ | ||||
{ | { | ||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-page", | |||||
"props": { | |||||
"title": "${title}", | |||||
"key": "${newId()}" | |||||
} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"shadow": "" | |||||
"page": { | |||||
"id": "${newId()}", | |||||
"type": "fx-page", | |||||
"props": { | |||||
"title": "${title}", | |||||
"key": "${newId()}" | |||||
} | |||||
}, | }, | ||||
"children": [ | |||||
{ | |||||
"graph": { | |||||
"shape": "panel", | "shape": "panel", | ||||
"id": "root_panel", | "id": "root_panel", | ||||
"type": "fx-split-panel", | "type": "fx-split-panel", | ||||
"props": { | "props": { | ||||
"horizontal": true, | |||||
"shadow": "" | |||||
"horizontal": true, | |||||
"shadow": "" | |||||
}, | }, | ||||
"children": [ | "children": [ | ||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"size": "300" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
{ | |||||
"id": "${newId()}", | "id": "${newId()}", | ||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "", | |||||
"colNum": 0, | |||||
"align": "full", | |||||
"paddingTop": 10, | |||||
"paddingLeft": 10, | |||||
"paddingRight": 10 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-tree", | |||||
"props": { | |||||
"defaultExpandAll": true, | |||||
"expandOnClickNode": false, | |||||
"filterShow": true, | |||||
"filterPlaceholder": "查询", | |||||
"dataset": "ds_18210085a45", | |||||
"field": "fid18210085a51", | |||||
"label": "编码" | |||||
}, | |||||
"events": {} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
}, | |||||
"children": [] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | "shape": "panel", | ||||
"id": "form_panel", | |||||
"type": "fx-form-panel", | |||||
"props": { | "props": { | ||||
"colNum": 3, | |||||
"label": "查询条件", | |||||
"size": "50", | |||||
"alignY": "center", | |||||
"paddingRight": 20, | |||||
"gridTemplateColumns": "400px 400px 1fr", | |||||
"paddingLeft": 20 | |||||
"size": "300", | |||||
"horizontal": false, | |||||
"shadow": "" | |||||
}, | }, | ||||
"children": [ | "children": [ | ||||
<#list group.cfilters as cfilters> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-${cfilters.editor}", | |||||
"props": { | |||||
"label": "${cfilters.label}", | |||||
"type": "text", | |||||
"maxlength": 50, | |||||
"hideLabel": true, | |||||
"placeholder": "请输入${cfilters.label}", | |||||
"labelWidth": 100, | |||||
"affixError": false | |||||
}, | |||||
"events": {} | |||||
}, | |||||
</#list> | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"showDropdown": false | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "", | |||||
"horizontal": false, | |||||
"name": "left" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "", | |||||
"colNum": 0, | |||||
"paddingTop": 10, | |||||
"paddingLeft": 10, | |||||
"paddingRight": 10, | |||||
"scroll": true | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-tree", | |||||
"props": { | |||||
"defaultExpandAll": false, | |||||
"expandOnClickNode": false, | |||||
"filterShow": true, | |||||
"filterPlaceholder": "查询", | |||||
"createVirtualRoot": false, | |||||
"virtualRootLabel": "顶级虚拟节点", | |||||
"dataset": "${group.dataset}" | |||||
}, | |||||
"events": {} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
}, | }, | ||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "查询", | |||||
"leftIcon": "search", | |||||
"type": "primary", | |||||
"action": "button:search", | |||||
"linkType": "", | |||||
"dataset": "${param.queryDs}" | |||||
}, | |||||
"id": "id${newId()}" | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
}, | }, | ||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "重置", | |||||
"leftIcon": "clear", | |||||
"action": "button:reset" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
"children": [] | |||||
} | } | ||||
} | |||||
] | ] | ||||
}, | |||||
{ | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | "id": "${newId()}", | ||||
"type": "fx-form-panel", | "type": "fx-form-panel", | ||||
"shape": "panel", | "shape": "panel", | ||||
"props": { | "props": { | ||||
"label": "间隔", | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
}, | }, | ||||
"children": [] | "children": [] | ||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"label": "表格标题区", | |||||
"size": "50", | |||||
"colNum": 2, | |||||
"alignY": "center", | |||||
"paddingLeft": 20, | |||||
"paddingRight": 20 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-title", | |||||
"props": { | |||||
"label": "${group.label}" | |||||
} | |||||
}, | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"textAlign": "right", | |||||
"showDropdown": false | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "新增", | |||||
"leftIcon": "plus", | |||||
"type": "primary", | |||||
"action": "button:add", | |||||
"linkType": "dialog", | |||||
"dataset": "", | |||||
"fxLink": "dialog:editMainDialog", | |||||
"fxLink_text": "卡片一号", | |||||
"preAction": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | "id": "${newId()}", | ||||
"type": "fx-form-panel", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | "shape": "panel", | ||||
"props": { | "props": { | ||||
"label": "表格区", | |||||
"colNum": 0, | |||||
"paddingLeft": 20, | |||||
"paddingRight": 20 | |||||
"horizontal": false, | |||||
"name": "right" | |||||
}, | }, | ||||
"children": [ | "children": [ | ||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table", | |||||
"props": { | |||||
"label": "表格", | |||||
"border": true, | |||||
"stripe": true, | |||||
"showHeader": true, | |||||
"fit": true, | |||||
"dataset": "${param.queryDs}", | |||||
"actionWidth": 150 | |||||
}, | |||||
"slots": { | |||||
"button": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "编辑", | |||||
"type": "primary", | |||||
"leftIcon": "edit", | |||||
"action": "button:edit", | |||||
"link": false, | |||||
"text": true, | |||||
"dataset": "${param.editDs}", | |||||
"linkType": "dialog", | |||||
"fxLink": "dialog:editMainDialog", | |||||
"fxLink_text": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
<#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": "" | |||||
}, | }, | ||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "删除", | |||||
"type": "danger", | |||||
"leftIcon": "delete", | |||||
"action": "button:remove", | |||||
"link": false, | |||||
"text": true, | |||||
"dataset": "${param.editDs}", | |||||
"preAction": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"default": [ | |||||
<#if (group.fields?size>0)> | |||||
<#list group.fields as col> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table-column", | |||||
"props": { | |||||
"field": "${col.id}", | |||||
"label": "${col.label}" | |||||
} | |||||
}<#if col_has_next>,</#if> | |||||
</#list> | |||||
</#if> | |||||
] | |||||
"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": { | |||||
"showDropdown": false, | |||||
"dataset": "${group.dataset}" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "新增", | |||||
"leftIcon": "plus", | |||||
"type": "primary", | |||||
"action": "button:addCard", | |||||
"link": false, | |||||
"linkType": "curr", | |||||
"fxLink": "", | |||||
"fxLink_text": "" | |||||
}, | |||||
"id": "id${newId()}", | |||||
"events": {} | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | }, | ||||
"events": {} | |||||
} | |||||
<#include "incModel/inc_list_table.ftl"/> | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "15", | |||||
"backgroundColor": "transparent" | |||||
}, | |||||
"children": [] | |||||
} | |||||
] | ] | ||||
} | |||||
] | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"shape": "panel", | |||||
"id": "fx-form-panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"shadow": "", | |||||
"size": 15 | |||||
}, | |||||
"children": [] | |||||
} | |||||
] | |||||
} | |||||
}, | |||||
<#list layout.c2 as main_dialog> | |||||
{ | |||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-dialog", | |||||
"props": { | |||||
<#if (param.editTitle == "")> | |||||
"title": "卡片一号", | |||||
<#else> | |||||
"title": "${param.editTitle}", | |||||
</#if> | |||||
"key": "editMainDialog", | |||||
"closeOnClickModal": false, | |||||
"showPrefix": true | |||||
}, | |||||
"events": {} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"shadow": "never" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"scroll": true, | |||||
"backgroundColor": "--color-white" | |||||
}, | |||||
"children": [ | |||||
<#assign dfields = main_dialog.fields> | |||||
<#assign col = param.col> | |||||
<#include "incModel/inc_list_dialog.ftl"/> | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "0" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-divider", | |||||
"props": { | |||||
"label": "", | |||||
"contentPosition": "center", | |||||
"direction": "horizontal" | |||||
} | } | ||||
} | |||||
] | ] | ||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "50", | |||||
"paddingRight": 20, | |||||
"alignY": "center" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"textAlign": "right" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存", | |||||
"leftIcon": "save", | |||||
"type": "success", | |||||
"action": "button:save", | |||||
"dataset": "${param.editDs}" | |||||
}, | |||||
"id": "id${newId()}" | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "关闭", | |||||
"leftIcon": "close", | |||||
"type": "", | |||||
"action": "button:closeDialog", | |||||
"nextAction": "button:search" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
] | |||||
} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
} | } | ||||
</#list> | |||||
<#if (group.sfilters?size>0)> | |||||
<#include "incModel/inc_query_sfilters.ftl"/> | |||||
</#if> | |||||
], | ], | ||||
</#list> | |||||
"model": [ | "model": [ | ||||
<#list datasets as dataset> | <#list datasets as dataset> | ||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
</#list> | </#list> | ||||
], | ], | ||||
"option": { | "option": { | ||||
"widgetRef": [${widgetRef}], | "widgetRef": [${widgetRef}], | ||||
"vars": [] | "vars": [] | ||||
} | } | ||||
</#list> | |||||
} | } |
@@ -0,0 +1,433 @@ | |||||
{ | |||||
"version": 6, | |||||
<#list layout.c1 as group> | |||||
"form": [ | |||||
{ | |||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-page", | |||||
"props": { | |||||
"title": "${title}", | |||||
"key": "${newId()}" | |||||
} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"shadow": "" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": true, | |||||
"shadow": "" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"size": "300" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "", | |||||
"colNum": 0, | |||||
"align": "full", | |||||
"paddingTop": 10, | |||||
"paddingLeft": 10, | |||||
"paddingRight": 10 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-tree", | |||||
"props": { | |||||
"defaultExpandAll": true, | |||||
"expandOnClickNode": false, | |||||
"filterShow": true, | |||||
"filterPlaceholder": "查询", | |||||
"dataset": "ds_18210085a45", | |||||
"field": "fid18210085a51", | |||||
"label": "编码" | |||||
}, | |||||
"events": {} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
}, | |||||
"children": [] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"shape": "panel", | |||||
"id": "form_panel", | |||||
"type": "fx-form-panel", | |||||
"props": { | |||||
"colNum": 3, | |||||
"label": "查询条件", | |||||
"size": "50", | |||||
"alignY": "center", | |||||
"paddingRight": 20, | |||||
"gridTemplateColumns": "400px 400px 1fr", | |||||
"paddingLeft": 20 | |||||
}, | |||||
"children": [ | |||||
<#list group.cfilters as cfilters> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-${cfilters.editor}", | |||||
"props": { | |||||
"label": "${cfilters.label}", | |||||
"type": "text", | |||||
"maxlength": 50, | |||||
"hideLabel": true, | |||||
"placeholder": "请输入${cfilters.label}", | |||||
"labelWidth": 100, | |||||
"affixError": false | |||||
}, | |||||
"events": {} | |||||
}, | |||||
</#list> | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"showDropdown": false | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "查询", | |||||
"leftIcon": "search", | |||||
"type": "primary", | |||||
"action": "button:search", | |||||
"linkType": "", | |||||
"dataset": "${param.queryDs}" | |||||
}, | |||||
"id": "id${newId()}" | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "重置", | |||||
"leftIcon": "clear", | |||||
"action": "button:reset" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"label": "间隔", | |||||
"size": "15", | |||||
"backgroundColor": "--color-transparent" | |||||
}, | |||||
"children": [] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"label": "表格标题区", | |||||
"size": "50", | |||||
"colNum": 2, | |||||
"alignY": "center", | |||||
"paddingLeft": 20, | |||||
"paddingRight": 20 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-title", | |||||
"props": { | |||||
"label": "${group.label}" | |||||
} | |||||
}, | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"textAlign": "right", | |||||
"showDropdown": false | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "新增", | |||||
"leftIcon": "plus", | |||||
"type": "primary", | |||||
"action": "button:add", | |||||
"linkType": "dialog", | |||||
"dataset": "", | |||||
"fxLink": "dialog:editMainDialog", | |||||
"fxLink_text": "卡片一号", | |||||
"preAction": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"dropdown": [] | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"label": "表格区", | |||||
"colNum": 0, | |||||
"paddingLeft": 20, | |||||
"paddingRight": 20 | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table", | |||||
"props": { | |||||
"label": "表格", | |||||
"border": true, | |||||
"stripe": true, | |||||
"showHeader": true, | |||||
"fit": true, | |||||
"dataset": "${param.queryDs}", | |||||
"actionWidth": 150 | |||||
}, | |||||
"slots": { | |||||
"button": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "编辑", | |||||
"type": "primary", | |||||
"leftIcon": "edit", | |||||
"action": "button:edit", | |||||
"link": false, | |||||
"text": true, | |||||
"dataset": "${param.editDs}", | |||||
"linkType": "dialog", | |||||
"fxLink": "dialog:editMainDialog", | |||||
"fxLink_text": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "删除", | |||||
"type": "danger", | |||||
"leftIcon": "delete", | |||||
"action": "button:remove", | |||||
"link": false, | |||||
"text": true, | |||||
"dataset": "${param.editDs}", | |||||
"preAction": "" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
], | |||||
"default": [ | |||||
<#if (group.fields?size>0)> | |||||
<#list group.fields as col> | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-table-column", | |||||
"props": { | |||||
"field": "${col.id}", | |||||
"label": "${col.label}" | |||||
} | |||||
}<#if col_has_next>,</#if> | |||||
</#list> | |||||
</#if> | |||||
] | |||||
}, | |||||
"events": {} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"shape": "panel", | |||||
"id": "fx-form-panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"shadow": "", | |||||
"size": 15 | |||||
}, | |||||
"children": [] | |||||
} | |||||
] | |||||
} | |||||
}, | |||||
<#list layout.c2 as main_dialog> | |||||
{ | |||||
"page": { | |||||
"id": "id${newId()}", | |||||
"type": "fx-dialog", | |||||
"props": { | |||||
<#if (param.editTitle == "")> | |||||
"title": "卡片一号", | |||||
<#else> | |||||
"title": "${param.editTitle}", | |||||
</#if> | |||||
"key": "editMainDialog", | |||||
"closeOnClickModal": false, | |||||
"showPrefix": true | |||||
}, | |||||
"events": {} | |||||
}, | |||||
"graph": { | |||||
"shape": "panel", | |||||
"id": "root_panel", | |||||
"type": "fx-split-panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"shadow": "never" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-split-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"horizontal": false, | |||||
"scroll": true, | |||||
"backgroundColor": "--color-white" | |||||
}, | |||||
"children": [ | |||||
<#assign dfields = main_dialog.fields> | |||||
<#assign col = param.col> | |||||
<#include "incModel/inc_list_dialog.ftl"/> | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "0" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-divider", | |||||
"props": { | |||||
"label": "", | |||||
"contentPosition": "center", | |||||
"direction": "horizontal" | |||||
} | |||||
} | |||||
] | |||||
}, | |||||
{ | |||||
"id": "${newId()}", | |||||
"type": "fx-form-panel", | |||||
"shape": "panel", | |||||
"props": { | |||||
"size": "50", | |||||
"paddingRight": 20, | |||||
"alignY": "center" | |||||
}, | |||||
"children": [ | |||||
{ | |||||
"id": "id${newId()}", | |||||
"type": "fx-button-group", | |||||
"props": { | |||||
"menus": [], | |||||
"textAlign": "right" | |||||
}, | |||||
"slots": { | |||||
"default": [ | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "保存", | |||||
"leftIcon": "save", | |||||
"type": "success", | |||||
"action": "button:save", | |||||
"dataset": "${param.editDs}" | |||||
}, | |||||
"id": "id${newId()}" | |||||
}, | |||||
{ | |||||
"type": "fx-button", | |||||
"props": { | |||||
"label": "关闭", | |||||
"leftIcon": "close", | |||||
"type": "", | |||||
"action": "button:closeDialog", | |||||
"nextAction": "button:search" | |||||
}, | |||||
"id": "id${newId()}" | |||||
} | |||||
] | |||||
} | |||||
} | |||||
] | |||||
} | |||||
] | |||||
} | |||||
} | |||||
</#list> | |||||
], | |||||
</#list> | |||||
"model": [ | |||||
<#list datasets as dataset> | |||||
<#include "incModel/inc_model.ftl"/><#if dataset_has_next>,</#if> | |||||
</#list> | |||||
], | |||||
"option": { | |||||
"widgetRef": [${widgetRef}], | |||||
"vars": [] | |||||
} | |||||
} |
@@ -339,6 +339,10 @@ public interface SwEnum { | |||||
class ModelType extends StrEnum { | class ModelType extends StrEnum { | ||||
public static ModelType instance = new ModelType(); | public static ModelType instance = new ModelType(); | ||||
public static StrEnumBean LC_SINGLE = instance.addEnum("LC_SINGLE", "简单列表(含卡片)"); | public static StrEnumBean LC_SINGLE = instance.addEnum("LC_SINGLE", "简单列表(含卡片)"); | ||||
public static StrEnumBean LC_NORMAL = instance.addEnum("LC_NORMAL", "普通列表(含卡片)"); | |||||
public static StrEnumBean LC_LT = instance.addEnum("LC_LT", "列表卡片(左树+列表)"); | |||||
public static StrEnumBean LC_MS = instance.addEnum("LC_MS", "列表卡片(主子表)"); | |||||
public static StrEnumBean LC_LT_MS = instance.addEnum("LC_LT_MS", "列表卡片(左树+列表+主子表)"); | |||||
} | } | ||||
// 权限类型 | // 权限类型 | ||||