szhtest 发表于 2024-9-20 08:50:57

流程表单去除已办/结束中只读样式

本帖最后由 szhtest 于 2024-9-20 09:24 编辑

目前已找到方法:this.form.get("fieldId").readonly = undefine



但是为什么我目前只有单独在表单中控件的queryload事件中写有效,无论是流程已办(进行中)还是已结束都可以成功解开只读样式限制


我在服务管理的脚本中写this.form.get("fieldId").readonly = undefine,然后在表单整体的queryload事件中调用该脚本(已配置预加载),流程已办后,从办公中心——已办点进去还是无效呢?是流程已办时打开表单的时候不进行预加载脚本的加载吗?打印是空的


如果我想在脚本中统一配置后,由流程调用该脚本生效,我该怎么写呢?

论坛管理员 发表于 2024-9-20 10:17:20

已办进去是会执行的,您debugger跟踪一下,是否有进入

szhtest 发表于 2024-9-20 16:57:07

本帖最后由 szhtest 于 2024-9-20 17:12 编辑

论坛管理员 发表于 2024-9-20 10:17
已办进去是会执行的,您debugger跟踪一下,是否有进入
已办进去是有执行的,只是this.form.get(xx)打印出来undefined。然后我不知道为什么循环了好几次调用脚本里的方法。最后一次就有打印出来object了,在最后一次里readonly也有设置成功undefined,但表单控件依旧变成只读了,是不是脚本加载时机问题?

我翻了下api文档说是当前组件的query事件运行时还没在form里注册,通过this.form.get不能获取到当前组件,得用this.target.json获取。
然后我就没在脚本里另开this.define方法中写了,我直接在脚本写this.target.json.modulelist.组件id,这样的话只读获取到的是isReadonly了


static/image/hrline/line3.png

1.this.form.get(xx).readonly和this.target.json.modulelist.xx.isReadonly的两种只读属性有什么区别?

2.this.target.json.modulelist.xx.isReadonly去除只读也是令它等于undefined吗?

3.我在脚本中开头这样写:this.target.json.modulelist.组件id.isReadonly 无论是= undefined还是=true,打印出来的属性值也有显示修改成功,但表单控件还是会变成只读。。。
只有在表单控件的queryload事件中单独写this.form.get(xx).readonly = undefined才能成功在已办中去除组件的只读样式。

难道是因为表单预加载脚本,表单整体事件,组件事件加载时机的原因吗?为什么我明明在脚本都成功修改了只读属性还是无法生效。

论坛管理员 发表于 2024-9-23 09:48:29

.readonly只有在控件加载前设置才有效
比如下面的代码是设置所有控件只读的样例
var moduleList = this.form.getApp().appForm.json.moduleList;
for(var i in moduleList){
    moduleList.isReadonly=true
}

szhtest 发表于 2024-9-23 10:23:24

论坛管理员 发表于 2024-9-23 09:48
.readonly只有在控件加载前设置才有效
比如下面的代码是设置所有控件只读的样例
var moduleList = this.for ...

但是为什么我在脚本里写:this.target.json.modulelist.组件id.isReadonly 无论是= undefined还是=true,打印出来的属性值也有显示修改成功,但表单控件从办公中心已办进去还是会变成只读。。。

你说的“设置所有控件只读”的代码我也有写过,但我是用于待办时候控制每个环节的必填项的,能正常使用。但我现在是要在脚本里取消   办公中心——已办后的部分控件只读   一直无效,为什么

论坛管理员 发表于 2024-9-25 09:26:46

要写在queyload里面
页: [1]
查看完整版本: 流程表单去除已办/结束中只读样式