Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r35069 -r35217 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 35069) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 35217) @@ -137,7 +137,14 @@ {hidden :SSTS_OperationReservationDelivery_Menu,text:"手术预约发货",href:WWWROOT+'/disinfectsystem/invoice/operationReservationInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_OperationReservationDelivery_Menu,text:"手术预约汇总发货",href:WWWROOT+'/disinfectsystem/invoice/operationReservationMergeInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_CustomDelivery_Manager,text:"自定义发货",href:WWWROOT+'/disinfectsystem/invoice/customInvoiceForm.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, - {hidden :SSTS_Invoice_Menu,text:"快速发货",href:WWWROOT+'/disinfectsystem/invoice/expressInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_CustomDelivery_BatchInvoice,text:"一次性物品自定义批量发货",href:'javascript:void(0);',leaf:true,listeners:{ + click:function(node, e){ + var url = WWWROOT+'/disinfectsystem/invoice/batchInvoice.jsp'; + top.recyclingWindow = openFullSizeWindowWithName(url,null,"batchInvoiceWindow"); + return; + } + }}, + {hidden :SSTS_Invoice_Menu,text:"快速发货",href:WWWROOT+'/disinfectsystem/invoice/expressInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Invoice_Menu,text:"发货科室分组设置",href:WWWROOT+'/disinfectsystem/invoice/invoiceDepartmentView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Invoice_Menu,text:"发货单管理",href:WWWROOT+'/disinfectsystem/invoice/invoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Invoice_Menu,text:"材料发货管理",href:WWWROOT+'/disinfectsystem/invoice/materialInvoiceView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, @@ -789,7 +796,7 @@ {hidden :false,text:"数据实时看板汇总",href:'javascript:void(0);',leaf:true,listeners:{ click:function(node, e){ var url = WWWROOT+'/disinfectsystem/config/'+profile+'/realTimeDashboards/index.jsp'; - top.realTimeDashboardsWindow = openFullSizeWindowWithName(url,null,"realTimeDashboardsWindow"); + top.realTimeDashboardsWindow = openFullSizeWindowWithName(url,null,"realTimeDashboardsWindow"); return; } }} Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/selectDepartExt4.js =================================================================== diff -u -r32177 -r35217 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/selectDepartExt4.js (.../selectDepartExt4.js) (revision 32177) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/selectDepartExt4.js (.../selectDepartExt4.js) (revision 35217) @@ -1,5 +1,7 @@ var departWin; var departListStore; +var tousseWin; +var tousseListStore; //删除选择的科室 function removeDepartItem(departCode) { @@ -26,7 +28,7 @@ } //添加科室 -function addDepartItem(code, name) { +function addDepartItem(code, name, orgUnitId) { if (name == null || name == '') { showResult('请选择科室!'); return false; @@ -39,21 +41,23 @@ } var record = { departCode: code, - name: name + name: name, + orgUnitId: orgUnitId || '' }; departListStore.add(record) top.Ext4.getCmp("departName2").setValue(""); } //添加搜索结果的科室 -function addDepartItems(code, name) { +function addDepartItems(code, name, orgUnitId) { var b = isDepartRepeat(name); if (b) { return; } var record = { departCode: code, - name: name + name: name, + orgUnitId: orgUnitId || '' }; departListStore.add(record) } @@ -86,7 +90,7 @@ top.Ext.getCmp("readersForDisplay").setValue(nameString); top.Ext.getCmp("readers").setValue(codeString); } - } else if(formName == 'useToRecycleDepart'){ + } else if (formName == 'useToRecycleDepart') { for (var i = 0; i < departListStore.getCount(); i++) { var record = departListStore.getAt(i); nameArr[i] = record.get('name'); @@ -102,6 +106,19 @@ Ext4.getCmp("useToRecycleDepartNames").setValue(nameString); Ext4.getCmp("useToRecycleDepartCodes").setValue(codeString); } + } else if (formName == 'batchInvoice') { + var idArr = []; + var ids = ''; + for (var i = 0; i < departListStore.getCount(); i++) { + var record = departListStore.getAt(i); + idArr[i] = record.get('orgUnitId'); + } + + if (idArr.length !== 0) { + ids = idArr.join(',') + } + + saveDeparts(ids) } else { for (var i = 0; i < departListStore.getCount(); i++) { var record = departListStore.getAt(i); @@ -134,7 +151,7 @@ } //打开选择科室的窗口 -function openSelectReceiverOrganization(departNames, codes, formName) { +function openSelectReceiverOrganization(departNames, codes, formName, orgUnitIds) { var departJsonStore = new top.Ext4.data.Store({ proxy: { type: 'ajax', @@ -152,6 +169,7 @@ }, fields: [ { name: 'id' }, + { name: 'orgUnitId' }, { name: 'departCode' }, { name: 'name' } ] @@ -167,6 +185,8 @@ } }, fields: [ + { name: 'id' }, + { name: 'orgUnitId' }, { name: 'departCode' }, { name: 'name' } ] @@ -177,8 +197,13 @@ if (((departNames || '') !== '') && ((codes || '') !== '')) { var departNameArr = departNames.split(';'); var codeArr = codes.split(';'); + var orgUnitIdArr = []; + if (orgUnitIds) { + orgUnitIdArr = orgUnitIds.split(';'); + } for (var i = 0; i < departNameArr.length; i++) { var record = { + orgUnitId: orgUnitIdArr[i] || '', departCode: codeArr[i], name: departNameArr[i] }; @@ -203,7 +228,8 @@ select: function (combo, record, index) { var tem = record[0].data.departCode; var name = record[0].data.name; - addDepartItem(tem, name); + var orgUnitId = record[0].raw.orgUnitId; + addDepartItem(tem, name, orgUnitId); } } }, { @@ -213,7 +239,8 @@ for (var i = 0; i < departJsonStore.getCount(); i++) { var departCode = departJsonStore.getAt(i).get('departCode'); var name = departJsonStore.getAt(i).get('name'); - addDepartItems(departCode, name) + var orgUnitId = departJsonStore.getAt(i).get('orgUnitId'); + addDepartItems(departCode, name, orgUnitId) } top.Ext4.getCmp("departName2").setValue(""); } @@ -227,7 +254,8 @@ for (var i = 0; i < departJsonStore.getCount(); i++) { var departCode = departJsonStore.getAt(i).get('departCode'); var name = departJsonStore.getAt(i).get('name'); - addDepartItems(departCode, name) + var orgUnitId = departJsonStore.getAt(i).get('orgUnitId'); + addDepartItems(departCode, name, orgUnitId) } }, 200); } @@ -246,12 +274,12 @@ }, { header: "科室名称", dataIndex: 'name', - width: 500, + width: 480, menuDisabled: true }, { id: 'deleteItem', header: '操作', - width: 40, + width: 60, menuDisabled: true, dataIndex: 'button', renderer: function (v, p, record, index) { @@ -311,4 +339,268 @@ }); departWin.show(); -} \ No newline at end of file +} + +//删除选择的物品 +function removeTousseItem(id) { + for (var i = 0; i < tousseListStore.getCount(); i++) { + var item = tousseListStore.data.items[i]; + if (item.data.id == id) { + tousseListStore.remove(item) + } + } +} + +//检查物品是否存在 +function isTousseRepeat(name) { + if (name != null && name.length > 0) { + for (var i = 0; i < tousseListStore.getCount(); i++) { + var record = tousseListStore.getAt(i); + var tempName = record.get('name'); + if (name == tempName) { + return true; + } + } + } + return false; +} + +//添加物品 +function addTousseItem(id, name) { + if (name == null || name == '') { + showResult('请选择物品!'); + return false; + } + var b = isTousseRepeat(name); + if (b) { + showResult('物品:[' + name + '] 已存在!'); + top.Ext4.getCmp('tousseName2').setValue(""); + return false; + } + var record = { + id: id, + name: name + }; + tousseListStore.add(record) + top.Ext4.getCmp("tousseName2").setValue(""); +} + +//添加搜索结果的物品 +function addTousseItems(id, name) { + var b = isTousseRepeat(name); + if (b) { + return; + } + var record = { + id: id, + name: name + }; + tousseListStore.add(record) +} + +//保存选择的物品 +function saveTousseName(formName) { + var idArr = []; + var nameArr = []; + + for (var i = 0; i < tousseListStore.getCount(); i++) { + var record = tousseListStore.getAt(i); + idArr[i] = record.get('id'); + nameArr[i] = record.get('name'); + } + + if (idArr.length == 0) { + showResult('请选择一个物品'); + return + } + + var ids = idArr.join(','); + + if (formName == 'batchInvoice') { + saveTousses(ids); + tousseWin.close(); + return; + } + + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!updateTousseInspectMaterials.do', + async: false, + params: { + ids: ids, + operationType: 'add' + }, + success: function (response) { + var result = Ext4.decode(response.responseText); + if (result.success) { + showResult('添加成功'); + tousseWin.close(); + listStore.reload(); + } else { + showResult(result.msg); + } + } + }); +} + +//打开选择物品的窗口 +function openSelectTousse(names, ids, formName) { + var tousseJsonStore = new top.Ext4.data.Store({ + pageSize: 9999, + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/diposableGoodsAction!searchDisposableGoods.do', + reader: { + type: 'json', + totalProperty: 'totalCount', + root: 'data' + } + }, + fields: [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' } + ] + }); + + tousseListStore = new top.Ext4.data.Store({ + fields: [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' } + ] + }); + + tousseJsonStore.load(); + + if (((names || '') !== '') && ((ids || '') !== '')) { + var nameArr = names.split(';'); + var idArr = ids.split(';'); + for (var i = 0; i < nameArr.length; i++) { + var record = { + name: nameArr[i], + id: idArr[i] + }; + tousseListStore.add(record) + } + } + + var tbar = [{ + text: '选择物品:' + }, { + xtype: 'combo', + id: 'tousseName2', + name: 'tousseName2', + queryParam: 'spell', + fieldLabel: '', + minChars: 0, + valueField: 'id', + displayField: 'name', + width: 320, + store: tousseJsonStore, + listeners: { + select: function (combo, record, index) { + var id = record[0].data.id; + var name = record[0].data.name; + addTousseItem(id, name); + } + } + }, { + text: '添加物品', + iconCls: 'btn_ext_application_add', + handler: function () { + for (var i = 0; i < tousseJsonStore.getCount(); i++) { + var id = tousseJsonStore.getAt(i).get('id'); + var name = tousseJsonStore.getAt(i).get('name'); + addTousseItems(id, name) + } + top.Ext4.getCmp("tousseName2").setValue(""); + } + }, { + text: '添加所有', + iconCls: 'btn_ext_application_add', + handler: function () { + tousseJsonStore.load(); + top.Ext4.getCmp("tousseName2").setValue(""); + setTimeout(function () { + for (var i = 0; i < tousseJsonStore.getCount(); i++) { + var id = tousseJsonStore.getAt(i).get('id'); + var name = tousseJsonStore.getAt(i).get('name'); + addTousseItems(id, name) + } + }, 200); + } + }, { + text: '清空所有', + iconCls: 'btn_ext_application_del', + handler: function () { + tousseListStore.removeAll(); + } + }] + + var columns = [{ + header: "物品名称", + dataIndex: 'name', + width: 585, + menuDisabled: true + }, { + id: 'deleteItem', + header: '操作', + width: 100, + menuDisabled: true, + dataIndex: 'button', + renderer: function (v, p, record, index) { + return ""; + } + }] + + var grid = new top.Ext4.grid.GridPanel({ + title: '', + id: 'girdID', + columns: columns, + frame: false, + width: 710, + height: 400, + store: tousseListStore, + tbar: tbar, + viewConfig: { + autoFill: true + } + }); + + tousseWin = new top.Ext4.window.Window({ + id: 'tousseWin', + layout: 'border', + title: '添加物品', + width: 760, + height: 500, + border: 0, + modal: true, + defaults: { + bodyStyle: "background-color: none", + frame: true, + border: false + }, + style: 'padding:20px', + items: [{ + region: "west", + width: 720, + border: 0, + title: '', + items: [grid] + }], + buttonAlign: 'center', + buttons: [{ + id: 'confirmBtn', + text: '确定', + handler: function () { + saveTousseName(formName); + } + }, { + text: '取消', + handler: function () { + tousseWin.close(); + } + }] + }); + + tousseWin.show(); +} + Index: ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.jsp (revision 35217) @@ -0,0 +1,61 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@page import="com.forgon.disinfectsystem.entity.invoicemanager.Invoice"%> +<%@ include file="/common/taglibs.jsp"%> +<% + LoginUserData loginUser = AcegiHelper.getLoginUser(); + request.setAttribute("userName",loginUser.getUserFullName()); + request.setAttribute("currentOrgUnitCode",loginUser.getCurrentOrgUnitCode()); + request.setAttribute("fontSize",(loginUser == null || loginUser.getFontSize() == null) ? "12" : loginUser.getFontSize()); +%> + + + + + + + 一次性物品自定义批量发货 + + + + <%@ include file="/common/includeExtJsAndCss.jsp"%> + <%@ include file="/common/include_Ext425JsAndCss.jsp"%> + + + + + + + + + + + + + + + + + +
+

一次性物品自定义批量发货

+
+
+
+ + + \ No newline at end of file Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r35069 -r35217 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 35069) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 35217) @@ -152,6 +152,7 @@ + Index: ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js =================================================================== diff -u -r35169 -r35217 --- ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js (.../config.js) (revision 35169) +++ ssts-web/src/main/webapp/disinfectsystem/config/gyey/config.js (.../config.js) (revision 35217) @@ -159,6 +159,8 @@ enableTousseOfExclusiveDoctorFunction:true, //启用RFID标签形式的标识牌 enableRFIDTousseIdCard:true, + //启用一次性物品自定义批量发货功能 + enableCustomBatchInvoiceOfDisposableGoodsFunction:true, //启用数据实时看板功能 enableRealTimeDashboardsForDataFunction:true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/invoice/batchInvoice.js (revision 35217) @@ -0,0 +1,750 @@ +var grid; +var listStore; +var columns; +var batchInvoiceDisable = true; +var wareHouseBtnDisable = true; +var sumObject = {}; + +function getCurrentTab() { + return window; +} + +function saveDeparts(ids) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/invoiceOrgUnitAction!saveInvoiceOrgUnit.do', + params: { + orgUnitIds: ids + }, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + getList(); + } else { + showResult(result.msg); + } + } + }); +} + +function saveTousses(ids) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/invoiceOrgUnitAction!saveInvoiceOrgUnit.do', + params: { + disposableGoodsIds: ids + }, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + getList(); + } else { + showResult(result.msg); + } + } + }); +} + +function getList() { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/invoiceOrgUnitAction!loadInvoiceOrgUnit.do', + async: false, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + var departArr = result.data[0]; + var disposableGoodsArr = result.data[1]; + var listData = getListData(1); + listStore.removeAll(); + if (disposableGoodsArr && disposableGoodsArr.length > 0) { + columns = [{ + header: "待发货科室", + dataIndex: "invoiceDepartName", + menuDisabled: true, + sortable: false, + width: 150 + }]; + var fields = [ + { name: 'invoiceDepartId' }, + { name: 'invoiceDepartName' }, + { name: 'invoiceDepartCode' }, + { name: 'disposableGoodsIds' }, + { name: 'costTotal' }, + { name: 'invoiceRemark' } + ] + for (var j = 0; j < disposableGoodsArr.length; j++) { + columns.push({ + header: disposableGoodsArr[j].showName, + dataIndex: 'disposableGoods_' + disposableGoodsArr[j].disposableGoodsId, + menuDisabled: true, + sortable: false, + width: (textSize(fontSize + "px", "宋体", disposableGoodsArr[j].showName).width || 0) + 20, + editor: { + xtype: 'numberfield', + allowBlank: true, + allowDecimals: false, + minValue: 0, + maxValue: 9999 + } + }, { + header: '单价/单位', + dataIndex: 'price/unit_' + disposableGoodsArr[j].disposableGoodsId, + menuDisabled: true, + sortable: false, + align: 'center', + width: 100 + }); + fields.push({ + name: 'price/unit_' + disposableGoodsArr[j].disposableGoodsId + }, { + name: 'disposableGoods_' + disposableGoodsArr[j].disposableGoodsId + }) + } + listStore = new Ext4.data.SimpleStore({ + fields: fields + }) + columns.push({ + header: "费用小计", + dataIndex: "costTotal", + align: 'right', + menuDisabled: true, + sortable: false, + width: 100 + }, { + header: "备注", + dataIndex: "invoiceRemark", + width: 200, + menuDisabled: true, + sortable: false, + editor: { + xtype: 'textfield' + } + }); + } + var disposableGoodsIdsMap = { + costTotal: 0 + }; + if (departArr.length > 0) { + for (var i = 0; i < departArr.length; i++) { + var record = { + invoiceDepartId: departArr[i].orgUnitId, + invoiceDepartName: departArr[i].orgUnitName, + invoiceDepartCode: departArr[i].orgUnitCode + }; + if (disposableGoodsArr && disposableGoodsArr.length > 0) { + var disposableGoodsIdArr = []; + for (var j = 0; j < disposableGoodsArr.length; j++) { + record['price/unit_' + disposableGoodsArr[j].disposableGoodsId] = disposableGoodsArr[j]['price/unit'] + disposableGoodsIdArr[j] = disposableGoodsArr[j].disposableGoodsId; + } + record['disposableGoodsIds'] = disposableGoodsIdArr.join(',') + } + if (listData.length > 0) { + for (var k = 0; k < listData.length; k++) { + var departCode = listData[k].departCode; + var invoiceRemark = listData[k].invoiceRemark; + if (departCode == record.invoiceDepartCode) { + for (var m = 0; m < listData[k].items.length; m++) { + var disposableGoodsId = listData[k].items[m].disposableGoodsId; + var sendAmount = listData[k].items[m].sendAmount; + record['disposableGoods_' + disposableGoodsId] = sendAmount; + record['invoiceRemark'] = invoiceRemark; + if (record.disposableGoodsIds.length > 0) { + var total = 0; + var arr = record.disposableGoodsIds.split(','); + for (var m = 0; m < arr.length; m++) { + var price_unit = record['price/unit_' + arr[m]]; + var amount = record['disposableGoods_' + arr[m]]; + var price = 0; + var newAmount = 0; + if (price_unit) { + price = price_unit.split('/')[0]; + } + if (amount && amount !== '') { + newAmount = amount; + } + console.log(price) + console.log(newAmount) + total += parseFloat(price * newAmount); + } + record['costTotal'] = parseFloat(total).toFixed(1); + } + if (disposableGoodsIdsMap['disposableGoods_' + disposableGoodsId]) { + if (sendAmount !== '') { + disposableGoodsIdsMap['disposableGoods_' + disposableGoodsId] += parseInt(sendAmount); + } + } else { + disposableGoodsIdsMap['disposableGoods_' + disposableGoodsId] = sendAmount; + } + } + } + } + if (record['costTotal'] && record['costTotal'] !== '') { + disposableGoodsIdsMap['costTotal'] += parseFloat(record['costTotal']); + } + } + listStore.add(record) + } + var costTotal = disposableGoodsIdsMap['costTotal'] || ''; + if (costTotal !== '') { + costTotal = parseFloat(costTotal).toFixed(1) + } + var record = { + invoiceDepartId: '', + invoiceDepartName: '总计', + invoiceDepartCode: '', + costTotal: costTotal + } + for (var i = 0; i < disposableGoodsArr.length; i++) { + var disposableGoodsId = disposableGoodsArr[i].disposableGoodsId; + record['price/unit_' + disposableGoodsId] = disposableGoodsArr[i]['price/unit']; + record['disposableGoods_' + disposableGoodsId] = disposableGoodsIdsMap['disposableGoods_' + disposableGoodsId]; + } + listStore.add(record) + } + if (grid) { + grid.reconfigure(listStore, columns); + } + if (departArr.length > 0 && disposableGoodsArr.length > 0) { + batchInvoiceDisable = false; + wareHouseBtnDisable = false; + } else { + batchInvoiceDisable = true; + wareHouseBtnDisable = true; + } + } else { + batchInvoiceDisable = true; + wareHouseBtnDisable = true; + } + } + }); +} + +function getListData(type) { + var invoiceItems = []; + for (var i = 0; i < listStore.getCount(); i++) { + var items = listStore.getAt(i); + if (items.data.invoiceDepartName !== '总计') { + var disposableGoodsIds = items.data.disposableGoodsIds; + if (disposableGoodsIds.length > 0) { + var disposableGoodsIdArr = disposableGoodsIds.split(','); + var goodsItems = []; + for (var j = 0; j < disposableGoodsIdArr.length; j++) { + var disposableGoodsId = disposableGoodsIdArr[j]; + var sendAmount = ''; + if (items.data['disposableGoods_' + disposableGoodsId]) { + sendAmount = items.data['disposableGoods_' + disposableGoodsIdArr[j]]; + } + if (type == 0) { + invoiceItems.push({ + disposableGoodsId: parseInt(disposableGoodsId), + amount: sendAmount + }) + } else { + if (sendAmount !== '' && sendAmount !== 0) { + goodsItems.push({ + disposableGoodsId: parseInt(disposableGoodsId), + sendAmount: sendAmount + }) + } + } + } + if (type == 1) { + if (goodsItems.length > 0) { + invoiceItems.push({ + departCode: items.data.invoiceDepartCode, + invoiceRemark: items.data.invoiceRemark, + items: goodsItems + }) + } + } + } else { + if (type == 0) { + invoiceItems.push({ + disposableGoodsId: '', + amount: '' + }) + } else { + invoiceItems.push({ + departCode: items.data.invoiceDepartCode, + invoiceRemark: items.data.invoiceRemark, + items: [] + }) + } + } + } else { + sumObject = items + } + } + return invoiceItems; +} + +function showWareHouse(data) { + var wareHouseStore = new top.Ext4.data.SimpleStore({ + fields: [ + { name: 'wareHouseName' }, + { name: 'showTousseName' }, + { name: 'stockAmount' }, + { name: 'amount' }, + { name: 'sumAmount' } + ], + data: [] + }) + + var columns = [{ + header: "仓库名称", + dataIndex: "wareHouseName", + width: 120 + }, { + header: "物品名称", + dataIndex: "showTousseName", + width: 150 + }, { + header: "库存数量", + dataIndex: "stockAmount", + width: 70 + }, { + header: "待发数量", + dataIndex: "amount", + width: 70 + }, { + header: "差值", + dataIndex: "sumAmount", + width: 70, + renderer: function (v, p, record) { + return '' + v + '' + } + }]; + + wareHouseGrid = new Ext4.grid.Panel({ + store: wareHouseStore, + columns: columns, + id: 'wareHouseGrid' + }); + + var configWin = new top.Ext4.window.Window({ + id: 'configWin', + layout: 'border', + title: '检验信息提示', + width: 500, + height: 300, + border: false, + plain: true, + modal: true, + buttonAlign: 'center', + items: [{ + region: 'center', + width: 400, + layout: 'fit', + items: [wareHouseGrid] + }], + buttons: [{ + text: '关闭', + handler: function () { + configWin.close(); + } + }] + }); + + for (var i = 0; i < data.length; i++) { + var showTousseName = data[i].showTousseName; + var stockAmount = data[i].stockAmount || 0; + var amount = data[i].amount; + var wareHouseName = data[i].wareHouseName; + var sumAmount = data[i].sumAmount; + + var record = { + wareHouseName: wareHouseName, + showTousseName: showTousseName, + stockAmount: stockAmount, + amount: amount, + sumAmount: sumAmount + } + + wareHouseStore.add(record) + } + + configWin.show(); +} + +Ext4.onReady(function () { + Ext4.QuickTips.init(); + listStore = new Ext4.data.SimpleStore({ + fields: [ + { name: 'invoiceDepartId' }, + { name: 'invoiceDepartName' }, + { name: 'invoiceDepartCode' }, + { name: 'disposableGoodsIds' }, + { name: 'costTotal' }, + { name: 'invoiceRemark' } + ] + }) + + columns = [{ + header: "待发货科室", + dataIndex: "invoiceDepartName", + width: 150 + }, { + header: "费用小计", + dataIndex: "costTotal", + width: 100 + }, { + header: "备注", + dataIndex: "invoiceRemark", + width: 200 + }]; + + var tbar = [{ + text: '设置待发货科室', + iconCls: 'btn_ext_application_set', + handler: function () { + var departNames = ''; + var codes = ''; + var orgUnitIds = ''; + var departNameArr = []; + var codeArr = []; + var orgUnitIdArr = []; + for (var i = 0; i < listStore.getCount(); i++) { + var items = listStore.getAt(i); + if (items.data.invoiceDepartName !== '总计') { + departNameArr[i] = items.data.invoiceDepartName; + orgUnitIdArr[i] = items.data.invoiceDepartId; + codeArr[i] = items.data.invoiceDepartCode; + } + } + if (departNameArr.length > 0) { + departNames = departNameArr.join(';'); + codes = codeArr.join(';'); + orgUnitIds = orgUnitIdArr.join(';'); + } + openSelectReceiverOrganization(departNames, codes, 'batchInvoice', orgUnitIds); + } + }, '-', { + text: '设置待发物品', + iconCls: 'btn_ext_application_set', + handler: function () { + var names = ''; + var ids = ''; + var nameArr = []; + var idArr = []; + for (var i = 1; i < columns.length - 2; i = i + 2) { + var items = columns[i] + nameArr.push(items.header) + idArr.push(items.dataIndex.split('_')[1]) + } + if (nameArr.length > 0) { + names = nameArr.join(';'); + ids = idArr.join(';'); + } + openSelectTousse(names, ids, 'batchInvoice'); + } + }]; + + getList(); + + grid = new Ext4.grid.Panel({ + title: '批量发货列表', + store: listStore, + columns: columns, + plugins: [ + Ext4.create('Ext.grid.plugin.CellEditing', { + clicksToEdit: 2, + listeners: { + beforeedit: function (editor, context, eOpts) { + var record = context.record; + if (record.data.invoiceDepartName == '总计') { + return false; + } + }, + afteredit: function (editor, context, eOpts) { + var record = context.record; + var field = context.field; + var disposableGoodsIds = record.data['disposableGoodsIds']; + if (disposableGoodsIds.split(',').length > 0) { + var rowAmount = 0; + for (var j = 0; j < disposableGoodsIds.split(',').length; j++) { + var disposableGoodsId = disposableGoodsIds.split(',')[j]; + var amount = record.data['disposableGoods_' + disposableGoodsId] || 0; + var price = record.data['price/unit_' + disposableGoodsId].split('/')[0] + rowAmount += parseFloat((parseInt(amount) * parseFloat(price))); + } + record.set('costTotal', parseFloat(rowAmount).toFixed(1)); + } + var disposableGoodsId = field.split('_')[1]; + if (disposableGoodsId) { + var colAmount = 0; + var sumTotal = 0; + for (var i = 0; i < listStore.getCount(); i++) { + var items = listStore.getAt(i); + var amount = items.data['disposableGoods_' + disposableGoodsId] || 0; + var invoiceDepartName = items.data['invoiceDepartName']; + var costTotal = items.data['costTotal']; + if (invoiceDepartName !== '总计') { + if (amount !== '') { + colAmount += parseInt(amount); + } + if (costTotal !== '') { + sumTotal += parseFloat(costTotal) + } + } + } + listStore.getAt(listStore.getCount() - 1).set('disposableGoods_' + disposableGoodsId, colAmount); + listStore.getAt(listStore.getCount() - 1).set('costTotal', parseFloat(sumTotal).toFixed(1)); + } + } + } + }) + ], + id: 'grid', + tbar: tbar + }); + + var wareHouseStore = new Ext4.data.Store({ + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/wareHouseAction!getWareHouseData.do?isCssd=yes', + reader: { + root: 'data', + totalProperty: 'totalCount' + } + }, + fields: [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' }, + { name: 'orgUnitCode', mapping: 'orgUnitCode' } + ], + listeners: { + load: function (store, records) { + if (records.length > 0) { + for (var i = 0; i < records.length; i++) { + var orgUnitCode = records[i].data.orgUnitCode; + if (orgUnitCode == currentOrgUnitCode) { + Ext4.getCmp('wareHouseId').setValue(records[i].data.id); + } + } + } + } + } + }); + + wareHouseStore.load(); + + new Ext4.form.Panel({ + renderTo: "gridDiv", + frame: true, + labelSeparator: ':', + bodyStyle: 'padding:5px 5px 0px 5px', + width: '100%', + height: '100%', + autoScroll: true, + border: 0, + buttonAlign: 'center', + fieldDefaults: { + labelAlign: 'right', + labelWidth: 100 + }, + items: [{ + xtype: "fieldset", + title: "基础数据", + layout: 'column', + autoHeight: true, + id: "tops", + items: [{ + layout: 'form', + columnWidth: 0.15, + items: [{ + xtype: 'combo', + fieldLabel: '发货仓库', + id: 'wareHouseId', + name: 'wareHouseId', + minChars: 0, + valueField: 'id', + displayField: 'name', + store: wareHouseStore, + forceSelection: true, + lazyInit: false, + triggerAction: 'all', + typeAhead: false + }] + }, { + layout: 'form', + columnWidth: 0.15, + items: [{ + xtype: 'textfield', + fieldLabel: '发货员', + maxLength: '41', + id: 'sender', + name: 'sender', + readOnly: true, + anchor: '100%', + cls: 'x-item-disabled', + value: userName + }] + }, { + layout: 'form', + columnWidth: 0.15, + items: [{ + xtype: 'textfield', + fieldLabel: '核对员条码', + maxLength: '16', + id: 'assistantSenderBarcode', + name: 'assistantSenderBarcode', + anchor: '100%', + hidden: !sstsConfig.showInvoiceAssistantSender, + listeners: { + render: function (p) { + p.getEl().on('keypress', function (e) { + if (e.getKey() == 13) {//回车键 + InvoiceTableManager.getUserNameOfCurrentLoginUserOrgsByBarcode( + Ext4.getCmp('assistantSenderBarcode').getValue(), function (userName) { + if (userName != null) { + var resultArray = userName.split(":"); + if (resultArray[0] == "success") { + Ext4.getCmp('assistantSender').setValue(resultArray[1]); + } else { + showMultipleResult(resultArray[1]); + Ext4.getCmp('assistantSender').setValue(""); + } + } + Ext4.getCmp('assistantSenderBarcode').setValue(""); + }); + } + }); + } + } + }] + }, { + layout: 'form', + columnWidth: 0.15, + items: [{ + xtype: 'textfield', + fieldLabel: '核对员', + maxLength: '41', + id: 'assistantSender', + name: 'assistantSender', + readOnly: true, + anchor: '100%', + hidden: !sstsConfig.showInvoiceAssistantSender, + cls: 'x-item-disabled' + }] + }] + }, { + layout: 'fit', + autoHeight: true, + items: grid + }], + buttons: [{ + text: '批量发货', + hidden: batchInvoiceDisable, + handler: function () { + var wareHouseId = Ext4.getCmp('wareHouseId').getValue(); + var sender = Ext4.getCmp('sender').getValue(); + var assistantSender = Ext4.getCmp('assistantSender').getValue(); + var invoiceItems = getListData(1); + if (invoiceItems.length == 0) { + showResult('请填写物品数量!'); + return; + } + var params = { + invoiceType: TYPE_DISPOSABLEGOODS_CUSTOM_BATCH, + sourceWarehouseId: wareHouseId, + sender: sender, + sendOutGoodsStoreData: JSON.stringify(invoiceItems) + } + + if (sstsConfig.showInvoiceAssistantSender) { + if (sstsConfig.invoiceAssistantSenderRequired && assistantSender == '') { + showResult('核对员不能为空!'); + return; + } + params.assistantSender = assistantSender; + } + + Ext4.MessageBox.confirm("请确认", '是否确认批量发货?', function (btn) { + if (btn == 'yes') { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/invoiceAction!saveInvoiceByDepartOrInvoicePlanId.do', + params: params, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + showResult(result.msg) + setTimeout(function () { + window.location.reload(); + }, 500); + } else { + showResult(result.msg); + } + } + }); + } + }) + } + }, { + text: '库存检查', + hidden: wareHouseBtnDisable, + handler: function () { + var wareHouseId = Ext4.getCmp('wareHouseId').getValue(); + var invoiceItems = getListData(0); + + var params = { + wareHouseId: wareHouseId, + amountAndIdArray: JSON.stringify(invoiceItems) + } + + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/invoiceAction!getDisposableGoodInfoByMapAndWareHouseId.do', + params: params, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + if (result.data.length > 0) { + var data = result.data; + var wareHouseName = Ext4.getCmp('wareHouseId').getRawValue(); + var newData = []; + + for (var i = 0; i < data.length; i++) { + var showTousseName = data[i].showTousseName; + var stockAmount = data[i].stockAmount || 0; + var disposableGoodsId = data[i].disposableGoodsId; + var amount = sumObject.data['disposableGoods_' + disposableGoodsId] || 0; + + if (parseInt(stockAmount) - parseInt(amount) < 0) { + var record = { + wareHouseName: wareHouseName, + showTousseName: showTousseName, + stockAmount: stockAmount, + amount: amount, + sumAmount: parseInt(stockAmount) - parseInt(amount) + } + newData.push(record); + } + } + if (newData.length > 0) { + showWareHouse(newData); + } else { + Ext4.Msg.show({ + title: '提示', + msg: '当前所选仓库库存充足!', + buttons: Ext4.Msg.CANCEL, + icon: Ext4.Msg.INFO + }); + } + } + } else { + showResult(result.msg); + } + } + }); + } + }, { + text: '取消', + handler: function () { + Ext4.MessageBox.confirm("请确认", '是否关闭当前页面?', function (btn) { + if (btn == 'yes') { + window.opener = null; + window.close(); + } + }) + } + }] + }); +}) \ No newline at end of file