main
黄海 3 years ago
parent 9dce526378
commit 6da6323df9

@ -3,4 +3,8 @@
每个任务有多个模板,
http://10.10.11.124:9000/FengHuang/html/formDesign/listPageInfo.html?module_id=1
# 模板内容构建
http://10.10.11.124:9000/FengHuang/html/formDesign/listModulePageInfo.html?module_id=1
# 查看任务填充情况
http://10.10.11.124:9000/FengHuang/html/formDesign/listTaskPageInfo.html?task_id=1

@ -32,7 +32,6 @@
layui.config({base: './ayq/modules/'}).use(['layer', 'formDesigner'], function () {
var formDesigner = layui.formDesigner;
var data = [];
//需要获取当前的url中参数module_id和page
let module_id = $.getUrlParam('module_id');
let page = $.getUrlParam('page');

@ -1,62 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="./layui/css/layui.css">
<style type="text/css">
.layui-disabled {
background-color: #f5f7fa;
border-color: #dfe4ed;
color: #c0c4cc;
}
.panel-heading{
padding:10px 10px;
border-bottom:1px solid transparent;
border-radius:2px 2px 0 0;
font-size:14px;
background: #eeeeee
}
</style>
</head>
<body>
<div class="table_div">
<!--</div>-->
<table class="layui-table" id="showTable" lay-filter="showTable"></table>
</div>
</body>
</html>
<script src="./layui/layui.js"></script>
<script src="./js/activiti.manager.core.util.js"></script>
<script>
var table;
function child(iceEditMenus){
layui.use(['table'], function () {
table = layui.table;
//加载table
var tableIns1 = table.render({
elem: '#showTable',
data:iceEditMenus,
limit:30
, cols: [
[
{type: 'checkbox', fixed: 'left'},
{field: 'text', title: '菜单名称'},
{field: 'value', title: '菜单key',}
]
]
});
});
}
function getCheckData() { //获取选中数据
var checkStatus = table.checkStatus('showTable')
,data = checkStatus.data;
var result = [];
for (var i = 0; i < data.length; i++) {
result.push(data[i].value);
}
return result;
}
</script>

@ -17,12 +17,8 @@
<div >
<div>
<button type="button" class="layui-btn" id="importJsonData">导入数据</button>
<!-- <button type="button" class="layui-btn layui-btn-danger" id="globalDisable">禁用表单</button>
<button type="button" class="layui-btn layui-btn-normal" id="globalNoDisable">启用表单</button> -->
<!-- <button type="button" class="layui-btn layui-btn-warm" id="getFormData" >获取表单数据</button> -->
</div>
<div id="workspace" style="margin: 20px 20px;padding: 20px 20px;border: 1px solid #009688;">
</div>
</div>
<div class="importjsoncodedataview" style="display: none;">
@ -65,7 +61,6 @@
if (window.localStorage.getItem('layui_form_json') !== undefined) {
demojs = JSON.parse(window.localStorage.getItem('layui_form_json'));
render = formDesigner.render({
elem: '#workspace',
data: demojs,
@ -235,13 +230,6 @@
layer.msg('导入数据格式异常');
}
});
$('#globalDisable').on('click', function () {
render.globalDisable();
});
$('#globalNoDisable').on('click', function () {
render.globalNoDisable();
});
});
function getSubmitData(){

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html lang="en" xmlns:th=http://www.thymeleaf.org>
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>表单设计器</title>
<link rel="stylesheet" href="./layui/css/layui.css"/>
<link rel="stylesheet" href="./ayq/modules/HandwrittenSignature.css"/>
</head>
<body class="layui-layout-body">
<div id="formdesigner">
</div>
<script type="text/javascript" src="./layui/layui.js"></script>
<script>
var render;
layui.config(
{
base: './ayq/modules/',
version: true
}).use(['layer', 'HandwrittenSignature'], function () {
var handwrittenSignature = layui.HandwrittenSignature;
var $ = layui.jquery;
render = handwrittenSignature.render({
elem: '#formdesigner'
, defaultColor: "rgba(0, 0, 0, 1)"
, label: "用户亲笔签名"
, signLineWidth: 3
, isGenerateImg: true
});
});
function getCanvasData() { //获取选中数据
return render.getCanvasData();
}
</script>
</body>
</html>

@ -52,7 +52,6 @@
})
}
});
table.on('tool(idTest)', function (obj) {
var data = obj.data;
if (obj.event === "modify") {

@ -0,0 +1,64 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>任务内容填充</title>
<link href="./layui/css/layui.css" rel="stylesheet">
<script src="./layui/layui.js"></script>
<!--引用新版本Jquery-->
<script type="text/javascript" src="../../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../js/jquery_Extend.js"></script>
</head>
<body>
<table class="layui-table" lay-filter="idTest" id="idTest"></table>
<script type="text/html" id="barDemo">
{{#if(d.filled){ }}
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="modify">修改</a>
{{#}else{ }}
<a class="layui-btn layui-btn-xs layui-btn" lay-event="modify">填写</a>
{{#} }}
</script>
<script>
layui.use(['layer', 'form', 'table'], function () {
var layer = layui.layer;
var form = layui.form;
var table = layui.table;
//需要获取当前的url中参数task_id
let task_id = $.getUrlParam('task_id');
table.render({
elem: '#idTest'
, url: '/FengHuang/zjb/getTaskPageFillInfo'
, where: {
task_id: task_id
}
, cols: [[
{field: '', title: '序号', align: 'center', type: 'numbers', fixed: true, width: '5%'}
, {field: 'json', title: '内容', align: 'center'}
, {fixed: 'right', title: '操作', toolbar: '#barDemo', align: 'center', width: 480}
]]
, page: false
, height: 'full'
, done: function (res) {
$("[data-field='json']").children().each(function () {
if ($(this).text() == "[]") {
$(this).text("未填写");
} else {
$(this).text("已填写");
}
})
}
});
table.on('tool(idTest)', function (obj) {
var data = obj.data;
if (obj.event === "modify") {
//window.location.href = "designModulePage.html?module_id=" + module_id + "&page=" + data.page;
}
});
});
</script>
</body>
</html>

@ -1,187 +1,182 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Layui</title>
<link rel="stylesheet" href="./layui/css/layui.css" />
<link rel="stylesheet" href="./ayq/modules/formDesigner.css" />
<link rel="stylesheet" href="./ayq/modules/cron.css" />
<link rel="stylesheet" href="./ayq/modules/labelGeneration.css" />
<style>
</style>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>预览</title>
<link rel="stylesheet" href="./layui/css/layui.css"/>
<link rel="stylesheet" href="./ayq/modules/formDesigner.css"/>
<link rel="stylesheet" href="./ayq/modules/cron.css"/>
<link rel="stylesheet" href="./ayq/modules/labelGeneration.css"/>
</head>
<body >
<div >
<div id="workspace" style="margin: 20px 20px;padding: 20px 20px;border: 1px solid #009688;">
</div>
</div>
<div class="importjsoncodedataview" style="display: none;">
<textarea class="site-demo-text" id="import-json-code-view"></textarea>
<a href="javascript:;" class="layui-btn layui-btn-normal" style="margin-right:20px;" id="import-json-code-data">导入数据</a>
<body>
<div>
<div id="workspace" style="margin: 20px 20px;padding: 20px 20px;border: 1px solid #009688;">
</div>
</div>
<div class="getFormData" style="display: none;">
<textarea class="site-demo-text" id="get-form-data"></textarea>
<textarea class="site-demo-text" id="get-form-data"></textarea>
</div>
<script type="text/javascript" src="./layui/layui.js"></script>
<script type="text/javascript" src="./ayq/modules/Sortable/Sortable.js"> </script>
<script type="text/javascript" src="./ayq/modules/Sortable/Sortable.js"></script>
<script type="text/javascript" src="./ayq/modules/iceEditor/iceEditor.js"></script>
<script>
var demojs = [];
//JavaScript代码区域
layui.config({base: './ayq/modules/'}).use(['formDesigner','element', 'form','layer','upload'], function () {
var layer = layui.layer;
var $ = layui.jquery;
var upload = layui.upload;
var index = layui.index;
var formDesigner = layui.formDesigner;
var form = layui.form;
var render;
var element = layui.element
//黄海写的去重函数
function unique(x){
let obj = {};
let res=[];
for (let i = 0; i < x.length; i++) {
let item = x[i].select;
if (obj[item] == undefined) {
res.push(x[i]);
var data = [];
//JavaScript代码区域
layui.config({base: './ayq/modules/'}).use(['formDesigner', 'element', 'form', 'layer', 'upload'], function () {
var layer = layui.layer;
var $ = layui.jquery;
var upload = layui.upload;
var index = layui.index;
var formDesigner = layui.formDesigner;
var form = layui.form;
var render;
var element = layui.element
//黄海写的去重函数
function unique(x) {
let obj = {};
let res = [];
for (let i = 0; i < x.length; i++) {
let item = x[i].select;
if (obj[item] == undefined) {
res.push(x[i]);
}
obj[item] = item;
}
return res;
}
obj[item] = item;
}
return res;
}
if (window.localStorage.getItem('layui_form_json') !== undefined) {
demojs = JSON.parse(window.localStorage.getItem('layui_form_json'));
render = formDesigner.render({
elem: '#workspace',
data: demojs,
viewOrDesign:true
});
var images = render.getImages();//这个方法有问题本来是3个的执行完变6个
images=unique(images);
for (let i = 0; i < images.length; i++) {
let item = images[i].select
var id=item.substr(5);//去掉image前缀
upload.render({
elem: '#' + images[i].select
//, url: '' + images[i].uploadUrl + ''
, url: 'https://httpbin.org/post' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
, multiple: true
, before: function (obj) {
var preview_id='#uploader-list-'+item.substr(5);
//预读本地文件示例不支持ie8
obj.preview(function(index, file, result){
$(preview_id).append(//图片链接base64
'<div id="" class="file-iteme">' +
'<div class="handle"><i class="layui-icon layui-icon-delete"></i></div>' +
'<img style="width: 100px;height: 100px;" src=' + result + '>'+
'</div>'
);
});
layer.msg('图片上传中...', {
icon: 16,
shade: 0.01,
time: 0
})
if (window.localStorage.getItem('layui_form_json') !== undefined) {
data = JSON.parse(window.localStorage.getItem('layui_form_json'));
render = formDesigner.render({
elem: '#workspace',
data: data,
viewOrDesign: true
});
var images = render.getImages();//这个方法有问题本来是3个的执行完变6个
images = unique(images);
for (let i = 0; i < images.length; i++) {
let item = images[i].select
var id = item.substr(5);//去掉image前缀
upload.render({
elem: '#' + images[i].select
//, url: '' + images[i].uploadUrl + ''
, url: 'https://httpbin.org/post' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
, multiple: true
, before: function (obj) {
var preview_id = '#uploader-list-' + item.substr(5);
//预读本地文件示例不支持ie8
obj.preview(function (index, file, result) {
$(preview_id).append(//图片链接base64
'<div id="" class="file-iteme">' +
'<div class="handle"><i class="layui-icon layui-icon-delete"></i></div>' +
'<img style="width: 100px;height: 100px;" src=' + result + '>' +
'</div>'
);
});
layer.msg('图片上传中...', {
icon: 16,
shade: 0.01,
time: 0
})
}
, done: function (res) {
layer.close(layer.msg());//关闭上传提示窗口
layer.msg('上传成功!', {icon: 1});
}
});
}
, done: function (res) {
layer.close(layer.msg());//关闭上传提示窗口
layer.msg('上传成功!',{icon: 1});
;
//文件上传代码
var filesData = render.getFiles();
filesData = unique(filesData);
for (var i = 0; i < filesData.length; i++) {
var id = '#' + filesData[i].select;
var uploadListIns = upload.render({
elem: id
, elemList: $('#list-' + filesData[i].select.substr(4)) //列表元素对象
//, url: '' + filesData[i].uploadUrl + ''
, url: 'https://httpbin.org/post' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
, accept: 'file'
, multiple: true
, number: 4
, auto: false
, bindAction: '#listAction-' + filesData[i].select.substr(4)
, choose: function (obj) {
var that = this;
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>'
, '<td><div class="layui-progress" lay-filter="progress-demo-' + index + '"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function () {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
that.elemList.append(tr);
element.render('progress'); //渲染新加的进度条组件
});
}
, done: function (res, index, upload) { //成功的回调
var that = this;
var tr = that.elemList.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(3).html(''); //清空操作
delete this.files[index]; //删除文件队列已经上传成功的文件
this.error(index, upload);
}
, allDone: function (obj) { //多文件上传完毕后的状态回调
layer.msg("上传成功", {icon: 1});
}
, error: function (index, upload) { //错误回调
var that = this;
var tr = that.elemList.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
, progress: function (n, elem, e, index) {
element.progress('progress-demo-' + index, n + '%'); //执行进度条。n 即为返回的进度百分比
}
});
}
});
};
//文件上传代码
var filesData = render.getFiles();
filesData=unique(filesData);
for (var i = 0; i < filesData.length; i++) {
var id='#' + filesData[i].select;
var uploadListIns = upload.render({
elem: id
, elemList: $('#list-' + filesData[i].select.substr(4)) //列表元素对象
//, url: '' + filesData[i].uploadUrl + ''
, url: 'https://httpbin.org/post' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
, accept: 'file'
, multiple: true
, number: 4
, auto: false
, bindAction: '#listAction-' + filesData[i].select.substr(4)
, choose: function (obj) {
var that = this;
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
//读取本地文件
obj.preview(function (index, file, result) {
var tr = $(['<tr id="upload-' + index + '">'
, '<td>' + file.name + '</td>'
, '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>'
, '<td><div class="layui-progress" lay-filter="progress-demo-' + index + '"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
, '<td>'
, '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
, '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
, '</td>'
, '</tr>'].join(''));
//单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
//删除
tr.find('.demo-delete').on('click', function () {
delete files[index]; //删除对应的文件
tr.remove();
uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
});
that.elemList.append(tr);
element.render('progress'); //渲染新加的进度条组件
});
}
, done: function (res, index, upload) { //成功的回调
var that = this;
var tr = that.elemList.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(3).html(''); //清空操作
delete this.files[index]; //删除文件队列已经上传成功的文件
this.error(index, upload);
}
, allDone: function (obj) { //多文件上传完毕后的状态回调
layer.msg("上传成功",{icon:1});
}
, error: function (index, upload) { //错误回调
var that = this;
var tr = that.elemList.find('tr#upload-' + index)
, tds = tr.children();
tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
}
, progress: function (n, elem, e, index) {
element.progress('progress-demo-' + index, n + '%'); //执行进度条。n 即为返回的进度百分比
}
}
//监听提交
form.on('submit(demo1)', function (data) {
var json = render.getFormData();
console.log(json);
layer.msg(JSON.stringify(json), {icon: 6});
return false;
});
}
}
//监听提交
form.on('submit(demo1)', function(data){
var json = render.getFormData();
console.log(json);
layer.msg( JSON.stringify(json), {icon: 6});
return false;
});
});
function getSubmitData(){
var data=$('#workspace').form[0].serialize();
console.log(data);
return data;
}
function getSubmitData() {
var data = $('#workspace').form[0].serialize();
console.log(data);
return data;
}
</script>
</body>
</html>

@ -34,4 +34,11 @@ public class ZjbController extends Controller {
List<Record> list = zm.getModulePageFillInfo(module_id);
renderJson(CommonUtil.renderJsonForLayUI(list));
}
@Before({GET.class})
@IsNumericInterface({"task_id"})
public void getTaskPageFillInfo(int task_id) {
List<Record> list = zm.getTaskPageFillInfo(task_id);
renderJson(CommonUtil.renderJsonForLayUI(list));
}
}

@ -76,4 +76,38 @@ public class ZjbModel {
}
return res;
}
public Record getTaskInfo(int task_id) {
return Db.findById("t_zjb_task", "task_id", task_id);
}
public List<Record> getTaskPageFillInfo(int task_id) {
Record rTask = getTaskInfo(task_id);
int module_id = rTask.getInt("module_id");
Record record = getMoudleInfo(module_id);
int page_count = record.getInt("page_count");
String sql = "select * from t_zjb_task_fill where task_id=?";
List<Record> exist = Db.find(sql, task_id);
Map<Integer, String> _map = new HashMap<>();
for (Record r1 : exist) {
_map.put(r1.getInt("page"), r1.getStr("json"));
}
List<Record> res = new ArrayList<>();
for (int i = 1; i <= page_count; i++) {
Record r = new Record();
r.set("page", i);
if (_map.containsKey(i)) {
r.set("json", _map.get(i));
r.set("filled", true);
} else {
r.set("json", "[]");
r.set("filled", false);
}
res.add(r);
}
return res;
}
}
Loading…
Cancel
Save