<!DOCTYPE HTML> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <meta charset="utf-8"> <head th:include="include :: header"></head> <style> .btn-default { color: #333; background-color: #fff; border-color: #ccc } </style> <body class="gray-bg"> <div class="container-div"> <div class="row"> <div class="col-sm-12 select-info"> <ul id="myTab" class="nav nav-tabs"> <li class="active"><a href="#tabHeader" data-toggle="tab">主表</a></li> <li><a href="#tabDetail" data-toggle="tab">明细</a></li> </ul> <div id="myTabContent" class="tab-content"> <div class="tab-pane fade in active" id="tabHeader"> <div class="col-sm-12 select-info"> <form id="receiptHeader-form"> <div class="select-list"> <ul> <li> 出库单号:<input type="text" name="code"/> </li> <li> <!--入库类型:<input type="text" name="sourceCode"/>--> 出库类型:<select name="shipmentType" th:with="shipmentType=${@dict.getType('shipmentType')}"> <option value="">所有</option> <option th:each="e : ${shipmentType}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li> erp单号:<input type="text" name="referCode"/> </li> <li> erp订单类型:<input type="text" name="referCodeType"/> </li> <li> 客户编码:<input type="text" name="sourceCode"/> </li> <li> <!--头 状 态:<input type="text" name="firstStatus"/>--> 头 状 态:<select name="firstStatus" th:with="firstStatus=${@dict.getType('shipmentHeaderStatus')}"> <option value="">所有</option> <option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li> <!--尾 状 态:<input type="text" name="lastStatus"/>--> 尾 状 态:<select name="lastStatus" th:with="lastStatus=${@dict.getType('shipmentHeaderStatus')}"> <option value="">所有</option> <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li class="time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> </div> </form> </div> <div class="btn-group hidden-xs" id="toolbar" role="group"> <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="shipment:bill:add"> <i class="fa fa-plus"></i> 新增 </a> <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="shipment:bill:remove"> <i class="fa fa-trash-o"></i> 删除 </a> </div> <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table> </div> <div class="tab-pane fade" id="tabDetail"> <div class="col-sm-12 select-info"> <form id = "shipmentHeadForm" > <ul id="tabHead" class="nav nav-tabs"> <li class="active"><a href="#tabBase" data-toggle="tab">基础数据</a></li> <li role="presentation" ><a href="#tabCustomer" data-toggle="tab">客户信息</a></li> <li><a href="#tabExcute" data-toggle="tab">执行信息</a></li> <li><a href="#tabOther" data-toggle="tab">其他信息</a></li> <li><a href="#tabSystem" data-toggle="tab">系统信息</a></li> </ul> <div class="tab-content"> <div class="tab-pane fade in active" id="tabBase"> <div class="select-list"> <ul> <li>出库单id:<input type="text" name="shipmentId" id="shipmentId"><li> <li>出库单号:<input type="text" name="shipmentCode" id="shipmentCode"></li> <input type="hidden" name="shipmentWarehouseId" id = "shipmentWarehouseId"> <li>仓库编码:<input type="text" name="shipmentWarehouseCode" id="shipmentWarehouseCode"></li> <input type="hidden" name="shipmentCompanyId" id="shipmentCompanyId"> <li>货主:<input type="text" name="shipmentCompanyCode" id="shipmentCompanyCode"></li> <li>erp订单号:<input type="text" name="shipmentSourceCode" id="shipmentSourceCode"></li> <li>订单平台:<input type="text" name="shipmentSourcePlatform" id="shipmentSourcePlatform"></li> <li>出库单类型:<input type="text" name="shipmentType" id = "shipmentType"></li> <li>总数量:<input type="text" name="shipmentTotalQty" id="shipmentTotalQty"></li> <li>总行数:<input type="text" name="shipmentTotalLines" id="shipmentTotalLines"></li> <li>单据头状态:<input type="text" name="shipmentFirstStatus" id="shipmentFirstStatus"></li> <li>单据尾状态:<input type="text" name="shipmentLastStatus" id="shipmentLastStatus"></li> </ul> </div> </div> <div class="tab-pane fade" id="tabCustomer"> <div class="select-list"> <ul> <li>客户编码:<input type="text" name="shipmentShipTo" id="shipmentShipTo"></li> </ul> </div> </div> <div class="tab-pane fade" id="tabExcute"> <div class="select-list"> <ul> <li>优先级:<input type="text" name="shipmentPriority" id="shipmentPriority"></li> <li></li> </ul> </div> </div> <div class="tab-pane fade" id="tabOther"> <div class="select-list"> <ul> <li>扩展属性1:<input type="text" name="shipmentUserDef1" id="shipmentUserDef1"></li> <li>扩展属性2:<input type="text" name="shipmentUserDef2" id="shipmentUserDef2"></li> <li>扩展属性3:<input type="text" name="shipmentUserDef3" id="shipmentUserDef3"></li> </ul> </div> </div> <div class="tab-pane fade" id="tabSystem"> <div class="select-list"> <ul> <li>创建时间:<input type="text" name="shipmentCreated" id="shipmentCreated"></li> <li>创建用户:<input type="text" name="shipmentCreatedBy" id="shipmentCreatedBy"></li> <li>最后修改时间:<input type="text" name="shipmentLastUpdated" id="shipmentLastUpdated"></li> <li>更新用户:<input type="text" name=" shipmentLastUpdatedBy" id="shipmentLastUpdatedBy"></li> <li>是否删除:<input type="text" name="shipmentDeleted" id="shipmentDeleted"></li> </ul> </div> </div> </div> </form> </div> <div class="btn-group hidden-xs" id="toolbar-detail" role="group" style="padding:20px 0;"> <a class="btn btn-outline btn-success btn-rounded" onclick="add()" shiro:hasPermission="shipment:bill:add"> <i class="fa fa-plus"></i> 新增 </a> <a class="btn btn-outline btn-danger btn-rounded" onclick="batRemove()" shiro:hasPermission="shipment:bill:remove"> <i class="fa fa-trash-o"></i> 删除 </a> <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.edit(shipmentId)" shiro:hasPermission="shipment:bill:edit"> <i class="fa fa-edit"></i> 编辑主单据 </a> <a class="btn btn-outline btn-default btn-rounded" onclick="loadDetail()"> <i class="fa fa-refresh"></i> 刷新 </a> <!--<a class="btn btn-outline btn-success btn-rounded" onclick="autoZone()" shiro:hasPermission="shipment:bill:add">--> <!--<i class="fa fa-plus"></i> 自动分配库区--> <!--</a>--> <!--<a class="btn btn-outline btn-success btn-rounded" onclick="addzone()" shiro:hasPermission="shipment:bill:add">--> <!--<i class="fa fa-plus"></i> 分配库区--> <!--</a>--> <a class="btn btn-outline btn-primary btn-rounded to-receive" onclick="Toshipping(false)" shiro:hasPermission="shipment:shippingCombination:combination"> <i class="fa fa-hand-lizard-o"></i> 手动组盘 </a> <a class="btn btn-outline btn-primary btn-rounded auto-shipment" onclick="Toshipping(true)" shiro:hasPermission="shipment:shippingCombination:combination"> <i class="fa fa-code-fork"></i> 自动组盘 </a> </div> <table id="bootstrap-table-detail" data-mobile-responsive="true" class="table table-bordered table-hover"></table> </div> </div> </div> </div> </div> <div th:include="include :: footer"></div> <script th:inline="javascript"> var printFlag = [[${@permission.hasPermi('shipment:bill:report')}]]; //打印 var editFlag = [[${@permission.hasPermi('shipment:bill:edit')}]]; var removeFlag = [[${@permission.hasPermi('shipment:bill:remove')}]]; var prefix = ctx + "shipment/shipmentHeader"; var prefix_detail = ctx + "shipment/shipmentDetail"; var datas = [[${@dict.getType('sys_normal_disable')}]]; var shipmentTypes=[[${@dict.getType('shipmentType')}]]; var shipmentHeaderStatus=[[${@dict.getType('shipmentHeaderStatus')}]]; var stations = [[${@dict.getType('station')}]]; var uploadStatus=[[${@dict.getType('uploadStatus')}]]; var detailCreateUrl=prefix_detail+"/add"; var detailRemoveUrl=prefix_detail+"/remove"; var inventoryStatus=[[${@dict.getType('inventoryStatus')}]]; var rossDoccking = [[${@permission.hasPermi('shipment:bill:rossDoccking')}]]; var rossDocckingUrl =prefix_detail+"/rossDoccking"; var shipmentId = ""; var shipmentCode=""; $(function () { var options = { url: prefix + "/list", createUrl: prefix + "/add", updateUrl: prefix + "/edit/{id}", removeUrl: prefix + "/remove", modalName: "出库单", sortName: "created", sortOrder: "desc", search: false, columns: [ { checkbox: true }, { field: 'id', title: '出库单id' }, { field: 'code', title: '出库单号', sortable:true }, { field: 'companyCode', title: '货主', sortable:true }, { field: 'referCode', title: 'erp订单号', sortable:true }, { field: 'referCodeType', title: 'erp订单内部号', sortable:true, visible:false }, { field: 'shipmentType', title: '类型', align: 'center', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentTypes, value); }, sortable:true }, { field: 'customerCode', title: '客户编码', sortable:true }, { field: 'priority', title: '优先级' }, { field: 'route', title: '路线', sortable:true }, { field: 'totalQty', title: '总数量' }, { field: 'totalLines', title: '总行数' }, { field: 'firstStatus', title: '头状态', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); }, sortable:true }, { field: 'lastStatus', title: '尾状态', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); }, sortable:true }, { field: 'created', title: '创建时间', sortable: true }, { field: 'createdBy', title: '创建用户' }, { field: 'lastUpdated', title: '最后修改时间', visible:false }, { field: 'lastUpdatedBy', title: '更新用户', visible:false }, { title: '操作', align: 'center', formatter: function (value, row, index) { var actions = []; actions.push('<a id="table_edit" class="btn btn-success btn-xs ' + printFlag + '" href="#" onclick="receiptPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> '); // actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\',\'' + row.code + '\')"><i class="fa fa-list-ul"></i>列表</a> '); if (row.firstStatus < 100){ actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); } if (row.firstStatus < 120){ actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>'); } return actions.join(''); } }] }; $.table.init(options); }); $("#bootstrap-table-detail").bootstrapTable( { /*url: prefix_detail + "/list",*/ createUrl: prefix_detail + "/add", updateUrl: prefix_detail + "/edit/{id}", removeUrl: prefix_detail + "/remove", // queryParams: queryParams, sortable: true, //排序 // showRefresh: true, //刷新 modalName: "出库明细", search: false, clickToSelect: true, sortName: "lastUpdated", sortOrder: "desc", pagination: true, // 是否显示分页(*) pageNumber: 1, // 初始化加载第一页,默认第一页 pageSize: 10, // 每页的记录行数(*) pageList: [10, 25, 50], // 可供选择的每页的行数(*) columns: [{ checkbox: true }, { field: 'id', title: '明细id' }, { field: 'materialCode', title: '存货编码' }, { field: 'materialName', title: '物料名称' }, { field: 'materialSpec', title: '物料规格' }, { field: 'batch', title: '批次', visible:false }, { field: 'lot', title: '批号', visible:false }, { field: 'projectNo', title: '项目号' }, /*{ field: 'status', title: '明细状态', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); }, visible:true },*/ { field: 'manufactureDate', title: '生产日期', visible:false }, { field: 'expirationDate', title: '失效日期', visible:false }, { field: 'agingDate', title: '入库日期', visible:false }, { field: 'inventorySts', title: '库存状态', formatter: function(value, row, index) { return $.table.selectDictLabel(inventoryStatus, value); }, }, { field: 'shipQty', title: '发货数量' }, { field: 'requestQty', title: '已出数量' }, { field : 'inventoryQty', title : '库存数量' }, { field : 'materialUnit', title : '物料单位' }, { field : 'status', title : '明细状态', align: 'center', formatter: function(value, row, index) { return $.table.selectDictLabel(shipmentHeaderStatus, value); } }, { field: 'created', title: '创建时间', }, { field: 'createdBy', title: '创建用户' }, { field: 'lastUpdated', title: '最后修改时间' }, { field: 'lastUpdatedBy', title: '更新用户' }, { title: '操作', align: 'center', formatter: function (value, row, index) { var actions = []; actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>'); return actions.join(''); } }] } ); function submit(url, type, dataType, data,content) { $.modal.loading("正在处理中,请稍后..."); var config = { url: url, type: type, dataType: dataType, data: data, contentType: content, success: function(result) { if (result.code == web_status.SUCCESS) { if (result.data !== null) { layer.open({ title: '' ,content: result.data, closeBtn:false }); $("body").focus(); } else { $.modal.msg(result.msg); } } else { $.modal.alertError(result.msg); } $("#list-btn").click(); $.modal.closeLoading(); } }; $.ajax(config) } /*入库单列表-详细*/ function detail(id, code) { shipmentId = id; shipmentCode=code; $("#myTab li").removeClass("active"); $("#tabHeader").removeClass("in active"); $("#myTab li:eq(1)").addClass("active"); $("#tabDetail").addClass("in active"); loadDetail(); } /** 载入明细 */ function loadDetail() { $.ajax({ url:ctx + 'shipment/shipmentDetail/list', type: 'post', data:{ shipmentId:shipmentId }, success : function (value) { $("#bootstrap-table-detail").bootstrapTable('load',value.data); } }) $.ajax({ url:"shipmentHeader/getShipmentHeader", type:"post", data:{ id:shipmentId }, success:function (value) { $('#shipmentId').val(value.data.id); $('#shipmentCode').val(value.data.code); $('#shipmentWarehouseCode').val(value.data.warehouseCode); $('#shipmentCompanyCode').val(value.data.companyCode); $('#shipmentSourceCode').val(value.data.referCode); $('#shipmentSourcePlatform').val(value.data.referPlatform); $('#shipmentType').val(shipmentTypes.filter(function(a){return a.dictValue==value.data.shipmentType})[0].dictLabel); $('#shipmentShipTo').val(value.data.customerCode); $('#shipmentPriority').val(value.data.priority); $('#shipmentTotalQty').val(value.data.totalQty); $('#shipmentTotalLines').val(value.data.totalLines); $('#shipmentFirstStatus').val(shipmentHeaderStatus.filter(function(a){return a.dictValue==value.data.firstStatus})[0].dictLabel); $('#shipmentLastStatus').val(shipmentHeaderStatus.filter(function(a){return a.dictValue==value.data.lastStatus})[0].dictLabel); $('#shipmentCreated').val(value.data.created); $('#shipmentCreatedBy').val(value.data.createdBy); $('#shipmentLastUpdated').val(value.data.lastUpdated); $('#shipmentLastUpdatedBy').val(value.data.lastUpdatedBy); //$('#shipmentEnable').val(value.data.enable); //$('#shipmentDeleted').val(value.data.deleted); if(value.data.deleted==false){ $('#shipmentDeleted').val('否') }else{ $('#shipmentDeleted').val('是') }; $('#shipmentUserDef1').val(value.data.userDef1); $('#shipmentUserDef2').val(value.data.userDef2); $('#shipmentUserDef3').val(value.data.userDef3); } }) } /* 添加主单据 */ function add() { if (shipmentId == '') { $.modal.open("未选择出库单" , "404.html"); } else { var url = detailCreateUrl + "?shipmentId=" + $('#shipmentId').val() + "&shipmentCode=" + $('#shipmentCode').val() + "&companyId=" + $('#shipmentCompanyId').val() + "&companyCode=" + $('#shipmentCompanyCode').val(); + "&sourceCode=" + $('#shipmentSourceCode').val(); $.modal.open("添加" , url); } } /* 打印 */ function receiptPrint(id) { var url = prefix + "/report/" + id; $.modal.open("出库单打印" , url); } /* 编辑明细单据 */ function edit(id) { if (shipmentId == '') { $.modal.open("未选择出库单" , "404.html"); } else { var url = prefix_detail + "/edit/" + id ; $.modal.open("编辑明细" , url); } } /* 单个删除 */ function remove(id) { $.modal.confirm("确定删除该条出库单明细信息吗?", function() { var url = $.common.isEmpty(id) ? detailRemoveUrl : detailRemoveUrl.replace("{id}", id); var data = { "ids": id }; localSubmit(url, "post", "json", data); }); } /* 批量删除 */ function batRemove() { var rows=$("#bootstrap-table-detail").bootstrapTable('getSelections'); // console.log(rows); // var rows = $.common.isEmpty($.table._option.id) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.id); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() { var url = detailRemoveUrl; var data = { "ids": rows.map(function(v){return v.id;}).join(',') }; localSubmit(url, "post", "json", data); }); } function localSubmit (url, type, dataType, data) { $.modal.loading("正在处理中,请稍后..."); var config = { url: url, type: type, dataType: dataType, data: data, success: function (result) { if (result.code == web_status.SUCCESS) { $.modal.msgSuccess(result.msg); loadDetail(shipmentId, shipmentCode) } else { $.modal.alertError(result.msg) } $.modal.closeLoading() } }; $.ajax(config) } /* 出库组盘 */ function Toshipping(auto) { let storage=window.localStorage; storage.shipmentCode=shipmentCode; let url = ctx + "shipment/shippingCombination"; if(auto){ storage.auto = auto; createMenuItem(url, "出库自动组盘"); parent.$('.tabReload').click(); } else{ createMenuItem(url, "出库组盘"); parent.$('.tabReload').click(); } } /* 点击明细面板 */ $("#myTab li:eq(1)").click(function () { if (shipmentId == '') { shipmentId = $("#bootstrap-table tr:eq(1) td:eq(1)").text(); } detail(shipmentId, ""); }); /* 点击主表面板 */ $("#myTab li:eq(0)").click(function () { $.ajax({ url: prefix + "/list", type:"post", success:function (value) { $("#bootstrap-table").bootstrapTable('refresh', value.data); } }) }); // function addzone() { // let url=prefix_detail+'/addZoneCode?ids='; // let rows=$("#bootstrap-table-detail").bootstrapTable('getSelections'); // if (rows.length === 0) { // $.modal.msgWarning("请至少选择一条记录"); // } // else { // let ids = ""; // for(let i=0; i<rows.length; i++) { // ids = ids + rows[i].id + "," // } // ids = ids.substring(0, ids.length-1); // url=url+ids; // $.modal.open("分配库区",url,800,250) // } // } // // //自动分配库区 // function autoZone() { // let code=$("#shipmentCode").val(); // $.ajax({ // url:prefix_detail+'/addZones', // type:'post', // data:{ // code:code // }, // success:function (res) { // if (res.code === 200) { // $.modal.msgSuccess(res.msg); // loadDetail(); // } // else{ // $.modal.msgError(res.msg); // } // } // }) // } </script> </body> </html>