parent
6bf9d66cb4
commit
7e16a3f38f
@ -1,5 +1,43 @@ |
||||
-- 目录表增加加载顺序字段 |
||||
alter table BIANMU.B_DIRECTORY add SORT integer; |
||||
comment on column BIANMU.B_DIRECTORY.SORT is '加载顺序'; |
||||
|
||||
-- 置标标签表增加加载顺序字段 |
||||
alter table BIANMU.B_DATA_LABELS add SORT integer; |
||||
comment on column BIANMU.B_DATA_LABELS.SORT is '加载顺序'; |
||||
-- 更新菜单数据 |
||||
UPDATE BIANMU.SYS_MENU t |
||||
SET t.IS_DELETE = '0', |
||||
t.MENU_NAME = '表单配置', |
||||
t.MENU_PATH = '/sys/form/config/page/index' |
||||
WHERE t.MENU_ID = '1525058137475338242'; |
||||
|
||||
CREATE TABLE "BIANMU"."SYS_FORM_CONFIG" |
||||
( |
||||
"ID" INTEGER IDENTITY(1000, 1) NOT NULL, |
||||
"FORM_TYPE" INTEGER, |
||||
"FIELD_TITLE" VARCHAR2(50), |
||||
"FIELD_TYPE" VARCHAR2(50), |
||||
"DEFAULT_VALUE" VARCHAR2(50) DEFAULT '', |
||||
"IS_REQUIRED" BIT DEFAULT 0, |
||||
"IS_DISABLED" BIT DEFAULT 0, |
||||
"SORT" INTEGER, |
||||
"CREATE_USER" VARCHAR2(50), |
||||
"CREATE_TIME" TIMESTAMP(6), |
||||
"MODIFY_USER" VARCHAR2(50), |
||||
"MODIFY_TIME" TIMESTAMP(6), |
||||
CLUSTER PRIMARY KEY("ID") |
||||
) STORAGE(ON "MAIN", CLUSTERBTR); |
||||
|
||||
COMMENT ON TABLE "BIANMU"."SYS_FORM_CONFIG" IS '系统表单配置表'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."CREATE_TIME" IS '创建时间'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."CREATE_USER" IS '创建人'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."DEFAULT_VALUE" IS '默认值'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."FIELD_TITLE" IS '字段标题'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."FIELD_TYPE" IS '字段类型'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."FORM_TYPE" IS '表单类型:1-资源注册表单,2-文件上传表单'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."ID" IS '主键'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."IS_DISABLED" IS '是否必填:0-非必填,1-必填'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."IS_REQUIRED" IS '是否禁用:0-不禁用,1-禁用'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."MODIFY_TIME" IS '修改时间'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."MODIFY_USER" IS '修改人'; |
||||
COMMENT ON COLUMN "BIANMU"."SYS_FORM_CONFIG"."SORT" IS '显示顺序'; |
||||
|
@ -0,0 +1,57 @@ |
||||
package com.keyware.shandan.system.controller; |
||||
|
||||
import cn.hutool.json.JSONArray; |
||||
import cn.hutool.json.JSONUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.keyware.shandan.common.entity.Result; |
||||
import com.keyware.shandan.system.entity.SysFormConfig; |
||||
import com.keyware.shandan.system.service.SysFormConfigService; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
import org.springframework.web.bind.annotation.*; |
||||
import org.springframework.web.servlet.ModelAndView; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 系统表单配置模块前端控制类 |
||||
* |
||||
* @author GuoXin |
||||
* @date 2023/8/23 |
||||
*/ |
||||
@Slf4j |
||||
@RestController |
||||
@RequestMapping("/sys/form/config") |
||||
public class SysFormConfigController { |
||||
private final SysFormConfigService formConfigService; |
||||
|
||||
public SysFormConfigController(SysFormConfigService formConfigService) { |
||||
this.formConfigService = formConfigService; |
||||
} |
||||
|
||||
|
||||
@GetMapping("/page/index") |
||||
public ModelAndView indexPage(ModelAndView mav) { |
||||
mav.setViewName("sys/form/formConfig"); |
||||
return mav; |
||||
} |
||||
|
||||
|
||||
@GetMapping("/api/get/{id}") |
||||
public Result<SysFormConfig> getById(@PathVariable String id) { |
||||
return Result.of(formConfigService.getById(id)); |
||||
} |
||||
|
||||
@GetMapping("/api/list/{formType}") |
||||
public Result<List<SysFormConfig>> list(@PathVariable String formType) { |
||||
QueryWrapper<SysFormConfig> query = new QueryWrapper<>(); |
||||
query.eq("FORM_TYPE", formType); |
||||
return Result.of(formConfigService.list(query)); |
||||
} |
||||
|
||||
@PostMapping(value = "/api/save") |
||||
public Result<Object> save(String params) { |
||||
JSONArray jsonArray = JSONUtil.parseArray(params); |
||||
List<SysFormConfig> list = jsonArray.toList(SysFormConfig.class); |
||||
return Result.of(formConfigService.saveOrUpdateBatch(list)); |
||||
} |
||||
} |
@ -0,0 +1,62 @@ |
||||
package com.keyware.shandan.system.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.OrderBy; |
||||
import com.keyware.shandan.common.entity.BaseEntity; |
||||
import lombok.Data; |
||||
import lombok.EqualsAndHashCode; |
||||
|
||||
/** |
||||
* 系统表单配置实体类 |
||||
* |
||||
* @author GuoXin |
||||
* @date 2023/8/23 |
||||
*/ |
||||
@Data |
||||
@EqualsAndHashCode(callSuper = true) |
||||
public class SysFormConfig extends BaseEntity { |
||||
|
||||
private static final long serialVersionUID = 6628747783449277117L; |
||||
|
||||
/** |
||||
* 主键 |
||||
*/ |
||||
private Integer id; |
||||
/** |
||||
* 表单类型:1-资源注册表单,2-文件上传表单 |
||||
*/ |
||||
private Integer formType; |
||||
/** |
||||
* 字段标题 |
||||
*/ |
||||
private String fieldTitle; |
||||
/** |
||||
* 字段标题 |
||||
*/ |
||||
private String showTitle; |
||||
/** |
||||
* 字段类型 |
||||
*/ |
||||
private String fieldType; |
||||
/** |
||||
* 默认值 |
||||
*/ |
||||
private String defaultValue; |
||||
/** |
||||
* 是否必填:0-非必填,1-必填 |
||||
*/ |
||||
private Boolean isRequired; |
||||
/** |
||||
* 是否禁用:0-不禁用,1-禁用 |
||||
*/ |
||||
private Boolean isDisabled; |
||||
/** |
||||
* 是否禁用:0-不禁用,1-禁用 |
||||
*/ |
||||
private Boolean isShow; |
||||
/** |
||||
* 显示顺序 |
||||
*/ |
||||
@OrderBy(isDesc = false) |
||||
private Integer sort; |
||||
|
||||
} |
@ -0,0 +1,15 @@ |
||||
package com.keyware.shandan.system.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import com.keyware.shandan.system.entity.SysFormConfig; |
||||
import org.apache.ibatis.annotations.Mapper; |
||||
|
||||
/** |
||||
* 系统表单配置数据库操作映射 |
||||
* |
||||
* @author GuoXin |
||||
* @date 2023/8/23 |
||||
*/ |
||||
@Mapper |
||||
public interface SysFormConfigMapper extends BaseMapper<SysFormConfig> { |
||||
} |
@ -0,0 +1,13 @@ |
||||
package com.keyware.shandan.system.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import com.keyware.shandan.system.entity.SysFormConfig; |
||||
|
||||
/** |
||||
* 系统表单配置服务接口类 |
||||
* |
||||
* @author GuoXin |
||||
* @date 2023/8/23 |
||||
*/ |
||||
public interface SysFormConfigService extends IService<SysFormConfig> { |
||||
} |
@ -0,0 +1,17 @@ |
||||
package com.keyware.shandan.system.service.impl; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import com.keyware.shandan.system.entity.SysFormConfig; |
||||
import com.keyware.shandan.system.mapper.SysFormConfigMapper; |
||||
import com.keyware.shandan.system.service.SysFormConfigService; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
/** |
||||
* 系统表单配置服务实现类 |
||||
* |
||||
* @author GuoXin |
||||
* @date 2023/8/23 |
||||
*/ |
||||
@Service |
||||
public class SysFormConfigServiceImpl extends ServiceImpl<SysFormConfigMapper, SysFormConfig> implements SysFormConfigService { |
||||
} |
@ -0,0 +1,86 @@ |
||||
class FormConfigComponent { |
||||
constructor(formType, elemId, lay) { |
||||
this.formType = formType; |
||||
this.elemId = elemId; |
||||
this.lay = lay; |
||||
this.dataMap = new Map(); |
||||
this.renderTable(); |
||||
} |
||||
|
||||
renderTable() { |
||||
const {lay, formType, elemId} = this, {form, gtable} = lay; |
||||
gtable.init({ |
||||
id: elemId, |
||||
url: `${ctx}/sys/form/config/api/list/${formType}`, |
||||
method: 'get', |
||||
toolbar: '#tableTool', |
||||
height: 'full-125', |
||||
page: false, |
||||
cols: [[ |
||||
{field: 'id', hide: true}, |
||||
{field: 'fieldTitle', title: '字段'}, |
||||
{field: 'showTitle', title: '显示的标题', edit: 'text'}, |
||||
{field: 'fieldType', title: '字段类型', hide: true}, |
||||
{field: 'defaultValue', title: '默认值', edit: 'text', hide: true}, |
||||
{ |
||||
field: 'isRequired', |
||||
title: '是否必填', |
||||
templet: (data) => renderSwitch('isRequired', data) |
||||
}, |
||||
{ |
||||
field: 'isDisabled', |
||||
title: '是否禁用', |
||||
templet: (data) => renderSwitch('isDisabled', data) |
||||
}, |
||||
{ |
||||
field: 'isDisabled', |
||||
title: '是否显示', |
||||
templet: (data) => renderSwitch('isShow', data) |
||||
}, |
||||
{field: 'sort', title: '显示顺序', edit: 'text'} |
||||
]], |
||||
done: (res) => this.tableLoadDoneListen(res), |
||||
onToolBarTable: ({event, config})=> { |
||||
if(event === 'save'){ |
||||
const datas = [...this.dataMap.values()]; |
||||
Util.post(`/sys/form/config/api/save`, {params: JSON.stringify(datas)}).then(res=>{ |
||||
if(res.flag){ |
||||
showOkMsg('保存成功') |
||||
}else{ |
||||
showErrorMsg2('保存失败:'+res.msg) |
||||
} |
||||
}) |
||||
} |
||||
} |
||||
}) |
||||
// 监听switch按钮
|
||||
form.on(`switch(${elemId}-switch)`, (data) => this.switchChangeListen(data)); |
||||
|
||||
function renderSwitch(fieldName, data) { |
||||
const id = data.id, value = data[fieldName]; |
||||
return `<input type="checkbox" id="${id}" name="${fieldName}" value="${value}" title="是|否" lay-skin="switch" lay-filter="${elemId}-switch" ${value ? 'checked' : ''} />` |
||||
} |
||||
} |
||||
|
||||
tableLoadDoneListen(res) { |
||||
if (res.flag) { |
||||
res.records.map(record => this.dataMap.set(record.id + '', record)); |
||||
} |
||||
} |
||||
|
||||
switchChangeListen({elem, value}) { |
||||
const id = $(elem).attr('id'), name = $(elem).attr('name'); |
||||
this.dataMap.get(id)[name] = Boolean(value); |
||||
this.consoleDataMap(); |
||||
} |
||||
|
||||
consoleDataMap() { |
||||
console.info(this.dataMap); |
||||
} |
||||
} |
||||
|
||||
layui.use(['form', 'gtable', 'dropdown', 'element'], function () { |
||||
const metadataForm = new FormConfigComponent(1, 'metadataFormTable', layui); |
||||
const fileUploadForm = new FormConfigComponent(2, 'fileUploadFormTable', layui); |
||||
}); |
||||
|
@ -0,0 +1,57 @@ |
||||
<!DOCTYPE html> |
||||
<!--解决idea thymeleaf 表达式模板报红波浪线--> |
||||
<!--suppress ALL --> |
||||
<html xmlns:th="http://www.thymeleaf.org"> |
||||
<head> |
||||
<!-- 引入公用部分 --> |
||||
<script th:replace="common/head::static"></script> |
||||
<!-- 样式 --> |
||||
<link th:href="@{/css/common/contianer.css}" rel="stylesheet" type="text/css"/> |
||||
<script th:inline="javascript"> |
||||
const FormTypeEnum = /*[[${FormTypeEnum}]]*/ {}; |
||||
</script> |
||||
</head> |
||||
<body> |
||||
<div class="layui-row"> |
||||
<!-- 树 --> |
||||
<div class="layui-col-md12"> |
||||
<div class="layui-card"> |
||||
<div class="layui-card-header layui-hide"></div> |
||||
<div class="layui-card-body"> |
||||
<div class="layui-tab layui-tab-brief" lay-filter="form-config-tab"> |
||||
<ul class="layui-tab-title"> |
||||
<li class="layui-this" data-form-type="1">数据资源注册表单</li> |
||||
<li data-form-type="2">文件上传表单</li> |
||||
</ul> |
||||
<div class="layui-tab-content" style="padding: 0"> |
||||
<div class="layui-tab-item layui-show"> |
||||
<table class="layui-hide" id="metadataFormTable" |
||||
lay-filter="metadataFormTable"></table> |
||||
</div> |
||||
<div class="layui-tab-item"> |
||||
<table class="layui-hide" id="fileUploadFormTable" |
||||
lay-filter="fileUploadFormTable"></table> |
||||
</div> |
||||
<script type="text/html" id="tableTool"> |
||||
<div class="layui-btn-container"> |
||||
<button class="layui-btn layui-btn-sm" lay-event="save">保存修改</button> |
||||
</div> |
||||
</script> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</body> |
||||
<!-- js --> |
||||
<script th:replace="common/head::static-foot"></script> |
||||
<script th:src="@{/js/sys/form/formConfig.js}"></script> |
||||
<script> |
||||
const sizeInit = () => { |
||||
$(".layui-card-body").height(window.innerHeight - 43 - 40 - 20); |
||||
} |
||||
window.onresize = sizeInit; |
||||
sizeInit(); |
||||
</script> |
||||
</html> |
Reference in new issue