Index: ssts-web/src/main/webapp/disinfectsystem/packing/packageList.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/packing/packageList.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packageList.jsp (revision 33961) @@ -0,0 +1,26 @@ +<%@page import="java.util.Date"%> +<%@page import="java.text.SimpleDateFormat"%> +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> +<%@ include file="/common/includeExtJs4_2.jsp"%> + +包装列表 + + + + + + + + + + + \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r33777 -r33961 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 33777) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 33961) @@ -267,6 +267,14 @@ historyPackingLink.hrefTarget = linkTarget; historyPackingLink.leaf = true; DisinfectsystemTreeData[packingMenuIndexOfDisinfectsystemTree].children[taskGroup.length+1] = historyPackingLink; + + var packageListLink = new Object(); + packageListLink.hidden = SSTS_Tousse_List; + packageListLink.text = '包装记录'; + packageListLink.href = WWWROOT+'/disinfectsystem/packing/packageList.jsp'; + packageListLink.hrefTarget = linkTarget; + packageListLink.leaf = true; + DisinfectsystemTreeData[reviewMenuIndexOfDisinfectsystemTree].children[taskGroup.length] = packageListLink; } /**设置"装配管理"菜单的下一级子菜单(各任务组装配、自定义装配、历史装配记录)、"审核打包"菜单的下一级子菜单(各任务组) end */ Index: ssts-web/src/main/webapp/ext/fontSize12/styles/common.css =================================================================== diff -u -r33576 -r33961 --- ssts-web/src/main/webapp/ext/fontSize12/styles/common.css (.../common.css) (revision 33576) +++ ssts-web/src/main/webapp/ext/fontSize12/styles/common.css (.../common.css) (revision 33961) @@ -529,4 +529,10 @@ left: 0; top: 0; z-index: 99; +} + +/* ZSYY-303:只读样式*/ +.fieldReadOnlyNoRemove input { + background: #eee !important; + cursor: default; } \ No newline at end of file Index: ssts-web/src/main/webapp/homepage/menu.jsp =================================================================== diff -u -r33800 -r33961 --- ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 33800) +++ ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 33961) @@ -848,6 +848,16 @@ /** + * 《打包记录》菜单 + */ + var SSTS_Tousse_List = true; + + if (!notInWhiteList(sstsConfig, 'reviewManage')) { + SSTS_Tousse_List = false; + } + + +/** * 《灭菌管理》菜单 */ var SSTS_Sterilization_Menu = true; Index: ssts-web/src/main/webapp/disinfectsystem/packing/packageForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/packing/packageForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packageForm.js (revision 33961) @@ -0,0 +1,274 @@ +var configWin; +var store1; +var store2; +var store1Map = new newMap(); +var formPanel; + +function cancel() { + configWin.close(); +} + +//删除包装信息 +function deleteConfig(grid) { + var selectedRecords = grid.getSelectionModel().getSelection(); + var selectedCount = grid.getSelectionModel().getCount(); + console.log(selectedRecords) + var ids = []; + if (selectedCount < 1) { + showResult("请选择要删除的数据"); + } else { + for (var i = 0; i < selectedRecords.length; i++) { + ids[i] = selectedRecords[i].data['id']; + } + Ext4.MessageBox.confirm("请确认", "确定要删除选中的信息吗?", function (button, text) { + if ("yes" == button) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/packagingAction!deletePackagingRecord.do', + params: { ids: ids.join(';') }, + success: function (response, options) { + var result = Ext4.JSON.decode(response.responseText); + var success = result.success; + if (true != success) { + showResult(result.message); + return; + } else { + showResult('删除成功!'); + listStore.load(); + } + }, + failure: function (response, options) { + var result = Ext4.JSON.decode(response.responseText); + showResult(result.message); + } + }); + } + }); + } +} + +//保存包装信息 +function saveConfig(tousseBarcode, packer, packerBarcode) { + Ext4.Ajax.request({ + url: WWWROOT + '/disinfectSystem/packagingAction!savePackagingRecord.do', + params: { tousseBarcode: tousseBarcode, packer: packer, packerBarcode: packerBarcode }, + success: function (response, options) { + var result = Ext4.decode(response.responseText); + if (result.success) { + var barcode = result.data.barcode; + var tousseName = result.data.tousseName; + var sterileStartDate = result.data.sterileStartDate; + //扫描物品列表 + var data = [{ + barcode: barcode, + tousseName: tousseName, + sterileStartDate: sterileStartDate + }]; + store2.add(data); + top.Ext4.getCmp('barcode').setValue(''); + //统计信息 + if (store1Map.has(tousseName)) { + var amount = store1Map.get(tousseName); + store1Map.setValue(tousseName, (parseInt(amount) + 1)); + } else { + store1Map.put(tousseName, 1); + } + top.Ext4.getCmp('grid1Id').setTitle('统计信息:' + store1Map.size()); + store1.removeAll(); + var data1 = []; + store1Map.forEach(function (key, item) { + data1.push({ + tousseName: item, + amount: key + }) + }); + store1.add(data1); + listStore.loadPage(1); + } else { + showResult(result.msg); + } + }, + failure: function (response, options) { + showResult('保存失败!'); + } + }); +} + +//显示包装信息的窗口 +function showWindow() { + var formPanel = new top.Ext4.form.Panel({ + id: 'configForm', + region: 'center', + border: true, + frame: true, + buttonAlign: 'center', + layout: "column", + fieldDefaults: { + labelAlign: 'right', + labelWidth: 90 + }, + items: [{ + xtype: 'hidden', + id: 'packerBarcode', + name: 'packerBarcode' + }, { + columnWidth: .49, + xtype: 'textfield', + fieldLabel: '包装人条码', + id: 'packerBarcodeBox', + name: 'packerBarcodeBox', + allowBlank: true, + style: 'margin-bottom: 5px;', + anchor: '95%', + listeners: { + specialkey: function (thiz, e) { + if (e.getKey() == 13) { + UserTableManager.getUserByBarcode(thiz.value, function (responseText) { + if (responseText != null && responseText != "") { + var result = Ext4.decode(responseText); + if (!result.success) { + showResult("输入的条码有误!"); + return; + } + top.Ext4.getCmp('packer').setValue(result.fullName); + top.Ext4.getCmp('packerBarcode').setValue(thiz.value); + top.Ext4.getCmp('packerBarcodeBox').setValue(''); + focusExtJSField(top.Ext4.getCmp('barcode')); + } else { + showResult('找不到该条码所对应的人员信息'); + top.Ext4.getCmp('packerBarcodeBox').setValue(''); + } + }); + } + } + } + }, { + columnWidth: .49, + xtype: 'textfield', + fieldLabel: '包装人', + id: 'packer', + name: 'packer', + allowBlank: true, + style: 'margin-bottom: 5px;', + cls: 'fieldReadOnlyNoRemove', + readOnly: true, + anchor: '95%' + }, { + columnWidth: .49, + xtype: 'textfield', + fieldLabel: '扫描条码', + id: 'barcode', + name: 'barcode', + allowBlank: true, + style: 'margin-bottom: 5px;', + anchor: '95%', + listeners: { + specialkey: function (thiz, e) { + if (e.getKey() == 13) { + var packer = top.Ext4.getCmp('packer').getValue(); + var packerBarcode = top.Ext4.getCmp('packerBarcode').getValue(); + if (packer == '') { + showResult('请先扫描包装人条码'); + return; + } + saveConfig(thiz.value, packer, packerBarcode); + } + } + } + }], + buttons: [{ + text: '清空列表', + handler: function () { + store2.removeAll(); + store1.removeAll(); + store1Map.clear(); + top.Ext4.getCmp('grid1Id').setTitle('统计信息:0'); + } + }, { + text: '关闭', + handler: function () { + configWin.close(); + } + }] + }); + store1 = new top.Ext4.data.JsonStore({ + data: [], + fields: [ + { name: 'tousseName' }, + { name: 'amount' } + ] + }); + store2 = new top.Ext4.data.JsonStore({ + data: [], + fields: [ + { name: 'tousseName' }, + { name: 'barcode' }, + { name: 'sterileStartDate' } + ] + }); + var grid1 = new top.Ext4.grid.Panel({ + title: '统计信息:0', + store: store1, + width: 600, + height: 300, + id: 'grid1Id', + columns: [{ + text: '物品名称', + width: 460, + dataIndex: 'tousseName' + }, { + text: '数量', + width: 100, + dataIndex: 'amount' + }] + }); + var grid2 = new top.Ext4.grid.Panel({ + title: '扫描物品列表', + store: store2, + width: 600, + height: 300, + columns: [{ + text: '物品名称', + width: 280, + dataIndex: 'tousseName' + }, { + text: '物品条码', + width: 140, + dataIndex: 'barcode' + }, { + text: '灭菌日期', + width: 140, + dataIndex: 'sterileStartDate' + }] + }) + configWin = new top.Ext4.window.Window({ + id: 'configWin', + layout: 'border', + title: '登记包装信息', + width: 600, + height: 700, + modal: true, + border: false, + plain: true, + layout: 'anchor', + items: [{ + height: 100, + anchor: '100%', + layout: 'fit', + items: [formPanel] + }, { + region: 'center', + anchor: '100%', + layout: 'hbox', + align: 'stretch', + items: [grid1] + }, { + region: 'center', + anchor: '100%', + layout: 'hbox', + align: 'stretch', + items: [grid2] + }] + }); + configWin.show(); +} + Index: ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js =================================================================== diff -u -r31785 -r33961 --- ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 31785) +++ ssts-web/src/main/webapp/disinfectsystem/config/zsyy/config.js (.../config.js) (revision 33961) @@ -307,6 +307,8 @@ logoSetting:{"width" : 277, "height" : 44 }, //核算月报增加材料列 monthReportMaterialAmountOfTousse : true, + //启用包装记录功能 + enablePackagingRecordFunction:true, //明细核算月报是否显示材料数量列 showMaterialsAmountColumnOfDetailMonthReport : true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/packing/packageList.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/packing/packageList.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/packing/packageList.js (revision 33961) @@ -0,0 +1,147 @@ +var listStore; +var packageListGrid; +//修改科室分组 +function modify(v, data) { + editConfig(data.id); +} + +//根据科室或者名称过滤 +function search(listStore) { + var searchColumns = ''; + Ext4.getCmp('searchMenu').items.each(function (item) { + if (item.checked) { + searchColumns += item.name + ';'; + } + }); + searchColumns = searchColumns.substring(0, searchColumns.length - 1); + listStore.proxy.extraParams.searchKeyWord = Ext4.getCmp('searchKeyWord').getValue(); + listStore.proxy.extraParams.searchColumns = searchColumns; + listStore.loadPage(1); + listStore.reload(); + Ext4.getCmp('searchKeyWord').setValue(''); +} + +Ext4.onReady(function () { + Ext4.QuickTips.init(); + var columns = [ + { header: "id", dataIndex: 'id', hidden: true }, + { header: "录入时间", dataIndex: 'entryDate', width: 140 }, + { header: "条码", dataIndex: 'barcode', width: 150 }, + { header: "物品名称", dataIndex: 'tousseName', width: 150 }, + { header: "灭菌日期", dataIndex: 'sterileStartTime', width: 150 }, + { header: "失效日期", dataIndex: 'validUntil', width: 150 }, + { header: "包装人", dataIndex: 'wrapper', sortable: false } + ]; + var tbar = [{ + text: '添加', + iconCls: 'btn_ext_application_add', + handler: function () { + showWindow(); + } + }, '-', { + text: '删除', + iconCls: 'btn_ext_application_del', + handler: function () { + deleteConfig(packageListGrid); + } + }, '->', { + width: 70, + text: '搜索列', + id: 'searchButton', + menu: { + id: 'searchMenu', + items: [{ + xtype: 'menucheckitem', + name: 'barcode', + checked: true, + text: '条码' + }, { + xtype: 'menucheckitem', + name: 'tousseName', + checked: true, + text: '物品名称' + }, { + xtype: 'menucheckitem', + name: 'wrapper', + checked: true, + text: '包装人' + }] + }, + listeners: { + focus: function (thisButton, The, eOpts) { + Ext4.getCmp('searchKeyWord').focus(); + } + } + }, { + xtype: 'textfield', + name: 'searchKeyWord', + id: 'searchKeyWord', + enableKeyEvents: true, + listeners: { + keydown: function (thisTextfield, e, eOpts) { + if (e.keyCode == 13) { + search(listStore); + } + } + } + }, { + text: '搜索', + handler: function (thisButton) { + search(listStore); + } + }]; + + listStore = new Ext4.data.JsonStore({ + proxy: { + type: 'ajax', + url: WWWROOT + '/disinfectSystem/packagingAction!loadPackagingRecords.do', + reader: { + root: 'packagingRecords' + }, + extraParams: { + searchKeyWord: '', + searchColumns: '' + } + }, + fields: [ + { name: 'id' }, + { name: 'entryDate' }, + { name: 'sterileStartTime' }, + { name: 'validUntil' }, + { name: 'barcode' }, + { name: 'tousseName' }, + { name: 'wrapper' } + ] + }); + + listStore.loadPage(1); + + packageListGrid = 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: [packageListGrid] + }] + }); + +}); \ No newline at end of file Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r33773 -r33961 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 33773) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 33961) @@ -110,6 +110,7 @@ +