recharge_template.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. {extend name="app/shop/view/base.html"/}
  2. {block name="resources"}
  3. <style>
  4. .printer-box{display: flex;}
  5. .printer-box > .layui-form{flex: 1;}
  6. .printer-box .preview{width: 310px;margin: 0 20px;}
  7. .printer-box .preview .layui-card-body{margin: 20px;padding: 0 10px;border: 1px solid #ededed;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;}
  8. .printer-box .preview .layui-card-body div{font-size: 12px;color: #333;}
  9. .printer-box .preview .layui-card-body div ~ div{border-top: 1px dashed #ededed ;}
  10. .printer-box .preview .receipt-name{text-align: center;line-height: 40px;}
  11. .printer-box .preview .shopping-name{line-height: 40px;font-size: 16px !important;text-align: center;}
  12. .printer-box .preview .order-info, .printer-box .preview .goods-info, .printer-box .preview .price-info, .printer-box .preview .buyer-info, .printer-box .preview .shopping-info{padding: 8px 0;}
  13. .printer-box .preview .order-info span{display: block;line-height: 2.5;}
  14. .printer-box .preview .goods-info table{width: 100%;}
  15. .printer-box .preview .goods-info table tr{line-height: 2.5;}
  16. .printer-box .preview .goods-info table th{font-weight: normal;}
  17. .printer-box .preview .price-info p{display: flex;line-height: 2.5;justify-content: space-between;}
  18. .printer-box .preview .buyer-info span, .printer-box .preview .shopping-info span{display: block;line-height: 2;}
  19. .printer-box .preview .buyer-message,.printer-box .preview .merchant-message{padding: 10px 0;line-height: 1.5;}
  20. .preview .button-info{height: 40px;line-height: 40px;text-align: center}
  21. .preview .shopping-code{text-align: center;}
  22. .preview .shopping-code img{width: 100px;height: 100px;margin: 10px 0;}
  23. .commodity-type-box{
  24. display: flex;
  25. }
  26. .commodity-type-item{
  27. margin-right: 15px;
  28. padding: 0px 20px;
  29. display: flex;
  30. justify-content: center;
  31. align-items: center;
  32. flex-direction: column;
  33. border: 1px solid #e5e5e5;
  34. cursor: pointer;
  35. /* background: #e5e5e5; */
  36. }
  37. .goods_code_show td{line-height: 1;padding-bottom: 5px}
  38. </style>
  39. {/block}
  40. {block name="main"}
  41. <div class="layui-collapse tips-wrap">
  42. <div class="layui-colla-item">
  43. <h2 class="layui-colla-title">操作提示</h2>
  44. <ul class="layui-colla-content layui-show">
  45. <li>管理员可以在此页操作打印模板</li>
  46. </ul>
  47. </div>
  48. </div>
  49. <div class="printer-box">
  50. <div class="layui-form form-wrap">
  51. <div class="layui-card card-common card-brief">
  52. <div class="layui-card-header">
  53. <span class="card-title">模板信息</span>
  54. </div>
  55. <div class="layui-card-body">
  56. {if empty($info)}
  57. <div class="layui-form-item">
  58. <label class="layui-form-label"><span class="required">*</span>模板类型:</label>
  59. <div class="layui-input-block commodity-type-box">
  60. {foreach $template_type as $k => $v}
  61. <div class="commodity-type-item {if $type == $k} border-color{/if}" onclick="location.href = ns.url('printer://shop/template/add', {'type' : '{$v['type']}'})">
  62. <span class="{if $type == $k} text-color{/if}">{$v['type_name']}</span>
  63. </div>
  64. {/foreach}
  65. </div>
  66. </div>
  67. <input type="hidden" name="type_name" value="{$template_type[$type]['type_name']}">
  68. <input type="hidden" name="type" value="{$type}">
  69. {/if}
  70. <div class="layui-form-item">
  71. <label class="layui-form-label"><span class="required"></span>模板名称:</label>
  72. <div class="layui-input-block">
  73. <input type="text" name="template_name" lay-verify="required" {if !empty($info)} value="{$info['template_name']}" {/if} autocomplete="off" class="layui-input len-long">
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. <div class="layui-card card-common card-brief">
  79. <div class="layui-card-header">
  80. <span class="card-title">打印信息</span>
  81. </div>
  82. <div class="layui-card-body">
  83. <div class="layui-form-item">
  84. <label class="layui-form-label">小票名称:</label>
  85. <div class="layui-input-block">
  86. <input type="text" name="title" {if !empty($info)} value="{$info['title']}"{else/} value="小票名称" {/if} lay-verify="required" autocomplete="off" class="layui-input len-long">
  87. </div>
  88. </div>
  89. <div class="layui-form-item">
  90. <label class="layui-form-label">商城名称:</label>
  91. <div class="layui-input-block">
  92. <input type="radio" lay-filter="shop_name" name="head" value="1" title="显示" {if (!empty($info) && $info['head'] == 1) || empty($info) } checked {/if} autocomplete="off" class="layui-input len-long">
  93. <input type="radio" lay-filter="shop_name" name="head" value="0" title="不显示" {if !empty($info) && !$info['head']} checked {/if} autocomplete="off" class="layui-input len-long">
  94. </div>
  95. </div>
  96. <div class="layui-form-item">
  97. <label class="layui-form-label">买家信息:</label>
  98. <div class="layui-input-block">
  99. <input type="checkbox" name="buy_name" value="1" lay-filter="buyer_name" lay-skin="primary" title="姓名" {if (!empty($info) && $info['buy_name']) || empty($info) } checked {/if}>
  100. <!-- <input type="checkbox" name="buy_mobile" value="1" lay-filter="buyer_phone" lay-skin="primary" title="联系方式" {if (!empty($info) && $info['buy_mobile']) || empty($info) } checked {/if}>-->
  101. <!-- <input type="checkbox" name="buy_address" value="1" lay-filter="buyer_addres" lay-skin="primary" title="地址" {if (!empty($info) && $info['buy_address']) || empty($info) } checked {/if}>-->
  102. </div>
  103. </div>
  104. <div class="layui-form-item">
  105. <label class="layui-form-label">商城信息:</label>
  106. <div class="layui-input-block">
  107. <input type="checkbox" name="shop_mobile" value="1" lay-filter="shopping_phone" lay-skin="primary" title="联系方式" {if (!empty($info) && $info['shop_mobile'])} checked {/if}>
  108. <input type="checkbox" name="shop_address" value="1" lay-filter="shopping_addres" lay-skin="primary" title="地址" {if (!empty($info) && $info['shop_address'])} checked {/if}>
  109. </div>
  110. </div>
  111. <div class="layui-form-item">
  112. <label class="layui-form-label">商城二维码:</label>
  113. <div class="layui-input-block">
  114. <input type="checkbox" name="shop_qrcode" value="1" lay-filter="shop_qrcode" lay-skin="primary" title="商城二维码" {if (!empty($info) && $info['shop_qrcode']) || empty($info) } checked {/if}>
  115. </div>
  116. </div>
  117. <div class="layui-form-item qrcode_url">
  118. <label class="layui-form-label"><span class="required">*</span>商城二维码链接:</label>
  119. <div class="layui-input-block">
  120. <input type="text" name="qrcode_url" lay-verify="required" autocomplete="off" class="layui-input len-long" {if (!empty($info) && $info['qrcode_url'])} value="{$info['qrcode_url']}" {/if}>
  121. </div>
  122. </div>
  123. <div class="layui-form-item">
  124. <label class="layui-form-label">底部信息:</label>
  125. <div class="layui-input-block">
  126. <input type="text" name="bottom" {if (!empty($info) && $info['bottom'])} value="{$info['bottom']}"{else /} value="谢谢惠顾,欢迎下次光临" {/if} lay-verify="required" placeholder="" autocomplete="off" class="layui-input len-long">
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. {if !empty($info)}
  132. <input type="hidden" name="template_id" value="{$info['template_id']}">
  133. {/if}
  134. <div class="form-row">
  135. <button class="layui-btn" lay-submit lay-filter="save">保存</button>
  136. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  137. </div>
  138. </div>
  139. <div class="preview">
  140. <div class="layui-card card-common card-brief">
  141. <div class="layui-card-header">
  142. <span class="card-title">预览图</span>
  143. </div>
  144. <div class="layui-card-body">
  145. <div class="receipt-name">小票名称</div>
  146. <div class="shopping-name">商城名称</div>
  147. <div class="order-info">
  148. <span>订单编号:ME20180702231831547866</span>
  149. <span>支付方式:微信支付</span>
  150. </div>
  151. <div class="goods-info">
  152. <div class="price-info">
  153. <p>
  154. <span>充值金额</span>
  155. <span>¥100</span>
  156. </p>
  157. <p>
  158. <span>支付金额</span>
  159. <span>¥95</span>
  160. </p>
  161. <p>
  162. <span>会员余额</span>
  163. <span>¥230</span>
  164. </p>
  165. </div>
  166. <div class="buyer-message">买家留言:物流很快</div>
  167. <div class="merchant-message layui-hide">卖家留言:欢迎下次购买</div>
  168. <div class="buyer-info">
  169. <span class="name">会员:王二</span>
  170. <!-- <span class="phone">15135669878</span>-->
  171. <!-- <span class="addres">山西省 太原市 小店区 创业街</span>-->
  172. </div>
  173. <div class="shopping-info layui-hide">
  174. <span class="phone layui-hide">4008867993 </span>
  175. <span class="addres layui-hide">山西省 太原市 小店区 创业街 世纪中心4单元1025</span>
  176. </div>
  177. <div class="shopping-code">
  178. <img src="SHOP_IMG/shopping_code.png" alt="">
  179. </div>
  180. <div class="button-info">谢谢惠顾,欢迎下次光临</div>
  181. </div>
  182. </div>
  183. </div>
  184. </div>
  185. {/block}
  186. {block name="script"}
  187. <script>
  188. layui.use(['form'], function() {
  189. var form = layui.form,
  190. repeat_flag = false;
  191. form.render();
  192. /**
  193. * 表单验证
  194. */
  195. form.verify({
  196. time: function(value) {
  197. var now_time = (new Date()).getTime();
  198. var start_time = (new Date($("#start_time").val())).getTime();
  199. var end_time = (new Date(value)).getTime();
  200. if (now_time > end_time) {
  201. return '结束时间不能小于当前时间!'
  202. }
  203. if (start_time > end_time) {
  204. return '结束时间不能小于开始时间!';
  205. }
  206. },
  207. flnum: function(value) {
  208. var arrMen = value.split(".");
  209. var val = 0;
  210. if (arrMen.length == 2) {
  211. val = arrMen[1];
  212. }
  213. if (val.length > 2) {
  214. return '保留小数点后两位!'
  215. }
  216. },
  217. int: function(value) {
  218. if (value <= 1 || value % 1 != 0) {
  219. return '请输入大于1的正整数!'
  220. }
  221. }
  222. });
  223. form.on('checkbox(shop_qrcode)', function(data){
  224. var value = data.elem.checked;
  225. if(value == true){
  226. $(".preview .shopping-code").removeClass("layui-hide");
  227. $(".qrcode_url").removeClass('layui-hide');
  228. $("input[name='qrcode_url']").attr("lay-verify", "required");
  229. }else{
  230. $(".preview .shopping-code").addClass("layui-hide");
  231. $(".qrcode_url").addClass('layui-hide');
  232. $("input[name='qrcode_url']").attr("lay-verify", "");
  233. }
  234. });
  235. /**
  236. * 表单提交
  237. */
  238. form.on('submit(save)', function(data){
  239. var field = data.field;
  240. if(repeat_flag) return;
  241. repeat_flag = true;
  242. let url = ns.url("printer://shop/template/add");
  243. if(parseInt(field.template_id) > 0 ) url = ns.url("printer://shop/template/edit");
  244. $.ajax({
  245. type: 'POST',
  246. dataType: 'JSON',
  247. url: url,
  248. data: field,
  249. async: false,
  250. success: function(res){
  251. repeat_flag = false;
  252. if (res.code == 0) {
  253. layer.confirm('操作成功', {
  254. title:'操作提示',
  255. btn: ['返回列表', '{$info ? "继续编辑" : "继续添加"}'],
  256. closeBtn: 0,
  257. yes: function(){
  258. location.href = ns.url("printer://shop/template/lists");
  259. },
  260. btn2: function() {
  261. window.location.reload();
  262. }
  263. });
  264. }else{
  265. layer.msg(res.message);
  266. }
  267. }
  268. })
  269. });
  270. /*
  271. * 效果图
  272. * */
  273. // 小票打印
  274. $("input[name='title']").bind("input propertychange",function(event){
  275. $(".preview .receipt-name").text($("input[name='title']").val());
  276. });
  277. //商城名称
  278. form.on('radio(shop_name)', function(data){
  279. if (parseInt(data.value)) $(".shopping-name").removeClass("layui-hide");
  280. else $(".shopping-name").addClass("layui-hide");
  281. });
  282. //商品价格
  283. form.on('checkbox(goods_price_show)', function(data){
  284. if (data.elem.checked) {
  285. $(".goods_price_show").removeClass("layui-hide");
  286. $('.goods_price_type').removeClass("layui-hide");
  287. }else {
  288. $('.goods_price_type').addClass("layui-hide");
  289. $(".goods_price_show").addClass("layui-hide");
  290. }
  291. });
  292. //商品编码
  293. form.on('checkbox(goods_code_show)', function(data){
  294. if (data.elem.checked) $(".goods_code_show").removeClass("layui-hide");
  295. else $(".goods_code_show").addClass("layui-hide");
  296. });
  297. //表单
  298. form.on('checkbox(form_show)', function(data){
  299. if (data.elem.checked) $(".form_show").removeClass("layui-hide");
  300. else $(".form_show").addClass("layui-hide");
  301. });
  302. //买家留言
  303. form.on('checkbox(buyer_message)', function(data){
  304. if(data.elem.checked)
  305. $(".buyer-message").removeClass("layui-hide");
  306. else
  307. $(".buyer-message").addClass("layui-hide");
  308. });
  309. //卖家留言
  310. form.on('checkbox(merchant_message)', function(data){
  311. if(data.elem.checked)
  312. $(".merchant-message").removeClass("layui-hide");
  313. else
  314. $(".merchant-message").addClass("layui-hide");
  315. });
  316. var buyerName = true,buyerPhone=true,buyerAddres=true;
  317. //买家姓名
  318. form.on('checkbox(buyer_name)', function(data){
  319. buyerName = data.elem.checked;
  320. if(data.elem.checked)
  321. $(".buyer-info .name").removeClass("layui-hide");
  322. else
  323. $(".buyer-info .name").addClass("layui-hide");
  324. buyerFn();
  325. });
  326. //买家手机号
  327. form.on('checkbox(buyer_phone)', function(data){
  328. buyerPhone = data.elem.checked;
  329. if(data.elem.checked)
  330. $(".buyer-info .phone").removeClass("layui-hide");
  331. else
  332. $(".buyer-info .phone").addClass("layui-hide");
  333. buyerFn();
  334. });
  335. //买家地址
  336. form.on('checkbox(buyer_addres)', function(data){
  337. buyerAddres= data.elem.checked;
  338. if(data.elem.checked)
  339. $(".buyer-info .addres").removeClass("layui-hide");
  340. else
  341. $(".buyer-info .addres").addClass("layui-hide");
  342. buyerFn();
  343. });
  344. function buyerFn() {
  345. if (!buyerName )
  346. $(".buyer-info").addClass("layui-hide");
  347. else
  348. $(".buyer-info").removeClass("layui-hide");
  349. }
  350. var shoppingPhone=false,shoppingAddress=false;
  351. //商家手机号
  352. form.on('checkbox(shopping_phone)', function(data){
  353. shoppingPhone = data.elem.checked;
  354. if(data.elem.checked)
  355. $(".shopping-info .phone").removeClass("layui-hide");
  356. else
  357. $(".shopping-info .phone").addClass("layui-hide");
  358. shoppingFn();
  359. });
  360. //商家地址
  361. form.on('checkbox(shopping_addres)', function(data){
  362. shoppingAddress= data.elem.checked;
  363. if(data.elem.checked)
  364. $(".shopping-info .addres").removeClass("layui-hide");
  365. else
  366. $(".shopping-info .addres").addClass("layui-hide");
  367. shoppingFn();
  368. });
  369. function shoppingFn() {
  370. if (!shoppingPhone && !shoppingAddress)
  371. $(".shopping-info").addClass("layui-hide");
  372. else
  373. $(".shopping-info").removeClass("layui-hide");
  374. }
  375. // 底部信息
  376. $("input[name='bottom']").bind("input propertychange",function(event){
  377. $(".preview .button-info").text($("input[name='bottom']").val());
  378. });
  379. });
  380. function back() {
  381. location.href = ns.url("printer://shop/template/lists");
  382. }
  383. </script>
  384. {if !empty($info)}
  385. <script>
  386. let shop_qrcode = {$info['shop_qrcode']};
  387. if(shop_qrcode){
  388. $(".preview .shopping-code").removeClass("layui-hide");
  389. $(".qrcode_url").removeClass('layui-hide');
  390. $("input[name='qrcode_url']").attr("lay-verify", "required");
  391. }else{
  392. $(".preview .shopping-code").addClass("layui-hide");
  393. $(".qrcode_url").addClass('layui-hide');
  394. $("input[name='qrcode_url']").attr("lay-verify", "");
  395. }
  396. let head = {$info['head']};
  397. if (head) {
  398. $(".shopping-name").removeClass("layui-hide");
  399. }else {
  400. $(".shopping-name").addClass("layui-hide");
  401. }
  402. let goods_price_show = {$info['goods_price_show']};
  403. if (goods_price_show) {
  404. $(".goods_price_show").removeClass("layui-hide");
  405. $('.goods_price_type').removeClass("layui-hide");
  406. }else {
  407. $('.goods_price_type').addClass("layui-hide");
  408. $(".goods_price_show").addClass("layui-hide");
  409. }
  410. let goods_code_show = {$info['goods_code_show']};
  411. if (goods_code_show) $(".goods_code_show").removeClass("layui-hide");
  412. else $(".goods_code_show").addClass("layui-hide");
  413. let form_show = {$info['form_show']};
  414. if (form_show) $(".form_show").removeClass("layui-hide");
  415. else $(".form_show").addClass("layui-hide");
  416. let buy_notes = {$info['buy_notes']};
  417. if(buy_notes) $(".buyer-message").removeClass("layui-hide");
  418. else $(".buyer-message").addClass("layui-hide");
  419. let seller_notes = {$info['seller_notes']};
  420. if(seller_notes) $(".merchant-message").removeClass("layui-hide");
  421. else $(".merchant-message").addClass("layui-hide");
  422. buyerName = {$info['buy_name']},buyerPhone={$info['buy_mobile']},buyerAddres={$info['buy_address']};
  423. if(buyerName) $(".buyer-info .name").removeClass("layui-hide");
  424. else $(".buyer-info .name").addClass("layui-hide");
  425. if(buyerPhone) $(".buyer-info .phone").removeClass("layui-hide");
  426. else $(".buyer-info .phone").addClass("layui-hide");
  427. if(buyerAddres) $(".buyer-info .addres").removeClass("layui-hide");
  428. else $(".buyer-info .addres").addClass("layui-hide");
  429. if (!buyerName ) $(".buyer-info").addClass("layui-hide");
  430. else $(".buyer-info").removeClass("layui-hide");
  431. shoppingPhone= {$info['shop_mobile']},shoppingAddress= {$info['shop_address']};
  432. //商家手机号
  433. if(shoppingPhone)$(".shopping-info .phone").removeClass("layui-hide");
  434. else $(".shopping-info .phone").addClass("layui-hide");
  435. //商家地址
  436. if(shoppingAddress) $(".shopping-info .addres").removeClass("layui-hide");
  437. else $(".shopping-info .addres").addClass("layui-hide");
  438. if (!shoppingPhone && !shoppingAddress) $(".shopping-info").addClass("layui-hide");
  439. else $(".shopping-info").removeClass("layui-hide");
  440. </script>
  441. {/if}
  442. {/block}