Index: ssts-web/src/main/webapp/disinfectsystem/interfere/interfereUseRecordForm.js =================================================================== diff -u -r20284 -r20470 --- ssts-web/src/main/webapp/disinfectsystem/interfere/interfereUseRecordForm.js (.../interfereUseRecordForm.js) (revision 20284) +++ ssts-web/src/main/webapp/disinfectsystem/interfere/interfereUseRecordForm.js (.../interfereUseRecordForm.js) (revision 20470) @@ -1,23 +1,13 @@ -var id; +//当前使用记录id(修改列表的使用记录时赋值,新增使用记录时置空) +var currentUseRecordId; +//录入使用记录的表单面板 var formObj; -var containerWin; +//使用记录的手术间是否允许为空 var useRecordOperationRoomAllowBlank = true; //巡回护士项的标签 var circuitNurseLabelName = sstsConfig.circuitNurseLabelName ? sstsConfig.circuitNurseLabelName : '巡回护士'; -/** - * 自动补零的函数 - * @param value - */ -function paddingZero(value, totalLength) { - if (value != null && value.Trim().length > 0) { - var lengthOfZero = value.Trim().length; - for (var i = 0; i < totalLength - lengthOfZero; i++) { - value = '0' + value; - } - } - return value; -} + var sm = new top.Ext.grid.CheckboxSelectionModel({ singleSelect: false }); @@ -42,7 +32,11 @@ {name: 'foreignTousseApp_id'}, {name: 'isUrgentForUseRecord'}, {name: 'includeImplant'}, - {name: 'actualUsed'} + {name: 'actualUsed'}, + //聚合包需要用到的一些属性 + {name : 'subTousseDefinitionId'},//聚合包里的子包包定义id + {name : 'comboTousseInstanceId'},//聚合包的包实例id + {name : 'usedAmount'}//已使用数量 ] }); @@ -100,15 +94,25 @@ {name: 'id'}, {name: 'barcode'}, {name: 'tousseDefinitionName'}, + {name : 'showTousseName'}, {name: 'packageType'}, {name: 'validUntil'}, {name: 'showTousseName'}, {name: 'amount'}, {name: 'batchNo'}, - {name: 'includeImplant'} + {name: 'includeImplant'}, + //聚合包的子包需要用到的 + {name : 'subTousseDefinitionId'},//聚合包里的子包包定义id + {name : 'comboTousseInstanceId'},//聚合包的包实例id + {name : 'usedAmount'}//已使用数量 ]); var useAmount = 0; +/** + * 扫描条码 + * 可以扫描的条码有器械包(类型有器械包、敷料包、消毒物品、外部代理灭菌、外来器械包及外来器械拆分小包、自定义器械包、聚合包)、一次性物品(普通物品与高值耗材) + * 针对聚合包条码的扫描时还需判断是新增使用记录还是修改使用记录、需要传递使用记录的id + */ function loadScanGoods() { var barcode = top.Ext.getCmp('tempBarcode').getValue(); top.Ext.getCmp('tempBarcode').setValue(''); @@ -122,6 +126,7 @@ url: WWWROOT + '/disinfectSystem/useRecordAction!loadScanedGoods.do', params: { barcode: barcode, + useRecordId : currentUseRecordId, scanedBarcodes: getTousseGridData() }, success: function (response, options) { @@ -171,6 +176,20 @@ } } else { addTousse(); + //如果有返回聚合包内的子包数据时,追加到该聚合包之后 + if(goodsInfo.dataSubTousseArray && goodsInfo.dataSubTousseArray.length > 0){ + for(var i = 0;i < goodsInfo.dataSubTousseArray.length;i++){ + var subTousse = goodsInfo.dataSubTousseArray[i]; + var record = new addTousseInstance({ + subTousseDefinitionId : subTousse.subTousseDefinitionId, + amount : subTousse.amount, + tousseDefinitionName : subTousse.showTousseName, + showTousseName : subTousse.showTousseName, + comboTousseInstanceId : subTousse.comboTousseInstanceId + }); + tousseInstanceStore.insert(i+1 , record); + } + } } } } else { @@ -244,6 +263,10 @@ var tousseInstanceBarcodes = ""; for (var i = 0; i < tousseInstanceStore.getCount(); i++) { var barcode = tousseInstanceStore.getAt(i).get('barcode'); + //对于聚合包的子包的这种情况,则跳过,重新下一轮循环 + if(!barcode){ + continue; + } if (tousseInstanceBarcodes == "") { tousseInstanceBarcodes = barcode; } else { @@ -299,13 +322,32 @@ function removeGridItem(id) { var rows = top.Ext.getCmp('tousseInstanceGrid').getSelectionModel() .getSelections();// 返回值为 - if (rows) { + if (rows && rows.length > 0) { for (var i = 0; i < rows.length; i++) { tousseInstanceStore.remove(rows[i]); useAmount--; top.Ext.getCmp('useAmount').setValue(useAmount); - } + + //循环所有的器械包列表行,将所有comboTousseInstanceId属性与被删除的行的id相同的数据也删除 + var needRemoveRecord = []; + var tousseGridStore = top.Ext.getCmp('tousseInstanceGrid').getStore(); + var count = tousseGridStore.getCount(); + if(count > 0){ + for (var i = 0; i < count; i++) { + var record = tousseGridStore.getAt(i); + if(record.get('comboTousseInstanceId') == rows[0].data["id"]){ + needRemoveRecord.push(record); + } + } + } + + if(needRemoveRecord.length > 0){ + for (var i = 0; i < needRemoveRecord.length; i++) { + tousseGridStore.remove(needRemoveRecord[i]); + } + } + } } @@ -324,29 +366,90 @@ } } -function checkForSave() { - var enteringDate = top.Ext.getCmp('enteringDate').getValue(); - if (!formObj.getForm().isValid()) { +function checkForSave(btObj) { + //改成各元素单独验证的方式 + /*if (!formObj.getForm().isValid()) { showResult('请正确填写表单各值'); return false; - } - if (!sstsConfig.noInputTreatmentNumOrHospitalNum && top.Ext.getCmp('treatmentNum').getValue() == '' && top.Ext.getCmp('hospitalNum').getValue() == '' && top.Ext.getCmp('patientName').getValue() == '') { - showResult('请输入诊疗号或者住院号或者病人姓名'); - return false; - } - // 获取扫描的物品所有条码 - var barcodes = getTousseGridData(); - if (barcodes != "") { - return true; - } else { - showResult('器械包列表信息不能为空'); - return false; - } - return false; - + }*/ + if(getBoolValueFromJs('sstsConfig.useRecordHospitalNumAllowBlank',true) == false && top.Ext.getCmp('hospitalNum').getValue() == ''){ + btObj.enable(); + top.Ext.getCmp('hospitalNum').focus(); + showResult('住院号不能为空'); + return false; + } + if(getBoolValueFromJs('sstsConfig.useRecordWashHandNurseAllowBlank',false) == false && top.Ext.getCmp('washHandNurse').getValue() == ''){ + btObj.enable(); + top.Ext.getCmp('washHandNurse').focus(); + showResult('洗手护士不能为空'); + return false; + } + if(getBoolValueFromJs('sstsConfig.useRecordCircuitNurseAllowBlank',false) == false && top.Ext.getCmp('circuitNurse').getValue() == ''){ + btObj.enable(); + top.Ext.getCmp('circuitNurse').focus(); + showResult(circuitNurseLabelName + '不能为空'); + return false; + } + if(useRecordOperationRoomAllowBlank == false && top.Ext.getCmp('operationRoom').getValue() == ''){ + btObj.enable(); + top.Ext.getCmp('operationRoom').focus(); + showResult('手术间不能为空'); + return false; + } + if(!sstsConfig.noInputTreatmentNumOrHospitalNum && top.Ext.getCmp('treatmentNum').getValue() == '' && top.Ext.getCmp('hospitalNum').getValue() == '' && top.Ext.getCmp('patientName').getValue() == ''){ + btObj.enable(); + showResult('请输入诊疗号或者住院号或者病人姓名'); + return false; + } + // 获取扫描的物品所有条码 + var barcodes = getTousseGridData(); + if (barcodes != "") { + //定义聚合包的各子包使用数量{聚合包实例id:子包使用数量总和} + var comboTousseUsedAmountJsonObject = {}; + //如果有录入聚合包内子包,则判断有无录入使用数量 + for ( var i = 0; i < tousseInstanceStore.getCount(); i++) { + var currentRecord = tousseInstanceStore.getAt(i); + //如果是聚合包 + if(currentRecord.get('tousseType') == '聚合包'){ + var tousseInstanceId = currentRecord.get('id'); + if(!comboTousseUsedAmountJsonObject.hasOwnProperty(tousseInstanceId)){ + comboTousseUsedAmountJsonObject[tousseInstanceId] = null; + } + } + var comboTousseInstanceId = currentRecord.get('comboTousseInstanceId'); + //对于聚合包的子包的这种情况,则跳过,重新下一轮循环 + if(comboTousseInstanceId){ + if(!currentRecord.get('usedAmount') && currentRecord.get('usedAmount') !== 0){ + btObj.enable(); + showResult('请输入'+ currentRecord.get('tousseDefinitionName') +'的使用数量'); + return false; + } + if(currentRecord.get('usedAmount') > 0){ + if(comboTousseUsedAmountJsonObject.hasOwnProperty(comboTousseInstanceId) && !comboTousseUsedAmountJsonObject[comboTousseInstanceId]){ + comboTousseUsedAmountJsonObject[comboTousseInstanceId] = currentRecord.get('usedAmount'); + } + } + } + } + //如果启用了聚合包内子包数量修改功能,则进行验证的提示,否则不提示 + if(sstsConfig.comboTousseRegistUseRecordCanModifySubTousseAmount){ + for(var prop in comboTousseUsedAmountJsonObject){ + if(!comboTousseUsedAmountJsonObject[prop]){ + btObj.enable(); + showResult('聚合包的子包至少需要有一个子包使用数量大于0'); + return false; + } + } + } + return true; + }else{ + btObj.enable(); + showResult('器械包列表信息不能为空'); + return false; + } + return false; } function submitUseRecordForm(btObj, win, id, createNew) { - var enteringDate = top.Ext.getCmp('enteringDate').getValue(); btObj.disable(); if (!formObj.getForm().isValid()) { showResult('请正确填写表单各值'); @@ -478,6 +581,7 @@ * @return */ function addAndEditUseRecord(id, status) { + currentUseRecordId = id; useRecordOperationRoomAllowBlank = getBoolValueFromJs('sstsConfig.useRecordOperationRoomAllowBlank', true); tousseInstanceStore.removeAll(); useAmount = 0; @@ -502,7 +606,16 @@ }); tousseInstanceStore.on("load", function (store, recordArry, options) { var count = tousseInstanceStore.getCount(); - useAmount = count; + //需要置0,否则每次打开会记住上一次打开时的值 + useAmount = 0; + for ( var i = 0; i < count; i++) { + var barcode = tousseInstanceStore.getAt(i).get('barcode'); + //对于聚合包的子包的这种情况,则跳过,重新下一轮循环 + if(!barcode){ + continue; + } + useAmount++; + } top.Ext.getCmp('useAmount').setValue(useAmount); // 保存表单上的原始item参数 setOriginalItems(tousseInstanceStore); @@ -552,7 +665,12 @@ header: '加急', width: 35, renderer: function (v, p, record, rowIndex, colIndex) { var imgName = (record.data.isUrgentForUseRecord == '是') ? 'arrow_down' : 'arrow_top'; - var str = "