edit.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  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. </style>
  24. {/block}
  25. {block name="main"}
  26. <div class="layui-collapse ns-tips">
  27. <div class="layui-colla-item">
  28. <h2 class="layui-colla-title">操作提示</h2>
  29. <ul class="layui-colla-content layui-show">
  30. <li>管理员可以在此页编辑打印模板</li>
  31. </ul>
  32. </div>
  33. </div>
  34. <div class="printer-box">
  35. <div class="layui-form ns-form">
  36. <div class="layui-card ns-card-common ns-card-brief">
  37. <div class="layui-card-header">
  38. <span class="ns-card-title">模板信息</span>
  39. </div>
  40. <div class="layui-card-body">
  41. <div class="layui-form-item">
  42. <label class="layui-form-label"><span class="required">*</span>模板名称:</label>
  43. <div class="layui-input-block">
  44. <input type="text" name="template_name" value="{$info.template_name}" lay-verify="required" autocomplete="off" class="layui-input ns-len-long">
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. <div class="layui-card ns-card-common ns-card-brief">
  50. <div class="layui-card-header">
  51. <span class="ns-card-title">打印信息</span>
  52. </div>
  53. <div class="layui-card-body">
  54. <div class="layui-form-item">
  55. <label class="layui-form-label">小票名称:</label>
  56. <div class="layui-input-block">
  57. <input type="text" name="title" value="{$info.title}" lay-verify="required" autocomplete="off" class="layui-input ns-len-long">
  58. </div>
  59. </div>
  60. <div class="layui-form-item">
  61. <label class="layui-form-label">商城名称:</label>
  62. <div class="layui-input-block">
  63. <input type="radio" lay-filter="shop_name" name="head" value="1" title="显示" {if $info.head == 1} checked {/if} autocomplete="off" class="layui-input ns-len-long">
  64. <input type="radio" lay-filter="shop_name" name="head" value="0" title="不显示" {if $info.head == 0} checked {/if} autocomplete="off" class="layui-input ns-len-long">
  65. </div>
  66. </div>
  67. <div class="layui-form-item">
  68. <label class="layui-form-label">备注信息:</label>
  69. <div class="layui-input-block">
  70. <input type="checkbox" name="buy_notes" value="1" lay-skin="primary" lay-filter="buyer_message" title="买家留言" {if $info.buy_notes == 1} checked="" {/if}>
  71. <!--<input type="checkbox" name="seller_notes" value="1" lay-skin="primary" lay-filter="merchant_message" title="商家留言" {if $info.seller_notes == 1} checked="" {/if}>-->
  72. </div>
  73. </div>
  74. <div class="layui-form-item">
  75. <label class="layui-form-label">买家信息:</label>
  76. <div class="layui-input-block">
  77. <input type="checkbox" name="buy_name" value="1" lay-skin="primary" lay-filter="buyer_name" title="姓名" {if $info.buy_name == 1} checked="" {/if}>
  78. <input type="checkbox" name="buy_mobile" value="1" lay-skin="primary" lay-filter="buyer_phone" title="联系方式" {if $info.buy_mobile == 1} checked="" {/if}>
  79. <input type="checkbox" name="buy_address" value="1" lay-skin="primary" lay-filter="buyer_addres" title="地址" {if $info.buy_address == 1} checked="" {/if}>
  80. </div>
  81. </div>
  82. <div class="layui-form-item">
  83. <label class="layui-form-label">商城信息:</label>
  84. <div class="layui-input-block">
  85. <input type="checkbox" name="shop_mobile" value="1" lay-skin="primary" lay-filter="shopping_phone" title="联系方式" {if $info.shop_mobile == 1} checked="" {/if}>
  86. <input type="checkbox" name="shop_address" value="1" lay-skin="primary" lay-filter="shopping_addres" title="地址" {if $info.shop_address == 1} checked="" {/if}>
  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="checkbox" name="shop_qrcode" value="1" lay-filter="shop_qrcode" lay-skin="primary" title="商城二维码" {if $info.shop_qrcode == 1} checked="" {/if}>
  93. </div>
  94. </div>
  95. <div class="layui-form-item qrcode_url">
  96. <label class="layui-form-label"><span class="required">*</span>商城二维码链接:</label>
  97. <div class="layui-input-block">
  98. <input type="text" name="qrcode_url" value="{$info.qrcode_url}" lay-verify="required" autocomplete="off" class="layui-input ns-len-long">
  99. </div>
  100. </div>
  101. <div class="layui-form-item">
  102. <label class="layui-form-label">底部信息:</label>
  103. <div class="layui-input-block">
  104. <input type="text" name="bottom" value="{$info.bottom}" lay-verify="required" placeholder="" autocomplete="off" class="layui-input ns-len-long">
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <input type="hidden" name="template_id" value="{$info.template_id}">
  110. <div class="ns-form-row">
  111. <button class="layui-btn ns-bg-color" lay-submit lay-filter="save">保存</button>
  112. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  113. </div>
  114. </div>
  115. <div class="preview">
  116. <div class="layui-card ns-card-common ns-card-brief">
  117. <div class="layui-card-header">
  118. <span class="ns-card-title">预览图</span>
  119. </div>
  120. <div class="layui-card-body">
  121. <div class="receipt-name">{$info.title}</div>
  122. <div class="shopping-name {if $info.head == 0}layui-hide{/if}">商城名称</div>
  123. <div class="order-info">
  124. <span>订单编号:ME20180702231831547866</span>
  125. <span>支付方式:微信支付</span>
  126. </div>
  127. <div class="goods-info">
  128. <table>
  129. <tr>
  130. <th align="left">商品名称</th>
  131. <th>数量</th>
  132. <th align="right">金额</th>
  133. </tr>
  134. <tr>
  135. <td>男子运动外套</td>
  136. <td>2</td>
  137. <td align="right">¥388.00</td>
  138. </tr>
  139. <tr>
  140. <td>白色跑步鞋</td>
  141. <td>2</td>
  142. <td align="right">¥1689.00</td>
  143. </tr>
  144. <tr>
  145. <td>运费 </td>
  146. <td colspan="2" align="right">¥0.00</td>
  147. </tr>
  148. </table>
  149. </div>
  150. <div class="price-info">
  151. <p>
  152. <span>订单原价</span>
  153. <span>¥2010</span>
  154. </p>
  155. <p>
  156. <span>优惠金额</span>
  157. <span>¥2010</span>
  158. </p>
  159. <p>
  160. <span>实付金额</span>
  161. <span>¥2010</span>
  162. </p>
  163. </div>
  164. <div class="buyer-message {if $info.buy_notes != 1} layui-hide {/if}">
  165. 买家留言:物流很快
  166. </div>
  167. <div class="merchant-message {if $info.seller_notes != 1} layui-hide {/if}">
  168. 商家留言:欢迎下次购买
  169. </div>
  170. <div class="buyer-info {if $info.buy_name != 1 && $info.buy_mobile != 1 && $info.buy_address != 1} layui-hide{/if}">
  171. <span class="name {if $info.buy_name != 1} layui-hide{/if}">niushop</span>
  172. <span class="phone {if $info.buy_mobile != 1} layui-hide{/if}">15135669878</span>
  173. <span class="addres {if $info.buy_address != 1} layui-hide{/if}">山西省 太原市 小店区 创业街</span>
  174. </div>
  175. <div class="shopping-info {if $info.shop_mobile != 1 && $info.shop_address != 1}layui-hide{/if}">
  176. <span class="phone {if $info.shop_mobile != 1} layui-hide{/if}">4008867993 </span>
  177. <span class="addres {if $info.shop_address != 1} layui-hide{/if}">山西省 太原市 小店区 创业街 世纪中心4单元1025</span>
  178. </div>
  179. <div class="shopping-code {if $info.shop_qrcode != 1} layui-hide{/if}">
  180. <img src="SHOP_IMG/shopping_code.png" alt="">
  181. </div>
  182. <div class="button-info">{$info.bottom}</div>
  183. </div>
  184. </div>
  185. </div>
  186. </div>
  187. {/block}
  188. {block name="script"}
  189. <script>
  190. layui.use(['form', 'laydate'], function() {
  191. var form = layui.form,
  192. laydate = layui.laydate,
  193. repeat_flag = false;
  194. form.render();
  195. /**
  196. * 表单验证
  197. */
  198. form.verify({
  199. time: function(value) {
  200. var now_time = (new Date()).getTime();
  201. var start_time = (new Date($("#start_time").val())).getTime();
  202. var end_time = (new Date(value)).getTime();
  203. if (now_time > end_time) {
  204. return '结束时间不能小于当前时间!'
  205. }
  206. if (start_time > end_time) {
  207. return '结束时间不能小于开始时间!';
  208. }
  209. },
  210. flnum: function(value) {
  211. var arrMen = value.split(".");
  212. var val = 0;
  213. if (arrMen.length == 2) {
  214. val = arrMen[1];
  215. }
  216. if (val.length > 2) {
  217. return '保留小数点后两位!'
  218. }
  219. },
  220. int: function(value) {
  221. if (value <= 1 || value % 1 != 0) {
  222. return '请输入大于1的正整数!'
  223. }
  224. }
  225. });
  226. form.on('checkbox(shop_qrcode)', function(data){
  227. var value = data.elem.checked;
  228. if(value == true){
  229. $(".preview .shopping-code").removeClass("layui-hide");
  230. $(".qrcode_url").show();
  231. $("input[name='qrcode_url']").attr("lay-verify", "required");
  232. }else{
  233. $(".preview .shopping-code").addClass("layui-hide");
  234. $(".qrcode_url").hide();
  235. $("input[name='qrcode_url']").attr("lay-verify", "");
  236. }
  237. });
  238. /**
  239. * 表单提交
  240. */
  241. form.on('submit(save)', function(data){
  242. if(repeat_flag) return;
  243. repeat_flag = true;
  244. var field = data.field;
  245. $.ajax({
  246. type: 'POST',
  247. dataType: 'JSON',
  248. url: ns.url("printer://shop/template/edit"),
  249. data: field,
  250. async: false,
  251. success: function(res){
  252. repeat_flag = false;
  253. if (res.code == 0) {
  254. layer.confirm('编辑成功', {
  255. title:'操作提示',
  256. btn: ['返回列表', '继续编辑'],
  257. yes: function(){
  258. location.href = ns.url("printer://shop/template/lists");
  259. }
  260. });
  261. }else{
  262. layer.msg(res.message);
  263. }
  264. }
  265. })
  266. });
  267. /*
  268. * 效果图
  269. * */
  270. // 小票打印
  271. $("input[name='title']").bind("input propertychange",function(event){
  272. $(".preview .receipt-name").text($("input[name='title']").val());
  273. });
  274. //商城名称
  275. form.on('radio(shop_name)', function(data){
  276. if (parseInt(data.value)) $(".shopping-name").removeClass("layui-hide");
  277. else $(".shopping-name").addClass("layui-hide");
  278. });
  279. //买家留言
  280. form.on('checkbox(buyer_message)', function(data){
  281. if(data.elem.checked)
  282. $(".buyer-message").removeClass("layui-hide");
  283. else
  284. $(".buyer-message").addClass("layui-hide");
  285. });
  286. //卖家留言
  287. form.on('checkbox(merchant_message)', function(data){
  288. if(data.elem.checked)
  289. $(".merchant-message").removeClass("layui-hide");
  290. else
  291. $(".merchant-message").addClass("layui-hide");
  292. });
  293. var buyerName = true,buyerPhone=true,buyerAddres=true;
  294. //买家姓名
  295. form.on('checkbox(buyer_name)', function(data){
  296. buyerName = data.elem.checked;
  297. if(data.elem.checked)
  298. $(".buyer-info .name").removeClass("layui-hide");
  299. else
  300. $(".buyer-info .name").addClass("layui-hide");
  301. buyerFn();
  302. });
  303. //买家手机号
  304. form.on('checkbox(buyer_phone)', function(data){
  305. buyerPhone = data.elem.checked;
  306. if(data.elem.checked)
  307. $(".buyer-info .phone").removeClass("layui-hide");
  308. else
  309. $(".buyer-info .phone").addClass("layui-hide");
  310. buyerFn();
  311. });
  312. //买家地址
  313. form.on('checkbox(buyer_addres)', function(data){
  314. buyerAddres= data.elem.checked;
  315. if(data.elem.checked)
  316. $(".buyer-info .addres").removeClass("layui-hide");
  317. else
  318. $(".buyer-info .addres").addClass("layui-hide");
  319. buyerFn();
  320. });
  321. function buyerFn() {
  322. if (!buyerName && !buyerPhone && !buyerAddres)
  323. $(".buyer-info").addClass("layui-hide");
  324. else
  325. $(".buyer-info").removeClass("layui-hide");
  326. }
  327. var shoppingPhone=false,shoppingAddres=false;
  328. //商家手机号
  329. form.on('checkbox(shopping_phone)', function(data){
  330. shoppingPhone = data.elem.checked;
  331. if(data.elem.checked)
  332. $(".shopping-info .phone").removeClass("layui-hide");
  333. else
  334. $(".shopping-info .phone").addClass("layui-hide");
  335. shoppingFn();
  336. });
  337. //商家地址
  338. form.on('checkbox(shopping_addres)', function(data){
  339. shoppingAddres= data.elem.checked;
  340. if(data.elem.checked)
  341. $(".shopping-info .addres").removeClass("layui-hide");
  342. else
  343. $(".shopping-info .addres").addClass("layui-hide");
  344. shoppingFn();
  345. });
  346. function shoppingFn() {
  347. if (!shoppingPhone && !shoppingAddres)
  348. $(".shopping-info").addClass("layui-hide");
  349. else
  350. $(".shopping-info").removeClass("layui-hide");
  351. }
  352. // 底部信息
  353. $("input[name='bottom']").bind("input propertychange",function(event){
  354. $(".preview .button-info").text($("input[name='bottom']").val());
  355. });
  356. });
  357. function back() {
  358. location.href = ns.url("printer://shop/template/lists");
  359. }
  360. </script>
  361. {/block}