add.html 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. <link rel="stylesheet" href="/static/plugs/layui/css/layui.css" media="all">
  2. <style>
  3. .layui-form-item {
  4. width: 80%;
  5. height: 90%;
  6. }
  7. </style>
  8. <div class="think-box-shadow" style="height: 100%">
  9. <form class="layui-form layui-card" id="subForm" action="{:request()->url()}" data-auto="true" method="post" autocomplete="off">
  10. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
  11. <legend>添加直播</legend>
  12. </fieldset>
  13. <div class="layui-tab">
  14. <ul class="layui-tab-title">
  15. <li class="layui-this">基础设置</li>
  16. </ul>
  17. <div class="layui-tab-content">
  18. <!-- 基础设置-->
  19. <div class="layui-tab-item layui-show">
  20. <div class="layui-form-item">
  21. <label class="layui-form-label label-required">直播标题</label>
  22. <div class="layui-input-block">
  23. <input name="name" lay-verify="required" maxlength="50" value='{$vo.name|default=""}' placeholder="请输入商品名称" class="layui-input">
  24. </div>
  25. </div>
  26. <div class="layui-form-item">
  27. <label class="layui-form-label label-required">直播简介</label>
  28. <div class="layui-input-block">
  29. <input name="desc" maxlength="50" value='{$vo.desc|default=""}' placeholder="请输入商品简介" class="layui-input">
  30. </div>
  31. </div>
  32. <div class="layui-form-item">
  33. <label class="layui-form-label label-required">直播封面</label>
  34. <div class="layui-input-block">
  35. <input name="cover" type="hidden" value="{$vo.cover|default=''}">
  36. </div>
  37. </div>
  38. <div class="layui-form-item">
  39. <label class="layui-form-label label-required">开始时间</label>
  40. <div class="layui-input-block">
  41. <input name="start_at" type="text" class="layui-input" id="start_at" value="{$vo.start_at|default=''}">
  42. </div>
  43. </div>
  44. <div class="layui-form-item">
  45. <label class="layui-form-label label-required">结束时间</label>
  46. <div class="layui-input-block">
  47. <input name="end_at" type="text" class="layui-input" id="end_at" value="{$vo.end_at|default=''}">
  48. </div>
  49. </div>
  50. <div class="layui-form-item">
  51. <label class="layui-form-label label-required">直播详情</label>
  52. <div class="layui-input-block">
  53. <table class="layui-table margin-top-10" lay-skin="line">
  54. <thead>
  55. <tr>
  56. <th class='text-left nowrap'>开始时间</th>
  57. <th class='text-left nowrap'>结束时间</th>
  58. <th class='text-left nowrap'>商品</th>
  59. <th class='text-left nowrap'>操作</th>
  60. </tr>
  61. </thead>
  62. <tbody class="no_html">
  63. </tbody>
  64. </table>
  65. </div>
  66. </div>
  67. <div class="layui-form-item text-center">
  68. <span class="layui-btn" type='submit' id ="submit">保 存</span>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. </form>
  74. </div>
  75. <script src="/static/plugs/layui/layui.all.js" charset="utf-8"></script>
  76. <script>
  77. window.form.render();
  78. $('[name="cover"]').uploadOneImage();
  79. // 时间
  80. layui.use('laydate', function(){
  81. var laydate = layui.laydate;
  82. laydate.render({
  83. elem: '#start_at'
  84. ,type: 'datetime'
  85. });
  86. laydate.render({
  87. elem: '#end_at'
  88. ,type: 'datetime'
  89. });
  90. })
  91. layui.use('element', function(){
  92. var $ = layui.jquery
  93. ,element = layui.element;
  94. var active = {
  95. tabAdd: function(){
  96. element.tabAdd('demo', {
  97. title: '新选项'+ (Math.random()*1000|0)
  98. ,content: '内容'+ (Math.random()*1000|0)
  99. ,id: new Date().getTime()
  100. })
  101. }
  102. ,tabDelete: function(othis){
  103. element.tabDelete('demo', '44');
  104. othis.addClass('layui-btn-disabled');
  105. }
  106. ,tabChange: function(){
  107. element.tabChange('demo', '22');
  108. }
  109. };
  110. $('.site-demo-active').on('click', function(){
  111. var othis = $(this), type = othis.data('type');
  112. active[type] ? active[type].call(this, othis) : '';
  113. });
  114. //Hash地址的定位
  115. var layid = location.hash.replace(/^#test=/, '');
  116. element.tabChange('test', layid);
  117. element.on('tab(test)', function(elem){
  118. location.hash = 'test='+ $(this).attr('lay-id');
  119. });
  120. });
  121. // 添加详情
  122. $(document).on('click',".add_goods_no",function () {
  123. add_detail();
  124. })
  125. // 删除详情
  126. $(document).on('click',".del_no",function (){
  127. var index= $(".del_no").index(this);
  128. console.log(index);
  129. $(".no_detail").eq(index).remove();
  130. })
  131. // 商品选择
  132. var goods_json = {:json_encode($all_goods)};
  133. add_detail();
  134. function add_detail() {
  135. var no_html= get_ht();
  136. $(".no_html").append(no_html);
  137. $.each($(".no_html .gl_st"),function (k,v) {
  138. var id = $(".no_html .gl_st").eq(k).attr('id');
  139. laydate.render({
  140. elem: '#'+id
  141. ,type: 'datetime'
  142. });
  143. })
  144. $.each($(".no_html .gl_end"),function (k,v) {
  145. var id = $(".no_html .gl_end").eq(k).attr('id');
  146. laydate.render({
  147. elem: '#'+id
  148. ,type: 'datetime'
  149. });
  150. })
  151. window.form.render();
  152. }
  153. function get_ht() {
  154. var sel = '<select name=goods_id[]>'
  155. $.each(goods_json,function (gk,gv) {
  156. sel += '<option value="'+gv.id+'">'+gv.name+'</option>'
  157. })
  158. sel += '</select>'
  159. var st = $(".change_del").length;
  160. var no_html = '';
  161. no_html += ' <tr class="no_detail change_del" data-dh ="">';
  162. no_html += "<td class='text-left nowrap'> " +
  163. "<input class='layui-input gl_st st_at"+st+"' id='st_at"+st+"' name='gl_st[]' value=''/>" +
  164. "</td>";
  165. no_html += "<td class='text-left nowrap'> " +
  166. "<input class='layui-input gl_end en_at"+st+"' id='en_at"+st+"' name='gl_end[]' value=''/>" +
  167. "</td>";
  168. no_html += "<td class='text-left nowrap'> " +sel+ "</td>";
  169. no_html += "<td class='text-left nowrap'>" +
  170. "<a class=\"layui-btn layui-btn-sm layui-btn-danger del_no\">删 除</a>" +
  171. "<a class=\"layui-btn layui-btn-sm layui-btn-sm add_goods_no\">添 加</a>"+
  172. "</td>"
  173. no_html += "</tr>";
  174. return no_html;
  175. }
  176. /**
  177. * 表单验证
  178. */
  179. var is_click = 0;
  180. $(document).on('click','#submit',function () {
  181. if(is_click == 1) return;
  182. is_click = 1;
  183. $("#subForm").submit();
  184. })
  185. // 图片上传
  186. $(document).on("click",'.up_img',function () {
  187. $(this).siblings('[name="file"]').click();
  188. })
  189. function upload_img(e,k) {
  190. var file = e.files[0]; //获取图片资源
  191. var fileTypes = ["bmp", "jpg", "png", "jpeg"];
  192. var bTypeMatch = false
  193. for (var i = 0; i < fileTypes.length; i++) {
  194. var start = file.name.lastIndexOf(".");
  195. var fileType = file.name.substring(start + 1);
  196. if (fileType.toLowerCase() == fileTypes[i]) {
  197. bTypeMatch = true;
  198. break;
  199. }
  200. }
  201. if (bTypeMatch) {
  202. if (file.size <= 1024 * 1024 * 50) {
  203. var farmData = new FormData();
  204. farmData.append("file", file)
  205. $.ajax("/api/Upload/upload", {
  206. data: farmData,
  207. processData: false,
  208. contentType: false,
  209. dataType: 'json',
  210. type: 'post', //HTTP请求类型
  211. headers: {
  212. 'zbtoken': localStorage.getItem("token"),
  213. 'enctype': 'multipart/form-data',
  214. },
  215. success: function (data) {
  216. if(data.code == 1) {
  217. $(".si_"+k).attr('src',data.data);
  218. $(".up_"+k).val(data.data);
  219. window.form.render();
  220. }else{
  221. layer.msg(data.msg);
  222. }
  223. console.log(data)
  224. },
  225. error: function (xhr, type, errorThrown) {
  226. console.log(type);
  227. }
  228. });
  229. } else {
  230. alert('仅支持不超过50M的图片');
  231. return false;
  232. }
  233. } else {
  234. alert('仅限bmp,jpg,png,jpeg图片格式');
  235. return false;
  236. }
  237. }
  238. </script>