add.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. {/block}
  4. {block name="main"}
  5. <div class="layui-form form-wrap">
  6. <div class="layui-card card-common card-brief">
  7. <div class="layui-card-header">
  8. <span class="card-title">基础设置</span>
  9. </div>
  10. <div class="layui-card-body">
  11. <div class="layui-form-item">
  12. <label class="layui-form-label"><span class="required">*</span>直播类型:</label>
  13. <div class="layui-input-block">
  14. <input type="radio" name="type" value="0" title="手机直播" checked>
  15. </div>
  16. <div class="word-aux">
  17. <p>通过“小程序直播主播端小程序”发起直播</p>
  18. </div>
  19. </div>
  20. <div class="layui-form-item">
  21. <label class="layui-form-label"><span class="required">*</span>直播标题:</label>
  22. <div class="layui-input-block">
  23. <input type="text" name="name" lay-verify="required|name" class="layui-input len-mid" autocomplete="off">
  24. </div>
  25. <div class="word-aux">
  26. <p>直播标题必须为3-17个字符</p>
  27. </div>
  28. </div>
  29. <div class="layui-form-item">
  30. <label class="layui-form-label"><span class="required">*</span>开播时间:</label>
  31. <div class="layui-input-block len-mid">
  32. <input type="text" class="layui-input" name="startTime" lay-verify="required" id="startTime" autocomplete="off" readonly>
  33. <i class=" iconrili iconfont calendar"></i>
  34. </div>
  35. </div>
  36. <div class="layui-form-item">
  37. <label class="layui-form-label"><span class="required">*</span>结束时间:</label>
  38. <div class="layui-input-block len-mid end_time">
  39. <input type="text" class="layui-input" name="endTime" lay-verify="required|time" id="endTime" autocomplete="off" readonly>
  40. <i class=" iconrili iconfont calendar"></i>
  41. </div>
  42. <div class="word-aux">
  43. <p>开播时间至少需在10分钟后</p>
  44. <p>开播时间段仅供参考,不是实际直播间可以开播的时间。</p>
  45. <p>直播间在开始时间前也可以开播,并且到结束时间后不会强制结束。</p>
  46. <p>若到结束时间仍未开播,则直播间无法再开播。</p>
  47. </div>
  48. </div>
  49. <div class="layui-form-item">
  50. <label class="layui-form-label"><span class="required">*</span>主播昵称:</label>
  51. <div class="layui-input-block len-mid">
  52. <input type="text" class="layui-input" name="anchorName" lay-verify="required|anchorName" autocomplete="off">
  53. </div>
  54. <div class="word-aux">
  55. <p>主播昵称必须为2-15个字符</p>
  56. </div>
  57. </div>
  58. <div class="layui-form-item">
  59. <label class="layui-form-label"><span class="required">*</span>主播微信账号:</label>
  60. <div class="layui-input-block len-mid">
  61. <input type="text" class="layui-input" name="anchorWechat" lay-verify="required" autocomplete="off">
  62. </div>
  63. <div class="word-aux">
  64. <p>每个直播间需要绑定一个用作核实主播身份</p>
  65. <p>主播微信号,需通过实名认证</p>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <div class="layui-card card-common card-brief">
  71. <div class="layui-card-header">
  72. <span class="card-title">分享卡片样式配置</span>
  73. </div>
  74. <div class="layui-card-body">
  75. <div class="layui-form-item">
  76. <label class="layui-form-label"><span class="required">*</span>分享卡片封面:</label>
  77. <div class="layui-input-block">
  78. <div class="upload-img-block">
  79. <div class="upload-img-box">
  80. <div class="upload-default" id="shareImgUpload">
  81. <div class="upload">
  82. <i class="iconfont iconshangchuan"></i>
  83. <p>点击上传</p>
  84. </div>
  85. </div>
  86. <div class="operation">
  87. <div>
  88. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  89. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  90. </div>
  91. <div class="replace_img js-replace">点击替换</div>
  92. </div>
  93. <input type="hidden" name="shareImg" value="" lay-verify="shareImg"/>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="word-aux">
  98. <p>观众在微信对话框内分享的直播间将以分享卡片的形式呈现。建议尺寸:800像素 * 640像素,图片大小不得超过1M。</p>
  99. </div>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="layui-card card-common card-brief">
  104. <div class="layui-card-header">
  105. <span class="card-title">直播间样式配置</span>
  106. </div>
  107. <div class="layui-card-body">
  108. <div class="layui-form-item">
  109. <label class="layui-form-label"><span class="required">*</span>直播间背景墙:</label>
  110. <div class="layui-input-block">
  111. <div class="upload-img-block">
  112. <div class="upload-img-box">
  113. <div class="upload-default" id="coverImgUpload">
  114. <div class="upload">
  115. <i class="iconfont iconshangchuan"></i>
  116. <p>点击上传</p>
  117. </div>
  118. </div>
  119. <div class="operation">
  120. <div>
  121. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  122. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  123. </div>
  124. <div class="replace_img js-replace">点击替换</div>
  125. </div>
  126. <input type="hidden" name="coverImg" value="" lay-verify="coverImg"/>
  127. </div>
  128. </div>
  129. </div>
  130. <div class="word-aux">
  131. <p>直播间背景墙是每个直播间的默认背景。建议尺寸:1080像素 * 1920像素,图片大小不得超过2M。</p>
  132. </div>
  133. </div>
  134. <div class="layui-form-item">
  135. <label class="layui-form-label"><span class="required">*</span>购物直播频道封面:</label>
  136. <div class="layui-input-block">
  137. <div class="upload-img-block">
  138. <div class="upload-img-box">
  139. <div class="upload-default" id="feedsImgUpload">
  140. <div class="upload">
  141. <i class="iconfont iconshangchuan"></i>
  142. <p>点击上传</p>
  143. </div>
  144. </div>
  145. <div class="operation">
  146. <div>
  147. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  148. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  149. </div>
  150. <div class="replace_img js-replace">点击替换</div>
  151. </div>
  152. <input type="hidden" name="feedsImg" value="" lay-verify="feedsImg"/>
  153. </div>
  154. </div>
  155. </div>
  156. <div class="word-aux">
  157. <p>购物直播频道封面图。建议尺寸:建议像素800*800,大小不超过100KB。</p>
  158. </div>
  159. </div>
  160. <div class="layui-form-item">
  161. <label class="layui-form-label">直播间功能:</label>
  162. <div class="layui-input-block">
  163. <input type="checkbox" name="closeLike" value="0" title="开启点赞" lay-skin="primary" checked><br>
  164. <input type="checkbox" name="closeGoods" value="0" title="开启货架" lay-skin="primary" checked><br>
  165. <input type="checkbox" name="closeComment" value="0" title="开启评论" lay-skin="primary" checked><br>
  166. <input type="checkbox" name="closeReplay" value="0" title="开启回放" lay-skin="primary" checked><br>
  167. <input type="checkbox" name="closeKf" value="0" title="开启客服" lay-skin="primary" checked>
  168. </div>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="form-row">
  173. <button class="layui-btn" lay-submit lay-filter="save">添加</button>
  174. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  175. </div>
  176. </div>
  177. {/block}
  178. {block name="script"}
  179. <script type="text/javascript">
  180. var form, laydate, repeat_flag = false, //防重复标识
  181. minDate = "";
  182. layui.use(['form', 'laydate'], function() {
  183. form = layui.form,
  184. laydate = layui.laydate;
  185. form.render();
  186. // 开始时间
  187. laydate.render({
  188. elem: '#startTime' ,//指定元素
  189. type: 'datetime',
  190. value: new Date(Date.parse(new Date()) + 3600000),
  191. done: function(value){
  192. minDate = value;
  193. reRender();
  194. }
  195. });
  196. //结束时间
  197. laydate.render({
  198. elem: '#endTime' ,//指定元素
  199. type: 'datetime',
  200. value: ''
  201. });
  202. /**
  203. * 重新渲染结束时间
  204. * */
  205. function reRender(){
  206. $("#endTime").remove();
  207. $(".end_time").html('<input type="text" id="endTime" name="endTime" placeholder="请输入结束时间" lay-verify="required|time" class="layui-input len-mid" autocomplete="off">');
  208. laydate.render({
  209. elem: '#endTime',
  210. type: 'datetime',
  211. min: minDate
  212. });
  213. }
  214. /**
  215. * 表单验证
  216. */
  217. form.verify({
  218. name: function(value){
  219. if (value.length < 3 || value.length > 17) {
  220. return '直播标题必须为3-17个字符';
  221. }
  222. },
  223. anchorName: function(value){
  224. if (value.length < 2 || value.length > 15) {
  225. return '主播昵称必须为2-15个字符';
  226. }
  227. },
  228. time: function(value) {
  229. var now_time = (new Date()).getTime();
  230. var start_time = (new Date($("#start_time").val())).getTime();
  231. var end_time = (new Date(value)).getTime();
  232. if (now_time > end_time) {
  233. return '结束时间不能小于当前时间!'
  234. }
  235. if (start_time > end_time) {
  236. return '结束时间不能小于开始时间!';
  237. }
  238. },
  239. shareImg: function(value){
  240. var patt = /[\S]+/;
  241. if (!patt.test(value)) {
  242. return '请上传分享卡片封面!';
  243. }
  244. },
  245. coverImg: function(value){
  246. var patt = /[\S]+/;
  247. if (!patt.test(value)) {
  248. return '请上传直播间背景墙!';
  249. }
  250. },
  251. feedsImg: function(value){
  252. var patt = /[\S]+/;
  253. if (!patt.test(value)) {
  254. return '请上传直播间购物直播频道封面!';
  255. }
  256. }
  257. });
  258. // 添加
  259. form.on('submit(save)', function(data){
  260. if (repeat_flag) return;
  261. repeat_flag = true;
  262. $.ajax({
  263. type: 'POST',
  264. url: ns.url("live://shop/room/add"),
  265. data: data.field,
  266. dataType: 'JSON',
  267. success: function(res) {
  268. layer.msg(res.message);
  269. repeat_flag = false;
  270. if (res.code == 0) {
  271. location.href = ns.url("live://shop/room/index");
  272. }
  273. }
  274. });
  275. });
  276. var share_upload = new Upload({
  277. elem: '#shareImgUpload',
  278. url: ns.url("live://shop/room/addimagemedia"),
  279. callback: function(res) {
  280. if (res.code >= 0) {
  281. $("input[name='shareImg']").val(res.data.media_info.media_id);
  282. // $("#shareImgUpload").parent().find(".upload-img-box").html("<img src=" + ns.img(res.data.pic_info.pic_path) + " >");
  283. $("#shareImgUpload").html("<div id='preview_imgUpload' class='preview_img'><img layer-src class='img_prev' src=" + ns.img(res.data.pic_info.pic_path) + " ></div>");
  284. }
  285. return layer.msg(res.message);
  286. }
  287. });
  288. var cover_upload = new Upload({
  289. elem: '#coverImgUpload',
  290. url: ns.url("live://shop/room/addimagemedia"),
  291. callback: function(res) {
  292. if (res.code >= 0) {
  293. $("input[name='coverImg']").val(res.data.media_info.media_id);
  294. $("#coverImgUpload").html("<div id='preview_imgUpload' class='preview_img'><img layer-src class='img_prev' src=" + ns.img(res.data.pic_info.pic_path) + " ></div>");
  295. }
  296. return layer.msg(res.message);
  297. }
  298. });
  299. var feeds_upload = new Upload({
  300. elem: '#feedsImgUpload',
  301. url: ns.url("live://shop/room/addimagemedia"),
  302. callback: function(res) {
  303. if (res.code >= 0) {
  304. $("input[name='feedsImg']").val(res.data.media_info.media_id);
  305. $("#feedsImgUpload").html("<div id='preview_imgUpload' class='preview_img'><img layer-src class='img_prev' src=" + ns.img(res.data.pic_info.pic_path) + " ></div>");
  306. }
  307. return layer.msg(res.message);
  308. }
  309. });
  310. });
  311. function back() {
  312. location.href = ns.url("live://shop/room/index");
  313. }
  314. </script>
  315. {/block}