deliver.js 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2. var Controller = {
  3. index: function () {
  4. $('#apply').on('click', function () {
  5. const iframe = document.querySelector('#iframe2 iframe');
  6. if (iframe) {
  7. iframe.src = iframe.src; // 强制 reload iframe
  8. }
  9. });
  10. $('#dispatch').on('click', function () {
  11. const iframe = document.querySelector('#iframe3 iframe');
  12. if (iframe) {
  13. iframe.src = iframe.src; // 强制 reload iframe
  14. }
  15. });
  16. $('#lager').click(function () {
  17. $('#iframe1').contentWindow.location.reload('lager.html');
  18. });
  19. Controller.api.bindevent();
  20. },
  21. // lager: function () {
  22. // // 初始化表格参数配置
  23. // Table.api.init({
  24. // extend: {
  25. // index_url: 'deliver/lager', // 替换为你的后端接口地址
  26. // }
  27. // });
  28. //
  29. // var table = $("#table");
  30. //
  31. // // 初始化表格
  32. // table.bootstrapTable({
  33. // url: $.fn.bootstrapTable.defaults.extend.index_url,
  34. // toolbar: '#toolbar', // 工具栏选择器(如果有)
  35. // pk: 'id', // 主键字段
  36. // sortName: 'id', // 默认排序字段
  37. //
  38. // pagination: true, // 启用分页
  39. // sidePagination: 'server', // 服务器端分页
  40. // pageSize: 10, // 每页数量
  41. // pageList: [10, 25, 50, 100], // 可选页数
  42. // search: false, // 是否启用搜索
  43. // commonSearch: true, // 是否启用 FastAdmin 搜索栏
  44. // queryParams: function (params) {
  45. // return {
  46. // offset: params.offset,
  47. // limit: params.limit,
  48. // filter: JSON.stringify(params.filter), // 搜索条件
  49. // op: JSON.stringify(params.op) // 搜索操作符
  50. // };
  51. // },
  52. //
  53. // columns: [
  54. // {field: 'bach', title: '工单号'},
  55. // {field: 'tray_num', title: '托盘号'},
  56. // {field: 'matter_name', title: '物料名称'},
  57. // {field: 'bach', title: '批次号'},
  58. // {field: 'total_boxes', title: '每托箱数'},
  59. // {field: 'tray_num', title: '每层箱数'},
  60. // {field: 'box_num', title: '每托层数'},
  61. // {field: 'pallet_height', title: '每托高度'},
  62. // {field: 'larger_num', title: '总箱数'},
  63. // {field: 'manufacture_date', title: '生产日期'},
  64. // {field: 'code', title: '大件编码'},
  65. // // 添加更多字段...
  66. // ]
  67. // });
  68. //
  69. // // 绑定事件
  70. // Table.api.bindevent(table);
  71. // },
  72. lager: function () {
  73. // 初始化表格参数配置
  74. Table.api.init();
  75. this.table.first();
  76. this.table.second();
  77. Controller.api.bindevent();
  78. },
  79. table:{
  80. first:function (){
  81. var table = $("#table");
  82. // 初始化表格
  83. table.bootstrapTable({
  84. url: 'deliver/lager', // 请求的 URL
  85. pk: 'id', // 主键字段
  86. height: 700, // 表格的高度
  87. sortName: 'id', // 默认排序字段
  88. sortOrder: 'desc', // 默认排序顺序
  89. pageSize: 50, // 每页显示 10 条数据
  90. pageList: [10, 25, 50, 100,'ALL'], // 分页条数选择器
  91. searchFormVisible: true, // 是否显示搜索框
  92. onClickRow:function(row, $element, field)
  93. {
  94. // 点击行事件
  95. $("#myTabContent1 .form-commonsearch input[name='large_id']").val(row.id);
  96. $("#myTabContent1 .btn-refresh").trigger("click");
  97. },
  98. search: false, // 禁用默认搜索框
  99. showToggle: false, // 隐藏切换按钮
  100. showColumns: false, // 隐藏列选择按钮
  101. showExport: false, // 隐藏导出按钮
  102. columns: [
  103. [
  104. {checkbox: true},
  105. {field: 'id', title: 'ID', visible:false,operate: false},
  106. {field: 'bach', title: __('批次号'),operate: "LIKE"},
  107. {field: 'order_ddbh', title: __('销售订单号'),operate: "LIKE"},
  108. {field: 'l_flow', title: __('托盘号'), operate: false},
  109. {field: 'cpbm', title: __('成品编码'), operate: false},
  110. {field: 'matter_name', title: __('成品名称'), operate: 'LIKE',searchList: $.getJSON("deliver/matterName")},
  111. {field: 'total_boxes', title: "每托箱数", operate: false},
  112. {field: 'tray_num', title: "每层箱数", operate: false},
  113. {field: 'box_num', title: "每托层数", operate: false},
  114. {field: 'pallet_height', title: "每托高度", operate: false},
  115. {
  116. field: 'pallet_size',
  117. title: '托盘规格',
  118. operate: false,
  119. width: 120,
  120. formatter: function (value, row, index) {
  121. return row.pallet_length + ' * ' + row.pallet_width;
  122. }
  123. },
  124. // {field: 'small_num', title: "托盘数", operate: false},
  125. {field: 'larger_num', title: "总箱数", operate: false},
  126. {field: 'num', title: "本次打包数", operate: false},
  127. {field: 'small_num', title: "每箱数量", operate: false},
  128. {field: 'danwei', title: "单位", operate: false},
  129. {field: 'manufacture_date', title: '生产日期', operate: 'RANGE', addclass: 'datetimerange',datetimeFormat:'YYYY-MM-DD', formatter: Table.api.formatter.datetime},
  130. {field: 'code', title: __('大件编码'), operate: false},
  131. // {field: 'small_num', title: __('小件数'),operate: false},
  132. ]
  133. ]
  134. });
  135. // 监听复选框点击事件
  136. $('#table').on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function(e, rows) {
  137. var selectedData = table.bootstrapTable('getSelections'); // 获取选中的数据
  138. // 计算选中的大件数量和小件数量
  139. // 大件数量(选中的行数)
  140. let largeItemCount = 0;
  141. let smallItemCount = 0;
  142. selectedData.forEach(row => {
  143. largeItemCount += Number(row.total_boxes) || 0;
  144. smallItemCount += Number(row.total_boxes * row.small_num) || 0;
  145. });
  146. $('p span').eq(1).text(largeItemCount);
  147. $('p span').eq(3).text(smallItemCount);
  148. // var largeItemCount = selectedData.length;
  149. // var largeItemCount = selectedData.reduce(function(total, row) {
  150. // return total + (row.total_boxes || 0);
  151. // }, 0);
  152. //
  153. // var smallItemCount = selectedData.reduce(function(total, row) {
  154. // return total + (row.small_num || 0);
  155. // }, 0);
  156. //
  157. // // 更新页面上的提示信息
  158. // $('p span').eq(1).text(largeItemCount); // 更新大件数量
  159. // $('p span').eq(3).text(smallItemCount); // 更新小件数量
  160. });
  161. //导出发货按钮
  162. $('.btn-print').on('click',function () {
  163. var ids = Table.api.selectedids(table);
  164. if (ids.length === 0){
  165. alert('至少选择一个大件');
  166. }
  167. var lager = ids.toString();
  168. // window.location.href = 'print?lager_id='+lager;
  169. Fast.api.ajax({
  170. url:'deliver/print',
  171. data:{lager_id:lager},
  172. },function (data,res) {
  173. if (res.code == 1){
  174. window.location.href = '/'+res.data;
  175. table.bootstrapTable('refresh');
  176. }
  177. return false;
  178. },function (data,res) {
  179. if (res.code == 0){
  180. layer.confirm(res.msg);
  181. }
  182. return false;
  183. })
  184. })
  185. // 为表格绑定事件
  186. Table.api.bindevent(table);
  187. //去掉时间区间记忆
  188. table.on('post-body.bs.table',function (e,settings,json,xhr) {
  189. $('.datetimerange').each(function () {
  190. $(this).attr('autocomplete','off');
  191. })
  192. });
  193. }, second:function(){
  194. //小件列表
  195. var smallTable = $('#small_table');
  196. smallTable.bootstrapTable({
  197. url:'deliver/smallList',
  198. height: 600,
  199. toolbar: '#toolbar1',
  200. search:false,
  201. // commonSearch:false,
  202. showToggle:false,
  203. showColumns:false,
  204. showExport:false,
  205. columns: [
  206. [
  207. {field: 'large_id',title: __('大件id'),operate: 'LIKE',visible:false},
  208. {field: 'code', title: __('小件标签代码'),operate: false},
  209. {field: 'l_flow', title: __('当前序号'),operate: false},
  210. {field: 'print_num', title: __('打印次数'),operate: false},
  211. {field: 'status', title: __('状态'),searchList: {"0":'正常',"1":'已删除'},operate: false,formatter: Table.api.formatter.status},
  212. ]
  213. ]
  214. });
  215. // 为表格绑定事件
  216. Table.api.bindevent(smallTable);
  217. }
  218. },
  219. apply: function () {
  220. // 初始化表格参数配置
  221. Table.api.init({
  222. extend: {
  223. index_url: 'deliver/apply' + location.search,
  224. goods_url: 'deliver/goods',
  225. del_url:'deliver/apply_del',
  226. table:'deliver'
  227. }
  228. });
  229. var table = $("#table2");
  230. // 初始化表格
  231. table.bootstrapTable({
  232. url: $.fn.bootstrapTable.defaults.extend.index_url,
  233. pk: 'id',
  234. height:400,
  235. sortName: 'id',
  236. searchFormVisible:true,
  237. search:false,
  238. showToggle:false,
  239. showColumns:false,
  240. showExport:false,
  241. fixedColumns: true,
  242. fixedRightNumber: 1,
  243. columns: [
  244. [
  245. {checkbox: true},
  246. {field: 'id', title: __('Id'),visible:false,operate: false},
  247. {field: 'large_num', title: '托盘数量', operate: false},
  248. {field: 'matter_name', title: '产品名称', operate: 'LIKE',searchList: $.getJSON("deliver/matterName")},
  249. {field: 'total_boxes', title: '每箱托数', operate: false},
  250. {field: 'tray_num', title: '每层箱数', operate: false},
  251. {field: 'box_num', title: '每托层数', operate: false},
  252. {field: 'pallet_height', title: '托盘高度', operate: false},
  253. {
  254. field: 'pallet_size',
  255. title: '托盘规格',
  256. operate: false,
  257. width: 120,
  258. formatter: function (value, row, index) {
  259. return row.pallet_length + ' * ' + row.pallet_width;
  260. }
  261. },
  262. // {field: 'small_num', title: '总箱数', operate: false},
  263. {field: 'larger_num', title: '总箱数', operate: false},
  264. // {field: 'matter_no', title: '产品编码', operate: false},
  265. {field: 'username', title: '所属用户', operate: 'LIKE'},
  266. // {field: 'large_num', title: '大件数量', operate: false},
  267. // {field: 'small_num', title: '小件数量', operate: false},
  268. {field: 'create_time', title: '创建时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  269. {field: 'file_dir', title: '下载路径', operate: false,formatter: function (value,row,index) {
  270. if (row.status == 0){
  271. return "<a href=/"+value+">点击下载</a>";
  272. }else {
  273. return "不支持下载";
  274. }
  275. }},
  276. {field: 'status', title: '状态', operate: 'LIKE',searchList: {"0":'待发货',"1":'已删除'}, formatter: Table.api.formatter.status},
  277. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  278. ]
  279. ],
  280. });
  281. // 为表格绑定事件
  282. Table.api.bindevent(table);
  283. //发货按钮
  284. $('.btn-goods').on('click',function () {
  285. var ids = Table.api.selectedids(table);
  286. if (ids.length === 0){
  287. alert('至少选择一个订单');
  288. }
  289. var id_str = ids.toString();
  290. Fast.api.open('deliver/goods?ids='+id_str,'发货信息',{area:["60%","60%"]})
  291. });
  292. //去掉时间区间输入记忆
  293. table.on('post-body.bs.table',function (e,settings,json,xhr) {
  294. $('.datetimerange').each(function () {
  295. $(this).attr('autocomplete','off');
  296. })
  297. });
  298. Controller.api.bindevent();
  299. },
  300. goods: function () {
  301. $('#apply_btn').click(function () {
  302. var ids = $('#goods_id').val();
  303. var order_number = $('#c-order_number').val();
  304. if (order_number == null || order_number === ''){
  305. layer.confirm('订单号不能为空');
  306. }
  307. var deliveryman = $('#c-deliveryman').val();
  308. if (deliveryman == null || deliveryman === ''){
  309. layer.confirm('司机名称不能为空');
  310. }
  311. var shr_phone = $('#c-shr_phone').val();
  312. if (shr_phone == null || shr_phone === ''){
  313. layer.confirm('手机号不能为空');
  314. }
  315. var plate_number = $('#c-plate_number').val();
  316. if (plate_number == null || plate_number === ''){
  317. layer.confirm('车牌号不能为空');
  318. }
  319. var note = $('#c-note').val();
  320. Fast.api.ajax({
  321. url:'deliver/apply_add',
  322. data:{
  323. ids:ids,
  324. order_number:order_number,
  325. deliveryman:deliveryman,
  326. shr_phone:shr_phone,
  327. plate_number:plate_number,
  328. note:note,
  329. }
  330. },function (data,res) {
  331. parent.Toastr.success("成功");
  332. Fast.api.close();
  333. window.parent.location.reload();
  334. return false;
  335. },function (data) {
  336. parent.Toastr.error('失败');
  337. Fast.api.close();
  338. window.parent.location.reload();
  339. return false;
  340. })
  341. });
  342. Controller.api.bindevent();
  343. },
  344. dispatch: function () {
  345. // 初始化表格参数配置
  346. Table.api.init({
  347. extend: {
  348. index_url: 'deliver/dispatch' + location.search,
  349. del_url:'deliver/dispatch_del',
  350. table:'deliver'
  351. }
  352. });
  353. var table = $("#table3");
  354. // 初始化表格
  355. table.bootstrapTable({
  356. url: $.fn.bootstrapTable.defaults.extend.index_url,
  357. pk: 'id',
  358. height:400,
  359. sortName: 'id',
  360. searchFormVisible:true,
  361. showToggle:false,
  362. showColumns:false,
  363. showExport:false,
  364. fixedColumns: true,
  365. fixedRightNumber: 1,
  366. columns: [
  367. [
  368. {checkbox: true},
  369. {field: 'id', title: __('Id'), operate: 'LIKE',visible:false,operate: false},
  370. {field: 'shdh', title: '收货单号', operate: 'LIKE', operate: false},
  371. {field: 'order_number', title: '订单号', operate: 'LIKE'},
  372. {field: 'deliveryman', title: '司机', operate: 'LIKE', operate: false},
  373. {field: 'plate_number', title: '车牌号', operate: 'LIKE', operate: false},
  374. {field: 'supplier_name', title: '供应商名称', operate: 'LIKE'},
  375. {field: 'create_time', title: '发货时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  376. {field: 'buttons',
  377. width: "120px",
  378. title: __('发货单打印'),
  379. operate: false,
  380. table: table,
  381. events: Table.api.events.operate,
  382. buttons: [
  383. {
  384. name: 'ajax',
  385. text: __('点击打印'),
  386. title: __('点击打印'),
  387. classname: 'btn btn-xs btn-success btn-magic btn-ajax',
  388. icon: 'fa fa-magic',
  389. url: 'deliver/printqrcode/id/{ids}',
  390. success: function (data, res) {
  391. if (res.code === 1) {
  392. const arr = res.data.data;
  393. let totalTray = 0;
  394. let totalBox = 0;
  395. const productNames = [];
  396. const productQuantities = [];
  397. // 遍历数据,统计数量
  398. for (let i = 0; i < arr.length; i++) {
  399. totalTray += parseInt(arr[i].large_num || 0);
  400. totalBox += parseInt(arr[i].larger_num || 0);
  401. productNames.push(arr[i].matter_name);
  402. productQuantities.push(arr[i].total_boxes * arr[i].larger_num);
  403. }
  404. // 根据出货数量计算手工盒子数量
  405. const manualBoxes = productQuantities.reduce((total, qty) => total + qty, 0);
  406. // 纸质卡片数量可按业务设定(例:每托2张)
  407. const paperCards = totalTray * totalBox;
  408. let html = `
  409. <div style="width: 1100px; height: 100px; position: relative;">
  410. <div style="float: left">
  411. <div style="width: 1000px; font-size: 28px; font-weight: bold; text-align: center; line-height: 50px;">${res.data.supplier_name}</div>
  412. <div style="width: 1000px; font-size: 24px; text-align: center; line-height: 50px;">送货单</div>
  413. </div>
  414. <div id="qrcode" style="position: absolute; right: 100px; top: -5px; width: 105px; height: 105px;">
  415. <img src="${res.data.qrcode_add}" style="width: 105px; height: 105px;" id="qrcode_image"/>
  416. </div>
  417. </div>
  418. <table style="margin-bottom: 10px; width: 1186px; font-weight: 500; border-collapse: collapse;">
  419. <tr>
  420. <td colspan="6" style="border: none;">客户名称:河南中烟工业有限责任公司黄金叶生产制造中心</td>
  421. <td colspan="4" style="border: none;">送货单号:<span id="shdh">${res.data.shdh}</span></td>
  422. </tr>
  423. <tr>
  424. <td colspan="6" style="border: none;">送货地址:河南省郑州市经开区第三大街9号</td>
  425. <td colspan="4" style="border: none;">送货日期:<span id="shrq_date">${res.data.shrq_date}</span></td>
  426. </tr>
  427. </table>
  428. <div style="width: 1070px; font-size: 20px; text-align: center; border: 1px solid black; border-bottom: none;">
  429. ${res.data.order_ddbh || ''}${res.data.note || ''}
  430. </div>
  431. <table style="width: 1070px; border-collapse: collapse; table-layout: fixed; font-size: 16px; text-align: center; margin-top: 0;">
  432. <tr style="font-weight: bold;">
  433. <th style="border: 1px solid black;text-align: center;">托盘序号</th>
  434. <th style="border: 1px solid black;text-align: center; width: 360px;">产品名称</th>
  435. <th style="border: 1px solid black;text-align: center;">每托箱数</th>
  436. <th style="border: 1px solid black;text-align: center;">每层箱数</th>
  437. <th style="border: 1px solid black;text-align: center;">每托层数</th>
  438. <th style="border: 1px solid black;text-align: center;">每托高度</th>
  439. <th style="border: 1px solid black;text-align: center;">托盘规格</th>
  440. <th style="border: 1px solid black;text-align: center;">托盘数</th>
  441. <th style="border: 1px solid black;text-align: center;">总箱数</th>
  442. </tr>
  443. `;
  444. for (let i = 0; i < arr.length; i++) {
  445. html += `
  446. <tr>
  447. <td style="border: 1px solid black;">第${arr[i].large_ber}托</td>
  448. <td style="border: 1px solid black;">${arr[i].matter_name}</td>
  449. <td style="border: 1px solid black;">${arr[i].total_boxes}</td>
  450. <td style="border: 1px solid black;">${arr[i].tray_num}</td>
  451. <td style="border: 1px solid black;">${arr[i].box_num}</td>
  452. <td style="border: 1px solid black;">${arr[i].pallet_height}</td>
  453. <td style="border: 1px solid black;">${arr[i].pallet_length} * ${arr[i].pallet_width}</td>
  454. <td style="border: 1px solid black;">${arr[i].large_num}</td>
  455. <td style="border: 1px solid black;">${arr[i].larger_num}</td>
  456. </tr>
  457. `;
  458. }
  459. const fillCount = 15 - arr.length;
  460. for (let i = 0; i < fillCount; i++) {
  461. html += `
  462. <tr>
  463. <td style="border: 1px solid black;">&nbsp;</td>
  464. <td style="border: 1px solid black;"></td>
  465. <td style="border: 1px solid black;"></td>
  466. <td style="border: 1px solid black;"></td>
  467. <td style="border: 1px solid black;"></td>
  468. <td style="border: 1px solid black;"></td>
  469. <td style="border: 1px solid black;"></td>
  470. <td style="border: 1px solid black;"></td>
  471. <td style="border: 1px solid black;"></td>
  472. </tr>
  473. `;
  474. }
  475. html += `
  476. <tr style="font-weight: bold;">
  477. <td style="border: 1px solid black;">合计:</td>
  478. <td style="border: 1px solid black;"></td>
  479. <td style="border: 1px solid black;"></td>
  480. <td style="border: 1px solid black;"></td>
  481. <td style="border: 1px solid black;"></td>
  482. <td style="border: 1px solid black;"></td>
  483. <td style="border: 1px solid black;"></td>
  484. <td style="border: 1px solid black;">${totalTray}</td>
  485. <td style="border: 1px solid black;">${totalBox}</td>
  486. </tr>
  487. </table>
  488. <table style="margin-top: 20px; width: 1070px; border-collapse: collapse; font-size: 18px;">
  489. <tr>
  490. <td colspan="${productNames.length + 2}" style="border: 1px solid black; text-align: left;">
  491. 总共出货:${totalBox} 箱 = ${totalTray} 托(手工盒子:${manualBoxes} 套,纸质卡片:${paperCards} 张)
  492. </td>
  493. </tr>
  494. <tr>
  495. <td style="border: 1px solid black; text-align: center;">产品名称</td>
  496. ${productNames.map(name => `<td style="border: 1px solid black; text-align: center;">${name}</td>`).join('')}
  497. <td style="border: 1px solid black; text-align: center;">合计</td>
  498. </tr>
  499. <tr>
  500. <td style="border: 1px solid black; text-align: center;">出货数量</td>
  501. ${productQuantities.map(qty => `<td style="border: 1px solid black; text-align: center;">${qty}</td>`).join('')}
  502. <td style="border: 1px solid black; text-align: center;">${manualBoxes}</td>
  503. </tr>
  504. </table>
  505. <div style="margin-top: 20px; font-size: 14px; font-weight: bold; border: 1px solid black; padding: 10px; text-align: left; width: 1070px;">
  506. 共 ${totalTray} 托
  507. <br/>
  508. 备注:
  509. <br/>(1) 用唛头笔写上托盘序号,托盘唛头打印贴在每托盘上面,打托的时候混托注意摆放和高度,另外不要漏掉了。
  510. <br/>(2) 每托烟盒中间放瓦楞,最上面盖个木板,缠绕膜缠结实,护角护好,打打包带,井子形打包
  511. <br/>(3) 配托后,请提供具体托盘高度及托盘重量。
  512. </div>
  513. `;
  514. $("#printcode").html(html);
  515. var ee = $('#qrcode_image').attr('src',res.data.qrcode_add);
  516. // 将打印的区域赋值,进行打印
  517. ee.on('load',function () {
  518. var printHTML = document.querySelector('#printcode').innerHTML;
  519. window.document.body.innerHTML = printHTML;
  520. window.print();
  521. window.location.reload(); // 打印完成后重新加载页面
  522. })
  523. // const printHTML = document.querySelector('#printcode').innerHTML;
  524. // document.body.innerHTML = printHTML;
  525. // window.print();
  526. // window.location.reload();
  527. }
  528. return false;
  529. },
  530. error: function (data, ret) {
  531. return false;
  532. }
  533. },
  534. ],
  535. formatter: Table.api.formatter.buttons
  536. },
  537. {field: 'status', title: '状态', operate: 'LIKE',searchList: {"0":'已发货',"1":'已删除'}, formatter: Table.api.formatter.status},
  538. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  539. ]
  540. ],
  541. });
  542. // 为表格绑定事件
  543. Table.api.bindevent(table);
  544. //去掉时间区间输入记忆
  545. table.on('post-body.bs.table',function (e,settings,json,xhr) {
  546. $('.datetimerange').each(function () {
  547. $(this).attr('autocomplete','off');
  548. })
  549. });
  550. Controller.api.bindevent();
  551. },
  552. receive: function () {
  553. // 初始化表格参数配置
  554. Table.api.init({
  555. extend: {
  556. index_url: 'deliver/receive' + location.search,
  557. del_url:'deliver/receive_del',
  558. table:'deliver'
  559. }
  560. });
  561. var table = $("#table");
  562. // 初始化表格
  563. table.bootstrapTable({
  564. url: $.fn.bootstrapTable.defaults.extend.index_url,
  565. pk: 'id',
  566. height:500,
  567. sortName: 'id',
  568. searchFormVisible:true,
  569. showToggle:false,
  570. showColumns:false,
  571. showExport:false,
  572. fixedColumns: true,
  573. fixedRightNumber: 1,
  574. columns: [
  575. [
  576. {checkbox: true},
  577. {field: 'id', title: __('Id'),visible:false,operate: false},
  578. {field: 'shdh', title: '送货单号', operate: false},
  579. {field: 'order_number', title: '订单号', operate: 'LIKE'},
  580. {field: 'deliveryman', title: '司机', operate: false},
  581. {field: 'plate_number', title: '车牌号', operate: false},
  582. {field: 'supplier_name', title: '供应商名称', operate: 'LIKE'},
  583. {field: 'create_time', title: '发货时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime},
  584. {field: 'buttons', operate: false,
  585. width: "120px",
  586. title: __('发货单打印'),
  587. table: table,
  588. events: Table.api.events.operate,
  589. buttons: [
  590. {
  591. name: 'ajax',
  592. text: __('点击打印'),
  593. title: __('点击打印'),
  594. classname: 'btn btn-xs btn-success btn-magic btn-ajax',
  595. icon: 'fa fa-magic',
  596. url: 'deliver/printqrcode/id/{ids}',
  597. // confirm: '确认发送',
  598. success: function (data,res) {
  599. if (res.code === 1){
  600. var arr = res.data.data;
  601. var note='';
  602. var html = '<div style="width: 1100px;height: 100px;position: relative;">\n' +
  603. ' <div style="float: left">\n' +
  604. ' <div style="width: 1000px;font-weight: 400;font-size: 28px;text-align: center;line-height: 50px;" class="company">'+res.data.supplier_name+'</div>\n' +
  605. ' <div style="width: 1000px;font-weight: 400;font-size: 24px;text-align: center;line-height: 50px;">送货单</div>\n' +
  606. ' </div>\n' +
  607. ' <div id="qrcode" style="display:inline-block;width: 105px;height: 105px;position: absolute;right: 100px;top: -5px;">\n' +
  608. ' <img src="" style="width: 105px;height: 105px;" id="qrcode_image"/>\n' +
  609. ' </div>\n' +
  610. ' </div>\n' +
  611. ' <table class="tg1" style="margin-top: 3px;border-collapse:collapse;border-spacing:0;font-weight:500;width:1186px">\n' +
  612. ' <tr class="info">\n' +
  613. ' <td colspan="6" style="border:none">客户名称:河南中烟工业有限责任公司黄金叶生产制造中心</td>\n' +
  614. ' <td colspan="4" style="border:none">送货单号:<span style="font-size: 16px;" id="shdh">'+res.data.shdh+'</span></td>\n' +
  615. ' </tr>\n' +
  616. ' <tr class="info">\n' +
  617. ' <td colspan="6" style="border:none">送货地址:河南省郑州市经开区第三大街9号</td>\n' +
  618. ' <td colspan="4" style="border:none">送货日期:<span style="font-size: 16px;" id="shrq_date">'+res.data.shrq_date+'</span></td>\n' +
  619. ' </tr>\n' +
  620. ' </table>\n' +
  621. ' <br>\n' +
  622. ' <table class="tg1" style="table-layout:fixed;width: 1186px;border-collapse:collapse;border-spacing:0;font-weight:500; position: relative;" id="table">'+
  623. ' <tr><th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">物料名称</th>' +
  624. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">生产批号</th>' +
  625. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">大件</th>' +
  626. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">小件</th>' +
  627. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">单位</th>' +
  628. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">实发数量</th>' +
  629. ' <th class="tg-s6z2" style="font-family:Arial, sans-serif;font-size:20px;text-align:center;font-weight:500;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:black;">备注</th>' +
  630. ' <th id="explain" rowspan="'+(res.data.count+1)+'" width="7%" style="border: none"><span style="writing-mode: tb-rl;height: 300px;font-size:16px;text-align: center;">' +
  631. ' 蓝联(回):业务 黄联(回):运输 '+'<br>'+'白联:存根 红联:财务 绿联:客户</span></th></tr>';
  632. for (var i=0;i < arr.length;i++){
  633. html+= '<tr><td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].matter_name+'</td>';
  634. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+(arr[i].bach_num?arr[i].bach_num:'')+'</td>';
  635. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].large_num+'</td>';
  636. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].small_num+'</td>';
  637. if(arr[i].mater_type==1){
  638. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">万张</td>';
  639. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].l_num+'</td>';
  640. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].small_num+'件*'+parseInt(arr[i].num)+'张'+'</td>';
  641. }else if (arr[i].mater_type==2){
  642. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">kg</td>';
  643. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].l_weight +'</td>';
  644. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].small_num+'件*'+parseFloat(arr[i].num)/1000+'kg'+'</td>';
  645. }else if (arr[i].mater_type==3){
  646. html+= '<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">万支</td>';
  647. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+parseFloat(arr[i].num)*parseFloat(arr[i].small_num)/10000+'</td>';
  648. html+='<td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+arr[i].small_num+'件*'+parseInt(arr[i].num)+'支'+'</td>';
  649. }
  650. }
  651. html+= '<tr><td class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">送货单备注</td>' +
  652. ' <td colspan="6" class="tg-031e" style="font-family:Arial, sans-serif;font-size:18px;text-align:center;border-style:solid;border-width:1px;overflow:hidden;word-break:break-all;border-color:black;">'+res.data.note+'</td></tr>'+
  653. ' </table>\n' +
  654. ' <table class="tg2" style="margin-top: 3px;border-collapse:collapse;border-spacing:0;font-weight:500;width:1086px;font-size: 16px;">\n' +
  655. ' <tr class="footer">\n' +
  656. ' <td colspan="3">发货单位:<span class="company">'+res.data.supplier_name+'</span></td>\n' +
  657. ' <td colspan="3">司机/司机电话:<span id="deliveryman">'+res.data.deliveryman+'&nbsp;&nbsp;'+res.data.shr_phone+'</span></td>\n' +
  658. ' <td colspan="3">车牌号:<span id="carid">'+res.data.plate_number+'</span></td>\n' +
  659. ' </tr>\n' +
  660. ' <tr class="footer">\n' +
  661. ' <td colspan="7">发货单位地址:<span id="address">'+res.data.address+'</span></td>\n' +
  662. ' <td colspan="3">收货单位(签名、盖章)</td>\n' +
  663. ' </tr>\n' +
  664. ' </table>'
  665. $("#printcode").html(html)
  666. var ee = $('#qrcode_image').attr('src',res.data.qrcode_add);
  667. // 将打印的区域赋值,进行打印
  668. ee.on('load',function () {
  669. var printHTML = document.querySelector('#printcode').innerHTML;
  670. window.document.body.innerHTML = printHTML;
  671. window.print();
  672. window.location.reload(); // 打印完成后重新加载页面
  673. })
  674. }
  675. return false;
  676. },
  677. error: function (data, ret) {
  678. return false;
  679. }
  680. },
  681. ],
  682. formatter: Table.api.formatter.buttons
  683. },
  684. {field: 'status', title: '状态', operate: 'LIKE',searchList: {"0":'未收货',"2":'已收货'},defaultValue:'1', formatter: Table.api.formatter.status},
  685. {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  686. ]
  687. ],
  688. });
  689. $('#receive').click(function (){
  690. var shdh = $('#shdh').val();
  691. if (shdh!=''){
  692. $.get('deliver/receive_add',{'shdh':shdh},function (res){
  693. if (res.code==1){
  694. //修改成功
  695. //1. 提示
  696. Toastr.success(res.msg)
  697. //2. 刷新页面
  698. table.bootstrapTable('refresh');
  699. }else{
  700. Toastr.error(res.msg)
  701. }
  702. })
  703. }
  704. })
  705. // 为表格绑定事件
  706. Table.api.bindevent(table);
  707. Controller.api.bindevent();
  708. },
  709. api: {
  710. bindevent: function () {
  711. Form.api.bindevent($("form[role=form]"));
  712. }
  713. }
  714. };
  715. return Controller;
  716. });