Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualityMonitoringDefinitionView.js =================================================================== diff -u -r38035 -r38483 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualityMonitoringDefinitionView.js (.../qualityMonitoringDefinitionView.js) (revision 38035) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/qualitymonitoringConfig/qualityMonitoringDefinitionView.js (.../qualityMonitoringDefinitionView.js) (revision 38483) @@ -298,13 +298,13 @@ top.Ext.getCmp('defaultValue').setValue(param); } //-------------设置参数值---------------- -function setFormDefinitionOptionsWin(params, rowIndex) { - +function setFormDefinitionOptionsWin(params, rowIndex, type) { var goodsRecord = Ext.data.Record.create([ { name: 'id' }, { name: 'name' }, { name: 'isStatisticsItem' }, { name: 'orderNumber' }, + { name: 'recordMaterialDetails' }, { name: 'valueTriggerItemNames' } ]); @@ -316,11 +316,14 @@ { name: 'name' }, { name: 'isStatisticsItem' }, { name: 'orderNumber' }, + { name: 'recordMaterialDetails' }, { name: 'valueTriggerItemNames' } ] }) }); + var newRecordMaterialDetails = '否'; + if (params != undefined && params != "") { var optionsJson = JSON.parse(params); for (var i = 0; i < optionsJson.length; i++) { @@ -329,12 +332,20 @@ name: optionsJson[i].name, isStatisticsItem: optionsJson[i].isStatisticsItem, orderNumber: optionsJson[i].orderNumber, - valueTriggerItemNames: optionsJson[i].valueTriggerItemNames + valueTriggerItemNames: optionsJson[i].valueTriggerItemNames, + recordMaterialDetails : optionsJson[i].recordMaterialDetails || '否' }); optionStore.add(record); + newRecordMaterialDetails = optionsJson[i].recordMaterialDetails || '否' } } + var showRecordMaterialDetails = false; + var scope = top.Ext.getCmp('scope').getValue(); + if(sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring && type == '多选' && $Id("parm_s_formType").value == '质量监测' && (scope !== '无' && scope !== '灭菌炉记录')){ + showRecordMaterialDetails = true; + } + var triggerItemRecord = Ext.data.Record.create([ { name: 'value' } ]); @@ -365,7 +376,7 @@ }, { id: 'name', header: "名称", - width: 240, + width: 200, dataIndex: 'name' }, { header: "是否统计项", @@ -427,7 +438,8 @@ name: goodsName, isStatisticsItem: "", orderNumber: 0, - valueTriggerItemNames: '' + valueTriggerItemNames: '', + recordMaterialDetails:'否' }); optionStore.add(record); top.Ext.getCmp('optionName').setValue(''); @@ -460,6 +472,26 @@ handler: function () { addOptionItem(); } + },{ + text: '统计为不合格数', + hidden:!showRecordMaterialDetails + }, { + xtype: 'combo', + valueField: 'value', + displayField: 'value', + id:'recordMaterialDetails', + name:'recordMaterialDetails', + width: 80, + editable: false, + hidden:!showRecordMaterialDetails, + store: new top.Ext.data.SimpleStore({ + fields: ['value'], + data: [['是'], ['否']] + }), + forceSelection: true, + value:newRecordMaterialDetails, + mode: 'local', + triggerAction: 'all' }]; formObj = new top.Ext.FormPanel({ @@ -514,13 +546,15 @@ var count = optionStore.getCount(); var optionJsonArray = []; var optionsStr = ""; + var recordMaterialDetails = top.Ext.getCmp('recordMaterialDetails').getValue(); for (var i = 0; i < count; i++) { var record = optionStore.getAt(i); optionJsonArray.push({ id: record.get("id"), name: record.get("name"), isStatisticsItem: record.get("isStatisticsItem"), orderNumber: (i + 1), + recordMaterialDetails : recordMaterialDetails, valueTriggerItemNames: record.get("valueTriggerItemNames") }); if (optionsStr != "") { @@ -1844,7 +1878,7 @@ var params = record.get("optionsJson"); if (columnIndex == 5) { if (itemTypes[3] == type || itemTypes[4] == type) {//单选,多选 - setFormDefinitionOptionsWin(params, rowIndex); + setFormDefinitionOptionsWin(params, rowIndex, type); } else if (itemTypes[6] == type || itemTypes[8] == type) {//文本,文本框 if ("定期监测" == entityName) {//只有定期监测才启用默认值 setFormDefinitionOptionsDefaultValueWin(params, rowIndex); Index: ssts-web/src/main/webapp/disinfectsystem/config/stdxyxyfszlyy/config.js =================================================================== diff -u -r37709 -r38483 --- ssts-web/src/main/webapp/disinfectsystem/config/stdxyxyfszlyy/config.js (.../config.js) (revision 37709) +++ ssts-web/src/main/webapp/disinfectsystem/config/stdxyxyfszlyy/config.js (.../config.js) (revision 38483) @@ -105,6 +105,8 @@ oneKeyScanDisposableGoodsForPDA:true, //核算月报表增加可扩展查询项 enableExtendedQueryItemsOfdepartmentMonthlyView:['inquiryScope'], + //启用质量监测登记材料明细功能 + enableRecordMaterialDetailsOfQualityMonitoring:true, //打印发货单,发货单合并方式 batchPrintInvoiceMergeType:"科室" } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js =================================================================== diff -u -r38445 -r38483 --- ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js (.../qualitymonitoringInstanceForm.js) (revision 38445) +++ ssts-web/src/main/webapp/disinfectsystem/qualitymonitoring/qualitymonitoringInstanceForm.js (.../qualitymonitoringInstanceForm.js) (revision 38483) @@ -31,6 +31,7 @@ var currentOrgUnitName = currentOrgUnitName || ''; var currentOrgUnitCoding = currentOrgUnitCoding || ''; var newTousseItems = [] +var updateId = '' if (top.Ext.getCmp("tousseInfoFieldSet")) { var getWidth = top.Ext.getCmp("tousseInfoFieldSet").items.items[0].el.dom.clientWidth; } @@ -86,6 +87,1176 @@ } } +function addTousseBags(hiddenTousseIndex, tousseBagsStore, tousseItems) { + var scope = top.Ext.getCmp('scope').getValue(); + var firstMaterialInfosStore = new Ext.data.SimpleStore({ + fields: ['material', 'amount', 'id'] + }); + var materialInfosData = []; + if (tousseItems && tousseItems.materialInfos) { + for (var i = 0; i < tousseBagsStore.getCount(); i++) { + var item = tousseBagsStore.getAt(i); + if (item.data.tousseName == tousseItems.tousseName && item.data.tousseDefinitionId == tousseItems.tousseDefinitionId) { + for (var j = 0; j < item.data.materialInfos.length; j++) { + firstMaterialInfosStore.add(new materialInfosRecord({ + material: item.data.materialInfos[j].material, + amount: item.data.materialInfos[j].amount, + id: item.data.materialInfos[j].id || '' + })); + } + materialInfosData = item.data.materialInfos; + break; + } + } + firstMaterialInfosStore.insert(0, new materialInfosRecord({ 'material': '全部' })); + } + top.Ext.getCmp('tousseBagsForPanel').add({ + layout: 'column', + columnWidth: 1, + labelWidth: 90, + id: 'tousseAndMaterialDetailsBox_' + hiddenTousseIndex, + items: [{ + layout: 'form', + labelWidth: 50, + columnWidth: .36, + height: 28, + items: [{ + xtype: 'hidden', + id: 'tousseDefinitionId_' + hiddenTousseIndex + '_0', + name: 'tousseDefinitionId_' + hiddenTousseIndex + '_0', + value: tousseItems ? tousseItems.tousseDefinitionId : '' + }, { + xtype: 'hidden', + id: 'tousseInstanceId_' + hiddenTousseIndex + '_0', + name: 'tousseInstanceId_' + hiddenTousseIndex + '_0', + value: tousseItems ? tousseItems.tousseInstanceId : '' + }, { + xtype: 'hidden', + id: 'tousseBarcode_' + hiddenTousseIndex + '_0', + name: 'tousseBarcode_' + hiddenTousseIndex + '_0', + value: tousseItems ? tousseItems.tousseBarcode : '' + }, { + xtype: 'combo', + fieldLabel: '器械包', + id: 'tousseBagsForName_' + hiddenTousseIndex + '_0', + name: 'tousseBagsForName_' + hiddenTousseIndex + '_0', + valueField: 'tousseName', + displayField: 'tousseName', + allowBlank: true, + editable: false, + store: tousseBagsStore, + forceSelection: true, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + tousseIndex: hiddenTousseIndex, + value: tousseItems ? tousseItems.tousseName : '', + listeners: { + select: function (combo, record, index) { + var tousseIndex = combo.tousseIndex; + var hiddenTousseIndex = top.Ext.getCmp('hiddenTousseIndex_0_0').getValue(); + var isHas = false; + for (var i = 0; i <= hiddenTousseIndex; i++) { + if (top.Ext.getCmp('tousseBagsForName_' + i + '_0')) { + if (top.Ext.getCmp('tousseBagsForName_' + i + '_0').getValue() == record.data.tousseName && i !== tousseIndex) { + showResult(record.data.tousseName + '已存在!'); + this.setValue(''); + isHas = true; + break; + } + } + } + if (isHas) { + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + tousseIndex + '_0').getValue(); + for (var i = 1; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_' + tousseIndex + '_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('hiddenIndexBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosNameBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('deleteButton_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosAmountBox_' + tousseIndex + '_' + i); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).doLayout(); + top.Ext.getCmp('tousseDefinitionId_' + tousseIndex + '_0').setValue(''); + top.Ext.getCmp('tousseInstanceId_' + tousseIndex + '_0').setValue(''); + top.Ext.getCmp('tousseBarcode_' + tousseIndex + '_0').setValue(''); + if (scope !== '器械包') { + materialInfosStore.removeAll(); + firstMaterialInfosStore.removeAll(); + top.Ext.getCmp('materialInfosName_' + tousseIndex + '_0').setRawValue(''); + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').setValue(''); + } + return + } + top.Ext.getCmp('tousseDefinitionId_' + tousseIndex + '_0').setValue(record.data.tousseDefinitionId); + top.Ext.getCmp('tousseInstanceId_' + tousseIndex + '_0').setValue(record.data.tousseInstanceId); + top.Ext.getCmp('tousseBarcode_' + tousseIndex + '_0').setValue(record.data.tousseBarcode); + if (scope == '器械包') { + return + } + firstMaterialInfosStore.removeAll(); + top.Ext.getCmp('materialInfosName_' + tousseIndex + '_0').setRawValue(''); + if (record.data.materialInfos) { + materialInfosData = record.data.materialInfos; + for (var i = 0; i < record.data.materialInfos.length; i++) { + firstMaterialInfosStore.add(new materialInfosRecord({ + 'material': record.data.materialInfos[i].material, + 'amount': record.data.materialInfos[i].amount + })); + } + } + firstMaterialInfosStore.insert(0, new materialInfosRecord({ 'material': '全部' })); + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + tousseIndex + '_0').getValue(); + for (var i = 1; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_' + tousseIndex + '_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('hiddenIndexBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosNameBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('deleteButton_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosAmountBox_' + tousseIndex + '_' + i); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).doLayout(); + } + } + }] + }, { + layout: 'form', + columnWidth: .04, + labelWidth: 90, + height: setH, + items: [{ + xtype: 'button', + tooltip: '删除器械包', + iconCls: 'btn_ext_close', + handler: function () { + top.Ext.getCmp('tousseBagsForPanel').remove('tousseAndMaterialDetailsBox_' + hiddenTousseIndex); + top.Ext.getCmp('tousseBagsForPanel').doLayout(); + } + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .36, + height: 28, + hidden: scope == '器械包', + items: [{ + xtype: 'hidden', + id: 'hiddenMaterialIndex_' + hiddenTousseIndex + '_0', + name: 'hiddenMaterialIndex_' + hiddenTousseIndex + '_0', + value: tousseItems ? tousseItems.materialInfos.length - 1 : 0, + }, { + xtype: 'combo', + fieldLabel: '器械', + id: 'materialInfosName_' + hiddenTousseIndex + '_0', + name: 'materialInfosName_' + hiddenTousseIndex + '_0', + valueField: 'material', + displayField: 'material', + allowBlank: true, + editable: false, + store: firstMaterialInfosStore, + forceSelection: true, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + tousseIndex: hiddenTousseIndex, + value: (tousseItems && tousseItems.materialInfos[0]) ? tousseItems.materialInfos[0].material : '', + listeners: { + select: function (combo, record, index) { + var tousseIndex = combo.tousseIndex; + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + tousseIndex + '_0').getValue(); + if (record.data.material == '全部') { + top.Ext.getCmp('tousseAndMaterialDetailsButton_' + tousseIndex).hide(); + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').disable(); + for (var i = 1; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_' + tousseIndex + '_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('hiddenIndexBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosNameBox_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('deleteButton_' + tousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).remove('materialInfosAmountBox_' + tousseIndex + '_' + i); + } + } + var allAmount = 0; + for (var i = 0; i < firstMaterialInfosStore.getCount(); i++) { + var item = firstMaterialInfosStore.getAt(i); + if (item.data.material !== '全部') { + allAmount += parseInt(item.data.amount || 0); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).doLayout(); + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').setValue(allAmount); + } else { + top.Ext.getCmp('tousseAndMaterialDetailsButton_' + tousseIndex).show(); + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').enable(); + var isHas = false; + for (var i = 1; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_' + tousseIndex + '_' + i)) { + if (top.Ext.getCmp('materialInfosName_' + tousseIndex + '_' + i).getValue() == record.data.material) { + showResult(record.data.material + '已存在!'); + this.setValue(''); + isHas = true; + break; + } + } + } + if (isHas) { + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').setValue(''); + } else { + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').maxValue = record.data.amount; + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').setValue(1); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + tousseIndex).doLayout(); + top.Ext.getCmp('materialInfosAmount_' + tousseIndex + '_0').setValue(record.data.amount); + } + } + } + } + }] + }, { + layout: 'form', + columnWidth: .04, + labelWidth: 90, + height: setH, + id: 'tousseAndMaterialDetailsButton_' + hiddenTousseIndex, + hidden: scope == '器械包', + items: [{ + xtype: 'button', + tooltip: '添加器械', + iconCls: 'btn_ext_add', + handler: function () { + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + hiddenTousseIndex + '_0').getValue(); + addMaterialInfos(hiddenTousseIndex, parseInt(hiddenMaterialIndex) + 1, materialInfosData); + } + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .2, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + name: 'materialInfosAmount_' + hiddenTousseIndex + '_0', + id: 'materialInfosAmount_' + hiddenTousseIndex + '_0', + fieldLabel: "数量", + allowBlank: true, + disabled: scope == '器械包', + blankText: '数量不能为空', + value: (tousseItems && tousseItems.materialInfos[0]) ? tousseItems.materialInfos[0].amount : '', + anchor: '95%' + }] + }] + }) + top.Ext.getCmp('tousseBagsForPanel').doLayout(); + top.Ext.getCmp('hiddenTousseIndex_0_0').setValue(hiddenTousseIndex); +} + +function addMaterialInfos(hiddenTousseIndex, hiddenMaterialIndex, materialInfosData, materialInfosArray) { + var materialInfosItems; + if (materialInfosArray) { + materialInfosItems = materialInfosArray[hiddenMaterialIndex]; + } + var materialInfosStore = new Ext.data.SimpleStore({ + fields: ['material', 'amount', 'id'] + }); + for (var i = 0; i < materialInfosData.length; i++) { + materialInfosStore.add(new materialInfosRecord({ + 'material': materialInfosData[i].material, + 'amount': materialInfosData[i].amount, + 'id': materialInfosData[i].id || '' + })); + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).add({ + layout: 'form', + labelWidth: 50, + columnWidth: .4, + height: 28, + id: 'hiddenIndexBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + items: [{ + xtype: 'hidden', + id: 'hiddenIndex_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + name: 'hiddenIndex_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + value: hiddenMaterialIndex + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .36, + height: 28, + id: 'materialInfosNameBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + items: [{ + xtype: 'combo', + fieldLabel: '器械', + id: 'materialInfosName_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + name: 'materialInfosName_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + valueField: 'material', + displayField: 'material', + allowBlank: true, + editable: false, + store: materialInfosStore, + forceSelection: true, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + value: materialInfosItems ? materialInfosItems.material : '', + listeners: { + select: function (combo, record, index) { + var newHiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + hiddenTousseIndex + '_0').getValue(); + if (record.data.material == '全部') { + top.Ext.getCmp('tousseAndMaterialDetailsButton_' + hiddenTousseIndex).hide(); + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_0').disable(); + for (var i = 1; i <= newHiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_' + hiddenTousseIndex + '_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('hiddenIndexBox_' + hiddenTousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('materialInfosNameBox_' + hiddenTousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('deleteButton_' + hiddenTousseIndex + '_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('materialInfosAmountBox_' + hiddenTousseIndex + '_' + i); + } + } + var allAmount = 0; + for (var i = 0; i < materialInfosStore.getCount(); i++) { + var item = materialInfosStore.getAt(i); + if (item.data.material !== '全部') { + allAmount += parseInt(item.data.amount || 0); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).doLayout(); + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex).setValue(allAmount); + } else { + top.Ext.getCmp('tousseAndMaterialDetailsButton_' + hiddenTousseIndex).show(); + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_0').enable(); + var isHas = false; + for (var i = 0; i <= newHiddenMaterialIndex; i++) { + if (top.Ext.getCmp('materialInfosName_' + hiddenTousseIndex + '_' + i)) { + if (top.Ext.getCmp('materialInfosName_' + hiddenTousseIndex + '_' + i).getValue() == record.data.material && i !== hiddenMaterialIndex) { + showResult(record.data.material + '已存在!'); + this.setValue(''); + isHas = true; + break; + } + } + } + if (isHas) { + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex).setValue(''); + } else { + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex).setValue(record.data.amount); + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex).maxValue = record.data.amount; + top.Ext.getCmp('materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex).setValue(1); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).doLayout(); + } + } + } + } + }] + }, { + layout: 'form', + columnWidth: .04, + labelWidth: 90, + height: setH, + id: 'deleteButton_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + items: [{ + xtype: 'button', + tooltip: '删除器械', + iconCls: 'btn_ext_close', + handler: function () { + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('hiddenIndexBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('materialInfosNameBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('deleteButton_' + hiddenTousseIndex + '_' + hiddenMaterialIndex); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).remove('materialInfosAmountBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex); + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).doLayout(); + } + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .2, + id: 'materialInfosAmountBox_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + name: 'materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + id: 'materialInfosAmount_' + hiddenTousseIndex + '_' + hiddenMaterialIndex, + fieldLabel: "数量", + allowBlank: true, + blankText: '数量不能为空', + value: materialInfosItems ? materialInfosItems.amount : '', + anchor: '95%' + }] + }) + top.Ext.getCmp('tousseAndMaterialDetailsBox_' + hiddenTousseIndex).doLayout(); + top.Ext.getCmp('hiddenMaterialIndex_' + hiddenTousseIndex + '_0').setValue(hiddenMaterialIndex); +} + +function getAllTousseAndMaterialData() { + var scope = top.Ext.getCmp('scope').getValue(); + var firstTousseBagsList = {}; + var firstMaterialInfos = []; + var tousseName = top.Ext.getCmp('tousseName').getRawValue(); + var barcode = top.Ext.getCmp('barcode').getValue(); + var tousseDefinitionId = top.Ext.getCmp('tousseDefinitionId').getValue(); + var tousseInstanceId = top.Ext.getCmp('tousseInstanceId').getValue(); + + firstTousseBagsList.tousseBarcode = barcode; + firstTousseBagsList.tousseName = tousseName; + firstTousseBagsList.tousseDefinitionId = tousseDefinitionId; + firstTousseBagsList.tousseInstanceId = tousseInstanceId; + + if (top.Ext.getCmp("materialWrapper")) { + var firstMaterialItems = top.Ext.getCmp("materialWrapper").items.items; + var firstMaterialArrHidden = [] + for (var m = 0; m < firstMaterialItems.length; m++) { + var materiaItemsId = firstMaterialItems[m].id; + if (materiaItemsId.indexOf("materialC") >= 0 || materiaItemsId.indexOf("materialAmountC") >= 0) { + if (firstMaterialItems[m].items.items[0] && firstMaterialItems[m].items.items[0].fieldLabel == "抽检器械" && m > 1) { + + if (firstMaterialArrHidden[0] && firstMaterialArrHidden[0] !== '') { + firstMaterialInfos.push({ + material: firstMaterialArrHidden[0], + amount: firstMaterialArrHidden[1] + }) + } + + firstMaterialArrHidden = []; + } + if (top.Ext.getCmp(materiaItemsId)) { + firstMaterialArrHidden.push(firstMaterialItems[m].items.items[0].el.dom.value); + } + } + } + + if (firstMaterialArrHidden[0] && firstMaterialArrHidden[0] !== '') { + firstMaterialInfos.push({ + material: firstMaterialArrHidden[0], + amount: firstMaterialArrHidden[1] + }) + } + } + + var wrapper = []; + var tousseBagsList = {}; + var tousseArrHidden = []; + var tousseBags = []; + if (top.Ext.getCmp("tosseAndMaterial")) { + wrapper = top.Ext.getCmp("tosseAndMaterial").items.items;//获取默认显示的第一个器械包信息,就是第一个块 + for (var j = 0; j < wrapper.length; j++) { + var parentId = wrapper[j].id; + if (parentId.indexOf("tosseAndMaterialList") != -1 && scope !== '器械包') {//是抽检器械,往下找items + tousseBagsList.tousseInstanceId = tousseArrHidden[0]; + tousseBagsList.tousseBarcode = tousseArrHidden[4];//器械包条码隐藏域值 + var materialInfos = []; + var materialArrHidden = []; + //抽检器械数据 + var materiaItems = wrapper[j].items.items; + for (var m = 0; m < materiaItems.length; m++) { + var materiaItemsId = materiaItems[m].id; + if (materiaItemsId.indexOf("materialC") >= 0 || materiaItemsId.indexOf("materialAmountC") >= 0) { + if (materiaItems[m].items.items[0] && materiaItems[m].items.items[0].fieldLabel == "抽检器械" && m > 1) { + + if (materialArrHidden[0] && materialArrHidden[0] !== '') { + materialInfos.push({ + "material": materialArrHidden[0], + "amount": materialArrHidden[1] + }) + materialArrHidden = []; + } + } + if (top.Ext.getCmp(materiaItemsId)) { + materialArrHidden.push(materiaItems[m].items.items[0].el.dom.value); + } + } + } + + if (scope !== '材料') { + if (materialArrHidden[0] && materialArrHidden[0] !== '') { + materialInfos.push({ + "material": materialArrHidden[0], + "amount": materialArrHidden[1] + }) + materialArrHidden = []; + } + tousseBagsList.materialInfos = materialInfos; + tousseBags.push(tousseBagsList); + tousseArrHidden = []; + tousseBagsList = {}; + } else { + if (materialArrHidden[0] && materialArrHidden[0] !== '') { + firstMaterialInfos.push({ + "material": materialArrHidden[0], + "amount": materialArrHidden[1] + }) + materialArrHidden = []; + } + } + } else if (wrapper[j].items == undefined) {//隐藏域的情况 + var tousseRecycleOrRePacking = top.Ext.getCmp(parentId).getValue(); + var index = parentId.split('_')[1]; + if (index == '5') { + tousseArrHidden[0] = tousseRecycleOrRePacking || ''; + } else if (index == '1') { + tousseArrHidden[4] = tousseRecycleOrRePacking || ''; + } + if (top.Ext.getCmp("scope").getValue() == "器械包") { + tousseBagsList.tousseInstanceId = tousseArrHidden[0]; + tousseBagsList.tousseBarcode = tousseArrHidden[4]; + if (tousseBagsList.tousseName) { + tousseBags.push(tousseBagsList); + } + tousseArrHidden = []; + tousseBagsList = {}; + } + } else if (wrapper[j].items.items[0].fieldLabel == "重新回收" || wrapper[j].items.items[0].fieldLabel == "重新装配") { + continue; + } else {//器械包名称,器械包数量 + var value = wrapper[j].items.items[0].el.dom.value; + if (wrapper[j].items.items[0].fieldLabel == "器械包名称") { + tousseBagsList.tousseName = value; + tousseBagsList.tousseDefinitionId = wrapper[j].items.items[1] ? wrapper[j].items.items[1].el.dom.value : ''; + } + } + } + + } + + if (firstTousseBagsList.tousseName !== '' && firstTousseBagsList.tousseDefinitionId !== '') { + firstTousseBagsList.materialInfos = firstMaterialInfos; + tousseBags.unshift(firstTousseBagsList); + } else { + firstTousseBagsList = []; + } + + if (scope !== '材料') { + return tousseBags + } else { + return firstMaterialInfos + } +} + +var tousseBagsStore = new Ext.data.SimpleStore({ + fields: ['tousseName', 'tousseInstanceId', 'tousseDefinitionId', 'tousseBarcode', 'materialInfos'] +}); +var tousseBagsRecord = Ext.data.Record.create([ + { name: 'tousseName' }, + { name: 'tousseInstanceId' }, + { name: 'tousseDefinitionId' }, + { name: 'tousseBarcode' }, + { name: 'materialInfos' } +]); + +var materialInfosStore = new Ext.data.SimpleStore({ + fields: ['material', 'amount', 'id'] +}); +var firstMaterialInfosStore = new Ext.data.SimpleStore({ + fields: ['material', 'amount', 'id'] +}); +var materialInfosRecord = Ext.data.Record.create([ + { name: 'material' }, + { name: 'amount' } +]); + +function confirmRecordMaterialAmount(that, unQualifiedTousseAmount, unQualifiedMaterialAmount) { + var formPanel = new top.Ext.FormPanel({ + frame: true, + labelSeparator: ':', + labelAlign: 'right', + fileUpload: true, + bodyStyle: 'padding:5px 15px 0px 5px;', + labelWidth: 90, + layout: 'form', + width: 500, + height: 200, + items: [{ + xtype: 'fieldset', + layout: 'column', + title: '基础信息', + width: 500, + height: 200, + items: [{ + layout: 'form', + labelWidth: 10, + columnWidth: 1, + height: 28, + items: [{ + xtype: 'textfield', + allowBlank: true, + anchor: '99%', + readOnly: true, + labelSeparator: '', + cls: 'fieldReadOnlyNoRemove', + value: '本次登记的不合格物品总数如下,如有差异请手动修改:' + }] + }, { + layout: 'form', + labelWidth: 120, + columnWidth: 1, + height: 28, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + name: 'newUnQualifiedTousseAmount', + id: 'newUnQualifiedTousseAmount', + fieldLabel: "不合格器械包数", + allowBlank: false, + minValue: 0, + value: unQualifiedTousseAmount, + anchor: '80%' + }] + }, { + layout: 'form', + labelWidth: 120, + columnWidth: 1, + height: 28, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + name: 'newUnQualifiedMaterialAmount', + id: 'newUnQualifiedMaterialAmount', + fieldLabel: "不合格器械数", + allowBlank: false, + minValue: 0, + value: unQualifiedMaterialAmount, + anchor: '80%' + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: 1, + items: [{ + xtype: 'textarea', + allowBlank: true, + anchor: '99%', + readOnly: true, + fieldLabel: "说明", + height: 60, + cls: 'fieldReadOnlyNoRemove', + value: '统计数是为本次登记的不合格物品明细数量,如果有器同时存在多个不合格项,可能存在数据误差,请核对后再保存,如需修改可直接修改' + }] + }] + }], + buttons: [{ + text: '保存', + handler: function () { + var newUnQualifiedTousseAmount = top.Ext.getCmp('newUnQualifiedTousseAmount').getValue(); + var newUnQualifiedMaterialAmount = top.Ext.getCmp('newUnQualifiedMaterialAmount').getValue(); + top.Ext.getCmp('unQualifiedTousseAmount').setValue(newUnQualifiedTousseAmount); + top.Ext.getCmp('unQualifiedMaterialAmount').setValue(newUnQualifiedMaterialAmount); + saveQualityMonitoringNew(that, false); + win.close(); + } + }, { + text: '取消', + handler: function () { + win.close(); + } + }] + }); + win = new top.Ext.Window({ + id: 'confirmRecordMaterialAmountWin', + layout: 'fit', + title: '不合格物品数量确认', + width: 550, + height: 300, + border: false, + modal: true, + plain: true, + items: [formPanel] + }); + win.show(); +} + +//不合格物品登记明细 +function showRecordMaterialDetails(id, filedIndex, optionId, optionsLength) { + var tousseAndMaterialAll = getAllTousseAndMaterialData(); + if (!tousseAndMaterialAll || tousseAndMaterialAll.length == 0) { + showResult('器械包或者器械不能为空!'); + return + } + var scope = top.Ext.getCmp('scope').getValue(); + var win; + tousseBagsStore.removeAll(); + materialInfosStore.removeAll(); + firstMaterialInfosStore.removeAll(); + for (var i = 0; i < tousseAndMaterialAll.length; i++) { + var items = tousseAndMaterialAll[i]; + tousseBagsStore.add(new tousseBagsRecord({ + tousseName: items.tousseName, + tousseDefinitionId: items.tousseDefinitionId, + tousseInstanceId: items.tousseInstanceId, + tousseBarcode: items.tousseBarcode, + materialInfos: items.materialInfos + })); + } + + if (scope == '材料') { + for (var i = 0; i < tousseAndMaterialAll.length; i++) { + materialInfosStore.add(new materialInfosRecord({ + 'material': tousseAndMaterialAll[i].material, + 'amount': tousseAndMaterialAll[i].amount + })); + firstMaterialInfosStore.add(new materialInfosRecord({ + 'material': tousseAndMaterialAll[i].material, + 'amount': tousseAndMaterialAll[i].amount + })); + } + } + + var tousseBagsForNameValue = '' + var formPanel = new top.Ext.FormPanel({ + frame: true, + labelSeparator: ':', + labelAlign: 'right', + fileUpload: true, + bodyStyle: 'padding:5px 15px 0px 5px;', + labelWidth: 90, + autoScroll: true, + layout: 'form', + width: 650, + items: [{ + xtype: 'fieldset', + layout: 'column', + title: '基础信息', + autoHeight: true, + id: 'tousseBagsForPanel', + width: 650, + items: [{ + layout: 'column', + columnWidth: 1, + labelWidth: 90, + id: 'tousseAndMaterialDetailsBox_0', + items: [{ + layout: 'form', + labelWidth: 50, + columnWidth: .36, + height: 28, + hidden: scope == '材料', + items: [{ + xtype: 'hidden', + id: 'hiddenTousseIndex_0_0', + name: 'hiddenTousseIndex_0_0', + value: 0 + }, { + xtype: 'hidden', + id: 'tousseDefinitionId_0_0', + name: 'tousseDefinitionId_0_0' + }, { + xtype: 'hidden', + id: 'tousseInstanceId_0_0', + name: 'tousseInstanceId_0_0' + }, { + xtype: 'hidden', + id: 'tousseBarcode_0_0', + name: 'tousseBarcode_0_0' + }, { + xtype: 'combo', + fieldLabel: "器械包", + id: 'tousseBagsForName_0_0', + name: 'tousseBagsForName_0_0', + valueField: 'tousseName', + displayField: 'tousseName', + allowBlank: true, + editable: false, + store: tousseBagsStore, + value: tousseBagsForNameValue, + forceSelection: true, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + listeners: { + render: function (combo) { + if (tousseBagsStore.getCount() > 0) { + var item = tousseBagsStore.getAt(0); + top.Ext.getCmp('tousseBagsForName_0_0').setValue(item.data.tousseName); + top.Ext.getCmp('tousseDefinitionId_0_0').setValue(item.data.tousseDefinitionId); + top.Ext.getCmp('tousseInstanceId_0_0').setValue(item.data.tousseInstanceId); + top.Ext.getCmp('tousseBarcode_0_0').setValue(item.data.tousseBarcode); + if (scope == '材料和器械包') { + if (item.data.materialInfos) { + for (var i = 0; i < item.data.materialInfos.length; i++) { + materialInfosStore.add(new materialInfosRecord({ + 'material': item.data.materialInfos[i].material, + 'amount': item.data.materialInfos[i].amount + })); + firstMaterialInfosStore.add(new materialInfosRecord({ + 'material': item.data.materialInfos[i].material, + 'amount': item.data.materialInfos[i].amount + })); + } + } + + firstMaterialInfosStore.insert(0, new materialInfosRecord({ 'material': '全部' })); + } + } + }, + select: function (combo, record, index) { + var hiddenTousseIndex = top.Ext.getCmp('hiddenTousseIndex_0_0').getValue(); + var isHas = false; + for (var i = 0; i <= hiddenTousseIndex; i++) { + if (top.Ext.getCmp('tousseBagsForName_' + i + '_0')) { + if (top.Ext.getCmp('tousseBagsForName_' + i + '_0').getValue() == record.data.tousseName && i !== 0) { + showResult(record.data.tousseName + '已存在!'); + this.setValue(''); + isHas = true; + break; + } + } + } + if (isHas) { + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_0_0').getValue(); + for (var i = 1; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('hiddenIndexBox_0_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('hiddenIndexBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosNameBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('deleteButton_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosAmountBox_0_' + i); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').doLayout(); + top.Ext.getCmp('tousseDefinitionId_0_0').setValue(''); + top.Ext.getCmp('tousseInstanceId_0_0').setValue(''); + top.Ext.getCmp('tousseBarcode_0_0').setValue(''); + if (scope !== '器械包') { + materialInfosStore.removeAll(); + firstMaterialInfosStore.removeAll(); + top.Ext.getCmp('materialInfosName_0_0').setRawValue(''); + top.Ext.getCmp('materialInfosAmount_0_0').setValue(''); + } + return + } + top.Ext.getCmp('tousseDefinitionId_0_0').setValue(record.data.tousseDefinitionId); + top.Ext.getCmp('tousseInstanceId_0_0').setValue(record.data.tousseInstanceId); + top.Ext.getCmp('tousseBarcode_0_0').setValue(record.data.tousseBarcode); + if (scope == '器械包') { + return + } + materialInfosStore.removeAll(); + firstMaterialInfosStore.removeAll(); + top.Ext.getCmp('materialInfosName_0_0').setRawValue(''); + if (record.data.materialInfos) { + for (var i = 0; i < record.data.materialInfos.length; i++) { + materialInfosStore.add(new materialInfosRecord({ + 'material': record.data.materialInfos[i].material, + 'amount': record.data.materialInfos[i].amount + })); + firstMaterialInfosStore.add(new materialInfosRecord({ + 'material': record.data.materialInfos[i].material, + 'amount': record.data.materialInfos[i].amount + })); + } + } + firstMaterialInfosStore.insert(0, new materialInfosRecord({ 'material': '全部' })); + var hiddenMaterialIndex_0_0 = top.Ext.getCmp('hiddenMaterialIndex_0_0').getValue(); + for (var i = 1; i <= hiddenMaterialIndex_0_0; i++) { + if (top.Ext.getCmp('hiddenIndexBox_0_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('hiddenIndexBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosNameBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('deleteButton_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosAmountBox_0_' + i); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').doLayout(); + } + } + }] + }, { + layout: 'form', + columnWidth: .04, + labelWidth: 90, + height: setH, + hidden: scope == '材料', + items: [{ + xtype: 'button', + tooltip: '添加器械包', + iconCls: 'btn_ext_add', + handler: function () { + var hiddenTousseIndex = top.Ext.getCmp('hiddenTousseIndex_0_0').getValue(); + addTousseBags(parseInt(hiddenTousseIndex) + 1, tousseBagsStore); + } + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .36, + height: 28, + id: 'materialDetailsBox_0', + hidden: scope == '器械包', + items: [{ + xtype: 'hidden', + id: 'hiddenMaterialIndex_0_0', + name: 'hiddenMaterialIndex_0_0', + value: 0 + }, { + xtype: 'combo', + fieldLabel: '器械', + id: 'materialInfosName_0_0', + name: 'materialInfosName_0_0', + valueField: 'material', + displayField: 'material', + allowBlank: true, + editable: false, + store: firstMaterialInfosStore, + forceSelection: true, + mode: 'local', + triggerAction: 'all', + anchor: '95%', + listeners: { + select: function (combo, record, index) { + var hiddenMaterialIndex_0_0 = top.Ext.getCmp('hiddenMaterialIndex_0_0').getValue(); + if (record.data.material == '全部') { + top.Ext.getCmp('tousseAndMaterialDetailsButton_0').hide(); + top.Ext.getCmp('materialInfosAmount_0_0').disable(); + for (var i = 1; i <= hiddenMaterialIndex_0_0; i++) { + if (top.Ext.getCmp('hiddenIndexBox_0_' + i)) { + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('hiddenIndexBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosNameBox_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('deleteButton_0_' + i); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').remove('materialInfosAmountBox_0_' + i); + } + } + var allAmount = 0; + for (var i = 0; i < firstMaterialInfosStore.getCount(); i++) { + var item = firstMaterialInfosStore.getAt(i); + if (item.data.material !== '全部') { + allAmount += parseInt(item.data.amount || 0); + } + } + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').doLayout(); + top.Ext.getCmp('materialInfosAmount_0_0').setValue(allAmount); + } else { + top.Ext.getCmp('tousseAndMaterialDetailsButton_0').show(); + top.Ext.getCmp('materialInfosAmount_0_0').enable(); + var isHas = false; + for (var i = 1; i <= hiddenMaterialIndex_0_0; i++) { + if (top.Ext.getCmp('hiddenIndexBox_0_' + i)) { + if (top.Ext.getCmp('materialInfosName_0_' + i).getValue() == record.data.material) { + showResult(record.data.material + '已存在!'); + isHas = true; + this.setValue(''); + break; + } + } + } + if (isHas) { + top.Ext.getCmp('materialInfosAmount_0_0').setValue(''); + } else { + top.Ext.getCmp('materialInfosAmount_0_0').maxValue = record.data.amount; + top.Ext.getCmp('materialInfosAmount_0_0').setValue(1); + top.Ext.getCmp('tousseAndMaterialDetailsBox_0').doLayout(); + } + } + } + } + }] + }, { + layout: 'form', + columnWidth: .04, + labelWidth: 90, + height: setH, + id: 'tousseAndMaterialDetailsButton_0', + hidden: scope == '器械包', + items: [{ + xtype: 'button', + tooltip: '添加器械', + iconCls: 'btn_ext_add', + handler: function () { + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_0_0').getValue(); + if (scope == '材料') { + addMaterialInfos(0, parseInt(hiddenMaterialIndex) + 1, tousseAndMaterialAll); + } else { + addMaterialInfos(0, parseInt(hiddenMaterialIndex) + 1, tousseAndMaterialAll[0].materialInfos); + } + } + }] + }, { + layout: 'form', + labelWidth: 50, + columnWidth: .2, + items: [{ + xtype: 'numberfield', + allowDecimals: false, + name: 'materialInfosAmount_0_0', + id: 'materialInfosAmount_0_0', + fieldLabel: "数量", + allowBlank: true, + disabled: scope == '器械包', + blankText: '数量不能为空', + anchor: '95%' + }] + }] + }] + }], + buttons: [{ + text: '保存', + handler: function () { + var hiddenTousseIndex = top.Ext.getCmp('hiddenTousseIndex_0_0').getValue(); + var arr = []; + var scope = top.Ext.getCmp('scope').getValue(); + if (scope !== '材料') { + for (var i = 0; i <= hiddenTousseIndex; i++) { + if (top.Ext.getCmp('tousseAndMaterialDetailsBox_' + i)) { + var tousseName = top.Ext.getCmp('tousseBagsForName_' + i + '_0').getValue(); + var tousseDefinitionId = top.Ext.getCmp('tousseDefinitionId_' + i + '_0').getValue(); + var tousseInstanceId = top.Ext.getCmp('tousseInstanceId_' + i + '_0').getValue(); + var tousseBarcode = top.Ext.getCmp('tousseBarcode_' + i + '_0').getValue(); + var materialInfos = []; + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_' + i + '_0').getValue(); + for (var j = 0; j <= hiddenMaterialIndex; j++) { + if (top.Ext.getCmp('materialInfosName_' + i + '_' + j)) { + var material = top.Ext.getCmp('materialInfosName_' + i + '_' + j).getValue(); + var amount = top.Ext.getCmp('materialInfosAmount_' + i + '_' + j).getValue(); + if (material !== '') { + materialInfos.push({ + material: material, + amount: amount || 0 + }) + } + } + } + arr.push({ + optionId: optionId, + tousseBarcode: tousseBarcode, + tousseName: tousseName, + tousseDefinitionId: tousseDefinitionId, + tousseInstanceId: tousseInstanceId, + materialInfos: materialInfos + }) + } + } + } else { + var materialInfos = []; + var hiddenMaterialIndex = top.Ext.getCmp('hiddenMaterialIndex_0_0').getValue(); + for (var i = 0; i <= hiddenMaterialIndex; i++) { + if (top.Ext.getCmp('materialInfosName_0_' + i)) { + var material = top.Ext.getCmp('materialInfosName_0_' + i).getValue(); + var materialAmount = top.Ext.getCmp('materialInfosAmount_0_' + i).getValue(); + if (material !== '') { + materialInfos.push({ + material: material, + amount: materialAmount || 0 + }) + } + } + } + arr.push({ + optionId: optionId, + materialInfos: materialInfos + }) + } + + if (arr.length > 0) { + var str = ''; + for (var i = 0; i < arr.length; i++) { + if (scope == '器械包') { + if (arr[i].tousseName) { + str += arr[i].tousseName + ';' + } + } else { + if (arr[i].tousseName) { + str += arr[i].tousseName + ':' + } + for (var j = 0; j < arr[i].materialInfos.length; j++) { + var material = arr[i].materialInfos[j].material; + var amount = arr[i].materialInfos[j].amount; + if (material == '' || material == '全部') { + str += '全部'; + arr[i].allMaterial = '是'; + } else { + str += material + '*' + amount + ';'; + } + } + str += '\r\n' + } + } + + top.Ext.getCmp('showRecordMaterialDetailsBox_' + id + '_' + filedIndex).show(); + top.Ext.getCmp('showRecordMaterialDetails_' + id + '_' + filedIndex).setValue(str); + top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex).setValue(JSON.stringify(arr)); + } + + var newArr = []; + + for (var k = 0; k < optionsLength; k++) { + var hideRecordMaterialDetails = top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + k).getValue(); + if (hideRecordMaterialDetails !== '') { + var obj = JSON.parse(hideRecordMaterialDetails); + newArr = newArr.concat(obj); + } + } + + if (newArr.length > 0) { + top.Ext.getCmp('recordMaterialDetails' + id).setValue(JSON.stringify(newArr)); + } else { + top.Ext.getCmp('recordMaterialDetails' + id).setValue(''); + } + + win.close(); + } + }, { + text: '取消', + handler: function () { + win.close(); + } + }] + }); + win = new top.Ext.Window({ + id: 'recordMaterialDetailsWin', + layout: 'fit', + title: '不合格物品登记', + width: 700, + height: 400, + border: false, + modal: true, + plain: true, + items: [formPanel] + }); + win.show(); + + if (top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex)) { + var val = top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex).getValue(); + if (val !== '') { + var obj = JSON.parse(val); + if (obj.length > 0) { + var newObj = obj[0]; + top.Ext.getCmp('hiddenTousseIndex_0_0').setValue(obj.length - 1); + top.Ext.getCmp('tousseBagsForName_0_0').setValue(newObj.tousseName); + top.Ext.getCmp('tousseDefinitionId_0_0').setValue(newObj.tousseDefinitionId); + top.Ext.getCmp('tousseInstanceId_0_0').setValue(newObj.tousseInstanceId); + top.Ext.getCmp('tousseBarcode_0_0').setValue(newObj.tousseBarcode); + top.Ext.getCmp('hiddenMaterialIndex_0_0').setValue(newObj.materialInfos.length - 1); + if (newObj.materialInfos && newObj.materialInfos.length > 0) { + top.Ext.getCmp('materialInfosName_0_0').setValue(newObj.materialInfos[0].material); + top.Ext.getCmp('materialInfosAmount_0_0').setValue(newObj.materialInfos[0].amount); + var materialInfosData = []; + if (scope == '材料') { + materialInfosData = tousseAndMaterialAll; + } else { + for (var k = 0; k < tousseAndMaterialAll.length; k++) { + if (tousseAndMaterialAll[k].tousseName == newObj.tousseName && tousseAndMaterialAll[k].tousseDefinitionId == newObj.tousseDefinitionId) { + materialInfosData = tousseAndMaterialAll[k].materialInfos; + break; + } + } + } + for (var i = 1; i < newObj.materialInfos.length; i++) { + addMaterialInfos(0, i, materialInfosData, newObj.materialInfos); + } + } + for (var i = 1; i < obj.length; i++) { + addTousseBags(i, tousseBagsStore, obj[i]); + if (obj[i].materialInfos && obj[i].materialInfos.length > 0) { + var materialInfosData = []; + for (var k = 0; k < tousseAndMaterialAll.length; k++) { + if (tousseAndMaterialAll[k].tousseName == obj[i].tousseName && tousseAndMaterialAll[k].tousseDefinitionId == obj[i].tousseDefinitionId) { + materialInfosData = tousseAndMaterialAll[k].materialInfos; + break; + } + } + for (var j = 1; j < obj[i].materialInfos.length; j++) { + addMaterialInfos(i, j, materialInfosData, obj[i].materialInfos); + } + } + + } + } + } + } +} + /** * 创建监测项的表单元素. * @param type 表单元素的类型 @@ -97,7 +1268,7 @@ * @param isTriggerItem 触发项 * @returns */ -function createQualityMonitoringItemElement(type, id, name, allowBlank, options, value, isTriggerItem) { +function createQualityMonitoringItemElement(type, id, name, allowBlank, options, value, isTriggerItem, optionValues) { var hideElement = false; if ('是' == isTriggerItem && (value == null || value == "")) { setTimeout(function () { @@ -289,6 +1460,12 @@ xtype: 'hidden', hidden: allowBlank, value: value + }, { + id: 'recordMaterialDetails' + id, + name: 'recordMaterialDetails' + id, + xtype: 'hidden', + hidden: true, + value: '' }); if (options != "") { var optionsJson = JSON.parse(options); @@ -302,17 +1479,21 @@ columnWidth: 0.5, labelWidth: 200, style: 'margin-top:10px', + id: 'hideCheckbox' + id + '_' + j, items: [{ name: 'cconfigItemOption' + id, fieldLabel: optionsJson[j].name, xtype: 'checkbox', checked: checked, - columnWidth: .5, inputValue: JSON.stringify(optionsJson[j]), + filedIndex: j, listeners: { check: function (thiz, checked) { var elementId = thiz.getName().substring(1); var elementObj = top.Ext.getCmp(elementId); + var filedIndex = thiz.filedIndex; + var optionId = optionsJson[filedIndex].id; + var scope = top.Ext.getCmp('scope').getValue(); if (elementObj != undefined && elementObj != null) { var oldElementValue = elementObj.getValue(); var checkedValue = JSON.parse(thiz.getRawValue()); @@ -326,6 +1507,83 @@ var valueTriggerItemIds = checkedValue.valueTriggerItemIds; triggerItemAction(valueTriggerItemIds, "show"); } + if (optionsJson[filedIndex].recordMaterialDetails == '是' && sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring) { + if (updateId == '') { + top.Ext.getCmp('hideButton' + id + '_' + filedIndex).show(); + } + + top.Ext.getCmp('hideCheckbox' + id + '_' + filedIndex).columnWidth = 0.3; + if (optionValues) { + var newArr = []; + for (var i = 0; i < optionValues.length; i++) { + var nId = optionValues[i].itemOption.id; + if (nId == optionId) { + var str = ''; + var tousseGoodsArr = optionValues[i].tousseGoods; + var materialInfosArr = optionValues[i].materialInfos; + if (tousseGoodsArr.length > 0) { + for (var k = 0; k < tousseGoodsArr.length; k++) { + if (scope == '器械包') { + if (tousseGoodsArr[k].tousseName) { + str += tousseGoodsArr[k].tousseName + ':' + } + } else { + str += tousseGoodsArr[k].tousseName + ':'; + var allMaterial = '否'; + for (var j = 0; j < tousseGoodsArr[k].materialInfos.length; j++) { + var material = tousseGoodsArr[k].materialInfos[j].material; + var amount = tousseGoodsArr[k].materialInfos[j].amount; + if (material == '' || material == '全部') { + str += '全部'; + allMaterial = '是'; + } else { + str += material + '*' + amount + ';'; + } + } + str += '\r\n'; + newArr.push({ + id: tousseGoodsArr[k].id, + optionId: optionId, + tousseDefinitionId: tousseGoodsArr[k].tousseDefinitionId, + tousseInstanceId: tousseGoodsArr[k].tousseInstanceId, + tousseName: tousseGoodsArr[k].tousseName, + allMaterial: allMaterial, + materialInfos: tousseGoodsArr[k].materialInfos + }) + } + } + + top.Ext.getCmp('showRecordMaterialDetails_' + id + '_' + filedIndex).setValue(str); + top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex).setValue(JSON.stringify(tousseGoodsArr)); + top.Ext.getCmp('showRecordMaterialDetailsBox_' + id + '_' + filedIndex).show(); + } else if (materialInfosArr.length > 0) { + for (var j = 0; j < materialInfosArr.length; j++) { + var material = materialInfosArr[j].material; + var amount = materialInfosArr[j].amount; + str += material + '*' + amount + ';'; + } + newArr.push({ + optionId: optionId, + materialInfos: materialInfosArr + }) + top.Ext.getCmp('showRecordMaterialDetails_' + id + '_' + filedIndex).setValue(str); + top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex).setValue(JSON.stringify(materialInfosArr)); + top.Ext.getCmp('showRecordMaterialDetailsBox_' + id + '_' + filedIndex).show(); + } + } + } + var recordMaterialDetails = top.Ext.getCmp('recordMaterialDetails' + id).getValue(); + if (recordMaterialDetails !== '') { + var obj = JSON.parse(recordMaterialDetails); + obj = obj.concat(newArr); + top.Ext.getCmp('recordMaterialDetails' + id).setValue(JSON.stringify(obj)); + } else { + top.Ext.getCmp('recordMaterialDetails' + id).setValue(JSON.stringify(newArr)); + } + } + + top.Ext.getCmp('itemsFieldSet').doLayout(); + } } else { var newValue = oldElementValue.replace("," + thiz.getRawValue(), ''); elementObj.setValue(newValue); @@ -334,11 +1592,69 @@ var valueTriggerItemIds = checkedValue.valueTriggerItemIds; triggerItemAction(valueTriggerItemIds, "hide"); } + if (optionsJson[filedIndex].recordMaterialDetails == '是' && sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring) { + top.Ext.getCmp('hideButton' + id + '_' + filedIndex).hide(); + top.Ext.getCmp('hideCheckbox' + id + '_' + filedIndex).columnWidth = 0.5; + top.Ext.getCmp('showRecordMaterialDetails_' + id + '_' + filedIndex).setValue(''); + top.Ext.getCmp('hideRecordMaterialDetails_' + id + '_' + filedIndex).setValue(''); + var recordMaterialDetails = top.Ext.getCmp('recordMaterialDetails' + id).getValue(); + if (recordMaterialDetails !== '') { + var obj = JSON.parse(recordMaterialDetails); + var newArr = []; + for (var j = 0; j < obj.length; j++) { + if (obj[j].optionId !== optionId) { + newArr.push(obj[j]) + } + } + top.Ext.getCmp('recordMaterialDetails' + id).setValue(JSON.stringify(newArr)); + } + top.Ext.getCmp('itemsFieldSet').doLayout(); + } } } } } }] + }, { + layout: 'form', + columnWidth: 0.2, + style: 'margin-top:10px', + id: 'hideButton' + id + '_' + j, + hidden: !(id == '' && sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring), + items: [{ + xtype: 'button', + text: '登记/修改', + filedIndex: j, + handler: function (thiz) { + var filedIndex = thiz.filedIndex; + showRecordMaterialDetails(id, filedIndex, optionsJson[filedIndex].id, optionsJson.length); + } + }] + }, { + layout: 'form', + columnWidth: 0.5, + labelWidth: 0, + style: 'margin-top:10px', + id: 'showRecordMaterialDetailsBox_' + id + '_' + j, + hidden: true, + items: [{ + id: 'hideRecordMaterialDetails_' + id + '_' + j, + name: 'hideRecordMaterialDetails_' + id + '_' + j, + xtype: 'hidden', + value: '' + }, { + xtype: 'textarea', + allowBlank: true, + labelSeparator: '', + labelWidth: 0, + anchor: '99%', + readOnly: true, + width: 300, + cls: 'fieldReadOnlyNoRemove', + id: 'showRecordMaterialDetails_' + id + '_' + j, + name: 'showRecordMaterialDetails_' + id + '_' + j, + value: '' + }] }); } } @@ -446,6 +1762,8 @@ if (typeof (washAndDisinfectStatus) != 'undefined' && washAndDisinfectStatus != null && washAndDisinfectStatus != "") { washStatus = washAndDisinfectStatus; } + var unQualifiedTousseAmount = top.Ext.getCmp('unQualifiedTousseAmount').getValue(); + var unQualifiedMaterialAmount = top.Ext.getCmp('unQualifiedMaterialAmount').getValue(); //2、提交 setQmSubmitResult(0); top.Ext.getCmp('addQualityMonitoringForm').form.submit({ @@ -455,7 +1773,9 @@ sterilizationStatus: sterilizationStatus, //灭菌状态 washStatus: washStatus, qualityMonitoringSterilizationID: qualityMonitoringSterilizationID, //灭菌记录id - qualityMonitoringWRRecordID: qualityMonitoringWRRecordID //清洗记录id + qualityMonitoringWRRecordID: qualityMonitoringWRRecordID, //清洗记录id + unQualifiedTousseAmount: unQualifiedTousseAmount, + unQualifiedMaterialAmount: unQualifiedMaterialAmount }, method: 'POST', waitMsg: '正在保存数据,请稍候', @@ -1578,7 +2898,7 @@ } } } else { - if (amountChild == 001) {//第一个 + if (amountChild == 1) {//第一个 var showBtn = getShowBtn(addExtractClick, btnShowOrHide); addMaterialItems("materialWrapper", showBtn, items, items5, items1, items2, items3, items4); top.Ext.getCmp("materialWrapper").doLayout(); @@ -3235,6 +4555,7 @@ params: { id: id }, success: function (response, options) { var result = top.Ext.decode(response.responseText); + updateId = id; if (result.success) { if (result.data.status == '已审核') { top.Ext.getCmp('saveAndCreateBtn').hide(); @@ -3399,7 +4720,8 @@ top.Ext.getCmp('optionAmount').setValue(top.Ext.getCmp('optionAmount').getValue() + ';' + item.id); } var allowBlank = item.requirement == '必填' ? false : true; - items.push(createQualityMonitoringItemElement(item.type, item.id, item.name, allowBlank, item.optionsJson, result.data.items[i].showAnswer, item.isTriggerItem)); + var optionValues = result.data.items[i].optionValues; + items.push(createQualityMonitoringItemElement(item.type, item.id, item.name, allowBlank, item.optionsJson, result.data.items[i].showAnswer, item.isTriggerItem, optionValues)); if (item.type == '多选') { items.push({ columnWidth: 1, @@ -3427,6 +4749,11 @@ if (top.Ext.getCmp('itemsFieldSet')) { top.Ext.getCmp('itemsFieldSet').doLayout(); } + + if (sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring) { + top.Ext.getCmp('unQualifiedMaterialAmount').setValue(result.data.unQualifiedMaterialAmount || 0); + top.Ext.getCmp('unQualifiedTousseAmount').setValue(result.data.unQualifiedTousseAmount || 0); + } //打开已有质量监测记录,器械包条码,器械包名称,重新回收和重新装配都禁用掉,不能再修改 top.Ext.getCmp('recycle').disable(); top.Ext.getCmp('repacking').disable(); @@ -3466,6 +4793,7 @@ } }); } else { + updateId = ''; if (qualityMonitoringWRRecordID > 0 && (sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition) { top.Ext.getCmp('basketBarcodeC').setVisible(true); top.Ext.getCmp('positionC').setVisible(true); @@ -3714,8 +5042,8 @@ tousseArrHidden = []; tousseBagsList = {}; } else if (top.Ext.getCmp("scope").getValue() == "材料和器械包") { - tousseBagsList.tousseDiscard = tousseArrHidden[5]; - tousseBagsList.tousseReprint = tousseArrHidden[6]; + tousseBagsList.tousseDiscard = tousseArrHidden[5] || '否'; + tousseBagsList.tousseReprint = tousseArrHidden[6] || '否'; } } else if (wrapper[j].items.items[0].fieldLabel == "重新回收" || wrapper[j].items.items[0].fieldLabel == "重新装配") { continue; @@ -3777,136 +5105,78 @@ if (((wrapperItemsFieldSet[x].items.items[0].id)).indexOf("triggerItemIds") != -1) { configItemKey = wrapperItemsFieldSet[x].items.items[1].id; configItemVal = top.Ext.getCmp(configItemKey).getValue(); + configItemOption[configItemKey] = configItemVal; } else if ((wrapperItemsFieldSet[x].items.items[0].xtype) == "datefieldWithMin") { configItemKey = wrapperItemsFieldSet[x].items.items[0].id; configItemVal = wrapperItemsFieldSet[x].items.items[0].value; + configItemOption[configItemKey] = configItemVal; } else { - configItemKey = wrapperItemsFieldSet[x].items.items[0].id; - configItemVal = top.Ext.getCmp(configItemKey).getValue(); - + for (var j = 0; j < 2; j++) { + configItemKey = wrapperItemsFieldSet[x].items.items[0].id; + configItemVal = top.Ext.getCmp(configItemKey).getValue(); + configItemOption[configItemKey] = configItemVal; + var recordMaterialDetailsId = wrapperItemsFieldSet[x].items.items[1]; + if (recordMaterialDetailsId && recordMaterialDetailsId.id.indexOf('recordMaterialDetails') >= 0) { + configItemKey = wrapperItemsFieldSet[x].items.items[1].id; + configItemVal = top.Ext.getCmp(configItemKey).getValue(); + configItemOption[configItemKey] = configItemVal; + } + } } - configItemOption[configItemKey] = configItemVal; } } configItemOptionArr.push(configItemOption); return configItemOptionArr; } -/** - * 保存质量监测实例. - * @param thiz 按钮对象 - * @param materialDefinitionStore 抽检器械的store - * @param saveAndCreate 是否为“保存并新建”操作 - * @returns {Boolean} - */ -function saveQualityMonitoringNew(thiz, materialDefinitionStore, saveAndCreate) { - //1、验证所有的监测细则的填写是否合法 - var optionAmount = top.Ext.getCmp('optionAmount').getValue(); //监测细则的表单元素id集合(用分号分隔) - if (optionAmount) { - var optionAmountArr = optionAmount.split(';'); - for (var i = 0; i < optionAmountArr.length; i++) { - var itemId = optionAmountArr[i]; - if (!top.Ext.getCmp('hideElement' + itemId).hidden) { - if (!top.Ext.getCmp('configItemOption' + itemId).isValid()) { - showResultQM("请正确填写表单各值。"); - return false; - } - } else { - if (!top.Ext.getCmp('hideElement' + itemId).hidden && top.Ext.getCmp('configItemOption' + itemId).getValue() == '#@') { - showResultQM("请正确填写表单各值。"); - return false; - } - } - - //如果是多选,并且必填,需要单独校验 - var extElement = top.Ext.getCmp('hideElement' + itemId); - if (extElement.getXType() == 'fieldset' && !extElement.allowBlank) { - var checkboxArr = extElement.findByType('checkbox'); - var checked = false; - for (var int = 0; int < checkboxArr.length; int++) { - if (checkboxArr[int].checked) { - checked = checkboxArr[int].checked; - continue; - } - } - if (!checked) { - showResultQM(extElement.title + "是必填项"); - return false; - } - } - } - } - - //2、验证是否选择监测项 - var inspecItemName = top.Ext.getCmp("formName"); - if (inspecItemName == null || inspecItemName.getValue() == '') { - showResultQM("请选择监测项!"); - return false; - } - - //登记人不能为空 - var createUserName = top.Ext.getCmp("createUserName").getValue(); - if (createUserName == '') { - showResultQM("登记人不能为空!"); - return false; - } - //5、如果是(整炉 or 监测项=无 or 监测范围=无 or 监测范围=灭菌炉记录)则可以不用填写器械包信息,否则强制要登记器械包信息 - var barcode = top.Ext.getCmp('barcode').getValue(); //第一组的器械包条码 - var tousseName = top.Ext.getCmp('tousseName').getRawValue(); //第一组的器械包名称 - var material = top.Ext.getCmp('material').getValue(); //第一组的材料名称 - var inspectName = top.Ext.getCmp('formName').getRawValue(); //监测项 - var scope = top.Ext.getCmp('scope').getValue(); //监测范围 - if (!allTousseOfSterileChecked()) { - if (inspectName != '无' && scope != '无' && scope != '灭菌炉记录') { - // 质量检测项为'无',强制登记器械包信息 - if (!material && !tousseName) { - showResultQM("请录入抽验器械或器械包名称"); - return false; - } - } - } - - - //7、如果有显示“清洗篮筐名称”则需要填写 - var container = top.Ext.getCmp("containerName"); - if (container != null && container.isVisible() && container.getValue() == "") { - showResultQM("请扫描回收篮筐条码!"); - return false; - } - +function getTousseAndMaterialAll() { var tousseAndMaterialAll = {}; var tousseInstanceInfos = []; var tousseAndMaterialWrapperCountNum = tousseItemCount;//获取添加的块数量 //针对第一个块,过滤出需要的数据 + var tosseAndMaterialFirstWrapper = []; if (top.Ext.getCmp("tosseAndMaterial")) { - var tosseAndMaterialFirstWrapper = top.Ext.getCmp("tosseAndMaterial").items.items;//获取默认显示的第一个器械包信息,就是第一个块 + tosseAndMaterialFirstWrapper = top.Ext.getCmp("tosseAndMaterial").items.items;//获取默认显示的第一个器械包信息,就是第一个块 for (var n = 0; n < tosseAndMaterialFirstWrapper.length; n++) { var firstId = tosseAndMaterialFirstWrapper[n].id; - if (firstId == "tousseBarcodeC" /* || firstId == "addExtractCheckTousseBtnC" || firstId == "tousseNameC" || firstId == "tousseAmountC" */) { + if (firstId == "tousseBarcodeC") { tosseAndMaterialFirstWrapper.splice(0, 4);//先删除前面写死的器械包信息,器械包条码,按钮,器械包名称,数量 } if (tosseAndMaterialFirstWrapper[0].id == "materialWrapper") { var firstAddMaterial = tosseAndMaterialFirstWrapper[0].items.items; for (var w = 0; w < firstAddMaterial.length; w++) { - if (firstAddMaterial[w].id == "materialC" /* || firstId == "addExtractCheckMaterialBtnC" || firstId == "materialAmountC" */) { + if (firstAddMaterial[w].id == "materialC") { firstAddMaterial.splice(0, 5);//是材料的话,把材料里面的写死删除,抽检器械,按钮,数量 } } - //tosseAndMaterialFirstWrapper.splice(0, 5);////删除前面写死的器械包和数量等 - tosseAndMaterialFirstWrapper.splice(0, 1);//再删除材料,写死的篮筐条码,位置 break; } } } + //如果是(整炉 or 监测项=无 or 监测范围=无 or 监测范围=灭菌炉记录)则可以不用填写器械包信息,否则强制要登记器械包信息 + var barcode = top.Ext.getCmp('barcode').getValue(); //第一组的器械包条码 + var tousseName = top.Ext.getCmp('tousseName').getRawValue(); //第一组的器械包名称 + var material = top.Ext.getCmp('material').getValue(); //第一组的材料名称 + var inspectName = top.Ext.getCmp('formName').getRawValue(); //监测项 + var scope = top.Ext.getCmp('scope').getValue(); //监测范围 + if (!allTousseOfSterileChecked()) { + if (inspectName != '无' && scope != '无' && scope != '灭菌炉记录') { + // 质量检测项为'无',强制登记器械包信息 + if (!material && !tousseName) { + showResultQM("请录入抽验器械或器械包名称"); + return false; + } + } + } + //获取第一块材料写死的数据 var firstAddMaterialArr = []; var firstMaterialInfos = []; - var material = top.Ext.getCmp('material').getValue(); var amount = ""; var position = ""; //6、如果是重新打开的记录,不再校验材料和包的关系 @@ -3925,7 +5195,7 @@ // 判断材料是否在包里面 DWREngine.setAsync(false); TousseInstanceTableManager.isTiContainsMaterial(tousseDefinitionId, material, function (responseText) { - result = top.Ext.decode(responseText); + var result = top.Ext.decode(responseText); isContain = result.isContain; }); DWREngine.setAsync(true); @@ -3955,7 +5225,6 @@ //获取第一块器械包写死的数据 var firstTousseBagsList = {}; - //if(top.Ext.getCmp("scope").getValue() != "材料" || top.Ext.getCmp("scope").getValue() != "无" || top.Ext.getCmp("scope").getValue() != "灭菌炉记录"){ if (top.Ext.getCmp("scope").getValue() == "材料和器械包" || top.Ext.getCmp("scope").getValue() == "器械包") { var tousseName = top.Ext.getCmp('tousseName').getRawValue(); var barcode = top.Ext.getCmp('tempBarcode').getValue(); @@ -3976,11 +5245,9 @@ firstTousseBagsList.tousseRePacking = isRepacking; firstTousseBagsList.tousseReprint = (isReprint == '') ? '否' : isReprint; firstTousseBagsList.tousseDiscard = (isDiscard == '') ? '否' : isDiscard; - firstTousseBagsList.order = ""; + firstTousseBagsList.order = 0; } - - var getTousseArgument2; if (top.Ext.getCmp("scope").getValue() == "材料和器械包" || top.Ext.getCmp("scope").getValue() == "材料" || top.Ext.getCmp("scope").getValue() == "无") { if (firstAddMaterial != undefined) {//点击第一个抽检器械按钮增加在第一个下面的 for (var v = 0; v < firstAddMaterial.length; v++) { @@ -4007,7 +5274,7 @@ firstTousseBagsList.materialInfos = firstMaterialInfos; } - getTousseArgument2 = setTousseArgument(tosseAndMaterialFirstWrapper); + var getTousseArgument2 = setTousseArgument(tosseAndMaterialFirstWrapper); getTousseArgument2.unshift(firstTousseBagsList); //获取第一个监测项 var configItemOptionFirst; @@ -4099,7 +5366,6 @@ for (var i = 0; i < tousseInstanceInfos.length; i++) { var tousseBags = tousseInstanceInfos[i].tousseBags; for (var j = 0; j < tousseBags.length; j++) { - var tousseBarcode = tousseBags[j].tousseBarcode; var tousseName = tousseBags[j].tousseName; var tousseReprint = tousseBags[j].tousseReprint; if (tousseName == '' && tousseReprint == '是') { @@ -4115,6 +5381,76 @@ } tousseAndMaterialAll.tousseInstanceInfos = tousseInstanceInfos; + return tousseAndMaterialAll; +} + +/** + * 保存质量监测实例. + * @param thiz 按钮对象 + * @param materialDefinitionStore 抽检器械的store + * @param saveAndCreate 是否为“保存并新建”操作 + * @returns {Boolean} + */ +function saveQualityMonitoringNew(thiz, saveAndCreate) { + //1、验证所有的监测细则的填写是否合法 + var optionAmount = top.Ext.getCmp('optionAmount').getValue(); //监测细则的表单元素id集合(用分号分隔) + if (optionAmount) { + var optionAmountArr = optionAmount.split(';'); + for (var i = 0; i < optionAmountArr.length; i++) { + var itemId = optionAmountArr[i]; + if (!top.Ext.getCmp('hideElement' + itemId).hidden) { + if (!top.Ext.getCmp('configItemOption' + itemId).isValid()) { + showResultQM("请正确填写表单各值。"); + return false; + } + } else { + if (!top.Ext.getCmp('hideElement' + itemId).hidden && top.Ext.getCmp('configItemOption' + itemId).getValue() == '#@') { + showResultQM("请正确填写表单各值。"); + return false; + } + } + + //如果是多选,并且必填,需要单独校验 + var extElement = top.Ext.getCmp('hideElement' + itemId); + if (extElement.getXType() == 'fieldset' && !extElement.allowBlank) { + var checkboxArr = extElement.findByType('checkbox'); + var checked = false; + for (var int = 0; int < checkboxArr.length; int++) { + if (checkboxArr[int].checked) { + checked = checkboxArr[int].checked; + continue; + } + } + if (!checked) { + showResultQM(extElement.title + "是必填项"); + return false; + } + } + } + } + + //2、验证是否选择监测项 + var inspecItemName = top.Ext.getCmp("formName"); + if (inspecItemName == null || inspecItemName.getValue() == '') { + showResultQM("请选择监测项!"); + return false; + } + + //登记人不能为空 + var createUserName = top.Ext.getCmp("createUserName").getValue(); + if (createUserName == '') { + showResultQM("登记人不能为空!"); + return false; + } + + //如果有显示“清洗篮筐名称”则需要填写 + var container = top.Ext.getCmp("containerName"); + if (container != null && container.isVisible() && container.getValue() == "") { + showResultQM("请扫描回收篮筐条码!"); + return false; + } + + var tousseAndMaterialAll = getTousseAndMaterialAll(); //传参tousseAndMaterialAll checkIsTousseInstanceRepackingAndSubmitFormNew(thiz, JSON.stringify(tousseAndMaterialAll), saveAndCreate); } @@ -4840,6 +6176,8 @@ //{xtype: 'hidden',name: 'inspectType',id: 'inspectType'}, //记住上一次的监测项类型 { xtype: 'hidden', name: 'scanWashRecord_id', id: 'scanWashRecord_id' }, //清洗记录的id { xtype: 'hidden', name: 'scanTousseInstance_id', id: 'scanTousseInstance_id' }, //回收或灭菌扫描条码的id + { xtype: 'hidden', name: 'unQualifiedTousseAmount', id: 'unQualifiedTousseAmount' }, + { xtype: 'hidden', name: 'unQualifiedMaterialAmount', id: 'unQualifiedMaterialAmount' }, varibaleContent1, varibaleContent2, { @@ -5478,36 +6816,58 @@ ] }] }], - buttons: [/* { - id : 'addExtractCheckTousse', - text : '添加抽检器械包', - handler : function(){ - addExtractCheckTousse(); + buttons: [{ + id: 'saveBtn', + text: '   保存    ', + handler: function () { + var scope = top.Ext.getCmp("scope").getValue(); + if ((scope == '材料和器械包' || scope == '材料' || scope == '器械包') && sstsConfig.enableRecordMaterialDetailsOfQualityMonitoring && id == '') { + if (top.Ext.getCmp('itemsFieldSet')) { + var firstItemsFieldSet = top.Ext.getCmp('itemsFieldSet').items.items; + var getFirstConfigItemOptionArgument = setConfigItemOptionArgument(firstItemsFieldSet); + var configItemOptionFirst = getFirstConfigItemOptionArgument[0]; + var goodsArr = []; + for (var item in configItemOptionFirst) { + if (item.indexOf('recordMaterialDetails') >= 0) { + if (configItemOptionFirst[item] && configItemOptionFirst[item] !== '') { + goodsArr = goodsArr.concat(JSON.parse(configItemOptionFirst[item])); + } + } + } + var unQualifiedTousseAmount = 0; + var unQualifiedMaterialAmount = 0; + if (goodsArr.length > 0) { + for (var i = 0; i < goodsArr.length; i++) { + if (goodsArr[i].tousseName) { + unQualifiedTousseAmount++; + } + if (goodsArr[i].materialInfos && goodsArr[i].materialInfos.length > 0) { + for (var j = 0; j < goodsArr[i].materialInfos.length; j++) { + unQualifiedMaterialAmount += goodsArr[i].materialInfos[j].amount; + } + } + } + confirmRecordMaterialAmount(this, unQualifiedTousseAmount, unQualifiedMaterialAmount) + //saveQualityMonitoringNew(this, false); + } else { + saveQualityMonitoringNew(this, false); + } + } + } else { + saveQualityMonitoringNew(this, false); + } } - },{ - id : 'addExtractCheckMaterial', - text : '添加抽检器械', - handler : function(){ - addExtractCheckMaterial(); + }, { + id: 'saveAndCreateBtn', + text: '保存并新建', + handler: function () { + saveQualityMonitoringNew(this, true); } - }, */{ - id: 'saveBtn', - text: '   保存    ', - handler: function () { - //saveQualityMonitoring(this,materialDefinitionStore,false); - saveQualityMonitoringNew(this, materialDefinitionStore, false); - } - }, { - id: 'saveAndCreateBtn', - text: '保存并新建', - handler: function () { - saveQualityMonitoringNew(this, materialDefinitionStore, true); - } - }, { - text: '   取消    ', - id: 'saveAndNewBtn', - handler: cancelQualityMonitoring - }] + }, { + text: '   取消    ', + id: 'saveAndNewBtn', + handler: cancelQualityMonitoring + }] }); formPanel.add({ id: 'qualifiedInformationSet', @@ -5868,7 +7228,7 @@ var firstChildNum = ""; widthSet = true; if (top.Ext.getCmp("scope").getValue() == "材料和器械包") {//如果监测范围是材料和包的话 - firstChildNum = '001';//这里是自己写死的,因为这个本身是第一个 + firstChildNum = 1;//这里是自己写死的,因为这个本身是第一个 } addExtractCheckMaterial("", "", 1, "", "", "", "", "", "", "", firstChildNum, "", 0);