Index: ssts-web/src/main/webapp/homepage/portalPage.js =================================================================== diff -u -r32051 -r32157 --- ssts-web/src/main/webapp/homepage/portalPage.js (.../portalPage.js) (revision 32051) +++ ssts-web/src/main/webapp/homepage/portalPage.js (.../portalPage.js) (revision 32157) @@ -921,6 +921,11 @@ if (arr.indexOf('自定义表单') == -1 && itemId == 'customform'){ return returnContent; } + + //器械包库存图标 + if (arr.indexOf('器械包库存') == -1 && itemId == 'tousseGoodsStockView'){ + return returnContent; + } }else { if(itemId == 'cardinalNumManage' || itemId == 'sterilizerDelivery' || itemId == 'deviceMaintenance' || itemId == 'deviceMaintenanceCustom' || itemId == 'foreignProxySterilizationManage' || itemId == 'foreignTousseApplication' || itemId == 'customform'){ return returnContent; @@ -1494,8 +1499,90 @@ } }); } +var tousseGoodsStockWarningWin; +//FSSDERMYY-12:显示器械包库存告警 +function showTousseGoodsStockWarningWin(){ + var gridPanel = new Ext.grid.GridPanel({ + store: new Ext.data.SimpleStore({ + fields : ['message','orgUnitCode','orgUnitName'], + data : [] + }), + columns: [{ + header: "告警类型", width: 360, dataIndex: 'message', + }, { + header: "操作", width: 70,dataIndex: 'warningItemType',renderer : function(v, p, record){ + var orgUnitName = record.data.orgUnitName; + var orgUnitCode = record.data.orgUnitCode; + return "查看详细"; + } + }], + stripeRows: true, + viewConfig: { + forceFit:true + }, + hideHeaders: true, + height:200, + width:600 + }); + tousseGoodsStockWarningWin = new Ext.Window({ + autoHeight:true, + title : '器械包库存告警', + width:615, + draggable:true, + modal:true, + closeAction:'close', + items:[gridPanel] + }); + Ext4.Ajax.request({ + async: true, + dataType:"json", + params:{ + 'orgUnitCode':dirOrgCode + }, + url: WWWROOT+"/system/systemWarningAction!getTousseGoodsStockAlarmWarning.do", + success: function(response) { + var result = Ext4.decode(response.responseText); + if(result.data.length > 0){ + var record = Ext.data.Record.create([ + {name : 'message'}, + {name : 'orgUnitCode'}, + {name : 'orgUnitName'} + ]); + for(var i=0;i"+v+"

