| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467 |
- layui.define(['layer', 'form'], function(exports) {
- var layer = layui.layer,
- form = layui.form,
- $ = layui.$,
- key = '',
- allJS = '',
- allHtml = '';
- let module = ["form"];
- delHtml()
- $('button').on('click', function() {
- var _this = $(this),
- size = _this.data('size'),
- type = _this.data('type'),
- html = '';
- key = randStrName();
- switch (type) {
- case 'text':
- html = input(type, size)
- break;
- case 'password':
- html = input(type, size)
- break;
- case 'select':
- html = select(size)
- break;
- case 'checkbox_a':
- html = checkbox_a(size)
- break;
- case 'checkbox_b':
- html = checkbox_b(size)
- break;
- case 'radio':
- html = radio(size)
- break;
- case 'textarea':
- html = textarea(size)
- break;
- case 'icon':
- html = icon(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['iconPicker'], function() {
- layui.iconPicker.render({
- elem: "#" + key,
- type: "fontClass",
- });
- });
- if (module.indexOf('iconPicker') === -1) module.push('iconPicker');
- allJS += ' // 图标选择\n' +
- ' layui.iconPicker.render({\n' +
- ' elem: "#' + key + '",\n' +
- ' type: "fontClass",\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'multiSelect':
- html = multiSelect(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['xmSelect'], function() {
- layui.xmSelect.render({
- el: "#" + key,
- name: key,
- data: [{value: 1, name: "深圳"},{value: 2, name: "上海"},{value: 3, name: "广州"}],
- });
- });
- if (module.indexOf('xmSelect') === -1) module.push('xmSelect');
- allJS += ' // 下拉多选\n' +
- ' layui.xmSelect.render({\n' +
- ' el: "#' + key + '",\n' +
- ' name: "' + key + '",\n' +
- ' data: [{value: 1, name: "深圳"},{value: 2, name: "上海"},{value: 3, name: "广州"}],\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'tree':
- html = tree(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['xmSelect'], function() {
- layui.xmSelect.render({
- el: "#" + key,
- name: key,
- tree: {show: true},
- data: [{value: 1, name: "广东省", children:[{value: 2, name: "深圳"},{value: 3, name: "广州"}]},{value: 4, name: "福建省", children:[{value: 5, name: "厦门"},{value: 6, name: "福州"}]}],
- });
- });
- if (module.indexOf('xmSelect') === -1) module.push('xmSelect');
- allJS += ' // 树多选\n' +
- ' layui.xmSelect.render({\n' +
- ' el: "#' + key + '",\n' +
- ' name: "' + key + '",\n' +
- ' tree: {show: true},\n' +
- ' data: [{value: 1, name: "广东省", children:[{value: 2, name: "深圳"},{value: 3, name: "广州"}]},{value: 4, name: "福建省", children:[{value: 5, name: "厦门"},{value: 6, name: "福州"}]}],\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'treeSelectOne':
- html = treeSelectOne(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['xmSelect'], function() {
- layui.xmSelect.render({
- el: "#" + key,
- name: key,
- model: {"icon":"hidden","label":{"type":"text"}},
- clickClose: true,
- radio: true,
- tree: {show: true, strict: false, clickCheck: true, clickExpand: false},
- data: [{value: 1, name: "广东省", children:[{value: 2, name: "深圳"},{value: 3, name: "广州"}]},{value: 4, name: "福建省", children:[{value: 5, name: "厦门"},{value: 6, name: "福州"}]}],
- });
- });
- if (module.indexOf('xmSelect') === -1) module.push('xmSelect');
- allJS += ' // 树多选\n' +
- ' layui.xmSelect.render({\n' +
- ' el: "#' + key + '",\n' +
- ' name: "' + key + '",\n' +
- ' model: {"icon":"hidden","label":{"type":"text"}},\n' +
- ' clickClose: true,\n' +
- ' radio: true,\n' +
- ' tree: {show: true, strict: false, clickCheck: true, clickExpand: false},\n' +
- ' data: [{value: 1, name: "广东省", children:[{value: 2, name: "深圳"},{value: 3, name: "广州"}]},{value: 4, name: "福建省", children:[{value: 5, name: "厦门"},{value: 6, name: "福州"}]}],\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'upload':
- html = upload(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['upload'], function() {
- let input = layui.$('#' + key).prev();
- input.prev().html(layui.util.escape(input.val()));
- layui.$("#attachment-choose-" + key).on('click', function() {
- parent.layer.open({
- type: 2,
- title: "选择附件",
- content: "/app/admin/upload/attachment",
- area: ["95%", "90%"],
- success: function (layero, index) {
- parent.layui.$("#layui-layer" + index).data("callback", function (data) {
- input.val(data.url).prev().html(layui.util.escape(data.url));
- });
- }
- });
- });
- layui.upload.render({
- elem: "#" + key,
- url: "/app/admin/upload/file",
- accept: "file",
- field: "__file__",
- done: function (res) {
- this.item.prev().val(res.data.url).prev().html(layui.util.escape(res.data.url));
- }
- });
- });
- if (module.indexOf('upload') === -1) module.push('upload');
- if (module.indexOf('util') === -1) module.push('util');
- allJS += ' // 上传文件\n' +
- ' layui.use([\'upload\'], function() {\n' +
- ' let input = layui.$("#'+key+'").prev();\n' +
- ' input.prev().html(layui.util.escape(input.val()));\n' +
- ' layui.$("#attachment-choose-'+key+'").on("click", function() {\n' +
- ' parent.layer.open({\n' +
- ' type: 2,\n' +
- ' title: "选择附件",\n' +
- ' content: "/app/admin/upload/attachment",\n' +
- ' area: ["95%", "90%"],\n' +
- ' success: function (layero, index) {\n' +
- ' parent.layui.$("#layui-layer" + index).data("callback", function (data) {\n' +
- ' input.val(data.url).prev().html(layui.util.escape(data.url));\n' +
- ' });\n' +
- ' }\n' +
- ' });\n' +
- ' });\n' +
- ' });\n' +
- ' layui.upload.render({\n' +
- ' elem: "#' + key + '",\n' +
- ' url: "/app/admin/upload/file",\n' +
- ' accept: "file",\n' +
- ' field: "__file__",\n' +
- ' done: function (res) {\n' +
- ' this.item.prev().val(res.data.url).prev().html(layui.util.escape(res.data.url));\n' +
- ' }\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'uploadImg':
- html = uploadImg(size)
- $('form').append(html);
- form.render();
- setHtml(html);
- layui.use(['upload'], function() {
- let input = layui.$('#' + key).prev();
- input.prev().attr('src', input.val());
- layui.$('#attachment-choose-' + key).on('click', function() {
- parent.layer.open({
- type: 2,
- title: '选择附件',
- content: '/app/admin/upload/attachment?ext=jpg,jpeg,png,gif,bmp',
- area: ["95%", "90%"],
- success: function (layero, index) {
- parent.layui.$("#layui-layer" + index).data("callback", function (data) {
- input.val(data.url).prev().attr("src", data.url);
- });
- }
- });
- });
- layui.upload.render({
- elem: "#" + key,
- url: "/app/admin/upload/image",
- acceptMime: "image/gif,image/jpeg,image/jpg,image/png",
- field: "__file__",
- done: function (res) {
- this.item.prev().val(res.data.url).prev().attr('src', res.data.url);
- }
- });
- });
- if (module.indexOf('upload') === -1) module.push('upload');
- allJS += ' // 上传图片\n' +
- ' layui.use([\'upload\'], function() {\n' +
- ' let input = layui.$("#'+key+'").prev();\n' +
- ' input.prev().attr(\'src\', input.val());\n' +
- ' layui.$("#attachment-choose-'+key+'").on("click", function() {\n' +
- ' parent.layer.open({\n' +
- ' type: 2,\n' +
- ' title: "选择附件",\n' +
- ' content: "/app/admin/upload/attachment?ext=jpg,jpeg,png,gif,bmp",\n' +
- ' area: ["95%", "90%"],\n' +
- ' success: function (layero, index) {\n' +
- ' parent.layui.$("#layui-layer" + index).data("callback", function (data) {\n' +
- ' input.val(data.url).prev().attr("src", data.url);\n' +
- ' });\n' +
- ' }\n' +
- ' });\n' +
- ' });\n' +
- ' layui.upload.render({\n' +
- ' elem: "#' + key + '",\n' +
- ' url: "/app/admin/upload/image",\n' +
- ' acceptMime: "image/gif,image/jpeg,image/jpg,image/png",\n' +
- ' field: "__file__",\n' +
- ' done: function (res) {\n' +
- ' this.item.prev().val(res.data.url).prev().attr(\'src\', res.data.url);\n' +
- ' }\n' +
- ' });\n' +
- ' });\n';
- $('.js-show').text(jscode())
- return;
- case 'submit':
- html = submits(size)
- break;
- case 'del':
- $('form').html("\n")
- delHtml()
- return false;
- default:
- layer.msg('类型错误', {
- icon: 2
- })
- }
- $('form').append(html);
- form.render();
- setHtml(html);
- $('.js-show').text(jscode())
- })
- function delHtml() {
- allHtml = '';
- allJS = '';
- $('.code-show').text('');
- $('.js-show').text(jscode());
- }
- function setHtml(html) {
- allHtml += html;
- $('.code-show').text('<form class="layui-form" action="" onsubmit="return false">\n' + allHtml + '</form>')
- }
- function icon(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">图标选择</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <input name="'+key+'" id="'+key+'" />\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function multiSelect(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">下拉多选</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <div name="'+key+'" id="'+key+'" ></div>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function tree(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">树多选</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <div name="'+key+'" id="'+key+'" ></div>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function treeSelectOne(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">树单选</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <div name="'+key+'" id="'+key+'" ></div>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function upload(size) {
- let uploadWords = size === "block" ? "上传文件" : "上传";
- let selectWords = size === "block" ? "选择文件" : "选择";
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">上传文件</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <span></span>\n' +
- ' <input type="text" style="display:none" name="'+key+'" value="" />\n' +
- ' <button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="'+key+'" permission="app.admin.upload.file">\n' +
- ' <i class="layui-icon layui-icon-upload"></i>'+uploadWords+'\n' +
- ' </button>\n' +
- ' <button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="attachment-choose-'+key+'" permission="app.admin.upload.attachment">\n' +
- ' <i class="layui-icon layui-icon-align-left"></i>'+selectWords+'\n' +
- ' </button>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function uploadImg(size) {
- let uploadWords = size === "block" ? "上传文件" : "上传";
- let selectWords = size === "block" ? "选择图片" : "选择";
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">上传图片</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <img class="img-3" src=""/>\n' +
- ' <input type="text" style="display:none" name="'+key+'" value="" />\n' +
- ' <button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="'+key+'" permission="app.admin.upload.image">\n' +
- ' <i class="layui-icon layui-icon-upload"></i>'+uploadWords+'\n' +
- ' </button>\n' +
- ' <button type="button" class="pear-btn pear-btn-primary pear-btn-sm" id="attachment-choose-'+key+'" permission="app.admin.upload.attachment">\n' +
- ' <i class="layui-icon layui-icon-align-left"></i>'+selectWords+'\n' +
- ' </button>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function input(type, size) {
- var name = type === 'text' ? '输入框' : (type === 'password' ? '密码框' : '');
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">' + name + '</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <input type="' + type + '" name="' + key + '" required lay-verify="required" placeholder="请输入' + name +
- '内容" autocomplete="off" class="layui-input">\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function select(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">选择框</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <select name="' + key + '" lay-verify="required" lay-search>\n' +
- ' <option value=""></option>\n' +
- ' <option value="0">北京</option>\n' +
- ' <option value="1">上海</option>\n' +
- ' <option value="2">广州</option>\n' +
- ' <option value="3">深圳</option>\n' +
- ' <option value="4">杭州</option>\n' +
- ' </select>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function checkbox_a(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">复选框</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <input type="checkbox" name="' + key + '[]" title="写作">\n' +
- ' <input type="checkbox" name="' + key + '[]" title="阅读" checked>\n' +
- ' <input type="checkbox" name="' + key + '[]" title="发呆">\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function checkbox_b(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">开关</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <input type="checkbox" name="' + key + '" lay-skin="switch">\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function radio(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <label class="layui-form-label">单选框</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <input type="radio" name="' + key + '" value="男" title="男">\n' +
- ' <input type="radio" name="' + key + '" value="女" title="女" checked>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function textarea(size) {
- var html = ' <div class="layui-form-item layui-form-text">\n' +
- ' <label class="layui-form-label">文本域</label>\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <textarea name="' + key + '" placeholder="请输入内容" class="layui-textarea"></textarea>\n' +
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function submits(size) {
- var html = ' <div class="layui-form-item">\n' +
- ' <div class="layui-input-' + size + '">\n' +
- ' <button class="pear-btn pear-btn-primary" lay-submit="" lay-filter="formDemo">立即提交</button>\n' + //变更
- ' <button type="reset" class="pear-btn">重置</button>\n' + //变更
- ' </div>\n' +
- ' </div>\n';
- return html;
- }
- function jscode() {
- var html = '<script>\n' +
- ' layui.use('+JSON.stringify(module)+', function(){\n' +
- ' var form = layui.form;\n' +
- ''+ allJS +
- ' // 提交表单\n' +
- ' form.on(\'submit(formDemo)\', function(data){\n' +
- ' layer.msg(JSON.stringify(data.field));\n' +
- ' return false;\n' +
- ' });\n' +
- ' });\n' +
- '</script>';
- return html;
- }
- function randStrName() {
- return 'a' + Math.random().toString(36).substr(9);
- }
- form.on('submit(formDemo)', function(data) {
- layer.msg(JSON.stringify(data.field));
- return false;
- });
- exports('design', {});
- });
|