Index: ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml
===================================================================
diff -u -r37375 -r37545
--- ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 37375)
+++ ssts-web/src/main/webapp/WEB-INF/spring/security-standard/applicationContext-acegi-security.xml (.../applicationContext-acegi-security.xml) (revision 37545)
@@ -105,6 +105,10 @@
+ + | +
" + myDateFormat(v) + "
"; + } else { + return myDateFormat(v); + } +} + +/** + * 渲染“状态”属性时触发的函数(响应中大附一提出的需求,使用标识牌的回收的,需要把上一个器械包实例的状态从“已回收”回滚到上一个状态,这里只是显示效果回滚了,但是数据库保存的还是“已回收”) + * @param v + * @param p + * @param record + * @param rowIndex + * @param columnIndex + * @param store + */ +function statusFun(v, p, record, rowIndex, columnIndex, store) { + if (sstsConfig.enableRecyclingStatusOfTousseInstance) { + var tousseInstance = record.data; + var useRecord_id = tousseInstance.useRecord_id; + var signedUser = tousseInstance.signedUser; + var invoice_id = tousseInstance.invoice_id; + var tousseTransitionItemId = tousseInstance.tousseTransitionItemId; + + if (statusRecycled == v) { + if (tousseTransitionItemId) { + return statusPrerecycled; + } else if (useRecord_id) { + return statusUsed; + } else if (signedUser) { + return statusSigned; + } else if (invoice_id) { + return statusShipped; + } + } + } + return v; +} + +/** + * 渲染“灭菌交接状态”属性时触发的函数(响应中大附一提出的需求,做了灭菌交接记录的要显示“是”) + * @param v + * @param p + * @param record + * @param rowIndex + * @param columnIndex + * @param store + */ +function sterilizationTransitionFun(v, p, record, rowIndex, columnIndex, store) { + if (v) { + return "已交接"; + } else { + return ""; + } +} + +/** + * 渲染“回收状态”属性时触发的函数,(响应中大附一提出的需求,使用标识牌的回收的,需要把上一个器械包实例的回收状态设置成“已回收”) + * @param v + * @param p + * @param record + * @param rowIndex + * @param columnIndex + * @param store + */ +function recyclingStatusFun(v, p, record, rowIndex, columnIndex, store) { + if (sstsConfig.enableRecyclingStatusOfTousseInstance) { + var tousseInstance = record.data; + var status = tousseInstance.status; + if (statusRecycled == status) { + return statusRecycled; + } else { + return ''; + } + } +} + +function renderCallTousseInstanceInfoShowFun(v, p, record) { + var isComboTousse = (record.data['tousseDefinition.tousseType'] == '聚合包'); + var tousseDefinitionId = record.data['tousseDefinition.id']; + var tousseType = record.data['tousseDefinition.tousseType']; + var color = getBackgroundWarningColor(record); + if ("" != color && isShowValidUntil(record)) { + return "" + record.data['showTousseName'] + "
"; + } else { + return "" + record.data['showTousseName'] + ""; + } +} + +function nameAndFrequency(v, p, record) { + var name = record.data['sterilizerName']; + if (name != "" && (v != "" && v != null)) { + return record.data['sterilizerName'] + ",第" + v + "炉"; + } + return ""; +} + +function showOrHideBySterilizationRecord(v, p, record) { + if (isUndefinedOrNullOrEmpty(record.data.sterilizationRecord_id)) { + return ""; + } else + return v; +} + +//ext的初始函数 +Ext.onReady(function () { + //取到服务器时间后再初始化调用初始函数 + getServerTime("yyyy-MM-dd", Ext, null, function (serverTime) { + serverDate = serverTime; + readyFunction(serverTime); + }); +}); + +//初始函数 +var readyFunction = function (serverTime) { + var columns = new Array(); + //ZJYY-86:器械包信息扩展列 + var expandColoumnsConfigOfTousseInfoList = sstsConfig.expandColoumnsConfigOfTousseInfoList; + var urgentLevelHidden = true; + var urgentLevelName = '加急级别'; + var videoAndPictureRecordingHidden = true; + var videoAndPictureRecordingName = '影像记录'; + if (expandColoumnsConfigOfTousseInfoList && expandColoumnsConfigOfTousseInfoList.length > 0) { + for (var i = 0; i < expandColoumnsConfigOfTousseInfoList.length; i++) { + if (expandColoumnsConfigOfTousseInfoList[i].fieldName == 'urgentLevel') { + urgentLevelHidden = false; + urgentLevelName = expandColoumnsConfigOfTousseInfoList[i].coloumnName; + } + if (expandColoumnsConfigOfTousseInfoList[i].fieldName == 'videoAndPictureRecording') { + videoAndPictureRecordingHidden = false; + videoAndPictureRecordingName = expandColoumnsConfigOfTousseInfoList[i].coloumnName; + } + } + } + columns.push( + { header: "器械包名称", width: 180, dataIndex: 'tousseDefinition.name', renderer: renderCallTousseInstanceInfoShowFun }, + { header: "来源科室", width: 80, dataIndex: 'depart' }, + { header: "条码", width: 70, dataIndex: 'barcode' }, + { header: "器械包集合码", width: 90, dataIndex: 'setCode', hidden: !sstsConfig.enableTousseNumberCollectionCodeFunction }, + { header: "标识牌条码", width: 70, dataIndex: 'idCardInstanceBarcode' }, + { header: "禁用标识牌", width: 70, dataIndex: 'tousseDefinition.isDisableIDCard', hidden: disableIdCard }, + { header: "状态", width: 80, dataIndex: 'status', renderer: statusFun }, + { header: "灭菌交接状态", width: 85, hidden: !sstsConfig.enableSterilizationTransition, dataIndex: 'sterilizationTransition', renderer: sterilizationTransitionFun }, + { header: "回收状态", width: 80, dataIndex: 'recyclingStatus', sortable: false, renderer: recyclingStatusFun, hidden: !sstsConfig.enableRecyclingStatusOfTousseInstance }, + { header: "使用次数", width: 70, dataIndex: 'useAmount', hidden: disableIdCard }, + { header: "标识牌编号", width: 70, dataIndex: 'idNumber', sortable: false, hidden: disableIdCard }, + { + header: "位置", width: 80, dataIndex: 'locationForDisplay', renderer: function (v, p, record) { + if (record.data["locationForDisplay2"]) { + return record.data["locationForDisplay2"]; + } + return v; + } + }, + { header: "手术间", width: 80, dataIndex: 'operationRoomName' }, + { header: "所属仓库", width: 80, dataIndex: 'wareHouseName' }, + + { header: "流转科室", width: 80, dataIndex: 'depart2' }, + { header: "流转位置", width: 80, dataIndex: 'location2' }, + { header: "流转状态", width: 80, dataIndex: 'status2' }, + + { header: "来源申请单号", width: 80, dataIndex: 'invoicePlanSerialNum' },//==1 + { header: "发货申请单号", width: 80, dataIndex: 'invoiceserialNumber' },//==2 + + { header: "申请时间", width: 125, dataIndex: 'applicationTime' },// ===3 + { + header: urgentLevelName, width: 80, dataIndex: 'urgentLevel', hidden: urgentLevelHidden, sortable: false, renderer: function (v, p, record) { + if (v !== '') { + return v.name; + } + } + }, + { header: videoAndPictureRecordingName, width: 80, dataIndex: 'videoAndPictureRecording', hidden: videoAndPictureRecordingHidden, sortable: false }, + { header: "回收人", width: 80, dataIndex: 'recyclingUser', sortable: false }, + { header: "回收清点人", width: 80, dataIndex: 'recyclingOperator', sortable: false }, + { header: "回收时间", width: 125, dataIndex: 'recyclingTime' },//==4 + + { header: "清洗人", width: 60, dataIndex: 'washOperator', sortable: false }, + { header: "清洗时间", width: 125, dataIndex: 'washStartTime', sortable: false }, + // {header : "失效日期",width : 80,dataIndex : 'validUntil',renderer : myDateFormat}, + { header: "失效日期", width: 80, dataIndex: 'validUntil', renderer: checkDate }, + { header: "预警日期", hidden: true, width: 80, dataIndex: 'warningUntil', renderer: myDateFormat }, + { header: "任务组", width: 100, dataIndex: 'taskGroup' }, + { header: inspectorName, width: 60, dataIndex: 'inspector', sortable: false }, + { header: "装配人", width: 60, dataIndex: 'operator', sortable: false }, + { header: "装配时间", width: 125, dataIndex: 'operationTime', renderer: myDateFormatBySecond }, + { header: "" + reviewViewText + "人", width: 60, dataIndex: 'reviewer', sortable: false }, + { header: "" + reviewViewText + "时间", width: 125, dataIndex: 'reviewTime', renderer: myDateFormatBySecond }, + { header: "包装类型", width: 70, dataIndex: 'packageType' }, + { header: "灭菌交接人", width: 80, dataIndex: 'handover', hidden: !sstsConfig.enableSterilizationTransition }, + { header: "灭菌接收人", width: 80, dataIndex: 'takeover', hidden: !sstsConfig.enableSterilizationTransition }, + { header: "灭菌交接时间", width: 125, dataIndex: 'transitionTime', hidden: !sstsConfig.enableSterilizationTransition, renderer: myDateFormatBySecond }, + { header: "灭菌篮筐", width: 80, dataIndex: 'sterilizationBasket', sortable: false }, + { header: "灭菌员", width: 60, dataIndex: 'sterilizationUser', sortable: false }, + { header: "灭菌完成时间", width: 125, dataIndex: 'sterileEndTime', menuDisabled: true, renderer: myDateFormatBySecond }, + { header: "灭菌程序", width: 70, sortable: false, menuDisabled: true, dataIndex: 'sterilingType', renderer: showOrHideBySterilizationRecord }, + { header: "灭菌批号", width: 150, dataIndex: 'sterileFrequency', sortable: false, menuDisabled: true, renderer: nameAndFrequency }, + { header: "发货人", width: 60, dataIndex: 'invoiceSender', sortable: false, menuDisabled: true }, + { header: "发货时间", width: 125, dataIndex: 'invoiceSendTime', menuDisabled: false, renderer: myDateFormatBySecond, sortable: true }, + { header: "下送责任人", width: 80, dataIndex: 'personInCharge', sortable: false, menuDisabled: true }, + { header: "下送开始时间", width: 125, dataIndex: 'printTime', menuDisabled: false, renderer: myDateFormatBySecond, sortable: true }, + { header: "签收人", width: 60, dataIndex: 'signedUser', hidden: !sstsConfig.showSignedItems, sortable: false, menuDisabled: true }, + { header: "签收时间", width: 125, dataIndex: 'signedDate', hidden: !sstsConfig.showSignedItems, menuDisabled: false, renderer: myDateFormatBySecond, sortable: true }, + { header: "使用病人", width: 60, dataIndex: 'patientName', hidden: !sstsConfig.showUseRecordItems, sortable: false }, + { header: "使用医生", width: 60, dataIndex: 'doctorName', hidden: !sstsConfig.showUseRecordItems, sortable: false }, + { header: "使用时间", width: 125, dataIndex: 'useTime', hidden: !sstsConfig.showUseRecordItems, renderer: myDateFormatBySecond }, + { header: "废弃时间", width: 125, dataIndex: 'wasteDate', menuDisabled: false, renderer: myDateFormatBySecond, sortable: false }, + { header: "废弃原因", width: 150, dataIndex: 'wasteReason', menuDisabled: false }, + { header: "废弃操作人", width: 70, dataIndex: 'operateUser', menuDisabled: false } + ); + + var readerDetail = [ + { name: 'id' }, + { name: 'showTousseName' }, + { name: 'tousseDefinition.id' }, + { name: 'tousseDefinition.name' }, + { name: 'tousseDefinition.tousseType' }, //器械包类型 + { name: 'barcode' }, + { name: 'setCode' }, + { name: 'depart' }, + { name: 'idCardInstanceBarcode' }, + { name: 'tousseDefinition.isDisableIDCard' }, + { name: 'idCardUseAmount' }, + { name: 'taskGroup' }, + { name: 'operator' }, + { name: 'operationTime' }, + { name: 'status' }, + { name: 'sterilizationTransition' }, + { name: 'recyclingStatus' }, + { name: 'useAmount' }, + { name: 'idNumber' }, + { name: 'useRecord_id' }, + { name: 'invoice_id' }, + { name: 'tousseTransitionItemId' }, + { name: 'sterilingType' }, + { name: 'validUntil' }, + { name: 'recyclingUser' }, + { name: 'recyclingOperator' }, + { name: 'washOperator' }, + { name: 'washStartTime' }, + { name: 'packageType' }, + { name: 'reviewTime' }, + { name: 'reviewer' }, + { name: 'invoiceSender' }, + { name: 'invoiceSendTime' }, + { name: 'signedUser' }, + { name: 'signedDate' }, + { name: 'locationForDisplay' }, + { name: 'locationForDisplay2' }, + { name: 'operationRoomName' }, + { name: 'wareHouseName' }, + { name: 'depart2' }, + { name: 'status2' }, + { name: 'urgentLevel' }, + { name: 'videoAndPictureRecording' }, + { name: 'location2' }, + { name: 'orgUnitName' }, + { name: 'warningUntil' }, + { name: 'wasteDate' }, + { name: 'wasteReason' }, + { name: 'operateUser' }, + { name: 'sterilizationUser' }, + { name: 'sterileStartTime' }, + { name: 'sterilizationBasket' }, + { name: 'sterileEndTime' }, + { name: 'sterileFrequency' }, + // {name : 'validStatus'}, + { name: 'sterilizerName' }, + { name: 'sterilizationRecord_id' }, + { name: 'tousseDefinition.isSterile' }, + { name: 'handover' }, + { name: 'takeover' }, + { name: 'transitionTime' }, + { name: 'patientName' }, + { name: 'doctorName' }, + { name: 'useTime' }, + { name: 'isPrint' }, + { name: 'personInCharge' }, + { name: 'printTime' }, + { name: 'applicant' }, + { name: 'applicationTime' }, + { name: 'recyclingTime' }, + { name: 'invoicePlanSerialNum' }, + { name: 'invoiceserialNumber' }, + { name: 'signedUser' }, + { name: 'signedDate' }, + { name: 'useRecordOperator' }, + { name: 'useRecordEnteringDate' }, + { name: 'inspector' } + ]; + + var filters = new Ext.grid.GridFilters({ + filters: [ + { type: 'string', dataIndex: 'tousseDefinition.name' }, + { type: 'string', dataIndex: 'barcode' }, + { type: 'string', dataIndex: 'idCardInstanceBarcode' }, + { type: 'string', dataIndex: 'taskGroup' }, + { type: 'string', dataIndex: 'operator' }, + { type: 'list', dataIndex: 'status', options: [statusPacked, statusReviewed, statusSterileding, statusSteriled, statusShipped, statusSigned, statusUsed, statusPrerecycled, statusWaitForRecall, statusRecalled, statusDiscard, statusDisinfected, statusDelayConfirm], phpMode: true }, + { type: 'string', dataIndex: 'sterilingType' }, + { type: 'numeric', dataIndex: 'useAmount' }, + { type: 'string', dataIndex: 'packageType' }, + { type: 'string', dataIndex: 'recyclingUser' }, + { type: 'string', dataIndex: 'recyclingOperator' }, + { type: 'string', dataIndex: 'washOperator' }, + { type: 'string', dataIndex: 'reviewer' }, + { type: 'string', dataIndex: 'sterilizationBasket' }, + { type: 'string', dataIndex: 'locationForDisplay' }, + { type: 'string', dataIndex: 'orgUnitName' }, + { type: 'string', dataIndex: 'patientName' }, + { type: 'string', dataIndex: 'doctorName' }, + { type: 'string', dataIndex: 'handover' }, + { type: 'string', dataIndex: 'takeover' } + ] + }); + + grid = new Ext.ux.ForgonPageGrid({ + id: 'tousseInstanceGrid', + pageSize: 20, + title: '器械包信息', + renderTo: 'gridDiv', + showLoadMask: true, + defaultSortField: 'operationTime', + defaultSortDirection: 'DESC', + isCheckboxSelectionModel: true, + rememberSelected: false, + isShowSearchField: false, + searchDisableIndexes: ["idCardUseAmount", "showTousseName", "idNumber", "inspector"], + columns: columns, + plugins: filters, + frame: false, + border: false, + pageSizeDateStore: [['10'], ['20'], ['30'], ['50'], ['100'], ['200'], ['300'], ['400'], ['500'], ['600'], ['700'], ['800'], ['900'], ['1000'], ['2000']] + }, + readerDetail, + TousseInstanceTableManager.findTousseInstanceTableList, + null + ); + + new Ext.Viewport({ + layout: 'border', + items: [{ + region: 'center', + margins: '0 0 0 0', + layout: 'fit', + items: grid + }] + }); +} \ No newline at end of file