form_test.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <div class="think-box-shadow">
  2. <form class="layui-form layui-card" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
  3. <div class="layui-card-body">
  4. <div class="layui-form-item">
  5. <label class="layui-form-label label-required">标题</label>
  6. <div class="layui-input-block">
  7. <input name="title" maxlength="20" value='{$vo.title|default=""}' placeholder="请输入标题" class="layui-input">
  8. </div>
  9. </div>
  10. <div class="layui-form-item">
  11. <label class="layui-form-label label-required">目录</label>
  12. <div class="layui-input-inline">
  13. <select name="is_top" lay-filter ="is_top">
  14. {foreach $datum_cate as $ck=>$cv}
  15. {if !empty($vo.datum_cate) && $vo.datum_cate == $ck}
  16. <option selected value="{$ck}">{$cv.title}</option>
  17. {else}
  18. <option value="{$ck}">{$cv.title}</option>
  19. {/if}
  20. {/foreach}
  21. </select>
  22. </div>
  23. </div>
  24. <input type="hidden" name="type" value="{$type}">
  25. <div class="layui-form-item">
  26. <label class="layui-form-label">资料</label>
  27. <div class="layui-input-block">
  28. <table class="layui-table param">
  29. <thead>
  30. <tr>
  31. <th class="text-left" width="10%">标题</th>
  32. <th class="text-left" width="50%">文件</th>
  33. <th class="text-center" width="10%">是否VIP</th>
  34. <th class="text-center" width="10%">排序</th>
  35. <th class="text-center"><a class="layui-btn layui-btn-sm layui-btn-normal" onclick="add_param()">添 加</a></th>
  36. </tr>
  37. </thead>
  38. <tbody class="no_html">
  39. <!--{foreach $datum_url as $pk=>$param}-->
  40. <tr class="param_index">
  41. <td class="padding-0" >
  42. <input class="layui-input border-0" name="item_title[]" value="{$param.title|default=''}">
  43. <input type="hidden" name="item_id[]" value="{$param.id|default=''}">
  44. </td>
  45. <td class="padding-0">
  46. <input class ='up_{$pk} item_url' name='item_url[]' type='hidden' value="{$param.url|default=''}">
  47. </td>
  48. <td class="padding-0">
  49. <select class="layui-select " name="item_is_vip[]">
  50. <option {if $param.is_vip == 0}selected{/if} value="0">否</option>
  51. <option {if $param.is_vip == 1}selected{/if} value="1">是</option>
  52. </select>
  53. </td>
  54. <td class="padding-0" >
  55. <input class="layui-input border-0" name="item_sort[]" value="{$param.sort|default=''}">
  56. </td>
  57. <td class="padding-0 text-center">
  58. <a class="layui-btn layui-btn-sm layui-btn-danger del">删 除</a>
  59. </td>
  60. </tr>
  61. <!--{/foreach}-->
  62. </tbody>
  63. </table>
  64. </div>
  65. </div>
  66. <div class="layui-upload">
  67. <button type="button" class="layui-btn layui-btn-normal" id="testList">选择多文件</button>
  68. <div class="layui-upload-list" style="max-width: 1000px;">
  69. <table class="layui-table">
  70. <colgroup>
  71. <col>
  72. <col width="150">
  73. <col width="260">
  74. <col width="150">
  75. </colgroup>
  76. <thead>
  77. <tr>
  78. <th>文件名</th>
  79. <th>大小</th>
  80. <th>上传进度</th>
  81. <th>操作</th>
  82. </tr>
  83. </thead>
  84. <tbody id="demoList"></tbody>
  85. </table>
  86. </div>
  87. <button type="button" class="layui-btn" id="testListAction">开始上传</button>
  88. </div>
  89. {notempty name='vo.id'}<input type='hidden' value='{$vo.id}' name='id'>{/notempty}
  90. <div class="layui-form-item text-center">
  91. <button class="layui-btn" type='submit'>保 存</button>
  92. <button class="layui-btn layui-btn-danger" type='button' data-confirm="确定取消编辑吗?" data-close>取消编辑</button>
  93. </div>
  94. </div>
  95. </form>
  96. <script src="/static/plugs/layui/layui.all.js" charset="utf-8"></script>
  97. <script>
  98. window.form.render();
  99. layui.use(['upload', 'element', 'layer'], function(){
  100. var $ = layui.jquery
  101. ,upload = layui.upload
  102. ,element = layui.element
  103. ,layer = layui.layer;
  104. upload.render({
  105. elem: '#test3',
  106. url: '/api/upload/upload', //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。,accept: 'file', //普通文件,
  107. accept: 'file', //普通文件,
  108. done: function(res){
  109. console.log(res)
  110. $("input[name='datum_url']").val(res.data);
  111. layer.msg(re.msg);
  112. }
  113. });
  114. //演示多文件列表
  115. var uploadListIns = upload.render({
  116. elem: '#testList'
  117. ,elemList: $('#demoList') //列表元素对象
  118. ,url: '/api/upload/upload' //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
  119. ,accept: 'file'
  120. ,multiple: true
  121. ,number: 3
  122. ,auto: false
  123. ,bindAction: '#testListAction'
  124. ,choose: function(obj){
  125. var that = this;
  126. var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
  127. //读取本地文件
  128. obj.preview(function(index, file, result){
  129. var tr = $(['<tr id="upload-'+ index +'">'
  130. ,'<td>'+ file.name +'</td>'
  131. ,'<td>'+ (file.size/1014).toFixed(1) +'kb</td>'
  132. ,'<td><div class="layui-progress" lay-filter="progress-demo-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>'
  133. ,'<td>'
  134. ,'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>'
  135. ,'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>'
  136. ,'</td>'
  137. ,'</tr>'].join(''));
  138. //单个重传
  139. tr.find('.demo-reload').on('click', function(){
  140. obj.upload(index, file);
  141. });
  142. //删除
  143. tr.find('.demo-delete').on('click', function(){
  144. delete files[index]; //删除对应的文件
  145. tr.remove();
  146. uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
  147. });
  148. that.elemList.append(tr);
  149. element.render('progress'); //渲染新加的进度条组件
  150. });
  151. }
  152. ,done: function(res, index, upload){ //成功的回调
  153. var that = this;
  154. //if(res.code == 0){ //上传成功
  155. var tr = that.elemList.find('tr#upload-'+ index)
  156. ,tds = tr.children();
  157. tds.eq(3).html(''); //清空操作
  158. delete this.files[index]; //删除文件队列已经上传成功的文件
  159. return;
  160. //}
  161. this.error(index, upload);
  162. }
  163. ,allDone: function(obj){ //多文件上传完毕后的状态回调
  164. console.log(obj)
  165. }
  166. ,error: function(index, upload){ //错误回调
  167. var that = this;
  168. var tr = that.elemList.find('tr#upload-'+ index)
  169. ,tds = tr.children();
  170. tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
  171. }
  172. ,progress: function(n, elem, e, index){ //注意:index 参数为 layui 2.6.6 新增
  173. element.progress('progress-demo-'+ index, n + '%'); //执行进度条。n 即为返回的进度百分比
  174. }
  175. });
  176. });
  177. function get_ht(k) {
  178. var html = '<tr class="param_index">\n' +
  179. ' <td class="padding-0" >\n' +
  180. ' <input class="layui-input border-0" name="item_title[]" value="">\n' +
  181. ' <input type="hidden" class="layui-input border-0" name="item_id[]" value="">\n' +
  182. ' </td>\n' +
  183. ' <td class="padding-0">\n' +
  184. "<input class ='item_url up_"+k+"' name='item_url[]' type='hidden' value=''>"+
  185. ' </td>\n' +
  186. ' <td class="padding-0">\n' +
  187. '<select style="border: 0px" class="layui-select border-0" name="item_is_vip[]">' +
  188. '<option value="0">否</option>'+
  189. '<option value="1">是</option>'+
  190. '</select>'+
  191. ' </td>\n' +
  192. ' <td class="padding-0" >\n' +
  193. ' <input class="layui-input border-0" name="item_sort[]" value="">\n' +
  194. ' </td>\n' +
  195. ' <td class="padding-0 text-center">\n' +
  196. ' <a class="layui-btn layui-btn-sm layui-btn-danger del" >删 除</a>\n' +
  197. ' </td>\n' +
  198. ' </tr>';
  199. return html;
  200. }
  201. function add_param() {
  202. var knum = $('.no_html tr').length;
  203. var no_html = get_ht(knum);
  204. $(".no_html").append(no_html);
  205. window.form.render();
  206. }
  207. // 删除设置
  208. $(document).on('click',".del",function (){
  209. var index= $(".del").index(this);
  210. $(".param_index").eq(index).remove();
  211. window.form.render();
  212. })
  213. </script>
  214. </div>