Index: ssts-web/src/main/webapp/disinfectsystem/config/gysdermyy/config.js =================================================================== diff -u -r27538 -r38577 --- ssts-web/src/main/webapp/disinfectsystem/config/gysdermyy/config.js (.../config.js) (revision 27538) +++ ssts-web/src/main/webapp/disinfectsystem/config/gysdermyy/config.js (.../config.js) (revision 38577) @@ -52,6 +52,8 @@ confirmRecyclingAmount:false, //只有装配完成才能使用清洗篮筐回收 recycleClassifyBasketAfterPacked:false, + //是否启用第三方器械包管理功能 + enbaleThirdPartyTousseManagementFunction:true, //禁用基数限制 disableCardinalNumLimit:true Index: ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.jsp (revision 38577) @@ -0,0 +1,38 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> +<%@page import="com.forgon.disinfectsystem.common.CssdUtils"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> +<%@ include file="/common/includeExtJs4_2.jsp"%> + +第三方器械包管理 + + + + + + + + + + + + + + \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.js (revision 38577) @@ -0,0 +1,83 @@ +var listStore; +var thirdPartyTousseGrid; + +Ext4.onReady(function () { + Ext4.QuickTips.init(); + var columns = [ + { header: "流水号", dataIndex: 'serialNumber', width: 150 }, + { header: "接收时间", dataIndex: 'receiveTime', width: 150 }, + { header: "接收人", dataIndex: 'receiver', width: 150 }, + { header: "送货人", dataIndex: 'sender', width: 150 }, + { header: "数量(包)", dataIndex: 'tousseAmount', width: 150 }, + { header: "备注", dataIndex: 'remark', width: 300 } + ]; + var tbar = [{ + text: '接收', + hidden: SSTS_ThirdPartyTousse_Receive, + iconCls: 'btn_ext_application_add', + handler: function () { + showAddOrEditWindow(''); + } + }, '-', { + text: '批量打印', + iconCls: 'icon_print', + handler: function () { + deleteConfig(thirdPartyTousseGrid); + } + }]; + + listStore = new Ext4.data.JsonStore({ + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/thirdPartyTousseReceiveRecordController/loadThirdPartyTousseReceiveRecord.mhtml', + reader: { + root: 'data.list' + }, + extraParams: {} + }, + fields: [ + { name: 'id' }, + { name: 'serialNumber' }, + { name: 'receiveTime' }, + { name: 'receiver' }, + { name: 'receiverId' }, + { name: 'sender' }, + { name: 'tousseAmount' }, + { name: 'remark' }, + { name: 'thirdPartyTousseInstances' }, + { name: 'wareHouseName' }, + { name: 'wareHouseId' } + ] + }); + + listStore.loadPage(1); + + thirdPartyTousseGrid = new Ext4.grid.GridPanel({ + title: '第三方器械包接收列表', + columns: columns, + frame: false, + autoScroll: false, + store: listStore, + tbar: tbar, + dockedItems: [{ + xtype: 'pagingtoolbar', + store: listStore, // same store GridPanel is using + dock: 'bottom', + displayInfo: true + }], + viewConfig: { + autoFill: true + }, + selModel: new Ext4.selection.CheckboxModel() + }); + + new Ext4.container.Viewport({ + layout: 'border', + items: [{ + region: 'center', + layout: 'fit', + items: [thirdPartyTousseGrid] + }] + }); + +}); \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menu.jsp =================================================================== diff -u -r38547 -r38577 --- ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 38547) +++ ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 38577) @@ -1093,6 +1093,16 @@ } + /** + * 《GYSDERMYY-24:第三方器械包管理》权限 + */ + var SSTS_ThirdPartyTousse_Select = true; + + if (!notInWhiteList(sstsConfig, 'enbaleThirdPartyTousseManagementFunction')) { + SSTS_ThirdPartyTousse_Select = false + } + + /** * 《手术预约管理》菜单 */ Index: ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/thirdPartyTousse/thirdPartyTousseForm.js (revision 38577) @@ -0,0 +1,445 @@ +var configWin; +var formPanel; + +function cancel() { + configWin.close(); +} + +//保存器械包接收信息 +function saveConfig(id) { + var mask = new Ext4.LoadMask({ + msg: '正在保存,请稍候...', + target: formPanel + }); + mask.show(); + var receiverId = top.Ext4.getCmp('receiverId').getValue(); + var sender = top.Ext4.getCmp('sender').getValue(); + var remark = top.Ext4.getCmp('remark').getValue(); + var wareHouseId = top.Ext4.getCmp('wareHouseId').getValue(); + var thirdPartyTousseInstances = []; + var leftGrid = top.Ext4.getCmp('leftGrid').getStore(); + for (var i = 0; i < leftGrid.getCount(); i++) { + var item = leftGrid.getAt(i); + thirdPartyTousseInstances.push({ + barcode:item.data.barcode, + tousseName:item.data.tousseName, + orgUnitId:item.data.orgUnitId, + orgUnitName:item.data.OrgUnitName + }) + } + var params = { + receiverId:receiverId, + sender:sender, + remark:remark, + wareHouseId:wareHouseId, + id:id, + thirdPartyTousseInstances:thirdPartyTousseInstances + } + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/thirdPartyTousseReceiveRecordController/receiveThirdPartyTousse.mhtml', + headers: { + 'Content-Type': 'application/json' + }, + jsonData: params, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + configWin.close(); + listStore.load(); + showResult('保存成功'); + } else { + showResult(result.message); + } + mask.hide(); + }, + failure: function (response, options) { + mask.hide(); + showResult('保存失败!'); + } + }); +} + +function updateTousseSumAmount(sumAmount,tousseName) { + var rightGrid = top.Ext4.getCmp('rightGrid').getStore(); + for (var i = 0; i < rightGrid.getCount(); i++) { + var item = rightGrid.getAt(i); + var amount = item.data.amount; + if (item.data.tousseName == tousseName) { + rightGrid.getAt(i).set('amount',parseInt(amount)+1) + } + } + top.Ext4.getCmp('totalAmount').setText("总数量(包):" + sumAmount); +} + +//显示窗口 +function showAddOrEditWindow(id) { + Ext4.define('Teams', { + extend: 'Ext4.data.Model', + fields: ['barcode', 'tousseName', 'sterileStartDate', 'expDate', 'packer', 'reviewer', 'orgUnitName'] + }); + + var wareHouseStore = new Ext4.data.Store({ + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/wareHouseAction!getWareHouseData.do', + reader: { + type: 'json', + root: 'data' + } + }, + fields: [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' }, + { name: 'orgUnitCode', mapping: 'orgUnitCode' } + ], + listeners: { + load: function (store, options) { + if (store.data.items.length > 0) { + var record = store.data.items[0]; + top.Ext4.getCmp('wareHouseId').setValue(record.data.id); + top.Ext4.getCmp('wareHouseName').setValue(record.data.name); + } + } + } + }); + + wareHouseStore.load(); + + var leftData = new Ext4.data.Store({ + fields: [ + { name: 'barcode' }, + { name: 'tousseName' }, + { name: 'sterileStartDate' }, + { name: 'expDate' }, + { name: 'packer' }, + { name: 'reviewer' }, + { name: 'orgUnitName' } + ], + data: [] + }); + + var rightData = new Ext4.data.Store({ + fields: [ + { name: 'tousseName' }, + { name: 'amount' } + ], + data: [] + }); + var leftGrid = new top.Ext4.grid.Panel({ + id: 'leftGrid', + store: leftData, + height: 420, + tbar: [{ + text: '扫描条码:' + }, { + xtype: 'textfield', + id: 'scanBarcode', + name: 'scanBarcode', + width: 200, + anchor: '99%', + enableKeyEvents: true, + listeners: { + render: function (c) { + c.getEl().on('keypress', function (e) { + if (e.getKey() == 13) { + var res = top.Ext4.getCmp('scanBarcode').getValue(); // '011985628@@水管接头@@2024-04-03 18:12:48@@2024-09-30@@肖宝松@@陈妙玲@@手术室'; + var barcode = res.split('@@')[0]; + var tousseName = res.split('@@')[1]; + if (res == '' || res.indexOf('@@') == -1) { + showResult('请扫描正确的二维码!'); + return + } + if (barcode == '') { + showResult('条码不能为空!'); + return + } + if (tousseName == '') { + showResult('器械包不能为空!'); + return + } + var leftGrid = top.Ext4.getCmp('leftGrid').getStore(); + var isHas = false; + var sumAmount = 0; + if (leftGrid.getCount() == 0) { + sumAmount = 1; + var record = [{ + tousseName: tousseName, + amount: 0 + }]; + rightData.add(record); + } else { + sumAmount = 1; + for (var i = 0; i < leftGrid.getCount(); i++) { + var item = leftGrid.getAt(i); + if (item.data.barcode == barcode) { + isHas = true; + break; + } + sumAmount++; + } + } + if (isHas) { + showResult('条码已存在!'); + top.Ext4.getCmp('scanBarcode').setValue(''); + return false; + } + var record = [{ + barcode: barcode, + tousseName: tousseName, + sterileStartDate: res.split('@@')[2], + expDate: res.split('@@')[3], + packer: res.split('@@')[4], + reviewer: res.split('@@')[5], + orgUnitName: res.split('@@')[6] + }]; + leftData.add(record); + top.Ext4.getCmp('scanBarcode').setValue(''); + updateTousseSumAmount(sumAmount, tousseName); + } + }); + } + } + }], + columns: [{ + text: '条码', + width: 80, + menuDisabled: true, + sortable: false, + dataIndex: 'barcode' + }, { + text: '物品名称', + width: 130, + menuDisabled: true, + sortable: false, + dataIndex: 'tousseName' + }, { + text: '灭菌日期', + width: 130, + menuDisabled: true, + sortable: false, + dataIndex: 'sterileStartDate' + }, { + text: '失效日期', + width: 100, + menuDisabled: true, + sortable: false, + dataIndex: 'expDate' + }, { + text: '申请科室', + width: 80, + menuDisabled: true, + sortable: false, + dataIndex: 'orgUnitName' + }, { + text: '配包人', + width: 80, + menuDisabled: true, + sortable: false, + dataIndex: 'packer' + }, { + text: '审核人', + width: 80, + menuDisabled: true, + sortable: false, + dataIndex: 'reviewer' + }] + }) + + var rightGrid = new top.Ext4.grid.Panel({ + title: '物品汇总', + store: rightData, + id: 'rightGrid', + height: 420, + tbar: [{ + xtype: 'button', + id: 'totalAmount', + hidden: false + }], + columns: [{ + text: '物品名称', + width: 140, + menuDisabled: true, + sortable: false, + dataIndex: 'tousseName' + }, { + text: '数量(包)', + width: 100, + menuDisabled: true, + sortable: false, + dataIndex: 'amount' + }] + }) + + formPanel = new top.Ext4.form.Panel({ + frame: true, + bodyPadding: '5 5 0', + width: 990, + autoHeight: true, + autoScroll: true, + layout: 'column', + fieldDefaults: { + labelAlign: 'right', + labelWidth: 80 + }, + border: false, + items: [{ + xtype: "fieldset", + title: '基础数据', + layout: 'column', + width: 970, + id: 'formPanel', + style: 'height:auto', + items: [{ + layout: 'form', + columnWidth: .33, + items: [{ + xtype: 'textfield', + fieldLabel: '送货员', + id: 'sender', + name: 'sender', + anchor: '100%', + allowBlank: true + }] + }, { + layout: 'form', + columnWidth: .33, + items: [{ + xtype: 'textfield', + fieldLabel: '接收人条码', + id: 'receiverBarcode', + name: 'receiverBarcode', + anchor: '100%', + allowBlank: true, + listeners: { + specialkey: function (thiz, e) { + if (e.getKey() == 13) { + var text = thiz.getValue(); + UserTableManager.getUserByBarcode(text, function (responseText) { + var result = Ext4.decode(responseText); + if (result.success) { + var result = Ext4.decode(responseText); + top.Ext4.getCmp('receiverId').setValue(result.id); + top.Ext4.getCmp('receiver').setValue(result.fullName); + top.Ext4.getCmp('receiverBarcode').setValue(''); + } else { + showResult('找不到该条码所对应的人员信息'); + } + }); + } + } + } + }] + }, { + layout: 'form', + columnWidth: .33, + items: [{ + xtype: 'hidden', + id: 'receiverId', + name: 'receiverId' + }, { + xtype: 'textfield', + fieldLabel: '接收人', + id: 'receiver', + name: 'receiver', + anchor: '100%', + allowBlank: true, + cls: 'fieldReadOnlyNoRemove', + readOnly: true + }] + }, { + layout: 'form', + columnWidth: .33, + items: [{ + xtype: 'textfield', + fieldLabel: '签收时间', + id: 'signDate', + name: 'signDate', + anchor: '100%', + allowBlank: true, + cls: 'fieldReadOnlyNoRemove', + readOnly: true + }] + }, { + layout: 'form', + columnWidth: .33, + items: [{ + xtype: 'hidden', + id: 'wareHouseId', + name: 'wareHouseId' + }, { + xtype: 'textfield', + fieldLabel: '仓库', + id: 'wareHouseName', + name: 'wareHouseName', + anchor: '100%', + allowBlank: true, + cls: 'fieldReadOnlyNoRemove', + readOnly: true + }] + }, { + layout: 'form', + columnWidth: .99, + items: [{ + xtype: 'textarea', + fieldLabel: '备注', + height: 50, + id: 'remark', + name: 'remark', + maxLength: 200, + anchor: '100%', + allowBlank: true + }] + }] + }, { + layout: 'column', + width: 970, + border: false, + id: 'gridPanel', + items: [{ + layout: 'form', + columnWidth: .74, + border: false, + items: leftGrid + }, { + layout: 'form', + columnWidth: .26, + border: false, + items: rightGrid + }] + }] + }); + configWin = new top.Ext4.window.Window({ + id: 'configWin', + layout: 'column', + title: '器械包接收信息', + width: 1000, + height: 650, + border: false, + plain: true, + modal: true, + items: [{ + region: 'center', + layout: 'fit', + border: false, + items: [formPanel] + }], + buttonAlign: 'center', + buttons: [{ + id: 'saveBtn', + text: '保存', + handler: function () { + if (formPanel.getForm().isValid()) { + saveConfig(id); + } else { + showResult('请填写表单!'); + return false; + } + } + }, { + text: '取消', + handler: cancel + }] + }); + configWin.show(); +} + Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r38547 -r38577 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 38547) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 38577) @@ -195,6 +195,15 @@ }) DisinfectsystemTreeData.push({ + text:"第三方器械包管理", + singleClickExpand:singleClickExpandTree, + hidden:SSTS_ThirdPartyTousse_Select, + children:[ + {hidden :SSTS_ThirdPartyTousse_Select,text:"器械包接收",href:WWWROOT+'/disinfectsystem/thirdPartyTousse/thirdPartyTousseView.jsp',hrefTarget:linkTarget,leaf:true} + ] +}) + +DisinfectsystemTreeData.push({ text:"运作监控管理", singleClickExpand:singleClickExpandTree, hidden:SSTS_supplyRoomOperate_View, Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r38547 -r38577 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 38547) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 38577) @@ -160,6 +160,11 @@ + + + + +