Index: ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js =================================================================== diff -u -r16995 -r17100 --- ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 16995) +++ ssts-web/src/main/webapp/disinfectsystem/recyclingApplication/goodsTemplateApplicationView.js (.../goodsTemplateApplicationView.js) (revision 17100) @@ -1218,10 +1218,77 @@ return table; } +/** + * 处理数量的事件 + * @param context + */ +function handleAmountEvent(context) { + var record = context.record; + var minApplyAmount = record.get("minApplyAmount"); + var maxApplyAmount = record.get("maxApplyAmount"); + if ("urgentAmount" != context.field) { + var storage = record.get("storage"); + if (storage == 0) { + //如果库存是0,则从store中去找,如果找不到(因为分页了),则从服务器中找 + var findRecord = null; + var tousseDefinitionID = record.get('tousseDefinitionID'); + comboGoodsStore.filterBy(function (re) { + if (re.get('id') == tousseDefinitionID && re.get('tousseType') == '一次性物品') { + findRecord = re; + return false; + } + }); + //如果找不到,则从服务器取找 + if (Ext.isEmpty(findRecord)) { + storage = findStorageByDisposeIdAndHandleDepartCode(tousseDefinitionID); + } + else { + storage = findRecord.get('amount'); + } + } + if (parseInt(context.value, 10) > storage && !allowApplyDisposableGoodsWhenUnderstock) { + showResult("申请数量不能大于库存数量!"); + record.set("count", ""); + } + if (!isValidDiposableAmount(minApplyAmount, context.value)) { + showResult("该一次性物品最小申请数量为" + minApplyAmount + ",所填数量必须是" + minApplyAmount + "的倍数。"); + record.set("count", ""); + } + if (!isUndefinedOrNullOrEmpty(maxApplyAmount) && maxApplyAmount < context.value) { + top.Ext4.Msg.alert("提示消息", "申请数量大于最大可申请数量"); + } + } +} + +/** + * 根据一次性物品id和处理科室编号来查找该一次性物品的库存 + * 这里使用jquery的ajax方法去查询,因为需要用到同步 + * @param id 一次性物品的id + * @returns {number} 返回该物品的库存 + */ +function findStorageByDisposeIdAndHandleDepartCode(id) { + var storage = 0; + top.$.ajax({ + url: WWWROOT + '/disinfectSystem/disposableGoodsStockAction!loadStorageByDisposableGoodIdAndHandleDepartCode.do', + data : {disposeGoodId : id, handleDepartCode: top.Ext4.getCmp('handleDepartCoding').getValue()}, + async: false, + success : function (data) { + var result = Ext.decode(data); + if (result.success){ + storage = result.message.storage; + } + else { + showResult(result.message); + } + } + }); + return storage; +} + function comboApplication(id,editable,hiddenCommitButton,hiddenSaveButton,hiddenReturnEditButton,type, originalCommittedStatus) { - allowApplyDisposableGoodsWhenUnderstock = getBoolValueFromJs('sstsConfig.allowApplyDisposableGoodsWhenUnderstock',true); - //是否供应室用户 - var isSupplyRoomUser = validateIsSupplyRoomUser(); + allowApplyDisposableGoodsWhenUnderstock = getBoolValueFromJs('sstsConfig.allowApplyDisposableGoodsWhenUnderstock',true); + //是否供应室用户 + var isSupplyRoomUser = validateIsSupplyRoomUser(); var departCoding = $Id('departCoding').value; var hideDiposableGoodsPrice = false; if(sstsConfig.hideDiposableGoodsPrice){ @@ -1854,30 +1921,12 @@ }, afteredit:function(editor, context, eOpts){ var record = context.record; - var isDiposableGoods = record.get("diposable"); - var minApplyAmount = record.get("minApplyAmount"); - var maxApplyAmount = record.get("maxApplyAmount"); var totalPrice; - if (isDiposableGoods == '是' && context.value != null && context.value != ''){ - if ("urgentAmount" != context.field){ - var storage = record.get("storage"); - if(parseInt(context.value,10) > storage && !allowApplyDisposableGoodsWhenUnderstock){ - showResult("申请数量不能大于库存数量!"); - record.set("count", ""); - } - if (!isValidDiposableAmount(minApplyAmount,context.value)){ - showResult("该一次性物品最小申请数量为"+minApplyAmount+",所填数量必须是"+minApplyAmount+"的倍数。"); - record.set("count", ""); - } - if (!isUndefinedOrNullOrEmpty(maxApplyAmount) && maxApplyAmount < context.value){ - top.Ext4.Msg.alert("提示消息","申请数量大于最大可申请数量"); - } - } + handleAmountEvent(context); totalPrice = reCalculateTotalPriceAndSetUnitCount(record,context); } - var depth = record.getDepth(); var isLeaf = record.get('leaf'); var tousseType = record.get('tousseType');