新增动态表单上报、详情、列表、分页功能

This commit is contained in:
wanggeng 2022-03-14 22:31:19 +08:00
parent 6c22b06250
commit 1ffa72f336
10 changed files with 615 additions and 154 deletions

View File

@ -1,5 +1,20 @@
package ink.wgink.module.form.controller.api.report;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.service.report.IFormReportService;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultList;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* @ClassName: FormReportController
* @Description: 表单上报
@ -7,5 +22,59 @@ package ink.wgink.module.form.controller.api.report;
* @Date: 2022/3/10 7:29 PM
* @Version: 1.0
*/
public class FormReportController {
@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "表单")
@RestController
@RequestMapping(ISystemConstant.API_PREFIX + "/form-report")
public class FormReportController extends DefaultBaseController {
@Autowired
private IFormReportService formReportService;
@PostMapping("save/code/{formCode}/version/{formVersion}")
public SuccessResult save(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @RequestBody Map<String, Object> params) {
checkParams(params);
formReportService.save(formCode, formVersion, params);
return new SuccessResult();
}
@DeleteMapping("remove/code/{formCode}/version/{formVersion}/uids/{uids}")
public SuccessResult remove(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uids") String uids) {
formReportService.remove(formCode, formVersion, Arrays.asList(uids.split("\\_")));
return new SuccessResult();
}
@PutMapping("update/code/{formCode}/version/{formVersion}/uid/{uid}")
public SuccessResult update(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid, @RequestBody Map<String, Object> params) {
checkParams(params);
formReportService.update(uid, params);
return new SuccessResult();
}
@GetMapping("get/code/{formCode}/version/{formVersion}/uid/{uid}")
public Map<String, Object> get(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, @PathVariable("uid") String uid) {
return formReportService.get(formCode, formVersion, uid);
}
@GetMapping("list/code/{formCode}/version/{formVersion}")
public List<Map<String, Object>> list(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
Map<String, Object> params = requestParams();
return formReportService.list(formCode, formVersion, params);
}
@GetMapping("listpage/code/{formCode}/version/{formVersion}")
public SuccessResultList<List<Map<String, Object>>> listPage(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion, ListPage page) {
Map<String, Object> params = requestParams();
page.setParams(params);
return formReportService.listPage(formCode, formVersion, page);
}
private void checkParams(Map<String, Object> body) {
if (body.isEmpty()) {
throw new ParamsException("提交内容不能为空");
}
for (Map.Entry<String, Object> kv : body.entrySet()) {
String key = kv.getKey();
}
}
}

View File

@ -0,0 +1,58 @@
package ink.wgink.module.form.controller.app.route.report;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.form.service.report.IFormReportRouteService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* @ClassName: FormReportRouteController
* @Description: 表单上报
* @Author: wanggeng
* @Date: 2022/3/10 7:29 PM
* @Version: 1.0
*/
@Api(tags = ISystemConstant.API_TAGS_APP_ROUTE_PREFIX + "表单")
@Controller
@RequestMapping(ISystemConstant.APP_ROUTE_PREFIX + "/form-report")
public class FormReportAppRouteController {
@Autowired
private IFormReportRouteService formReportService;
@GetMapping("save/code/{formCode}/version/{formVersion}")
public void get(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
formReportService.appSave(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse);
}
@GetMapping("update/code/{formCode}/version/{formVersion}")
public void update(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
formReportService.appUpdate(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse);
}
@GetMapping("show/code/{formCode}/version/{formVersion}")
public void show(@PathVariable("formCode") String formCode,
@PathVariable("formVersion") Integer formVersion,
HttpSession httpSession,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
formReportService.appShow(formCode, formVersion, httpSession, httpServletRequest, httpServletResponse);
}
}

View File

@ -0,0 +1,32 @@
package ink.wgink.module.form.dao.formreport;
import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.UpdateException;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* @ClassName: IFormReportDao
* @Description: 表单上报
* @Author: wanggeng
* @Date: 2022/3/14 8:27 PM
* @Version: 1.0
*/
@Repository
public interface IFormReportDao {
void save(Map<String, Object> params) throws SaveException;
void remove(Map<String, Object> params) throws RemoveException;
void update(Map<String, Object> params) throws UpdateException;
Map<String, Object> get(Map<String, Object> params) throws SearchException;
List<Map<String, Object>> list(Map<String, Object> queryParams) throws SearchException;
}

View File

@ -46,4 +46,36 @@ public interface IFormReportRouteService {
*/
void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);
/**
* APP新增页面
*
* @param formCode
* @param formVersion
* @param httpSession
* @param httpServletRequest
* @param httpServletResponse
*/
void appSave(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);
/**
* APP修改页面
*
* @param formCode
* @param formVersion
* @param httpSession
* @param httpServletRequest
* @param httpServletResponse
*/
void appUpdate(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);
/**
* APP详情页面
*
* @param formCode
* @param formVersion
* @param httpSession
* @param httpServletRequest
* @param httpServletResponse
*/
void appShow(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse);
}

View File

@ -0,0 +1,30 @@
package ink.wgink.module.form.service.report;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList;
import java.util.List;
import java.util.Map;
/**
* @ClassName: IFormReportService
* @Description: 表单上报
* @Author: wanggeng
* @Date: 2022/3/14 5:30 PM
* @Version: 1.0
*/
public interface IFormReportService {
void save(String formCode, Integer formVersion, Map<String, Object> params);
void remove(String formCode, Integer formVersion, List<String> uids);
void update(String uid, Map<String, Object> params);
Map<String, Object> get(String formCode, Integer formVersion, String uid);
List<Map<String, Object>> list(String formCode, Integer formVersion, Map<String, Object> params);
SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page);
}

View File

