添加表单打印代码

This commit is contained in:
wanggeng 2022-05-10 18:08:14 +08:00
parent 7b6f73d5e6
commit a36568cb05
12 changed files with 353 additions and 0 deletions

View File

@ -112,6 +112,19 @@ public class FormController extends DefaultBaseController {
return new SuccessResult();
}
@ApiOperation(value = "修改打印页面代码", notes = "修改打印页面代码接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "formId", value = "表单ID", paramType = "path")
})
@PutMapping("update-print-page-code/{formId}")
public SuccessResult updatePrintPageCode(@PathVariable("formId") String formId, @RequestBody FormVO formVO) {
if (StringUtils.isBlank(formVO.getPrintPageCode())) {
throw new ParamsException("代码不能为空");
}
formService.updatePrintPageCode(formId, formVO.getPrintPageCode());
return new SuccessResult();
}
@ApiOperation(value = "修改App新增页面代码", notes = "修改App新增页面代码接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "formId", value = "表单ID", paramType = "path")
@ -219,6 +232,19 @@ public class FormController extends DefaultBaseController {
return formDTO;
}
@ApiOperation(value = "打印页面代码", notes = "打印页面代码接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "formCode", value = "表单编码", paramType = "path"),
@ApiImplicitParam(name = "formVersion", value = "表单版本", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get-print-page-code/code/{formCode}/version/{formVersion}")
public FormDTO getPrintPageCode(@PathVariable("formCode") String formCode, @PathVariable("formVersion") Integer formVersion) {
FormDTO formDTO = new FormDTO();
formDTO.setPrintPageCode(formService.getPrintPageCodeByCodeAndVersion(formCode, formVersion));
return formDTO;
}
@ApiOperation(value = "APP新增页面代码", notes = "APP新增页面代码接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "formCode", value = "表单编码", paramType = "path"),

View File

@ -48,6 +48,12 @@ public class FormRouteController {
return mv;
}
@GetMapping("get-print-page-code")
public ModelAndView getPrintPageCode() {
ModelAndView mv = new ModelAndView("form/get-print-page-code");
return mv;
}
@GetMapping("get-app-save-page-code")
public ModelAndView getAppSavePageCode() {
ModelAndView mv = new ModelAndView("form/get-app-save-page-code");

View File

@ -49,6 +49,8 @@ public interface IFormDao extends IInitBaseTable {
String getShowPageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;
String getPrintPageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;
String getAppSavePageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;
String getAppUpdatePageCodeByCodeAndVersion(Map<String, Object> params) throws SearchException;

View File

@ -16,6 +16,7 @@ public class FormPO implements Serializable {
private String savePageCode;
private String updatePageCode;
private String showPageCode;
private String printPageCode;
private String appSavePageCode;
private String appUpdatePageCode;
private String appShowPageCode;
@ -116,6 +117,14 @@ public class FormPO implements Serializable {
this.showPageCode = showPageCode;
}
public String getPrintPageCode() {
return printPageCode == null ? "" : printPageCode.trim();
}
public void setPrintPageCode(String printPageCode) {
this.printPageCode = printPageCode;
}
public String getAppSavePageCode() {
return appSavePageCode == null ? "" : appSavePageCode.trim();
}

View File

@ -28,6 +28,8 @@ public class FormVO {
private String updatePageCode;
@ApiModelProperty(name = "showPageCode", value = "展示页面代码")
private String showPageCode;
@ApiModelProperty(name = "printPageCode", value = "打印页面代码")
private String printPageCode;
@ApiModelProperty(name = "appSavePageCode", value = "APP新增页面代码")
private String appSavePageCode;
@ApiModelProperty(name = "appUpdatePageCode", value = "APP修改页面代码")
@ -125,6 +127,14 @@ public class FormVO {
this.showPageCode = showPageCode;
}
public String getPrintPageCode() {
return printPageCode == null ? "" : printPageCode.trim();
}
public void setPrintPageCode(String printPageCode) {
this.printPageCode = printPageCode;
}
public String getAppSavePageCode() {
return appSavePageCode == null ? "" : appSavePageCode.trim();
}

View File

@ -110,6 +110,14 @@ public interface IFormService {
*/
void updateShowPageCode(String formId, String showPageCode);
/**
* 修改打印页面代码
*
* @param formId
* @param printPageCode
*/
void updatePrintPageCode(String formId, String printPageCode);
/**
* 修改App新增页面代码
*
@ -218,6 +226,15 @@ public interface IFormService {
*/
String getShowPageCodeByCodeAndVersion(String formCode, Integer formVersion);
/**
* 打印页面代码
*
* @param formCode
* @param formVersion
* @return
*/
String getPrintPageCodeByCodeAndVersion(String formCode, Integer formVersion);
/**
* APP新增页面代码
*

View File

@ -129,6 +129,7 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
formVO.setSavePageCode(getSavePageCode(model, formDesignVO.getFormType()));
formVO.setUpdatePageCode(getUpdatePageCode(model, formDesignVO.getFormType()));
formVO.setShowPageCode(getShowPageCode(model, formDesignVO.getFormType()));
formVO.setPrintPageCode(getPrintPageCode(model, formDesignVO.getFormType()));
formVO.setAppSavePageCode(getAppSavePageCode(model, formDesignVO.getFormType()));
formVO.setAppUpdatePageCode(getAppUpdatePageCode(model, formDesignVO.getFormType()));
formVO.setAppShowPageCode(getAppShowPageCode(model, formDesignVO.getFormType()));
@ -200,6 +201,23 @@ public class FormDesignServiceImpl extends DefaultBaseService implements IFormDe
throw new ParamsException("表单类型错误");
}
/**
* 打印页面模板
*
* @param model
* @param formType
* @return
* @throws IOException
*/
private String getPrintPageCode(Map<String, Object> model, String formType) throws IOException {
if (StringUtils.equals(FormTypeEnum.DEFAULT.getValue(), formType)) {
return null;
} else if (StringUtils.equals(FormTypeEnum.OA.getValue(), formType)) {
return getTemplateCode("/page/web/oa/form-print.ftl", model);
}
throw new ParamsException("表单类型错误");
}
/**
* app新增页面模板
*

View File

@ -190,6 +190,15 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
formDao.update(params);
}
@Override
public void updatePrintPageCode(String formId, String printPageCode) {
Map<String, Object> params = getHashMap(4);
params.put("formId", formId);
params.put("printPageCode", printPageCode);
setUpdateInfo(params);
formDao.update(params);
}
@Override
public void updateAppSavePageCode(String formId, String appSavePageCode) {
Map<String, Object> params = getHashMap(4);
@ -292,6 +301,14 @@ public class FormServiceImpl extends DefaultBaseService implements IFormService
return formDao.getShowPageCodeByCodeAndVersion(params);
}
@Override
public String getPrintPageCodeByCodeAndVersion(String formCode, Integer formVersion) {
Map<String, Object> params = getHashMap(4);
params.put("formCode", formCode);
params.put("formVersion", formVersion);
return formDao.getPrintPageCodeByCodeAndVersion(params);
}
@Override
public String getAppSavePageCodeByCodeAndVersion(String formCode, Integer formVersion) {
Map<String, Object> params = getHashMap(4);

View File

@ -14,6 +14,7 @@
<result column="save_page_code" property="savePageCode"/>
<result column="update_page_code" property="updatePageCode"/>
<result column="show_page_code" property="showPageCode"/>
<result column="print_page_code" property="printPageCode"/>
<result column="app_save_page_code" property="appSavePageCode"/>
<result column="app_update_page_code" property="appUpdatePageCode"/>
<result column="app_show_page_code" property="appShowPageCode"/>
@ -38,6 +39,7 @@
<result column="save_page_code" property="savePageCode"/>
<result column="update_page_code" property="updatePageCode"/>
<result column="show_page_code" property="showPageCode"/>
<result column="print_page_code" property="printPageCode"/>
<result column="app_save_page_code" property="appSavePageCode"/>
<result column="app_update_page_code" property="appUpdatePageCode"/>
<result column="app_show_page_code" property="appShowPageCode"/>
@ -61,6 +63,7 @@
`save_page_code` longtext COMMENT '新增页面代码',
`update_page_code` longtext COMMENT '更新页面代码',
`show_page_code` longtext COMMENT '展示页面代码',
`print_page_code` longtext COMMENT '打印页面代码',
`app_save_page_code` longtext COMMENT 'APP新增页面代码',
`app_update_page_code` longtext COMMENT 'APP更新页面代码',
`app_show_page_code` longtext COMMENT 'APP展示页面代码',
@ -119,6 +122,7 @@
save_page_code,
update_page_code,
show_page_code,
print_page_code,
app_save_page_code,
app_update_page_code,
app_show_page_code,
@ -141,6 +145,7 @@
#{savePageCode},
#{updatePageCode},
#{showPageCode},
#{printPageCode},
#{appSavePageCode},
#{appUpdatePageCode},
#{appShowPageCode},
@ -213,6 +218,9 @@
<if test="showPageCode != null and showPageCode != ''">
show_page_code = #{showPageCode},
</if>
<if test="printPageCode != null and printPageCode != ''">
print_page_code = #{printPageCode},
</if>
<if test="appSavePageCode != null and appSavePageCode != ''">
app_save_page_code = #{appSavePageCode},
</if>
@ -277,6 +285,7 @@
save_page_code,
update_page_code,
show_page_code,
print_page_code,
app_save_page_code,
app_update_page_code,
app_show_page_code,
@ -405,6 +414,20 @@
form_version = #{formVersion}
</select>
<!-- 代码 -->
<select id="getPrintPageCodeByCodeAndVersion" parameterType="map" resultType="java.lang.String">
SELECT
print_page_code
FROM
form_form
WHERE
is_delete = 0
AND
form_code = #{formCode}
AND
form_version = #{formVersion}
</select>
<!-- 代码 -->
<select id="getAppSavePageCodeByCodeAndVersion" parameterType="map" resultType="java.lang.String">
SELECT

View File

@ -0,0 +1,176 @@
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<base th:href="${#request.getContextPath() + '/'}">
<meta charset="utf-8">
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" href="assets/js/vendor/codemirror/codemirror.css">
<link rel="stylesheet" href="assets/js/vendor/codemirror/theme/dracula.css">
</head>
<body>
<div class="layui-anim layui-anim-fadein">
<div class="layui-card">
<div class="layui-card-body" style="padding: 0px;">
<form class="layui-form layui-form-pane" lay-filter="dataForm">
<div class="layui-row">
<div id="codeBox" class="layui-col-md12 layui-col-xs12">
<textarea id="printPageCode" name="printPageCode" style="display: none"></textarea>
</div>
<div id="previewBox" class="layui-col-md4 layui-col-xs4" style="display: none;">
<iframe id="previewCode" frameborder="0" style="width: 100%;"></iframe>
</div>
</div>
<div class="layui-form-item layui-layout-admin">
<div class="layui-input-block">
<div class="layui-footer" style="left: 0;">
<button type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
<button type="button" id="previewBtn" class="layui-btn layui-btn-normal">预览</button>
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<script src="assets/js/vendor/codemirror/codemirror.js"></script>
<script src="assets/js/vendor/codemirror/mode/css/css.js"></script>
<script src="assets/js/vendor/codemirror/mode/javascript/javascript.js"></script>
<script src="assets/js/vendor/codemirror/mode/htmlmixed/htmlmixed.js"></script>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({
index: 'lib/index' //主入口模块
}).use(['index', 'form', 'laydate'], function(){
var $ = layui.$;
var win = $(window)
var form = layui.form;
var laytpl = layui.laytpl;
var params = top.restAjax.params(window.location.href);
var formId = params.formId;
var formCode = params.formCode;
var formVersion = params.formVersion;
var previewTimeout;
var isPreview = false;
var codeMirrorConfig = {
lineNumbers: true,
theme: 'dracula',
matchBrackets: true,
indentUnit : 4,
tabSize : 4,
smartIndent: true,
extraKeys: {
'Shift-Tab': function (cm) {
if (cm.somethingSelected()) {
cm.indentSelection('subtract');
} else {
cm.indentLine(cm.getCursor().line, "subtract");
}
return;
},
}
};
function closeBox() {
parent.layer.close(parent.layer.getFrameIndex(window.name));
}
function initPreview(code) {
if(!isPreview) {
return;
}
$('#previewCode').attr('srcdoc', code);
}
function initFormHtml(value) {
var editor = CodeMirror.fromTextArea(document.getElementById('printPageCode'), codeMirrorConfig);
editor.setValue(value);
editor.setSize('100%', win.height() - 65);
editor.on('change', function(self, changeValue) {
$('#printPageCode').val(self.getValue());
if(previewTimeout) {
clearTimeout(previewTimeout);
}
previewTimeout = setTimeout(function() {
initPreview(self.getValue());
}, 1000);
});
$('#previewCode').height(win.height() - 65);
}
// 初始化
function initData() {
var loadLayerIndex;
top.restAjax.get(top.restAjax.path('api/form/get-print-page-code/code/{formCode}/version/{formVersion}', [formCode, formVersion]), {}, null, function(code, data) {
form.val('dataForm', {
printPageCode: data.printPageCode,
});
form.render(null, 'dataForm');
initFormHtml(data.printPageCode);
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
}
initData();
// 提交表单
form.on('submit(submitForm)', function(formData) {
top.dialog.confirm(top.dataMessage.commit, function(index) {
top.dialog.close(index);
var loadLayerIndex;
top.restAjax.put(top.restAjax.path('api/form/update-print-page-code/{formId}', [formId]), formData.field, null, function(code, data) {
var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, {
time: 0,
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
shade: 0.3,
yes: function(index) {
top.dialog.close(index);
window.location.reload();
},
btn2: function() {
closeBox();
}
});
}, function(code, data) {
top.dialog.msg(data.msg);
}, function() {
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
}, function() {
top.dialog.close(loadLayerIndex);
});
});
return false;
});
$('.close').on('click', function() {
closeBox();
});
$('#previewBtn').on('click', function() {
if(isPreview) {
$('#codeBox').attr('class', 'layui-col-md12 layui-col-xs12');
$('#previewBox').hide();
} else {
$('#codeBox').attr('class', 'layui-col-md8 layui-col-xs8');
$('#previewBox').attr('class', 'layui-col-md4 layui-col-xs4');
$('#previewBox').show();
}
isPreview = !isPreview;
initPreview($('#printPageCode').val());
});
});
</script>
</body>
</html>

View File

@ -126,6 +126,14 @@
'</div>';
}
},
{field:'printPageCode', width:100, title: '打印代码', align:'center',
templet: function(item) {
return '<div class="layui-btn-group">' +
'<button class="layui-btn layui-btn-xs" lay-event="printPageCodeEvent">打印页面</button>' +
'</div>';
}
},
{field:'appPageCode', width:220, title: 'APP端代码', align:'center',
templet: function(item) {
return '<div class="layui-btn-group">' +
@ -285,6 +293,15 @@
onClose: function () {
}
})
} else if(event === 'printPageCodeEvent') {
top.dialog.open({
title: '打印页面模板',
url: top.restAjax.path('route/form/get-print-page-code?formId={formId}&formCode={formCode}&formVersion={formVersion}', [data.formId, data.formCode, data.formVersion]),
width: '99%',
height: '99%',
onClose: function () {
}
})
} else if(event === 'appSavePageCodeEvent') {
top.dialog.open({
title: 'APP新增页面模板',

View File

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html>
<head>
<base href="${r'${contextPath}'}"/>
<meta charset="utf-8">
<title>${r'${formName}'}</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<style>
</style>
</head>
<body>
<div class="layui-anim layui-anim-fadein">
</div>
<script src="assets/layuiadmin/layui/layui.js"></script>
<script>
layui.config({
base: 'assets/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index'], function () {
});
</script>
</body>
</html>