查看: 321|回复: 7

流程表单在change事件里脚本赋值报错

升级   34%

3

主题

12

回帖

101

积分

注册会员

Rank: 2

积分
101
发表于 2024-5-24 09:32:42 | 显示全部楼层 |阅读模式
想实现功能:在流程表单 立项编号ProjectNo 里面输入对应立项编号,然后根据输入内容查询自建数据表  ProjectStatisticsTable 里面对应 projectName 的值,并实时赋值给流程表单里的 项目名称ProjectName;

目前使用的方式如下:
软件版本 V9.0.3
在流程表单 立项编号ProjectNo 里面的change事件下执行如下脚本:
var table = new this.Table("ProjectStatisticsTable");
var C = "o.projectNo = '" + this.data.ProjectNo + "'";
var X = table.listRowSelect( C, function(data){});
console.log(X);
this.data.ProjectName = X.data[0].projectName;

目前碰到的问题:
console.log(X) 可以输出,也查到了数据表里对应的数据,但是通过 this.data.ProjectName = X.data[0].projectName 赋值的时候报错;(上述脚

本要是放在流程审批里面的 活动执行后 事件中进行执行,表单提交后, 项目名称ProjectName,可以赋值成功,但是无法实现在表单填写过程中实时显示)

F12跟踪信息如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

138

主题

1万

回帖

3万

积分

超级版主

Rank: 8Rank: 8

积分
38059
发表于 2024-5-24 11:07:20 | 显示全部楼层
x是个promise, 您要放在查询成功的回调里赋值就可以了
回复

使用道具 举报

升级   34%

3

主题

12

回帖

101

积分

注册会员

Rank: 2

积分
101
发表于 2024-5-24 13:26:15 | 显示全部楼层
论坛管理员 发表于 2024-5-24 11:07
x是个promise, 您要放在查询成功的回调里赋值就可以了

我把赋值放到回调里面,还是不行

修改后的脚本如下:

var table = new this.Table("ProjectStatisticsTable");
var C = "o.projectNo = '" + this.data.ProjectNo + "'";
var X = table.listRowSelect( C, function(data){
    this.data.ProjectName = data.data[0].projectName;
});
console.log(X);


F12跟踪信息如下:


日志文件记录截图如下:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

138

主题

1万

回帖

3万

积分

超级版主

Rank: 8Rank: 8

积分
38059
发表于 2024-5-27 09:45:43 | 显示全部楼层
在回调里把data输出看一看
回复

使用道具 举报

升级   34%

3

主题

12

回帖

101

积分

注册会员

Rank: 2

积分
101
发表于 2024-5-27 10:11:02 | 显示全部楼层
论坛管理员 发表于 2024-5-27 09:45
在回调里把data输出看一看



回调里面的脚本视乎没有执行
修改后的脚本:



var table = new this.Table("ProjectStatisticsTable");
var C = "o.projectNo = '" + this.data.ProjectNo + "'";
var X = table.listRowSelect( C, function(data){
    console.log("测试1");
    console.log(data);
    this.data.ProjectName = data.data[0].projectName;
});
console.log(X);




F12跟踪信息:

日志信息:

2024-05-27 10:07:29.282 [ApplicationServerQueuedThreadPool-53] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - execute action 'ActionSendMessage' .
2024-05-27 10:07:29.282 [ApplicationServerQueuedThreadPool-53] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - 极光推送通道启用中,消息发送到极光推送,人员:熊亮@xiongl@P
2024-05-27 10:07:29.282 [ApplicationServerQueuedThreadPool-53] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - 极光推送设备为空,熊亮@xiongl@P
2024-05-27 10:07:29.282 [ApplicationServerQueuedThreadPool-53] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - action 'ActionSendMessage' execute completed!
2024-05-27 10:07:43.478 [ContextQuartzScheduler-x_program_center_Worker-2] INFO com.x.program.center.schedule.FireSchedule - fire schedule className: com.x.calendar.assemble.control.schedule.AlarmTrigger, cron: 0/30 * * * * ?, node: 127.0.0.1, application: com.x.base.core.project.x_calendar_assemble_control.
2024-05-27 10:07:43.493 [ContextQuartzScheduler-x_program_center_Worker-2] INFO com.x.program.center.schedule.FireSchedule - fire schedule className: com.x.processplatform.assemble.surface.schedule.CleanKeyLock, cron: 2 0/2 * * * ?, node: 127.0.0.1, application: com.x.base.core.project.x_processplatform_assemble_surface.
2024-05-27 10:07:44.481 [ContextQuartzScheduler-x_calendar_assemble_control_Worker-2] INFO com.x.calendar.assemble.control.schedule.AlarmTrigger - The trigger for calendar alarm execute completed.Mon May 27 10:07:44 GMT+08:00 2024
2024-05-27 10:08:02.070 [ContextQuartzScheduler-x_query_service_processing_Worker-1] INFO com.x.query.service.processing.schedule.HighFreqWork - high freq index work start at:2024-05-27 10:08:02, elapsed:0 minutes, total count:5, write:1, delete:0.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

