You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

242 lines
8.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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>
</head>
<body >
<div >
<div>
<button type="button" class="layui-btn" id="importJsonData">导入数据</button>
</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>
</div>
<div class="getFormData" style="display: none;">
<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/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]);
}
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
})
}
, 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;
//检查对象是否存在
//console.log($(id).length);
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;
});
//导入数据
$('#importJsonData').on('click', function () {
layer.open({
type: 1
, title: 'JSON模板数据导入'
, id: 'Lay_layer_importjsoncodeview'
, content: $('.importjsoncodedataview')
, area: ['800px', '640px']
, shade: false
, resize: false
, success: function (layero, index) {
}
, end: function () {
$('.importjsoncodeview').css("display","none")
}
});
});
//导入数据
$('#getFormData').on('click', function () {
var _value = render.getFormData();
$('#get-form-data').val(JSON.stringify(_value,null,4));
layer.open({
type: 1
, title: 'JSON模板数据导入'
, id: 'Lay_layer_importjsoncodeview'
, content: $('.getFormData')
, area: ['800px', '640px']
, shade: false
, resize: false
, success: function (layero, index) {
}
, end: function () {
$('.getFormData').css("display","none")
}
});
});
$('#import-json-code-data').on('click', function () {
var _value = document.getElementById("import-json-code-view").value;
try {
var json = JSON.parse(_value);
render.setFormData(json);
layer.closeAll();
layer.msg('导入成功');
}catch (e) {
layer.closeAll();
layer.msg('导入数据格式异常');
}
});
});
function getSubmitData(){
var data=$('#workspace').form[0].serialize();
console.log(data);
return data;
}
</script>
</body>
</html>