add.html 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  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" 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="小票名称" 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="显示" checked autocomplete="off" class="layui-input ns-len-long">
  64. <input type="radio" lay-filter="shop_name" name="head" value="0" title="不显示" 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" title="买家留言" checked="" lay-filter="buyer_message">
  71. <!--<input type="checkbox" name="seller_notes" value="1" lay-skin="primary" title="卖家留言" lay-filter="merchant_message">-->
  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-filter="buyer_name" lay-skin="primary" title="姓名" checked="">
  78. <input type="checkbox" name="buy_mobile" value="1" lay-filter="buyer_phone" lay-skin="primary" title="联系方式" checked="">
  79. <input type="checkbox" name="buy_address" value="1" lay-filter="buyer_addres" lay-skin="primary" title="地址" checked="">
  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-filter="shopping_phone" lay-skin="primary" title="联系方式">
  86. <input type="checkbox" name="shop_address" value="1" lay-filter="shopping_addres" lay-skin="primary" title="地址">
  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="商城二维码" checked="">
  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" 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="谢谢惠顾,欢迎下次光临" lay-verify="required" placeholder="" autocomplete="off" class="layui-input ns-len-long">
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="ns-form-row">
  110. <button class="layui-btn ns-bg-color" lay-submit lay-filter="save">保存</button>
  111. <button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
  112. </div>
  113. </div>
  114. <div class="preview">
  115. <div class="layui-card ns-card-common ns-card-brief">
  116. <div class="layui-card-header">
  117. <span class="ns-card-title">预览图</span>
  118. </div>
  119. <div class="layui-card-body">
  120. <div class="receipt-name">小票名称</div>
  121. <div class="shopping-name">商城名称</div>
  122. <div class="order-info">
  123. <span>订单编号:ME20180702231831547866</span>
  124. <span>支付方式:微信支付</span>
  125. </div>
  126. <div class="goods-info">
  127. <table>
  128. <tr>
  129. <th align="left">商品名称</th>
  130. <th>数量</th>
  131. <th align="right">金额</th>
  132. </tr>
  133. <tr>
  134. <td>男子运动外套</td>
  135. <td>2</td>
  136. <td align="right">¥388.00</td>
  137. </tr>
  138. <tr>
  139. <td>白色跑步鞋</td>
  140. <td>2</td>
  141. <td align="right">¥1689.00</td>
  142. </tr>
  143. <tr>
  144. <td>运费 </td>
  145. <td colspan="2" align="right">¥0.00</td>
  146. </tr>
  147. </table>
  148. </div>
  149. <div class="price-info">
  150. <p>
  151. <span>订单原价</span>
  152. <span>¥2010</span>
  153. </p>
  154. <p>
  155. <span>优惠金额</span>
  156. <span>¥2010</span>
  157. </p>
  158. <p>
  159. <span>实付金额</span>
  160. <span>¥2010</span>
  161. </p>
  162. </div>
  163. <div class="buyer-message">
  164. 买家留言:物流很快
  165. </div>
  166. <div class="merchant-message layui-hide">
  167. 卖家留言:欢迎下次购买
  168. </div>
  169. <div class="buyer-info">
  170. <span class="name">niushop</span>
  171. <span class="phone">15135669878</span>
  172. <span class="addres">山西省 太原市 小店区 创业街</span>
  173. </div>
  174. <div class="shopping-info layui-hide">
  175. <span class="phone layui-hide">4008867993 </span>
  176. <span class="addres layui-hide">山西省 太原市 小店区 创业街 世纪中心4单元1025</span>
  177. </div>
  178. <div class="shopping-code">
  179. <img src="SHOP_IMG/shopping_code.png" alt="">
  180. </div>
  181. <div class="button-info">谢谢惠顾,欢迎下次光临</div>
  182. </div>
  183. </div>
  184. </div>
  185. </div>
  186. {/block}
  187. {block name="script"}
  188. <script>
  189. layui.use(['form', 'laydate'], function() {
  190. var form = layui.form,
  191. laydate = layui.laydate,
  192. repeat_flag = false;
  193. form.render();
  194. /**
  195. * 表单验证
  196. */
  197. form.verify({
  198. time: function(value) {
  199. var now_time = (new Date()).getTime();
  200. var start_time = (new Date($("#start_time").val())).getTime();
  201. var end_time = (new Date(value)).getTime();
  202. if (now_time > end_time) {
  203. return '结束时间不能小于当前时间!'
  204. }
  205. if (start_time > end_time) {
  206. return '结束时间不能小于开始时间!';
  207. }
  208. },
  209. flnum: function(value) {
  210. var arrMen = value.split(".");
  211. var val = 0;
  212. if (arrMen.length == 2) {
  213. val = arrMen[1];
  214. }
  215. if (val.length > 2) {
  216. return '保留小数点后两位!'
  217. }
  218. },
  219. int: function(value) {
  220. if (value <= 1 || value % 1 != 0) {
  221. return '请输入大于1的正整数!'
  222. }
  223. }
  224. });
  225. form.on('checkbox(shop_qrcode)', function(data){
  226. var value = data.elem.checked;
  227. if(value == true){
  228. $(".preview .shopping-code").removeClass("layui-hide");
  229. $(".qrcode_url").show();
  230. $("input[name='qrcode_url']").attr("lay-verify", "required");
  231. }else{
  232. $(".preview .shopping-code").addClass("layui-hide");
  233. $(".qrcode_url").hide();
  234. $("input[name='qrcode_url']").attr("lay-verify", "");
  235. }
  236. });
  237. /**
  238. * 表单提交
  239. */
  240. form.on('submit(save)', function(data){
  241. if(repeat_flag) return;
  242. repeat_flag = true;
  243. var field = data.field;
  244. $.ajax({
  245. type: 'POST',
  246. dataType: 'JSON',
  247. url: ns.url("printer://shop/template/add"),
  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: ['返回列表', '继续添加'],
  256. closeBtn: 0,
  257. yes: function(){
  258. location.href = ns.url("printer://shop/template/lists");
  259. },
  260. btn2: function() {
  261. location.href = ns.url("printer://shop/template/add");
  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(buyer_message)', function(data){
  284. if(data.elem.checked)
  285. $(".buyer-message").removeClass("layui-hide");
  286. else
  287. $(".buyer-message").addClass("layui-hide");
  288. });
  289. //卖家留言
  290. form.on('checkbox(merchant_message)', function(data){
  291. if(data.elem.checked)
  292. $(".merchant-message").removeClass("layui-hide");
  293. else
  294. $(".merchant-message").addClass("layui-hide");
  295. });
  296. var buyerName = true,buyerPhone=true,buyerAddres=true;
  297. //买家姓名
  298. form.on('checkbox(buyer_name)', function(data){
  299. buyerName = data.elem.checked;
  300. if(data.elem.checked)
  301. $(".buyer-info .name").removeClass("layui-hide");
  302. else
  303. $(".buyer-info .name").addClass("layui-hide");
  304. buyerFn();
  305. });
  306. //买家手机号
  307. form.on('checkbox(buyer_phone)', function(data){
  308. buyerPhone = data.elem.checked;
  309. if(data.elem.checked)
  310. $(".buyer-info .phone").removeClass("layui-hide");
  311. else
  312. $(".buyer-info .phone").addClass("layui-hide");
  313. buyerFn();
  314. });
  315. //买家地址
  316. form.on('checkbox(buyer_addres)', function(data){
  317. buyerAddres= data.elem.checked;
  318. if(data.elem.checked)
  319. $(".buyer-info .addres").removeClass("layui-hide");
  320. else
  321. $(".buyer-info .addres").addClass("layui-hide");
  322. buyerFn();
  323. });
  324. function buyerFn() {
  325. if (!buyerName && !buyerPhone && !buyerAddres)
  326. $(".buyer-info").addClass("layui-hide");
  327. else
  328. $(".buyer-info").removeClass("layui-hide");
  329. }
  330. var shoppingPhone=false,shoppingAddres=false;
  331. //商家手机号
  332. form.on('checkbox(shopping_phone)', function(data){
  333. shoppingPhone = data.elem.checked;
  334. if(data.elem.checked)
  335. $(".shopping-info .phone").removeClass("layui-hide");
  336. else
  337. $(".shopping-info .phone").addClass("layui-hide");
  338. shoppingFn();
  339. });
  340. //商家地址
  341. form.on('checkbox(shopping_addres)', function(data){
  342. shoppingAddres= data.elem.checked;
  343. if(data.elem.checked)
  344. $(".shopping-info .addres").removeClass("layui-hide");
  345. else
  346. $(".shopping-info .addres").addClass("layui-hide");
  347. shoppingFn();
  348. });
  349. function shoppingFn() {
  350. if (!shoppingPhone && !shoppingAddres)
  351. $(".shopping-info").addClass("layui-hide");
  352. else
  353. $(".shopping-info").removeClass("layui-hide");
  354. }
  355. // 底部信息
  356. $("input[name='bottom']").bind("input propertychange",function(event){
  357. $(".preview .button-info").text($("input[name='bottom']").val());
  358. });
  359. });
  360. function back() {
  361. location.href = ns.url("printer://shop/template/lists");
  362. }
  363. </script>
  364. {/block}