138

主题

1万

回帖

3万

积分

超级版主

Rank: 8Rank: 8

积分
38059
发表于 2024-5-30 09:43:13 | 显示全部楼层
如果您这个回调没执行,那可能就是失败了,在返回失败的回调函数里跟踪以下
参考:http://testing.o2oa.net/api/module-Table.html#listRowSelect
回复

使用道具 举报

升级   34%

3

主题

12

回帖

101

积分

注册会员

Rank: 2

积分
101
发表于 2024-5-30 15:51:34 | 显示全部楼层
论坛管理员 发表于 2024-5-30 09:43
如果您这个回调没执行,那可能就是失败了,在返回失败的回调函数里跟踪以下
参考:http://testing.o2oa.net ...



回调执行了,但是回调里面 this.data.ProjectName = W 这条脚本赋值报错(Uncaught (in promise) TypeError: Cannot set properties of undefined (setting 'ProjectName')),详见F12跟踪信息

脚本代码如下:

var table = new this.Table("ProjectStatisticsTable");

// 构造查询条件C,根据this.data.ProjectNo来查询
var C = "o.projectNo = '" + this.data.ProjectNo + "'";

// 调用table对象的listRowSelect方法进行查询
table.listRowSelect(C, "o.projectNo desc", 1, function(data) {
    // 获取查询结果中第一个数据对象的projectName属性,存储在变量W中
    var W = data.data[0].projectName;
    console.log("W value:", W);
    // 将获取到的projectName值赋给this.data.ProjectName
    this.data.ProjectName = W;
    console.log("ProjectName value:", this.data.ProjectName);
}, function(xhr) {
    // 异常情况下的回调函数,输出xhr对象
    console.log(xhr);
});



F12跟踪信息:


表单中ProjectName:


日志信息:



2024-05-30 15:47:02.001 [ContextQuartzScheduler-x_query_service_processing_Worker-1] INFO com.x.query.service.processing.schedule.HighFreqDocument - high freq index document start at:2024-05-30 15:47:02, elapsed:0 minutes, total count:0, write:0, delete:0.
2024-05-30 15:47:02.001 [ContextQuartzScheduler-x_query_service_processing_Worker-2] INFO com.x.query.service.processing.schedule.HighFreqWorkCompleted - high freq index workCompleted start at:2024-05-30 15:47:02, elapsed:0 minutes, total count:0, write:0, delete:0.
2024-05-30 15:47:02.251 [ApplicationServerQueuedThreadPool-54] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - execute action 'ActionSendMessage' .
2024-05-30 15:47:02.251 [ApplicationServerQueuedThreadPool-54] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - 极光推送通道启用中,消息发送到极光推送,人员:熊亮@xiongl@P
2024-05-30 15:47:02.266 [ApplicationServerQueuedThreadPool-54] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - 极光推送设备为空,熊亮@xiongl@P
2024-05-30 15:47:02.266 [ApplicationServerQueuedThreadPool-54] INFO com.x.jpush.assemble.control.jaxrs.message.ActionSendMessage - action 'ActionSendMessage' execute completed!
2024-05-30 15:48:02.045 [ContextQuartzScheduler-x_query_service_processing_Worker-1] INFO com.x.query.service.processing.schedule.HighFreqWork - high freq index work start at:2024-05-30 15:48:02, elapsed:0 minutes, total count:5, write:1, delete:0.




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   34%

3

主题

12

回帖

101

积分

注册会员

Rank: 2

积分
101
发表于 2024-5-30 16:16:09 | 显示全部楼层
论坛管理员 发表于 2024-5-30 09:43
如果您这个回调没执行,那可能就是失败了,在返回失败的回调函数里跟踪以下
参考:http://testing.o2oa.net ...

已经搞定了,回调里面的this 指向的不是我所期望的data对象,在回调函数之前将this保存到另一个变量,在回调里访问这个变量达到访问到正确的this对象
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread