define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'editable'], function ($, undefined, Backend, Table, Form,undefined) { var Controller = { index: function () { // $('#lager').on('click', function () { // const iframe = document.querySelector('#iframe1 iframe'); // if (iframe) { // iframe.src = iframe.src; // 强制 reload iframe // } // }); $('#apply').on('click', function () { const iframe = document.querySelector('#iframe2 iframe'); if (iframe) { iframe.src = iframe.src; // 强制 reload iframe } }); $('#dispatch').on('click', function () { const iframe = document.querySelector('#iframe3 iframe'); if (iframe) { iframe.src = iframe.src; // 强制 reload iframe } }); // $('#lager').click(function () { // $('#iframe1').contentWindow.location.reload('lager.html'); // }); Controller.api.bindevent(); }, // lager: function () { // // 初始化表格参数配置 // Table.api.init({ // extend: { // index_url: 'deliver/lager', // 替换为你的后端接口地址 // } // }); // // var table = $("#table"); // // // 初始化表格 // table.bootstrapTable({ // url: $.fn.bootstrapTable.defaults.extend.index_url, // toolbar: '#toolbar', // 工具栏选择器(如果有) // pk: 'id', // 主键字段 // sortName: 'id', // 默认排序字段 // // pagination: true, // 启用分页 // sidePagination: 'server', // 服务器端分页 // pageSize: 10, // 每页数量 // pageList: [10, 25, 50, 100], // 可选页数 // search: false, // 是否启用搜索 // commonSearch: true, // 是否启用 FastAdmin 搜索栏 // queryParams: function (params) { // return { // offset: params.offset, // limit: params.limit, // filter: JSON.stringify(params.filter), // 搜索条件 // op: JSON.stringify(params.op) // 搜索操作符 // }; // }, // // columns: [ // {field: 'bach', title: '工单号'}, // {field: 'tray_num', title: '托盘号'}, // {field: 'matter_name', title: '物料名称'}, // {field: 'bach', title: '批次号'}, // {field: 'total_boxes', title: '每托箱数'}, // {field: 'tray_num', title: '每层箱数'}, // {field: 'box_num', title: '每托层数'}, // {field: 'pallet_height', title: '每托高度'}, // {field: 'larger_num', title: '总箱数'}, // {field: 'manufacture_date', title: '生产日期'}, // {field: 'code', title: '大件编码'}, // // 添加更多字段... // ] // }); // // // 绑定事件 // Table.api.bindevent(table); // }, lager: function () { // 初始化表格参数配置 Table.api.init(); this.table.first(); this.table.second(); Controller.api.bindevent(); }, table:{ first:function (){ var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: 'deliver/lager', // 请求的 URL pk: 'id', // 主键字段 height: 700, // 表格的高度 sortName: 'id', // 默认排序字段 sortOrder: 'desc', // 默认排序顺序 pageSize: 50, // 每页显示 10 条数据 pageList: [10, 25, 50, 100,'ALL'], // 分页条数选择器 searchFormVisible: true, // 是否显示搜索框 onClickRow:function(row, $element, field) { // 点击行事件 $("#myTabContent1 .form-commonsearch input[name='large_id']").val(row.id); $("#myTabContent1 .btn-refresh").trigger("click"); }, search: false, // 禁用默认搜索框 showToggle: false, // 隐藏切换按钮 showColumns: false, // 隐藏列选择按钮 showExport: false, // 隐藏导出按钮 columns: [ [ {checkbox: true}, {field: 'id', title: 'ID', visible:false,operate: false}, {field: 'bach', title: __('批次号'),operate: "LIKE"}, {field: 'order_ddbh', title: __('销售订单号'),operate: "LIKE"}, {field: 'l_flow', title: __('托盘号'), operate: false}, {field: 'cpbm', title: __('成品编码'), operate: false}, {field: 'matter_name', title: __('成品名称'), operate: 'LIKE',searchList: $.getJSON("deliver/matterName")}, {field: 'total_boxes', title: "每托箱数", operate: false}, {field: 'tray_num', title: "每层箱数", operate: false}, {field: 'box_num', title: "每托层数", operate: false}, {field: 'pallet_height', title: "每托高度", operate: false}, { field: 'pallet_size', title: '托盘规格', operate: false, width: 120, formatter: function (value, row, index) { return row.pallet_length + ' * ' + row.pallet_width; } }, // {field: 'small_num', title: "托盘数", operate: false}, {field: 'larger_num', title: "总箱数", operate: false}, {field: 'num', title: "本次打包数", operate: false}, {field: 'small_num', title: "每箱数量", operate: false}, {field: 'danwei', title: "单位", operate: false}, {field: 'manufacture_date', title: '生产日期', operate: 'RANGE', addclass: 'datetimerange',datetimeFormat:'YYYY-MM-DD', formatter: Table.api.formatter.datetime}, {field: 'code', title: __('大件编码'), operate: false}, // {field: 'small_num', title: __('小件数'),operate: false}, ] ] }); // 监听复选框点击事件 $('#table').on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function(e, rows) { var selectedData = table.bootstrapTable('getSelections'); // 获取选中的数据 // 计算选中的大件数量和小件数量 // 大件数量(选中的行数) let largeItemCount = 0; let smallItemCount = 0; selectedData.forEach(row => { largeItemCount += Number(row.total_boxes) || 0; smallItemCount += Number(row.total_boxes * row.small_num) || 0; }); $('p span').eq(1).text(largeItemCount); $('p span').eq(3).text(smallItemCount); // var largeItemCount = selectedData.length; // var largeItemCount = selectedData.reduce(function(total, row) { // return total + (row.total_boxes || 0); // }, 0); // // var smallItemCount = selectedData.reduce(function(total, row) { // return total + (row.small_num || 0); // }, 0); // // // 更新页面上的提示信息 // $('p span').eq(1).text(largeItemCount); // 更新大件数量 // $('p span').eq(3).text(smallItemCount); // 更新小件数量 }); //导出发货按钮 $('.btn-print').on('click',function () { var ids = Table.api.selectedids(table); if (ids.length === 0){ alert('至少选择一个大件'); } var lager = ids.toString(); // window.location.href = 'print?lager_id='+lager; Fast.api.ajax({ url:'deliver/print', data:{lager_id:lager}, },function (data,res) { if (res.code == 1){ window.location.href = '/'+res.data; table.bootstrapTable('refresh'); } return false; },function (data,res) { if (res.code == 0){ layer.confirm(res.msg); } return false; }) }) // 为表格绑定事件 Table.api.bindevent(table); //去掉时间区间记忆 table.on('post-body.bs.table',function (e,settings,json,xhr) { $('.datetimerange').each(function () { $(this).attr('autocomplete','off'); }) }); }, second:function(){ //小件列表 var smallTable = $('#small_table'); smallTable.bootstrapTable({ url:'deliver/smallList', height: 600, toolbar: '#toolbar1', search:false, // commonSearch:false, showToggle:false, showColumns:false, showExport:false, columns: [ [ {field: 'large_id',title: __('大件id'),operate: 'LIKE',visible:false}, {field: 'code', title: __('小件标签代码'),operate: false}, {field: 'l_flow', title: __('当前序号'),operate: false}, {field: 'print_num', title: __('打印次数'),operate: false}, {field: 'status', title: __('状态'),searchList: {"0":'正常',"1":'已删除'},operate: false,formatter: Table.api.formatter.status}, ] ] }); // 为表格绑定事件 Table.api.bindevent(smallTable); } }, apply: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'deliver/apply' + location.search, goods_url: 'deliver/goods', del_url: 'deliver/apply_del', table: 'deliver', update_url: 'deliver/apply_update' } }); var table = $("#table2"); var detailTable = $("#table-detail"); // 初始化主表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', // height: 300, sortName: 'id', searchFormVisible: true, search: false, showToggle: false, showColumns: false, showExport: false, fixedColumns: false, onClickRow: function(row, $element) { // 移除之前选中的行样式 table.find('tr.selected').removeClass('selected'); // 添加当前选中行样式 $element.addClass('selected'); // 加载明细数据 detailTable.bootstrapTable('refresh', { url: 'deliver/bachids?bach_ids=' + encodeURIComponent(row.bach_ids) }); }, onEditableSave: function (field, row, oldValue, $el) { // Send AJAX request to save the changes $.ajax({ url: $.fn.bootstrapTable.defaults.extend.update_url, type: 'POST', data: { id: row.id, field: field, value: row[field] }, success: function (data) { if (data.code !== 1) { // If update fails, revert the change $el.bootstrapTable('updateCell', { index: row._index, field: field, value: oldValue }); Toastr.error(data.msg || '更新失败'); } else { Toastr.success('更新成功'); } }, error: function () { // On error, revert the change $el.bootstrapTable('updateCell', { index: row._index, field: field, value: oldValue }); Toastr.error('网络错误,更新失败'); } }); }, columns: [ [ // {checkbox: true}, {field: 'id', title: __('Id'), visible: false, operate: false}, {field: 'bach_ids', title: '单据编号', operate: false}, {field: 'total_quantity', title: '总发货数量', operate: false}, {field: 'total_boxes', title: '总箱数', operate: false}, {field: 'total_pallets', title: '总托盘数', operate: false}, {field: 'product_count', title: '产品数量', operate: false}, {field: 'sys_rq', title: '日期', operate: false}, {field: 'created_at', title: '操作时间', operate: false}, { field: 'operate', title: '操作', align: 'center', formatter: function(value, row, index) { return ' 发货'; } } ] ] }); // 发货按钮事件 table.on('click', '.btn-goods', function(e) { e.stopPropagation(); var id = $(this).data('id'); Fast.api.open('deliver/goods?ids=' + id, '发货信息', {area: ["60%", "60%"]}); }); // 初始化明细表格 detailTable.bootstrapTable({ pk: 'id', sortName: 'id', search: false, pagination: true, // 开启分页 pageSize: 50, // 设置每页显示数量,设为大于总数据量即可显示全部 pageList: [10, 25, 50, 100],// 可选的每页显示数量 height: 400, // sidePagination: 'server', // pageSize: 10, toolbar: '#toolbar-detail', onEditableSave: function (field, row, oldValue, $el) { $.ajax({ url: $.fn.bootstrapTable.defaults.extend.update_url, type: 'POST', data: { id: row.id, field: field, value: row[field] }, success: function (data) { if (data.code !== 1) { $el.bootstrapTable('updateCell', { index: row._index, field: field, value: oldValue }); Toastr.error(data.msg || '更新失败'); } else { Toastr.success('更新成功'); } }, error: function () { $el.bootstrapTable('updateCell', { index: row._index, field: field, value: oldValue }); Toastr.error('网络错误,更新失败'); } }); }, columns: [ [ // {checkbox: true}, {field: 'id', title: __('Id'), visible: false, operate: false}, {field: 'pallet', title: '序号', operate: false}, {field: 'pallet_sequence', title: '托盘序号', operate: false, editable: { type: 'text', title: '托盘序号' }, formatter: function(value, row, index) { return value ? value : '无'; } }, {field: 'order_ddbh', title: '销售订单号', operate: false}, {field: 'matter_no', title: '工单编号', operate: false}, {field: 'cpbm', title: '成品编码', operate: false}, {field: 'matter_name', title: '产品名称', operate: 'LIKE', searchList: $.getJSON("deliver/matterName")}, {field: 'num', title: '本次发货数量', operate: false}, {field: 'small_num', title: '每一箱数量', operate: false, editable: { type: 'number', title: '每一箱数量', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, {field: 'total_boxes', title: '每箱托数', operate: false}, {field: 'tray_num', title: '每层箱数', operate: false, editable: { type: 'number', title: '每层箱数', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, {field: 'box_num', title: '每托层数', operate: false, editable: { type: 'number', title: '每托层数', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, { field: 'pallet_height', title: '每托高度', operate: false, editable: { type: 'text', title: '每托高度', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, { field: 'pallet_length', title: '托盘长', operate: false, editable: { type: 'text', title: '托盘长度', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, { field: 'pallet_width', title: '托盘宽', operate: false, editable: { type: 'text', title: '托盘宽度', validate: function (v) { if (!v) return '不能为空'; if (isNaN(v)) return '必须为数字'; } } }, {field: 'large_num', title: '托盘数', operate: false}, {field: 'larger_num', title: '总箱数', operate: false}, {field: 'remark', title: '备注', operate: false, editable: { type: 'text', title: '备注' }, formatter: function(value, row, index) { return value ? value : '无'; } } ] ], }); // 绑定事件 Table.api.bindevent(table); Table.api.bindevent(detailTable); // 去掉时间区间输入记忆 table.on('post-body.bs.table', function (e, settings, json, xhr) { $('.datetimerange').each(function () { $(this).attr('autocomplete', 'off'); }); }); Controller.api.bindevent(); }, goods: function () { $('#apply_btn').click(function () { var ids = $('#goods_id').val(); var order_number = $('#c-order_number').val(); if (order_number == null || order_number === ''){ layer.confirm('订单号不能为空'); } var deliveryman = $('#c-deliveryman').val(); if (deliveryman == null || deliveryman === ''){ layer.confirm('司机名称不能为空'); } var shr_phone = $('#c-shr_phone').val(); if (shr_phone == null || shr_phone === ''){ layer.confirm('手机号不能为空'); } var plate_number = $('#c-plate_number').val(); if (plate_number == null || plate_number === ''){ layer.confirm('车牌号不能为空'); } var note = $('#c-note').val(); Fast.api.ajax({ url:'deliver/apply_add', data:{ ids:ids, order_number:order_number, deliveryman:deliveryman, shr_phone:shr_phone, plate_number:plate_number, note:note, } },function (data,res) { parent.Toastr.success("成功"); Fast.api.close(); window.parent.location.reload(); return false; },function (data) { parent.Toastr.error('失败'); Fast.api.close(); window.parent.location.reload(); return false; }) }); Controller.api.bindevent(); }, dispatch: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'deliver/dispatch' + location.search, del_url:'deliver/dispatch_del', table:'deliver' } }); var table = $("#table3"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', height:400, sortName: 'id', searchFormVisible:true, showToggle:false, showColumns:false, showExport:false, fixedColumns: true, fixedRightNumber: 1, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id'), operate: 'LIKE',visible:false,operate: false}, {field: 'shdh', title: '收货单号', operate: 'LIKE', operate: false}, {field: 'order_number', title: '订单号', operate: 'LIKE'}, {field: 'deliveryman', title: '司机', operate: 'LIKE', operate: false}, {field: 'plate_number', title: '车牌号', operate: 'LIKE', operate: false}, {field: 'supplier_name', title: '供应商名称', operate: 'LIKE'}, {field: 'create_time', title: '发货时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, {field: 'buttons', width: "120px", title: __('发货单打印'), operate: false, table: table, events: Table.api.events.operate, buttons: [ { name: 'ajax', text: __('点击打印'), title: __('点击打印'), classname: 'btn btn-xs btn-success btn-magic btn-ajax', icon: 'fa fa-magic', url: 'deliver/printqrcode/id/{ids}', success: function (data, res) { if (res.code === 1) { const arr = res.data.data; console.log(res); let totalTray = 0; let totalBox = 0; // 产品名称聚合:{ 名称: { qty: 数量, unit: 单位 } } const productMap = {}; // 单位分类统计 let totalTao = 0; let totalZhang = 0; let totalGe = 0; // 累加托盘数、箱数 for (let i = 0; i < arr.length; i++) { const item = arr[i]; totalTray += parseInt(item.large_num || 0); totalBox += parseInt(item.larger_num || 0); const name = item.matter_name; const unit = item.danwei; const qty = parseInt(item.num || 0); if (!productMap[name]) { productMap[name] = { qty: 0, unit: unit }; } productMap[name].qty += qty; // 单位分类汇总 if (unit === '套') { totalTao += qty; } else if (unit === '张') { totalZhang += qty; } else if (unit === '个') { totalGe += qty; } } const productNames = Object.keys(productMap); const productQuantities = productNames.map(name => productMap[name].qty); const manualBoxes = productQuantities.reduce((a, b) => a + b, 0); const paperCards = 0; // 按你的业务逻辑这里可自定义 let html = `
${res.data.supplier_name}
送货单
客户名称:河南中烟工业有限责任公司黄金叶生产制造中心 送货单号:${res.data.shdh}
送货地址:河南省郑州市经开区第三大街9号 送货日期:${res.data.shrq_date}
${res.data.order_ddbh || ''}${res.data.note || ''}
`; for (let i = 0; i < arr.length; i++) { html += ` `; } const fillCount = 15 - arr.length; for (let i = 0; i < fillCount; i++) { html += ` `; } html += `
托盘序号 产品名称 每箱个数 每托箱数 每层箱数 每托层数 每托高度 托盘规格 托盘数 总箱数
第${arr[i].pallet}托 ${arr[i].matter_name} ${arr[i].small_num} ${arr[i].total_boxes} ${arr[i].tray_num} ${arr[i].box_num} ${arr[i].pallet_height} ${arr[i].pallet_length} * ${arr[i].pallet_width} ${arr[i].large_num} ${arr[i].larger_num}
 
合计: ${totalTray} ${totalBox}
${productNames.map(name => ``).join('')} ${productNames.map(name => ``).join('')}
总共出货:${totalBox} 箱 = ${totalTray} 托(手工盒子:${totalTao} 套,纸质卡片:${totalZhang} 张,${totalGe} 个)
产品名称${name}合计
出货数量${productMap[name].qty}${manualBoxes}
共 ${totalTray} 托
备注:
(1) 用唛头笔写上托盘序号,托盘唛头打印贴在每托盘上面,打托的时候混托注意摆放和高度,另外不要漏掉了。
(2) 每托烟盒中间放瓦楞,最上面盖个木板,缠绕膜缠结实,护角护好,打打包带,井子形打包
(3) 配托后,请提供具体托盘高度及托盘重量。
`; $("#printcode").html(html); var ee = $('#qrcode_image').attr('src', res.data.qrcode_add); ee.on('load', function () { var printHTML = document.querySelector('#printcode').innerHTML; window.document.body.innerHTML = printHTML; window.print(); window.location.reload(); }); } return false; }, error: function (data, ret) { return false; } }, ], formatter: Table.api.formatter.buttons }, {field: 'status', title: '状态', operate: 'LIKE',searchList: {"0":'已发货',"1":'已删除'}, formatter: Table.api.formatter.status}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ], }); // 为表格绑定事件 Table.api.bindevent(table); //去掉时间区间输入记忆 table.on('post-body.bs.table',function (e,settings,json,xhr) { $('.datetimerange').each(function () { $(this).attr('autocomplete','off'); }) }); Controller.api.bindevent(); }, receive: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'deliver/receive' + location.search, del_url:'deliver/receive_del', table:'deliver' } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', height:500, sortName: 'id', searchFormVisible:true, showToggle:false, showColumns:false, showExport:false, fixedColumns: true, fixedRightNumber: 1, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id'),visible:false,operate: false}, {field: 'shdh', title: '送货单号', operate: false}, {field: 'order_number', title: '订单号', operate: 'LIKE'}, {field: 'deliveryman', title: '司机', operate: false}, {field: 'plate_number', title: '车牌号', operate: false}, {field: 'supplier_name', title: '供应商名称', operate: 'LIKE'}, {field: 'create_time', title: '发货时间', operate: 'RANGE', addclass: 'datetimerange', formatter: Table.api.formatter.datetime}, {field: 'buttons', operate: false, width: "120px", title: __('发货单打印'), table: table, events: Table.api.events.operate, buttons: [ { name: 'ajax', text: __('点击打印'), title: __('点击打印'), classname: 'btn btn-xs btn-success btn-magic btn-ajax', icon: 'fa fa-magic', url: 'deliver/printqrcode/id/{ids}', // confirm: '确认发送', success: function (data,res) { if (res.code === 1){ var arr = res.data.data; var note=''; var html = '
\n' + '
\n' + '
'+res.data.supplier_name+'
\n' + '
送货单
\n' + '
\n' + '
\n' + ' \n' + '
\n' + '
\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + '
客户名称:河南中烟工业有限责任公司黄金叶生产制造中心送货单号:'+res.data.shdh+'
送货地址:河南省郑州市经开区第三大街9号送货日期:'+res.data.shrq_date+'
\n' + '
\n' + ' '+ ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' '; for (var i=0;i < arr.length;i++){ html+= ''; html+= ''; html+= ''; html+= ''; if(arr[i].mater_type==1){ html+= ''; html+=''; html+=''; }else if (arr[i].mater_type==2){ html+= ''; html+=''; html+=''; }else if (arr[i].mater_type==3){ html+= ''; html+=''; html+=''; } } html+= '' + ' '+ '
物料名称生产批号大件小件单位实发数量备注' + ' 蓝联(回):业务 黄联(回):运输 '+'
'+'白联:存根 红联:财务 绿联:客户
'+arr[i].matter_name+''+(arr[i].bach_num?arr[i].bach_num:'')+''+arr[i].large_num+''+arr[i].small_num+'万张'+arr[i].l_num+''+arr[i].small_num+'件*'+parseInt(arr[i].num)+'张'+'kg'+arr[i].l_weight +''+arr[i].small_num+'件*'+parseFloat(arr[i].num)/1000+'kg'+'万支'+parseFloat(arr[i].num)*parseFloat(arr[i].small_num)/10000+''+arr[i].small_num+'件*'+parseInt(arr[i].num)+'支'+'
送货单备注'+res.data.note+'
\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + '
' $("#printcode").html(html) var ee = $('#qrcode_image').attr('src',res.data.qrcode_add); // 将打印的区域赋值,进行打印 ee.on('load',function () { var printHTML = document.querySelector('#printcode').innerHTML; window.document.body.innerHTML = printHTML; window.print(); window.location.reload(); // 打印完成后重新加载页面 }) } return false; }, error: function (data, ret) { return false; } }, ], formatter: Table.api.formatter.buttons }, {field: 'status', title: '状态', operate: 'LIKE',searchList: {"0":'未收货',"2":'已收货'},defaultValue:'1', formatter: Table.api.formatter.status}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} ] ], }); $('#receive').click(function (){ var shdh = $('#shdh').val(); if (shdh!=''){ $.get('deliver/receive_add',{'shdh':shdh},function (res){ if (res.code==1){ //修改成功 //1. 提示 Toastr.success(res.msg) //2. 刷新页面 table.bootstrapTable('refresh'); }else{ Toastr.error(res.msg) } }) } }) // 为表格绑定事件 Table.api.bindevent(table); Controller.api.bindevent(); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });