operate.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style type="text/css">
  4. .goods-empty {padding: 100px 0;text-align: center;}
  5. .goods-info {padding: 5px 0;align-items: center;flex-wrap:unset!important;}
  6. .goods-info .room-name {padding-left: 5px;line-height: 1}
  7. .goods-info img {width:50px;height: 50px;}
  8. </style>
  9. {/block}
  10. {block name="main"}
  11. <div class="layui-form form-wrap">
  12. <div class="layui-card card-common card-brief">
  13. <div class="layui-card-header">
  14. <span class="card-title">直播间信息</span>
  15. </div>
  16. <div class="layui-card-body">
  17. <div class="layui-form-item">
  18. <label class="layui-form-label">直播间:</label>
  19. <div class="layui-input-block">
  20. <p>{$room_info.name}</p>
  21. </div>
  22. </div>
  23. <div class="layui-form-item">
  24. <label class="layui-form-label">直播时间:</label>
  25. <div class="layui-input-block">
  26. <p>{:time_to_date($room_info.start_time)} - {:time_to_date($room_info.end_time)}</p>
  27. </div>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="layui-card card-common card-brief">
  32. <div class="layui-card-header">
  33. <span class="card-title">列表展示</span>
  34. </div>
  35. <div class="layui-card-body">
  36. <div class="layui-form-item">
  37. <label class="layui-form-label">主播头像:</label>
  38. <div class="layui-input-block">
  39. <div class="upload-img-block">
  40. <div class="upload-img-box {notempty name="$room_info['anchor_img']"}hover{/notempty}">
  41. <div class="upload-default" id="anchorImgUpload">
  42. {if condition="$room_info.anchor_img"}
  43. <div id="preview_imgUpload" class="preview_img">
  44. <img layer-src src="{:img($room_info.anchor_img)}" class="img_prev"/>
  45. </div>
  46. {else/}
  47. <div class="upload">
  48. <i class="iconfont iconshangchuan"></i>
  49. <p>点击上传</p>
  50. </div>
  51. {/if}
  52. </div>
  53. <div class="operation">
  54. <div>
  55. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  56. <i title="删除图片" class="layui-icon layui-icon-delete js-delete" ></i>
  57. </div>
  58. <div class="replace_img js-replace">点击替换</div>
  59. </div>
  60. <input type="hidden" name="anchor_img" value="{if condition="$room_info.anchor_img"}{$room_info.anchor_img}{/if}"/>
  61. </div>
  62. <!-- <p id="anchorImgUpload" class=" {if condition='$room_info.anchor_img'} replace {else/} no-replace{/if}">替换</p>
  63. <i class="del {if condition="$room_info.anchor_img"}show{/if}">x</i> -->
  64. </div>
  65. </div>
  66. <div class="word-aux">
  67. <p>在直播列表中展示。建议尺寸:100像素 * 100像素,图片大小不得超过1M。</p>
  68. </div>
  69. </div>
  70. <div class="layui-form-item">
  71. <label class="layui-form-label"><span class="required">*</span>直播间横幅:</label>
  72. <div class="layui-input-block">
  73. <div class="upload-img-block">
  74. <div class="upload-img-box {notempty name="$room_info['banner']"}hover{/notempty}" >
  75. <div class="upload-default" id="bannerUpload">
  76. {if condition="$room_info.banner"}
  77. <div id="preview_imgUpload" class="preview_img">
  78. <img layer-src src="{:img($room_info.banner)}" class="img_prev"/>
  79. </div>
  80. {else/}
  81. <i class="iconfont iconshangchuan"></i>
  82. <p>点击上传</p>
  83. {/if}
  84. </div>
  85. <div class="operation">
  86. <div>
  87. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  88. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  89. </div>
  90. <div class="replace_img js-replace">点击替换</div>
  91. </div>
  92. <input type="hidden" name="banner" value="{if condition="$room_info.banner"}{$room_info.banner}{/if}"/>
  93. </div>
  94. <!-- <p class="{if condition='$room_info.banner'} replace {else/} no-replace{/if}">替换</p>
  95. <i class="del {if condition="$room_info.banner"}show{/if}">x</i> -->
  96. </div>
  97. </div>
  98. <div class="word-aux">
  99. <p>在直播列表中展示。建议尺寸:702像素 * 208像素,图片大小不得超过2M。</p>
  100. </div>
  101. </div>
  102. </div>
  103. </div>
  104. <div class="layui-card card-common card-brief">
  105. <div class="layui-card-header">
  106. <span class="card-title">商品货架</span>
  107. </div>
  108. <div class="layui-card-body">
  109. {notempty name="$room_info['goods']"}
  110. {if $room_info['live_status'] == '102'}
  111. <div class="single-filter-box">
  112. <button class="layui-btn" onclick="importGoods()">从商品库导入商品</button>
  113. </div>
  114. {/if}
  115. <table class="layui-table" lay-skin="nob">
  116. <colgroup>
  117. <col width="10%">
  118. <col width="45">
  119. <col width="15">
  120. <col width="30">
  121. <col>
  122. </colgroup>
  123. <thead>
  124. <tr>
  125. <th>序号</th>
  126. <th>商品信息</th>
  127. <th>价格</th>
  128. <th>商品链接</th>
  129. </tr>
  130. </thead>
  131. <tbody>
  132. {foreach name="$room_info['goods']" item="vo" index="k"}
  133. {php}
  134. preg_match("/(pages\/goods\/detail\?sku_id=)(\d*)$/", $vo['url'], $matches);
  135. {/php}
  136. {if isset($matches[2])}
  137. <tr data-sku="{$matches[2]}">
  138. {else/}
  139. <tr>
  140. {/if}
  141. <td>{$k}</td>
  142. <td>
  143. <div class="table-btn goods-info">
  144. <img src="{:img($vo.cover_img)}">
  145. <span class="room-name" title="{$vo.name}">{$vo.name}</span>
  146. </div>
  147. </td>
  148. <td>{:sprintf("%.2f", $vo.price)}</td>
  149. <td>{$vo.url}</td>
  150. </tr>
  151. {/foreach}
  152. </tbody>
  153. </table>
  154. {else/}
  155. {if $room_info['live_status'] == '102'}
  156. <div class="goods-empty">暂无商品<a href="javascript:;" class="text-color" onclick="importGoods()">从商品库中导入</a></div>
  157. {else/}
  158. <div class="goods-empty">暂无商品</div>
  159. {/if}
  160. {/notempty}
  161. </div>
  162. </div>
  163. </div>
  164. {/block}
  165. {block name="script"}
  166. <script type="text/javascript">
  167. layui.use(['form'], function() {
  168. var anchor_upload = new Upload({
  169. elem: '#anchorImgUpload',
  170. callback:function (res) {
  171. if (res.code >= 0) {
  172. $.ajax({
  173. type: 'POST',
  174. dataType: 'JSON',
  175. url: ns.url("live://shop/room/operate"),
  176. data: {
  177. id: {$room_info.id},
  178. anchor_img: res.data.pic_path
  179. },
  180. success: function(res) {}
  181. });
  182. }
  183. },
  184. deleteCallback:function () {
  185. anchor_upload.delete();
  186. $.ajax({
  187. type: 'POST',
  188. dataType: 'JSON',
  189. url: ns.url("live://shop/room/operate"),
  190. data: {
  191. id: {$room_info.id},
  192. anchor_img: ''
  193. },
  194. success: function(res) {
  195. layer.msg(res.message);
  196. }
  197. });
  198. }
  199. });
  200. var banner_upload = new Upload({
  201. elem: '#bannerUpload',
  202. callback:function (res) {
  203. if (res.code >= 0) {
  204. $.ajax({
  205. type: 'POST',
  206. dataType: 'JSON',
  207. url: ns.url("live://shop/room/operate"),
  208. data: {
  209. id: {$room_info.id},
  210. banner: res.data.pic_path
  211. },
  212. success: function(res) {}
  213. });
  214. }
  215. },
  216. deleteCallback:function () {
  217. banner_upload.delete();
  218. $.ajax({
  219. type: 'POST',
  220. dataType: 'JSON',
  221. url: ns.url("live://shop/room/operate"),
  222. data: {
  223. id: {$room_info.id},
  224. banner: ''
  225. },
  226. success: function(res) {
  227. layer.msg(res.message);
  228. }
  229. });
  230. }
  231. });
  232. });
  233. function importGoods(){
  234. var sku_id = [];
  235. if ($('[data-sku]').length) {
  236. $('[data-sku]').each(function(el){
  237. sku_id.push($(this).attr('data-sku'));
  238. })
  239. }
  240. layer.open({
  241. type: 2,
  242. title: '从商品库导入商品',
  243. content: ns.url("live://shop/room/getGoodsPageList", {ids: sku_id.toString() }),
  244. area: ['600px', '550px'],
  245. btn: ['确定', '取消'],
  246. yes: function(index, layero){
  247. var iframe = $(layero).find("iframe")[0].contentWindow;
  248. iframe.callback(function(data){
  249. if (data.length == 0) {
  250. layer.msg('请选择要添加的商品', {icon: 5, shift: 6});
  251. return;
  252. }
  253. $.ajax({
  254. type: 'POST',
  255. url: ns.url("live://shop/room/addGoods"),
  256. data: {
  257. room_id: {$room_info.roomid},
  258. data: JSON.stringify(data)
  259. },
  260. dataType: 'JSON',
  261. success: function(res) {
  262. layer.msg(res.msg);
  263. if (res.code == 0) {
  264. layer.closeAll();
  265. location.reload();
  266. }
  267. }
  268. });
  269. })
  270. }
  271. })
  272. }
  273. </script>
  274. {/block}