|
版本: |
BeX5V3.5 |
小版本号: |
3.6 |
|
|
数据库: |
MySQL |
服务器操作系统: |
Windows |
应用服务器: |
Tomcat |
客户端操作系统: |
Windows 8 |
浏览器: |
Chrome |
|
|
我在打开流程流对话框之前事件中写方法去调用action查询数据的时候,发现对话框在我数据还没有返回来的时候就打开了,这个怎么让方法能够同步执行呢,总不能我数据还没有返回来就打开对话框吧,也就是蓝色字体部分那段代码是在弹出框打开后才执行的。我想要的是蓝色代码部分先执行,然后根据返回的数据再去判断是否打开对话框。代码如下:
打开流程流对话框之前事件
Model.prototype.processBeforeOpenDialog = function(event){
var detailData = this.comp("detailData");
var count = detailData.getCount();
if(count==0){
justep.Util.hint("借款信息最少需要填写一条!",{position:"top",style:"background-color:red"});
event.cancel = true;
}else{
this.queryAvailableAmount(event);//在这里调用action进行数据查询
}
};
queryAvailableAmount方法
// 查询可用预算额度
Model.prototype.queryAvailableAmount = function(event){
var mainData = this.comp("mainData");
var detailData = this.comp("detailData");
var formBizDate = mainData.getValue("formBizDate");
formBizDate = userUnit.formatValue(formBizDate);
if(formBizDate == ""){
this.hintMsg("请选择[单据业务日期]");
return;
}
var year = formBizDate.toString().substring(0, 4);
var isProcSuccess = true;
var postData = '{' + '"inputList" : [{}';
var paraArray = [];
var isContinueProc = true;
var msg = "";
detailData.each(function(param) {
var serialNbr = param.row.val("serialNbr");
var costCenterCode = param.row.val("costCenterCode");
var projectCode = param.row.val("projectCode");
var budgetItemCode = param.row.val("budgetItemCode");
costCenterCode = userUnit.formatValue(costCenterCode);
if(costCenterCode == ""){
msg += "[序号:" + serialNbr + "]->成本中心不能为空!";
isContinueProc = false;
param.cancel = true;
}
projectCode = userUnit.formatValue(projectCode);
budgetItemCode = userUnit.formatValue(budgetItemCode);
if(budgetItemCode == ""){
msg += "[序号:" + serialNbr + "]->预算科目不能为空!";
isContinueProc = false;
param.cancel = true;
}
postData = postData + ",";
postData = postData + '{"gjahr":"' + year + '",' + // 年度:2017
'"kostl":"' + costCenterCode + '",' + // 成本中心: 1452000000
'"aufnr":"' + projectCode + '",' + // 内部订单: 1100R00001
'"fipex":"' + budgetItemCode + '"' + // 预算科目: FY0301
'}';
});
if(isContinueProc == false){
this.hintMsg(msg );
return;
}
postData = postData + ']}';
var contexts = this.getContext();
userSAP.invokAction(postData,"queryAvailableAmountAction",detailData,"availableamount",contexts,event);
return isProcSuccess;
}
下面是要调用的action
invokAction :function(postData,action,data,column,contexts,event){
var params = new biz.Request.ActionParam();
params.setString('postData', postData);
biz.Request.sendAsyncBizRequest ({
dataType : "json",
context : contexts,//这个在Be3.0以上版本上是必须的
action : action,
parameters : params,
directExecute:true,
callback : function(result) {
if (result.state){
if(result.response=="bad"){
userUnit.hintMsg("SAP检查可用性预算出错,请联系管理员处理!");
event.cancel = true;
}else{
var jsonArrayTxt = result.response;// 返回的数据
var dataList = jQuery.parseJSON(jsonArrayTxt);
if (dataList != null && dataList.length > 0) {
for (var i = 0; i < dataList.length; i++) {
data.each(function (param){
var fid = userUnit.formatValue(param.row.val("formCommon_application"));//内部订单编码(项目编码)
var projectCode = userUnit.formatValue(param.row.val("projectCode"));//内部订单编码(项目编码)
var budgetItemCode = userUnit.formatValue(param.row.val("budgetItemCode"));//预算科目编码
var costCenterCode = userUnit.formatValue(param.row.val("costCenterCode"));//成本中心编码
if(dataList.kostl===costCenterCode&&dataList.aufnr===projectCode&&dataList.fipex===budgetItemCode){
data.setValueByID(column,dataList.sapAmount,fid);
}
});
}
}
}
}else {
throw new Error("调用失败!|" + result.response.message);
event.cancel = true;
}
}
});
},
|
|