Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r38628 -r38749 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 38628) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 38749) @@ -159,7 +159,8 @@ hidden:SSTS_UseRecord_Menu && SSTS_DepartmentUseRecord_Menu, children:[ {hidden :SSTS_UseRecord_Menu,text:sstsConfig.enableDepartmentUseRecord ? "病人使用记录" : "使用记录",href:WWWROOT+'/disinfectsystem/useRecord/useRecordView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, - {hidden :SSTS_DepartmentUseRecord_Menu,text:"科室使用记录",href:WWWROOT+'/disinfectsystem/useRecord/useRecordView.jsp?departmentUseRecord=true',hrefTarget:linkTarget,leaf:true} + {hidden :SSTS_DepartmentUseRecord_Menu,text:"科室使用记录",href:WWWROOT+'/disinfectsystem/useRecord/useRecordView.jsp?departmentUseRecord=true',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_ScheduleExpeditedOfUseRecord_Manager,text:"预约加急管理",href:WWWROOT+'/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordView.jsp',hrefTarget:linkTarget,leaf:true} ] }); Index: ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordForm.js (revision 38749) @@ -0,0 +1,563 @@ +var loadUseRecordUrgentDetailStore; +var urgentLevelStore = new Ext4.data.Store({ + pageSize: 100, + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/urgentLevelAction!getUrgentsForSelect.do', + reader: { + type: 'json', + root: 'data' + } + }, + fields: [ + { name: 'id' }, + { name: 'urgentLevel' } + ] +}) + +//添加或者修改预约加急物品 +function showSaveUrgentReservationTousseWin(useRecordUrgentReservationId, objInfo) { + var tousseStore = new Ext4.data.Store({ + pageSize: 100, + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!searchComboTousseData.do', + reader: { + type: 'json', + totalProperty: 'totalCount', + root: 'data' + } + }, + fields: [ + { name: 'id', mapping: 'id' }, + { name: 'name', mapping: 'name' }, + { name: 'displayName', mapping: 'displayName' } + ] + }) + + var formPanel = new top.Ext4.form.Panel({ + frame: true, + labelSeparator: ':', + bodyStyle: 'padding:5px 5px 0px 25px;overflow: auto;', + width: 500, + id: 'formPanel', + fieldDefaults: { + labelAlign: 'right', + labelWidth: 80, + height: 22 + }, + items: [{ + xtype: 'hidden', + id: 'id', + name: 'id' + }, { + xtype: 'hidden', + id: 'hiddenUrgentLevelCount', + name: 'hiddenUrgentLevelCount', + value: 0 + }, { + layout: 'column', + autoHeight: true, + width: 430, + border: false, + items: [{ + layout: 'form', + columnWidth: 0.95, + border: false, + items: [{ + xtype: 'hidden', + id: 'tousseDefinitionId', + name: 'tousseDefinitionId' + }, { + fieldLabel: '物品名称', + xtype: 'combo', + id: 'tousseDefinitionName', + name: 'tousseDefinitionName', + queryParam: 'spell', + minChars: 0, + valueField: 'id', + displayField: 'displayName', + listWidth: 300, + store: tousseStore, + pageSize: 25, + listConfig: { width: 300 }, + forceSelection: true, + lazyInit: true, + triggerAction: 'all', + hideTrigger: true, + typeAhead: false, + anchor: '95%', + listeners: { + select: function (combo, record, index) { + top.Ext4.getCmp('tousseDefinitionId').setValue(record[0].data.id); + } + } + }] + }] + }, { + layout: 'column', + border: false, + columnWidth: 0.95, + items: [{ + xtype: 'hidden', + id: 'urgentInfoId_0', + name: 'urgentInfoId_0' + }, { + layout: 'form', + columnWidth: .35, + border: false, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + allowNegative: false, + minValue: 0, + name: 'reservationUrgentAmount_0', + id: 'reservationUrgentAmount_0', + fieldLabel: "加急数量", + anchor: '95%' + }] + }, { + layout: 'form', + columnWidth: .5, + border: false, + items: [{ + xtype: 'hidden', + id: 'urgentLevelId_0', + name: 'urgentLevelId_0' + }, { + xtype: 'combo', + fieldLabel: '加急等级', + id: 'urgentLevelName_0', + name: 'urgentLevelName_0', + store: urgentLevelStore, + valueField: 'urgentLevel', + displayField: 'urgentLevel', + minChars: 0, + forceSelection: true, + lazyInit: true, + editable: false, + triggerAction: 'all', + anchor: '95%', + typeAhead: false, + listeners: { + select: function (combo, record, index) { + top.Ext4.getCmp('urgentLevelId_0').setValue(record[0].data.id); + } + } + }] + }, { + layout: 'form', + columnWidth: .1, + border: false, + height: 28, + items: [{ + xtype: 'button', + tooltip: '添加', + iconCls: 'btn_ext_add', + style: 'margin-left: 10px;padding-top: 4px;', + handler: function () { + var hiddenUrgentLevelCount = top.Ext4.getCmp('hiddenUrgentLevelCount').getValue(); + addUrgentBox(parseInt(hiddenUrgentLevelCount) + 1); + } + }] + }] + }], + buttonAlign: 'center', + buttons: [{ + text: '保存', + handler: function () { + saveUrgentReservationTousse(useRecordUrgentReservationId); + } + }, { + text: '取消', + handler: function () { + win.close(); + } + }] + }) + + var win = new top.Ext4.Window({ + id: 'configForm', + layout: 'fit', + title: '预约加急物品', + width: 500, + height: 300, + border: false, + modal: true, + plain: true, + items: [formPanel] + }); + win.show(); + if (objInfo) { + urgentLevelStore.load(); + top.Ext4.getCmp('hiddenUrgentLevelCount').setValue(objInfo.data.children.length); + top.Ext4.getCmp('id').setValue(objInfo.data.id); + top.Ext4.getCmp('tousseDefinitionId').setValue(objInfo.data.tousseDefinitionId); + top.Ext4.getCmp('tousseDefinitionName').setRawValue(objInfo.data.tousseName); + top.Ext4.getCmp('tousseDefinitionName').disable(); + if (objInfo.data.children.length > 0) { + top.Ext4.getCmp('urgentInfoId_0').setValue(objInfo.data.children[0].urgentInfoId); + top.Ext4.getCmp('reservationUrgentAmount_0').setValue(objInfo.data.children[0].reservationUrgentAmount); + top.Ext4.getCmp('urgentLevelId_0').setValue(objInfo.data.children[0].urgentLevelId); + top.Ext4.getCmp('urgentLevelName_0').setValue(objInfo.data.children[0].urgentLevelName); + } + if (objInfo.data.children.length > 1) { + for (var i = 1; i < objInfo.data.children.length; i++) { + addUrgentBox(i); + top.Ext4.getCmp('urgentInfoId_' + i).setValue(objInfo.data.children[i].urgentInfoId); + top.Ext4.getCmp('reservationUrgentAmount_' + i).setValue(objInfo.data.children[i].reservationUrgentAmount); + top.Ext4.getCmp('urgentLevelId_' + i).setValue(objInfo.data.children[i].urgentLevelId); + top.Ext4.getCmp('urgentLevelName_' + i).setValue(objInfo.data.children[i].urgentLevelName); + if (objInfo.data.children[i].urgentAmount > 0) { + top.Ext4.getCmp('deleteBtn_' + i).hide(); + } + } + } + } +} + +//添加预约加急等级 +function addUrgentBox(count) { + top.Ext4.getCmp('formPanel').add({ + layout: 'column', + border: false, + columnWidth: 0.95, + id: 'urgentLevelBox_' + count, + items: [{ + xtype: 'hidden', + id: 'urgentInfoId_' + count, + name: 'urgentInfoId_' + count + }, { + layout: 'form', + columnWidth: .35, + border: false, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + allowNegative: false, + minValue: 0, + name: 'reservationUrgentAmount_' + count, + id: 'reservationUrgentAmount_' + count, + fieldLabel: "加急数量", + anchor: '95%' + }] + }, { + layout: 'form', + columnWidth: .5, + border: false, + items: [{ + xtype: 'hidden', + id: 'urgentLevelId_' + count, + name: 'urgentLevelId_' + count + }, { + xtype: 'combo', + fieldLabel: '加急等级', + id: 'urgentLevelName_' + count, + name: 'urgentLevelName_' + count, + store: urgentLevelStore, + valueField: 'urgentLevel', + displayField: 'urgentLevel', + minChars: 0, + forceSelection: true, + lazyInit: true, + editable: false, + triggerAction: 'all', + anchor: '95%', + typeAhead: false, + listeners: { + select: function (combo, record, index) { + top.Ext4.getCmp('urgentLevelId_' + count).setValue(record[0].data.id); + } + } + }] + }, { + layout: 'form', + columnWidth: .1, + border: false, + height: 28, + id: 'deleteBtn_' + count, + items: [{ + xtype: 'button', + tooltip: '删除', + iconCls: 'btn_ext_close', + style: 'margin-left: 10px;padding-top: 4px;', + handler: function () { + deleteUrgentBox(count); + } + }] + }] + }); + + top.Ext4.getCmp('hiddenUrgentLevelCount').setValue(count) + top.Ext4.getCmp('formPanel').doLayout(); +} + +//删除预约加急等级 +function deleteUrgentBox(hiddenIndex) { + top.Ext4.getCmp('formPanel').remove('urgentLevelBox_' + hiddenIndex); + top.Ext4.getCmp('formPanel').doLayout(); +} + +//保存预约加急物品 +function saveUrgentReservationTousse(useRecordUrgentReservationId) { + var hiddenUrgentLevelCount = top.Ext4.getCmp('hiddenUrgentLevelCount').getValue(); + var tousseDefinitionId = top.Ext4.getCmp('tousseDefinitionId').getValue(); + var id = top.Ext4.getCmp('id').getValue(); + if (!tousseDefinitionId) { + showResult('物品不能为空!'); + return + } + var children = []; + var k = 0; + var isNull = false; + var amountIs0 = false; + for (var i = 0; i <= hiddenUrgentLevelCount; i++) { + if (top.Ext4.getCmp('urgentInfoId_' + i)) { + var urgentInfoId = top.Ext4.getCmp('urgentInfoId_' + i).getValue(); + var reservationUrgentAmount = top.Ext4.getCmp('reservationUrgentAmount_' + i).getValue() || ''; + var urgentLevelId = top.Ext4.getCmp('urgentLevelId_' + i).getValue() || ''; + if (urgentLevelId == '' || reservationUrgentAmount == '') { + isNull = true; + break; + } + if (parseInt(reservationUrgentAmount) < 0) { + amountIs0 = true; + break; + } + children.push({ + id: urgentInfoId || '', + reservationUrgentAmount: reservationUrgentAmount, + urgentLevelId: urgentLevelId, + sequence: k + }) + k++ + } + } + if (isNull) { + showResult('加急物品和数量不能为空!'); + return + } + if (amountIs0) { + showResult('数量不能小于0!'); + return + } + var params = { + tousseDefinitionId: tousseDefinitionId, + useRecordUrgentReservationId: useRecordUrgentReservationId, + id: id || '', + children: children + } + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/useRecord/useRecordUrgentReservationController/saveUrgentReservationTousse.mhtml', + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + jsonData: params, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + showResult('保存成功'); + top.Ext4.getCmp('configForm').close(); + useRecordUrgentReservationId = useRecordUrgentReservationId; + columnTreeGrid.getStore().reload(); + columnTreeGrid.expandAll(); + } else { + showResult(result.message) + } + } + }); +} + +//删除预约加急物品 +function deleteUrgentReservationTousse(ids) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/useRecord/useRecordUrgentReservationController/deleteUrgentReservationTousse.mhtml', + params: { + ids: ids + }, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + useRecordUrgentReservationId = useRecordUrgentReservationId; + columnTreeGrid.getStore().reload(); + columnTreeGrid.expandAll(); + showResult('删除成功'); + } else { + showResult(result.message) + } + } + }); +} + +//查看预约加急设置明细 +function loadUseRecordUrgentReservationDetail(id, reservationDate) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/useRecord/useRecordUrgentReservationController/loadUseRecordUrgentReservationDetail.mhtml', + params: { + useRecordUrgentReservationId: id + }, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result) { + showUseRecordUrgentReservationDetail(result, reservationDate); + } else { + showResult(result.message) + } + } + }); +} + +//显示预约加急设置明细窗口 +function showUseRecordUrgentReservationDetail(data, reservationDate) { + var rows = []; + for (var i = 0; i < data.length; i++) { + var tousseName = data[i].tousseName; + var tousseDefinitionId = data[i].tousseDefinitionId; + var useRecordUrgentReservationId = data[i].useRecordUrgentReservationId; + for (var j = 0; j < data[i].children.length; j++) { + var reservationUrgentAmount = data[i].children[j].reservationUrgentAmount; + var urgentAmount = data[i].children[j].urgentAmount; + var urgentInfoId = data[i].children[j].urgentInfoId; + var urgentLevelName = data[i].children[j].urgentLevelName; + var urgentInfoId = data[i].children[j].urgentInfoId; + var finishStatus = ''; + if (reservationUrgentAmount == urgentAmount) { + finishStatus = '全部完成'; + } else if (reservationUrgentAmount > urgentAmount && urgentAmount > 0) { + finishStatus = '部分完成'; + } + rows.push({ + nid: useRecordUrgentReservationId, + tousseName: tousseName, + tousseDefinitionId: tousseDefinitionId, + urgentLevelName: urgentLevelName, + urgentInfoId: urgentInfoId, + reservationUrgentAmount: reservationUrgentAmount, + urgentAmount: urgentAmount, + finishStatus: finishStatus + }) + } + } + Ext4.define('Teams', { + extend: 'Ext4.data.Model', + fields: ['nid', 'tousseName', 'tousseDefinitionId', 'finishStatus', 'reservationUrgentAmount', 'urgentAmount', 'urgentInfoId', 'urgentLevelName', 'useRecordUrgentReservationId'] + }); + + var storeData = new Ext4.data.Store({ + model: 'Teams', + data: rows + }); + + var grid = new top.Ext4.grid.Panel({ + store: storeData, + width: 600, + height: 150, + columns: [{ + text: '物品名称', + width: 160, + dataIndex: 'tousseName' + }, { + text: '完成状态', + width: 120, + dataIndex: 'finishStatus', + renderer: renderFinishStatusColor + }, { + text: '加急等级', + width: 100, + dataIndex: 'urgentLevelName' + }, { + text: '加急数量', + width: 100, + dataIndex: 'reservationUrgentAmount' + }, { + text: '已加急数量', + width: 100, + dataIndex: 'urgentAmount' + }], + listeners: { + itemclick: function (view, record, item, index, e) { + loadUseRecordUrgentDetailStore.load({ + params: { + useRecordUrgentReservationId: record.data.nid, + tousseReservationUrgentInfoId: record.data.urgentInfoId + } + }) + } + } + }) + + loadUseRecordUrgentDetailStore = new Ext4.data.Store({ + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/useRecord/useRecordUrgentReservationController/loadUseRecordUrgentDetail.mhtml', + reader: { + root: 'data' + } + }, + fields: [ + { name: 'tousseName', mapping: 'tousseName' }, + { name: 'urgentLevelName', mapping: 'urgentLevelName' }, + { name: 'invoicePlanSerialNumber', mapping: 'invoicePlanSerialNumber' } + ] + }) + + var gridPagnel = new top.Ext4.grid.Panel({ + store: loadUseRecordUrgentDetailStore, + width: 600, + height: 150, + columns: [{ + text: '物品名称', + width: 180, + dataIndex: 'tousseName' + }, { + text: '加急等级', + width: 150, + dataIndex: 'urgentLevelName' + }, { + text: '申请单流水号', + width: 150, + dataIndex: 'invoicePlanSerialNumber' + }] + }) + + var formPanel = new top.Ext4.form.Panel({ + frame: true, + labelSeparator: ':', + bodyStyle: 'padding:10px;overflow: auto;', + width: 600, + fieldDefaults: { + labelAlign: 'right', + labelWidth: 80, + height: 22 + }, + items: [{ + xtype: "fieldset", + title: '预约物品汇总', + layout: 'column', + autoHeight: true, + columnWidth: .9, + cls: 'ext4PanelClass', + items: grid + }, { + xtype: "fieldset", + title: '加急物品明细', + layout: 'column', + autoHeight: true, + columnWidth: .9, + cls: 'ext4PanelClass', + items: gridPagnel + }] + }) + var win = new top.Ext4.Window({ + layout: 'fit', + title: '【' + reservationDate + '】预约加急物品明细汇总', + width: 660, + height: 500, + border: false, + modal: true, + plain: true, + items: [formPanel] + }); + win.show(); +} \ No newline at end of file Index: ssts-web/src/main/webapp/themes/portalPage/img/tabs_scheduleExpeditedOfUseRecord.jpg =================================================================== diff -u Binary files differ Index: ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/scheduleExpeditedOfUseRecord/scheduleExpeditedOfUseRecordView.jsp (revision 38749) @@ -0,0 +1,39 @@ +<%@page import="com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> +<%@ page import="com.forgon.directory.vo.LoginUserData" %> +<% + LoginUserData userData = AcegiHelper.getLoginUser(); + String userName = userData.getUserFullName(); + request.setAttribute("userName",userName); +%> + +
+ +" + v + "
"; + } + return "" + v + "
"; +} + +Ext4.onReady(function () { + Ext4.QuickTips.init(); + + var tabs = Ext4.createWidget('tabpanel', { + id: 'tabs', + width: document.body.offsetWidth - 10, + height: document.body.offsetHeight - 13, + plain: true, + deferredRender: false, + tabBar: { + items: [{ + iconCls: 'btn_ext_add', + closable: false, + handler: function (btn, e) { + addNewTab(tabs); + } + }] + } + }); + + var columns = [ + { header: "预约日期", dataIndex: 'reservationDate', width: 150, sortable: false, align: 'center' }, + { header: "操作人", dataIndex: 'operator', width: 150, sortable: false, align: 'center' }, + { header: "操作时间", dataIndex: 'operateTime', width: 150, sortable: false, align: 'center' }, + { header: "预约加急状态", dataIndex: 'finishStatus', width: 100, sortable: false, align: 'center', renderer: renderFinishStatusColor }, + { + header: "明细汇总", dataIndex: 'id', width: 100, sortable: false, align: 'center', renderer: function (v, p, record) { + return "查看"; + } + }, + { header: "备注", dataIndex: 'remark', width: document.body.clientWidth - 730, sortable: false } + ]; + + listStore = Ext4.create('Ext.data.Store', { + pageSize: 1000, + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/baseData/useRecord/useRecordUrgentReservationController/loadCurrentLoginOrgUnitHistoryUrgentReservation.mhtml', + reader: { + root: 'data.list', + totalProperty: 'count' + }, + actionMethods: { + read: 'POST' + } + }, + fields: [ + { name: 'id' }, + { name: 'reservationDate' }, + { name: 'operator' }, + { name: 'operateTime' }, + { name: 'finishStatus' }, + { name: 'remark' } + ], + autoLoad: true + }); + + listStore.loadPage(1); + + listGrid = new Ext4.grid.GridPanel({ + columns: columns, + frame: false, + autoScroll: false, + store: listStore, + viewConfig: { + autoFill: true + } + }); + + tabs.insert(0, { + title: '历史汇总', + items: [listGrid] + }); + + reloadTabs(tabs); +}) \ No newline at end of file Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r38699 -r38749 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 38699) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 38749) @@ -186,6 +186,8 @@