change_shifts.html 18 KB

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