@@ -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.db.DbEngine; | |||
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.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 java.util.List; | |||
import java.util.Set; | |||
/** | |||
* 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"; | |||
@Override | |||
@@ -31,7 +28,7 @@ public class LcSinlgeWorker extends BaseModelWorker { | |||
String formName = ModelFormHelper.getPageName(bean) + StringUtil.upFirst(SwEnum.PageType.LIST.value); | |||
cfgPage.put(SwEnum.PageType.LIST.value, formName); | |||
bean.setOption(JsonUtil.encodeString(opts)); | |||
ModelForm page; | |||
if (bean.isNew()) {//新增 | |||
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.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; | |||
@@ -21,7 +20,11 @@ public class ModelFactory { | |||
instance = new 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_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() { | |||
@@ -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) { | |||
ModelTable table = ModelTableCache.getInstance().get(pageDataSet.masterTable); | |||
if (table == null) throw new BizException("没有找到待保存的表定义:" + pageDataSet.name); | |||
SwMap data = pageData.readMap(pageDataSet.name); | |||
if (data == null) throw new BizException("没有找到待保存的表数据:" + pageDataSet.name); | |||
data = data.readMap("form"); | |||
@@ -212,7 +212,7 @@ public class LCSingleSaveHandler extends AbstractDynPageHandler { | |||
} | |||
} | |||
interface IGetValue { | |||
public interface IGetValue { | |||
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> | |||
"button": [ | |||
<#if (tmpl_Type == "model_list")> | |||
<#if (tmpl_Type == "model_list_card")> | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
@@ -49,16 +49,33 @@ | |||
"label": "编辑", | |||
"type": "primary", | |||
"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}", | |||
"text": true, | |||
"link": false, | |||
"linkType": "", | |||
"linkType": "curr", | |||
"nextAction": "", | |||
"fxLink": "" | |||
"fxLink": "", | |||
"fxLink_text": "" | |||
} | |||
}, | |||
<#elseif (tmpl_Type == "model_list_card")> | |||
<#else > | |||
{ | |||
"id": "id${newId()}", | |||
"type": "fx-button", | |||
@@ -66,12 +83,13 @@ | |||
"label": "编辑", | |||
"type": "primary", | |||
"leftIcon": "edit", | |||
"action": "button:editCard", | |||
"link": false, | |||
"action": "button:edit", | |||
"dataset": "${group.dataset}", | |||
"text": true, | |||
"linkType": "dialog", | |||
"fxLink": "dialog:cardDialog", | |||
"fxLink_text": "${param.cardTitle}" | |||
"link": false, | |||
"linkType": "curr", | |||
"nextAction": "", | |||
"fxLink": "" | |||
} | |||
}, | |||
</#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": [ | |||
{ | |||
"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", | |||
"id": "root_panel", | |||
"type": "fx-split-panel", | |||
"props": { | |||
"horizontal": true, | |||
"shadow": "" | |||
"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": [ | |||
{ | |||
"type": "fx-split-panel", | |||
"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 | |||
"size": "300", | |||
"horizontal": false, | |||
"shadow": "" | |||
}, | |||
"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()}", | |||
"type": "fx-form-panel", | |||
"shape": "panel", | |||
"props": { | |||
"label": "间隔", | |||
"size": "15", | |||
"backgroundColor": "--color-transparent" | |||
"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", | |||
"type": "fx-split-panel", | |||
"shape": "panel", | |||
"props": { | |||
"label": "表格区", | |||
"colNum": 0, | |||
"paddingLeft": 20, | |||
"paddingRight": 20 | |||
"horizontal": false, | |||
"name": "right" | |||
}, | |||
"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": [ | |||
<#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> | |||
], | |||
"option": { | |||
"widgetRef": [${widgetRef}], | |||
"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 { | |||
public static ModelType instance = new ModelType(); | |||
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", "列表卡片(左树+列表+主子表)"); | |||
} | |||
// 权限类型 | |||