"; + }else { + return v; + } + }else { + return v; + } + }}, { header: "所属科室/仓库", width: 180, dataIndex: 'orgUnitName' }, - { header: "数量", width: 60, dataIndex: 'amount', sortable: false, renderer: amountDetailsStock } + { header: "库存数量", width: 80, dataIndex: 'amount', sortable: false, renderer: amountDetailsStock }, + { header: "最低库存", width: 80, dataIndex: 'minWarnStock' } ); var readerDetail = [ { name: 'name' }, { name: 'orgUnitName' }, { name: 'amount' }, + { name: 'minWarnStock' }, { name: 'orgUnitCode' } ]; + //科室数据源 + var departJsonStore = new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + root: 'data' + }, [{ + name: 'id', + mapping: 'id' + }, + { + name: 'name', + mapping: 'name' + } + ]) + }); + + departJsonStore.load(); + var form = new Ext.Panel({ title: '器械包库存列表', region: 'north', @@ -222,7 +259,7 @@ layout: 'column', items: [{ layout: 'form', - width: 400, + width: 300, labelWidth: 90, labelAlign: 'right', items: [{ @@ -254,6 +291,67 @@ typeAhead: false, anchor: '95%' }] + },{ + layout: 'form', + width: 350, + labelWidth: 90, + labelAlign: 'right', + items: [{ + xtype: 'combo', + fieldLabel: "查询范围", + name: "stockFilter", + id: "stockFilter", + valueField: 'value', + displayField: 'value', + allowBlank: false, + editable: false, + store: new Ext.data.SimpleStore({ + fields: ['value'], + data: [['全部器械包'], ['库存数量≤设置最低库存的器械包']] + }), + value: '全部器械包', + forceSelection: true, + mode: 'local', + anchor: '95%', + triggerAction: 'all' + }] + },{ + xtype:'hidden', + id: 'departCode', + name: 'departCode', + value:orgUnitCoding + },{ + layout: 'form', + width: 300, + labelWidth: 90, + labelAlign: 'right', + id:'departDom', + hidden:true, + items: [{ + xtype: 'combo', + fieldLabel: "科室", + queryParam: 'spell', + id: 'departName', + name: 'departName', + minChars: 0, + valueField: 'name', + displayField: 'name', + anchor: '95%', + store: departJsonStore, + lazyInit: true, + value:orgUnitName, + triggerAction: 'all', + typeAhead: false, + allowBlank: true, + forceSelection : true, + editable: false, + listeners : { + select : function(thiz, record, index, eOpts){ + var id = record.data.id; + Ext.getCmp('departCode').setValue(id); + } + } + }] }] }], buttons: [{ @@ -269,13 +367,16 @@ iconCls: 'icon_set', handler: function () { $Id('tousseName').value = ""; + Ext.getCmp('departCode').setValue(orgUnitCoding); + Ext.getCmp('departName').setValue(orgUnitName); } }, { text: '设置统计的器械包', minWidth: 50, iconCls: 'icon_set', handler: function () { - setNeedStatisticsTousse(model, top.dirOrgCode, null); + var dirOrgCode = Ext.getCmp('departCode').getValue() || top.dirOrgCode; + setNeedStatisticsTousse(model, dirOrgCode, null); } }, { text: '校正库存', @@ -295,6 +396,25 @@ }); DWREngine.setAsync(true); } + }, { + text: '最低库存设置', + minWidth: 50, + iconCls: 'icon_set', + handler: function () { + var dirOrgCode = Ext.getCmp('departCode').getValue() || top.dirOrgCode; + setGoodsWarnStock(dirOrgCode); + } + }, { + text: '导出', + minWidth: 50, + iconCls: 'btn_ext_download', + handler: function () { + var tousseName = Ext.getCmp('tousseName').getRawValue(); + var stockFilter = Ext.getCmp('stockFilter').getRawValue(); + var departCode = Ext.getCmp('departCode').getValue(); + console.log(departCode) + location.href = WWWROOT + "/disinfectSystem/baseData/orgUnitGoodsWarnStockAction!exportOrgUnitGoodsStockInfo.do?tousseName="+encodeURI(tousseName)+'&stockFilter='+encodeURI(stockFilter)+'&orgUnitCode='+departCode; + } }] }); @@ -314,13 +434,41 @@ null ); + //是否一级供应室用户 + var isFirstRoomPeople = false; + DWREngine.setAsync(false); + //验证当前登录用户属于一级供应室还是二级供应室 + UserTableManager.checkForSupplyType(function(data){ + var result = Ext.decode(data); + if(result.result){//一级供应室 + Ext.getCmp('departDom').show(); + }else{//二级供应室 + Ext.getCmp('departDom').hide(); + } + }); + DWREngine.setAsync(true); + new Ext.Viewport({ layout: 'border', items: [form, { region: 'center', margins: '0 0 0 0', layout: 'fit', - items: grid + items: grid, + listeners:{ + render:function(){ + if(newOrgUnitName !== undefined && newOrgUnitName !== ''){ + if(Ext.getCmp('departName')){ + Ext.getCmp('departName').setValue(newOrgUnitName); + } + Ext.getCmp('departCode').setValue(newOrgUnitCoding); + Ext.getCmp('stockFilter').setValue('库存数量≤设置最低库存的器械包'); + setTimeout(function(){ + initQueryValueAndReload(); + }, 1000); + } + } + } }] }); }); Index: ssts-web/src/main/webapp/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp =================================================================== diff -u -r29513 -r32157 --- ssts-web/src/main/webapp/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp (.../tousseGoodsStockView.jsp) (revision 29513) +++ ssts-web/src/main/webapp/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp (.../tousseGoodsStockView.jsp) (revision 32157) @@ -1,7 +1,14 @@ <%@ page contentType="text/html; charset=UTF-8"%> <%@page import="com.forgon.disinfectsystem.entity.basedatamanager.reportoption.GoodsOption"%> +<%@page import="com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager"%> <%@ include file="/common/taglibs.jsp"%> - +<% + SupplyRoomConfigManager supplyRoomConfigManager = (SupplyRoomConfigManager)SpringBeanManger.getBean("supplyRoomConfigManager"); + String orgUnitCoding = AcegiHelper.getLoginUser().getOrgUnitCodingFromSupplyRoomConfig(); + String orgUnitName = AcegiHelper.getLoginUser().getOrgUnitNameCodingFromSupplyRoomConfig(); + request.setAttribute("orgUnitName",orgUnitName); + request.setAttribute("orgUnitCoding",orgUnitCoding); + %> @@ -13,11 +20,16 @@ SSTS_TousseGoodsStockAdjust = false; var model = '<%=GoodsOption.MODEL_TOUSSEGOODSSTOCK%>'; //设置的类型 + var orgUnitName = '${orgUnitName}'; + var orgUnitCoding = '${orgUnitCoding}'; + var newOrgUnitName = '${param.orgUnitName}'; + var newOrgUnitCoding = '${param.orgUnitCode}'; + @@ -42,6 +54,8 @@
+ +
\ No newline at end of file Index: ssts-web/src/main/webapp/themes/portalPage/img/tousseGoodsStock.png =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/menu/menuconfigure.js =================================================================== diff -u -r31491 -r32157 --- ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 31491) +++ ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/menu/menuconfigure.js (.../menuconfigure.js) (revision 32157) @@ -425,7 +425,7 @@ {hidden :SSTS_ForeignTousse_Manage,text:"停用的外来器械包",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/foreignTousseView.jsp?editMode=true&onlyShowDisable=yes',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseInstanceManager_ViewMenu,text:"器械包信息",href:WWWROOT+'/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseInstanceManager_ViewMenu,text:"标识牌信息",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/idCardInstanceView.jsp',hrefTarget:linkTarget,leaf:true}, - {hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_TousseGoodsStock,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true}, Index: ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js =================================================================== diff -u -r32117 -r32157 --- ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js (.../config.js) (revision 32117) +++ ssts-web/src/main/webapp/disinfectsystem/config/fssdermyy/config.js (.../config.js) (revision 32157) @@ -145,6 +145,8 @@ showCameraPhoto:true, //是否启用回收拍摄功能 showCameraPhotoInRecyclingModule:true, + //器械包库存告警提醒时间间隔设置 + setTheAlarmReminderTimeIntervalForTheEquipmentPackageInventor:30, //提取住院号的正则表达式 regExpForExtractingHospitalNumber:"\"PatNO\":\"(.*?)\"}", //提取诊疗号的正则表达式 Index: ssts-web/src/main/webapp/disinfectsystem/reportforms/js/setGoodsOption.js =================================================================== diff -u -r26060 -r32157 --- ssts-web/src/main/webapp/disinfectsystem/reportforms/js/setGoodsOption.js (.../setGoodsOption.js) (revision 26060) +++ ssts-web/src/main/webapp/disinfectsystem/reportforms/js/setGoodsOption.js (.../setGoodsOption.js) (revision 32157) @@ -29,6 +29,8 @@ */ var formWindow; +var stockWindow; + /** * “grid”视图列表的数据储存器 */ @@ -39,10 +41,11 @@ */ var GoodsRecord = top.Ext.data.Record.create([{name : 'name'}]); +//缓存最低库存设置 +var sessionGoodsWarnStock = new newMap(); +var lastEventEditRow = 0; - - /** * 设置需要统计的器械包 * @param model 设置的类型 @@ -177,7 +180,7 @@ },{ id : 'name', header : "物品名称", - width:240, + width:160, dataIndex : 'name' },{id : 'deleteItem',header:'删除',width :40,menuDisabled: true, renderer: function(v,p,record){ @@ -375,3 +378,206 @@ } +//保存最低库存设置 +function saveGoodsWarnStock(){ + if(sessionGoodsWarnStock.size() > 0){ + var arr = []; + sessionGoodsWarnStock.forEach(function(item){ + arr.push(item); + }); + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/baseData/orgUnitGoodsWarnStockAction!batchSaveOrgUnitGoodsWarnStock.do', + async:false, + params : {goodsWarnStockArray : JSON.stringify(arr)}, + success : function(response) { + var result = Ext.decode(response.responseText) + showResult(result.message); + stockWindow.close(); + grid.dwrReload(); + }, + failure : function(response, options) { + showResult(response.responseText); + } + }); + } +} + +//最低库存设置 +function setGoodsWarnStock(orgUnitCode){ + var store = new top.Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/orgUnitGoodsWarnStockAction!loadTousseInfoByGoodsOption.do', + method : 'POST' + }), + baseParams : { + orgUnitCode : orgUnitCode + }, + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [ + {name : 'tousseDefinitionID'}, + {name : 'name'}, + {name : 'warnStock'} + ]) + }); + + store.load(); + + //“选择物品combo”的数据储存器 + var tousseAndDiposableGoodsStore2 = new top.Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/disinfectSystem/baseData/orgUnitGoodsWarnStockAction!loadTousseInfoByGoodsOption.do', + method : 'POST' + }), + baseParams : { + orgUnitCode : orgUnitCode + }, + reader : new Ext.data.JsonReader({ + totalProperty : 'totalCount', + root : 'data' + }, [ + {name : 'tousseDefinitionID',mapping : 'tousseDefinitionID'}, + {name : 'name',mapping : 'name'}] + ) + }); + + var tbar = [{ + text : '选择物品' + },{ + xtype : 'combo', + id : 'goodsSearch2', + name : 'goodsSearch2', + queryParam : 'spell', + fieldLabel : '物品名称', + minChars : 0, + valueField : 'tousseDefinitionID', + displayField : 'name', + anchor : '100%', + width:300, + store : tousseAndDiposableGoodsStore2, + forceSelection : true, + lazyInit : true, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true + },{ + text : '查询', + handler : function () { + var id = top.Ext.getCmp('goodsSearch2').getValue(); + var name = top.Ext.getCmp('goodsSearch2').getRawValue(); + if(name == ''){ + store.baseParams.tousseDefinitionId = ''; + }else { + store.baseParams.tousseDefinitionId = id; + } + store.load(); + } + }] + + var cm = new top.Ext.grid.ColumnModel([new top.Ext.grid.RowNumberer({header:"序号",width:40}),{ + id:'id', + name:'id', + hidden :true, + dataIndex : 'id' + },{ + id : 'name', + header : "物品名称", + width:160, + dataIndex : 'name' + },{ + id : 'warnStock', + header : "最低库存", + width:80, + dataIndex : 'warnStock', + editor : new top.Ext.form.NumberField( { + allowBlank : false, + minValue:1, + listeners:{ + change : function(field,newV,oldV){ + var record = store.getAt(lastEventEditRow); + sessionGoodsWarnStock.set(record.data.id,{ + "orgUnitCode":orgUnitCode, + "tousseDefinitionId":record.data.id, + "warningStock":newV + }); + } + } + }) + }]); + var formObj = new top.Ext.FormPanel({ + id : 'goodsWarnStockForm', + frame : true, + labelAlign:'right', + labelSeparator : ':', + bodyStyle : 'padding:5px 5px 0px 5px', + autoWidth : true, + autoHeight : true, + autoScroll : true, + items:[{ + layout : 'column', + items : [{ + xtype : 'hidden', + name : 'id', + id : 'id' + },{ + columnWidth : 1, + layout: 'form', + items : [ + new top.Ext.grid.EditorGridPanel({ + id : 'grid', + store : store, + cm : cm, + width : 240, + height: 240, + autoExpandColumn : 'name', + isCheckboxSelectionModel : true, + frame : false, + viewConfig: { + autoFit:true + }, + tbar:tbar, + clicksToEdit : 1, + bodyStyle : 'border:1px solid #afd7af', + anchor : '100%', + selModel : new top.Ext.grid.RowSelectionModel({ + singleSelect : false + }), + listeners: { + beforeedit: function(obj){ + lastEventEditRow = obj.row; + } + } + }) + ] + }] + }], + buttons : [{ + id : 'saveBtn', + text : '保存', + handler : function(){ + saveGoodsWarnStock(); + } + },{ + id : 'cancleBtn', + text : '取消', + handler : function() { + stockWindow.close(); + } + }] + }); + stockWindow = new top.Ext.Window({ + id : 'deviceMaintenanceWin', + layout : 'fit', + title : '选择物品', + width : 620, + modal : true, + autoHeight : true, + border : false, + plain : true, + items : [formObj] + }); + stockWindow.show(); +} + Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r32051 -r32157 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 32051) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 32157) @@ -460,7 +460,7 @@ {hidden :SSTS_ForeignTousse_Manage,text:"停用的外来器械包",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/foreignTousseView.jsp?editMode=true&onlyShowDisable=yes',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseInstanceManager_ViewMenu,text:"器械包信息",href:WWWROOT+'/disinfectsystem/toussemanager/tousseinstancemanager/tousseInstanceView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseInstanceManager_ViewMenu,text:"标识牌信息",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/idCardInstanceView.jsp',hrefTarget:linkTarget,leaf:true}, - {hidden :SSTS_Tousse,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_TousseGoodsStock,text:"器械包库存",href:WWWROOT+'/disinfectsystem/toussemanager/toussegoodsstock/tousseGoodsStockView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_TousseMaintain_Manager,text:"器械包保养",href:WWWROOT+'/disinfectsystem/toussemanager/toussemaintain/tousseMaintainView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :!sstsConfig.hasOwnProperty('enableComboTousse') || sstsConfig.enableComboTousse == false || SSTS_ComboTousseManager,text:"聚合包定义管理",href:WWWROOT+'/disinfectsystem/basedatamanager/tousse/comboTousse.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_DepartMentTousseManager,text:"基数管理",href:WWWROOT+'/disinfectsystem/departmentStock/departmentStockInputView.jsp',hrefTarget:linkTarget,leaf:true},