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.
204 lines
9.4 KiB
204 lines
9.4 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title><?= $form->getTitle() ?></title>
|
|
<script src="{__PLUG_PATH}form-create/color-thief.umd.js"></script>
|
|
<script src="{__PLUG_PATH}vue/dist/vue.min.js"></script>
|
|
<link href="{__PLUG_PATH}iview/dist/styles/iview.css" rel="stylesheet">
|
|
<script src="{__PLUG_PATH}iview/dist/iview.min.js"></script>
|
|
<script src="{__PLUG_PATH}jquery/jquery.min.js"></script>
|
|
<script src="{__PLUG_PATH}form-create/province_city.js"></script>
|
|
<script src="{__PLUG_PATH}form-create/form-create.min.js"></script>
|
|
<style>
|
|
/*弹框样式修改*/
|
|
.ivu-modal {
|
|
top: 20px;
|
|
}
|
|
|
|
.ivu-modal .ivu-modal-body {
|
|
padding: 10px;
|
|
}
|
|
|
|
.ivu-modal .ivu-modal-body .ivu-modal-confirm-head {
|
|
padding: 0 0 10px 0;
|
|
}
|
|
|
|
.ivu-modal .ivu-modal-body .ivu-modal-confirm-footer {
|
|
display: none;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
.ivu-date-picker {
|
|
display: inline-block;
|
|
line-height: normal;
|
|
width: 280px;
|
|
}
|
|
|
|
.ivu-modal-footer {
|
|
display: none;
|
|
}
|
|
|
|
body {
|
|
padding: 20px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
<script>
|
|
window.$f = null
|
|
formCreate.formSuccess = function(form, $r) {
|
|
<?= $form->getSuccessScript() ?>
|
|
//刷新父级页面
|
|
// parent.$(".J_iframe:visible")[0].contentWindow.location.reload();
|
|
//关闭当前窗口
|
|
// var index = parent.layer.getFrameIndex(window.name);
|
|
// parent.layer.close(index);
|
|
//提交成功后按钮恢复
|
|
$r.btn.loading(false);
|
|
if (parent.formSuccessBack) {
|
|
parent.formSuccessBack();
|
|
}
|
|
};
|
|
|
|
(function() {
|
|
var create = (function() {
|
|
var getRule = function() {
|
|
var rule = <?= json_encode($form->getRules()) ?>;
|
|
rule.forEach(function(c) {
|
|
if ((c.type == 'cascader' || c.type == 'tree') && Object.prototype.toString.call(c.props.data) == '[object String]') {
|
|
if (c.props.data.indexOf('js.') === 0) {
|
|
c.props.data = window[c.props.data.replace('js.', '')];
|
|
}
|
|
}
|
|
});
|
|
return rule;
|
|
},
|
|
vm = new Vue,
|
|
name = 'formBuilderExec<?= !$form->getId() ? '' : '_' . $form->getId() ?>';
|
|
var _b = false;
|
|
window[name] = function create(el, callback) {
|
|
if (_b) return;
|
|
_b = true;
|
|
if (!el) el = document.body;
|
|
$f = formCreate.create(getRule(), {
|
|
el: el,
|
|
form: <?= json_encode($form->getConfig('form')) ?>,
|
|
row: <?= json_encode($form->getConfig('row')) ?>,
|
|
submitBtn: <?= $form->isSubmitBtn() ? '{}' : 'false' ?>,
|
|
resetBtn: <?= $form->isResetBtn() ? 'true' : '{}' ?>,
|
|
iframeHelper: true,
|
|
global: {
|
|
upload: {
|
|
props: {
|
|
onExceededSize: function(file) {
|
|
vm.$Message.error(file.name + '超出指定大小限制');
|
|
},
|
|
onFormatError: function() {
|
|
vm.$Message.error(file.name + '格式验证失败');
|
|
},
|
|
onError: function(error) {
|
|
vm.$Message.error(file.name + '上传失败,(' + error + ')');
|
|
},
|
|
onSuccess: function(res, file) {
|
|
if (res.code == 200) {
|
|
file.url = res.data.filePath;
|
|
} else {
|
|
vm.$Message.error(res.msg);
|
|
}
|
|
},
|
|
},
|
|
},
|
|
},
|
|
//表单提交事件
|
|
onSubmit(formData) {
|
|
if (formData.pic) {
|
|
let images = new Image();
|
|
images.crossOrigin = '';
|
|
let host = formData.pic.indexOf("https://");
|
|
let src = formData.pic.indexOf("http://");
|
|
if(!host || !src){
|
|
images.src = "/admin/setting.system_group_data/proxy?src=" + formData.pic;
|
|
}else{
|
|
images.src = formData.pic;
|
|
}
|
|
let colorThief = new ColorThief();
|
|
images.onload = function() {
|
|
let color = colorThief.getPalette(images, 2);
|
|
formData.color_one = color[0].toString();
|
|
formData.color_two = color[1].toString();
|
|
}
|
|
$f.btn.loading(true);
|
|
setTimeout(() => {
|
|
$.ajax({
|
|
url: '<?= $form->getAction() ?>',
|
|
type: '<?= $form->getMethod() ?>',
|
|
dataType: 'json',
|
|
data: formData,
|
|
success: function(res) {
|
|
if (res.code == 200) {
|
|
vm.$Message.success(res.msg);
|
|
$f.btn.loading(false);
|
|
formCreate.formSuccess && formCreate.formSuccess(res, $f, formData);
|
|
callback && callback(0, res, $f, formData);
|
|
//TODO 表单提交成功!
|
|
} else {
|
|
vm.$Message.error(res.msg || '表单提交失败');
|
|
$f.btn.loading(false);
|
|
callback && callback(1, res, $f, formData);
|
|
//TODO 表单提交失败
|
|
}
|
|
},
|
|
error: function() {
|
|
vm.$Message.error('表单提交失败');
|
|
$f.btn.loading(false);
|
|
}
|
|
});
|
|
}, 1000);
|
|
|
|
// });
|
|
} else {
|
|
$f.btn.loading(true);
|
|
$.ajax({
|
|
url: '<?= $form->getAction() ?>',
|
|
type: '<?= $form->getMethod() ?>',
|
|
dataType: 'json',
|
|
data: formData,
|
|
success: function(res) {
|
|
if (res.code == 200) {
|
|
vm.$Message.success(res.msg);
|
|
$f.btn.loading(false);
|
|
formCreate.formSuccess && formCreate.formSuccess(res, $f, formData);
|
|
callback && callback(0, res, $f, formData);
|
|
//TODO 表单提交成功!
|
|
} else {
|
|
vm.$Message.error(res.msg || '表单提交失败');
|
|
$f.btn.loading(false);
|
|
callback && callback(1, res, $f, formData);
|
|
//TODO 表单提交失败
|
|
}
|
|
},
|
|
error: function() {
|
|
vm.$Message.error('表单提交失败');
|
|
$f.btn.loading(false);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
});
|
|
return $f;
|
|
};
|
|
return window[name];
|
|
}());
|
|
|
|
window.$f = create();
|
|
// create();
|
|
})();
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|