@ -41,23 +41,79 @@ public class FormReportRouteServiceImpl extends DefaultBaseService implements IF
@Override
public void save(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
httpServletResponse.setStatus(HttpStatus.NOT_FOUND.value());
return;
}
if (!StringUtils.equals(formPO.getFormStatus(), FormStatusEnum.ACTIVE.getValue())) {
LOG.error("表单 {} 未激活", formCode);
httpServletResponse.setStatus(HttpStatus.NOT_FOUND.value());
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getSavePageCode(), httpSession, httpServletRequest, httpServletResponse);
}
@Override
public void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
return;
}
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getUpdatePageCode(), httpSession, httpServletRequest, httpServletResponse);
}
@Override
public void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
return;
}
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getShowPageCode(), httpSession, httpServletRequest, httpServletResponse);
}
@Override
public void appSave(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
return;
}
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getAppSavePageCode(), httpSession, httpServletRequest, httpServletResponse);
}
@Override
public void appUpdate(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
return;
}
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getAppUpdatePageCode(), httpSession, httpServletRequest, httpServletResponse);
}
@Override
public void appShow(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
FormPO formPO = getFormPO(formCode, formVersion);
if (formPO == null) {
return;
}
Map<String, Object> modal = getModal(formPO);
showPage(modal, formCode, formPO.getAppShowPageCode(), httpSession, httpServletRequest, httpServletResponse);
}
/**
* 展示页面
*
* @param modal
* @param formCode
* @param pageCode
* @param httpSession
* @param httpServletRequest
* @param httpServletResponse
*/
private void showPage(Map<String, Object> modal, String formCode, String pageCode, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
httpServletResponse.setContentType("text/html; charset=" + ISystemConstant.CHARSET_UTF8);
try {
Template template = getTemplate(formCode, formPO.getSavePageCode());
Template template = getTemplate(formCode, pageCode);
PrintWriter out = httpServletResponse.getWriter();
Map<String, Object> modal = getHashMap(2);
modal.put("contextPath", httpServletRequest.getContextPath() + "/");
modal.put("formName", formPO.getFormName());
template.process(modal, out);
} catch (IOException e) {
httpServletResponse.setStatus(HttpStatus.NOT_FOUND.value());
@ -67,14 +123,39 @@ public class FormReportRouteServiceImpl extends DefaultBaseService implements IF
}
}
@Override
public void update(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
/**
* 获取模型
*
* @return
*/
private Map<String, Object> getModal(FormPO formPO) {
Map<String, Object> modal = getHashMap(10);
modal.put("contextPath", httpServletRequest.getContextPath() + "/");
modal.put("formName", formPO.getFormName());
modal.put("formCode", formPO.getFormCode());
modal.put("formVersion", formPO.getFormVersion());
return modal;
}
@Override
public void show(String formCode, Integer formVersion, HttpSession httpSession, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
/**
* 获取表单
*
* @param formCode
* @param formVersion
* @return
*/
private FormPO getFormPO(String formCode, Integer formVersion) {
FormPO formPO = formService.getPOByCodeAndVersion(formCode, formVersion);
if (formPO == null) {
httpServletResponse.setStatus(HttpStatus.NOT_FOUND.value());
return null;
}
if (!StringUtils.equals(formPO.getFormStatus(), FormStatusEnum.ACTIVE.getValue())) {
LOG.error("表单 {} 未激活", formCode);
httpServletResponse.setStatus(HttpStatus.NOT_FOUND.value());
return null;
}
return formPO;
}
/**

View File

@ -0,0 +1,190 @@
package ink.wgink.module.form.service.report.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.module.form.dao.formreport.IFormReportDao;
import ink.wgink.module.form.service.report.IFormReportService;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.util.UUIDUtil;
import ink.wgink.util.date.DateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @ClassName: FormReportServiceImpl
* @Description: 表单上报
* @Author: wanggeng
* @Date: 2022/3/14 5:30 PM
* @Version: 1.0
*/
@Service
public class FormReportServiceImpl extends DefaultBaseService implements IFormReportService {
@Autowired
private IFormReportDao formReportDao;
@Override
public void save(String formCode, Integer formVersion, Map<String, Object> params) {
List<String> inserts = new ArrayList<>();
List<Object> values = new ArrayList<>();
inserts.add("uid");
values.add(UUIDUtil.getUUID());
for (Map.Entry<String, Object> kv : params.entrySet()) {
inserts.add(kv.getKey());
values.add(kv.getValue());
}
String datetime = DateUtil.getTime();
String userId = securityComponent.getCurrentUser().getUserId();
inserts.add("gmt_create");
values.add(datetime);
inserts.add("creator");
values.add(userId);
inserts.add("gmt_modified");
values.add(datetime);
inserts.add("modifier");
values.add(userId);
inserts.add("is_delete");
values.add(0);
Map<String, Object> insertParams = getHashMap((params.size() + 5) * 2);
insertParams.put("formCode", formCode);
insertParams.put("formVersion", formVersion);
insertParams.put("inserts", inserts);
insertParams.put("values", values);
formReportDao.save(insertParams);
}
@Override
public void remove(String formCode, Integer formVersion, List<String> uids) {
Map<String, Object> params = getHashMap(10);
params.put("formCode", formCode);
params.put("formVersion", formVersion);
params.put("uids", uids);
setUpdateInfo(params);
formReportDao.remove(params);
}
@Override
public void update(String uid, Map<String, Object> params) {
List<Object[]> kvList = new ArrayList<>();
for (Map.Entry<String, Object> kv : params.entrySet()) {
Object[] kvArray = new Object[]{kv.getKey(), kv.getValue()};
kvList.add(kvArray);
}
kvList.add(new Object[]{"gmt_modified", DateUtil.getTime()});
kvList.add(new Object[]{"modifier", securityComponent.getCurrentUser().getUserId()});
Map<String, Object> updateParams = getHashMap((params.size() + 3) * 2);
updateParams.put("uid", uid);
updateParams.put("kvList", kvList);
formReportDao.update(params);
}
@Override
public Map<String, Object> get(String formCode, Integer formVersion, String uid) {
Map<String, Object> params = getHashMap(2);
params.put("uid", uid);
params.put("formCode", formCode);
params.put("formVersion", formVersion);
return formReportDao.get(params);
}
@Override
public List<Map<String, Object>> list(String formCode, Integer formVersion, Map<String, Object> params) {
List<String> queryList = conditionList(params);
Map<String, Object> queryParams = getHashMap(6);
queryParams.put("formCode", formCode);
queryParams.put("formVersion", formVersion);
queryParams.put("queryList", queryList);
return formReportDao.list(queryParams);
}
@Override
public SuccessResultList<List<Map<String, Object>>> listPage(String formCode, Integer formVersion, ListPage page) {
List<String> queryList = conditionList(page.getParams());
Map<String, Object> queryParams = getHashMap(6);
queryParams.put("formCode", formCode);
queryParams.put("formVersion", formVersion);
queryParams.put("queryList", queryList);
PageHelper.startPage(page.getPage(), page.getRows());
List<Map<String, Object>> mapList = formReportDao.list(queryParams);
PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(mapList);
return new SuccessResultList<>(mapList, pageInfo.getPageNum(), pageInfo.getTotal());
}
/**
* 条件列表
*
* @param params
* @return
*/
private List<String> conditionList(Map<String, Object> params) {
// 清除条件中的默认字段
params.remove("requestUri");
params.remove("requestHost");
params.remove("requestPort");
params.remove("keywords");
params.remove("showLevel");
params.remove("page");
params.remove("rows");
params.remove("is_delete");
List<String> queryList = new ArrayList<>();
for (Map.Entry<String, Object> kv : params.entrySet()) {
String condition = getCondition(kv.getKey(), kv.getValue());
if (StringUtils.isBlank(condition)) {
continue;
}
queryList.add(condition);
}
return queryList;
}
private String getCondition(String key, Object value) {
String conditionSQL;
if (value == null) {
return null;
}
String valueStr = "" + value;
if (StringUtils.isBlank(valueStr)) {
return null;
}
if (StringUtils.startsWith(valueStr, "*") && StringUtils.endsWith(valueStr, "*")) {
// key LIKE '%keyword%'
conditionSQL = key + " LIKE '%" + valueStr.substring(1, valueStr.length() - 1) + "%'";
} else if (StringUtils.startsWith(valueStr, "*")) {
// key LIKE '%keyword'
conditionSQL = key + " LIKE '%" + valueStr.substring(1) + "'";
} else if (StringUtils.endsWith(valueStr, "*")) {
// key LIKE 'keyword%'
conditionSQL = key + " LIKE '" + valueStr.substring(0, valueStr.length() - 1) + "%'";
} else if (StringUtils.startsWith(valueStr, "lt;")) {
// key < 'value'
conditionSQL = key + " < '" + valueStr.substring(3) + "'";
} else if (StringUtils.endsWith(valueStr, "gt;")) {
// key > 'value'
conditionSQL = key + " > '" + valueStr.substring(3) + "'";
} else if (StringUtils.startsWith(valueStr, "le;")) {
// key <= 'value'
conditionSQL = key + " <= '" + valueStr.substring(3) + "'";
} else if (StringUtils.endsWith(valueStr, "ge;")) {
// key >= 'value'
conditionSQL = key + " >= '" + valueStr.substring(3) + "'";
} else if (StringUtils.endsWith(valueStr, "ne;")) {
conditionSQL = key + " <> '" + valueStr.substring(3) + "'";
} else {
conditionSQL = key + " = '" + valueStr + "'";
}
return conditionSQL;
}
}

View File

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ink.wgink.module.form.dao.formreport.IFormReportDao">
<!-- 新增 -->
<insert id="save" parameterType="map">
INSERT INTO df_${formCode}_v${formVersion}(
<foreach collection="inserts" index="index" open="" separator="," close="">
${inserts[index]}
</foreach>
) VALUES(
<foreach collection="values" index="index" open="" separator="," close="">
#{values[${index}]}
</foreach>
)
</insert>
<!-- 删除表单 -->
<update id="remove" parameterType="map">
UPDATE
df_${formCode}_v${formVersion}
SET
is_delete = 1,
modifier = #{modifier},
gmt_modified = #{gmtModified}
WHERE
uid IN
<foreach collection="uids" index="index" open="(" separator="," close=")">
#{uids[${index}]}
</foreach>
</update>
<!-- 更新表单 -->
<update id="update" parameterType="map">
UPDATE
df_${formCode}_v${formVersion}
SET
<foreach collection="kvList" index="index" open="" separator="," close="">
${kvList[${index}][0]} = #{kvList[${index}][1]}
</foreach>
WHERE
uid = #{uid}
</update>
<!-- 详情 -->
<select id="get" parameterType="map" resultType="map">
SELECT
*
FROM
df_${formCode}_v${formVersion}
WHERE
is_delete = 0
AND
uid = #{uid}
</select>
<!-- 列表 -->
<select id="list" parameterType="map" resultType="map">
SELECT
*
FROM
df_${formCode}_v${formVersion}
WHERE
is_delete = 0
<trim prefix="AND">
<foreach collection="queryList" item="item" index="index" open="" separator="AND" close="">
${item}
</foreach>
</trim>
</select>
</mapper>

View File

@ -15,13 +15,13 @@ layui.define(['jquery', 'formUtils', 'formField'], function (exports) {
}
var _html = '<div id="{0}" class="layui-form-item layui-row grid {2}" data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index);
var colClass = 'layui-col-md6';
var colClass = 'layui-col-md6 layui-col-xs6';
if (json.columns.length == 3) {
colClass = 'layui-col-md4';
colClass = 'layui-col-md4 layui-col-xs4';
} else if (json.columns.length == 4) {
colClass = 'layui-col-md3';
colClass = 'layui-col-md3 layui-col-xs3';
} else if (json.columns.length == 6) {
colClass = 'layui-col-md2';
colClass = 'layui-col-md2 layui-col-xs2';
}
for (var i = 0; i < json.columns.length; i++) {
_html += '<div id="{3}_column_{0}" class="{2} widget-col-list column{0}" data-index="{0}" data-parentindex="{1}">'.format(i, json.index, colClass, json.id);

View File

@ -1214,75 +1214,9 @@ layui.config({
options.data[newIndex] = oldData;
options.data[oldIndex] = newData;
}
//导出数据
$('.exportJson').on('click', function () {
document.getElementById('generate-code-view').value = JSON.stringify(options.data, null, 4);
layer.open({
type: 1,
title: 'JSON 数据导出',
id: 'Lay_layer_htmlcodeview',
content: $('.htmlcodeview'),
area: ['800px', '640px'],
shade: false,
resize: false,
success: function (layero, index) {
},
end: function () {
$('.htmlcodeview').css("display", "none")
}
});
});
//导入数据
$('.importJson').on('click', function () {
document.getElementById('import-json-code').value = JSON.stringify(options.data, null, 4);
layer.open({
type: 1,
title: 'JSON模板数据导入',
id: 'Lay_layer_importjsoncodeview',
content: $('.importjsoncodeview'),
area: ['800px', '640px'],
shade: false,
resize: false,
success: function (layero, index) {
},
end: function () {
$('.importjsoncodeview').css("display", "none")
}
});
});
$('.aboutForm').on('click', function () {
layer.open({
type: 1,
title: '关于 Layui表单设计器',
id: 'Lay_layer_aboutusview',
content: $('.aboutusview'),
area: ['800px', '640px'],
shade: false,
resize: false,
success: function (layero, index) {
},
end: function () {
}
});
});
$('#copy-html-code').on('click', function () {
var Url2 = document.getElementById("generate-code-view");
Url2.select(); // 选择对象
document.execCommand("Copy"); // 执行
layer.msg('复制成功');
});
$('#import-json-code').on('click', function () {
var _value = document.getElementById("import-json-code-view").value;
options.data = JSON.parse(_value);
that.renderForm();
layer.closeAll();
layer.msg('导入成功');
});
// 生成HTML代码
function getSavePageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getSavePageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -1308,6 +1242,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -1420,9 +1356,7 @@ layui.config({
}
// 生成HTML代码
function getUpdatePageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getUpdatePageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -1448,6 +1382,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -1560,9 +1496,7 @@ layui.config({
}
// 生成HTML代码
function getShowPageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getShowPageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -1588,6 +1522,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -1700,9 +1636,7 @@ layui.config({
}
// 生成HTML代码
function getAppSavePageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getAppSavePageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -1728,6 +1662,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -1840,9 +1776,7 @@ layui.config({
}
// 生成HTML代码
function getAppUpdatePageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getAppUpdatePageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -1868,6 +1802,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -1980,9 +1916,7 @@ layui.config({
}
// 生成HTML代码
function getAppShowPageCode() {
var _htmlelem = $('<div style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
function getAppShowPageCode(_htmlelem) {
options.htmlCode.script = '';
var tabsize = 4;
@ -2008,6 +1942,8 @@ layui.config({
' </form>' +
' </div>',
' </div>',
' <input type="hidden" id="formCode" value="${formCode}">',
' <input type="hidden" id="formVersion" value="${formVersion}">',
'</div>',
].join('');
TP_FORM_CODE = style_html(TP_FORM_CODE, tabsize, tabchar, 2000);
@ -2119,39 +2055,6 @@ layui.config({
return TP_HTML_CODE;
}
$('.generateCode').on('click', function () {
//构件 html
var TP_HTML_CODE = getSavePageCode();
document.getElementById('generate-code-view').value = TP_HTML_CODE;
console.log($('#generate-code-view').val());
});
$('#preview').on('click', function () {
window.localStorage.setItem('layui_form_json', JSON.stringify(options.data));
layer.confirm('请选择你要预览页面的方式?', {
btn: ['弹窗', '新页面'] //按钮
}, function () {
//iframe窗
layer.open({
type: 2,
title: '表单预览',
btn: ['关闭'], //可以无限个按钮
btn1: function (index, layero) {
layer.close(index);
},
closeBtn: 1, //不显示关闭按钮
shade: [0],
area: ['100%', '100%'],
offset: 'auto', //右下角弹出
anim: 2,
content: ['./preview.html', 'yes'], //iframe的urlno代表不显示滚动条
end: function () { //此处用于演示
//加载结束
}
});
}, function () {
window.open("./preview.html");
});
});
$('#save').on('click', function () {
var formName = $('#formName').val();
if (!formName) {
@ -2168,12 +2071,16 @@ layui.config({
top.dialog.msg('请添加组件');
return;
}
var savePageCode = getSavePageCode();
var updatePageCode = getUpdatePageCode();
var showPageCode = getShowPageCode();
var appSavePageCode = getAppSavePageCode();
var appUpdatePageCode = getAppUpdatePageCode();
var appShowPageCode = getAppShowPageCode();
var _htmlelem = $('<div id="app" style="height:100%;width:100%;"></div>');
that.generateHtml(options.data, _htmlelem);
var savePageCode = getSavePageCode(_htmlelem);
var updatePageCode = getUpdatePageCode(_htmlelem);
var showPageCode = getShowPageCode(_htmlelem);
var appSavePageCode = getAppSavePageCode(_htmlelem);
var appUpdatePageCode = getAppUpdatePageCode(_htmlelem);
var appShowPageCode = getAppShowPageCode(_htmlelem);
top.dialog.confirm(top.dataMessage.commit, function (index) {
top.dialog.close(index);
@ -2238,9 +2145,7 @@ layui.config({
//获取当前的 DOM 对象
if (item2.list.length > 0) {
var elem2 = $('#' + item.id + '_column_' + index2);
if (item2.list.length > 0) {
that.renderComponents(item2.list, elem2);
}
that.renderComponents(item2.list, elem2);
}
});
} else if (item.tag === 'slider') {
@ -2266,17 +2171,9 @@ layui.config({
Class.prototype.generateHtml = function (jsondata, elem) {
var that = this,
options = that.config;
elem.append($('#formDesignerForm').clone(false));
$.each(jsondata, function (index, item) {
elem.append(that.components[item.tag].render(item, true));
if (item.tag === 'grid') {
$.each(item.columns, function (index2, item2) {
//获取当前的 DOM 对象
var elem2 = $('#' + item.id + '_column_' + index2);
if (item2.list.length > 0) {
that.generateHtml(item2.list, elem2);
}
});
} else if (item.tag === 'slider') {
if (item.tag === 'slider') {
//定义初始值
options.htmlCode.script += ['slider.render({', , 'elem: "#' + item.tag + item.id + '" ,', 'value: ' + item.defaultValue + ',', 'min: ' + item.minValue + ',', 'max: ' + item.maxValue + ',', 'step: ' + item.stepValue + ',', 'input:' + item.isInput + ',', 'change: function(value){', '$("#' + item.id + '").find("input[name="' + item.id + '"]").val(value);', ' }', '});'].join('');
} else if (item.tag === 'date') {