1. 明细表日期设置可选范围
<script>
// jQuery 文档准备好之后执行的函数
jQuery(document).ready(function() {
// 设置已存在行的日期范围
// 获取明细行"detail_1"的行数
var rowCount = WfForm.getDetailRowCount("detail_1");
// 遍历每一行
for (var i = 0; i < rowCount; i++) {
// 将字段名称"zdrq"转换为字段ID,附加行号
var m_zdrq_fieldid = WfForm.convertFieldNameToId("zdrq", "detail_1") + "_" + i;
// 对应字段控制日期范围,-3表示最早日期为当前日期前三天,undefined 表示最晚日期不限制
WfForm.controlDateRange(m_zdrq_fieldid, -3, undefined);
}
// 注册添加新行的操作
// ACTION_ADDROW + "1" 表示添加明细行1的动作
WfForm.registerAction(WfForm.ACTION_ADDROW + "1", function(rowId) {
// 使用setTimeout来等待新行被完全添加
setTimeout(function() {
// 重新获取明细行的行数
var rowCount = WfForm.getDetailRowCount("detail_1");
// 遍历每一行
for (var i = 0; i < rowCount; i++) {
// 将字段名称"zdrq"转换为字段ID,附加行号
var m_zdrq_fieldid = WfForm.convertFieldNameToId("zdrq", "detail_1") + "_" + i;
// 对应字段控制日期范围,-3表示最早日期为当前日期前三天,undefined 表示最晚日期不限制
WfForm.controlDateRange(m_zdrq_fieldid, -3, undefined);
}
}, 0);
});
});
</script>
2. 明细表日期根据主表日期设置可选范围
<script>
// jQuery 文档准备好之后执行的函数
jQuery(document).ready(function() {
// 设置已存在行的日期范围
// 获取明细行"detail_1"的行数
var rowCount = WfForm.getDetailRowCount("detail_1");
// 遍历每一行
for (var i = 0; i < rowCount; i++) {
// 将字段名称"zdrq"转换为字段ID,附加行号
var m_zdrq_fieldid = WfForm.convertFieldNameToId("yjghrq", "detail_1") + "_" + i;
// 获取"sqrq"字段的值
var sqrqValue = WfForm.getFieldValue("field12154"); // 替换成实际的"sqrq"字段的ID
// 计算最早日期
var earliestDate = new Date(sqrqValue);
earliestDate.setMonth(earliestDate.getMonth() + 3);
// 获取当前日期
var currentDate = new Date();
// 对应字段控制日期范围,最早日期为当天,最晚日期为"sqrq"字段的后三个月
WfForm.controlDateRange(m_zdrq_fieldid, currentDate, earliestDate);
}
// 注册添加新行的操作
// ACTION_ADDROW + "1" 表示添加明细行1的动作
WfForm.registerAction(WfForm.ACTION_ADDROW + "1", function(rowId) {
// 使用setTimeout来等待新行被完全添加
setTimeout(function() {
// 重新获取明细行的行数
var rowCount = WfForm.getDetailRowCount("detail_1");
// 遍历每一行
for (var i = 0; i < rowCount; i++) {
// 将字段名称"zdrq"转换为字段ID,附加行号
var m_zdrq_fieldid = WfForm.convertFieldNameToId("yjghrq", "detail_1") + "_" + i;
// 获取"sqrq"字段的值
var sqrqValue = WfForm.getFieldValue("field12154"); // 替换成实际的"sqrq"字段的ID
// 计算最早日期
var earliestDate = new Date(sqrqValue);
earliestDate.setMonth(earliestDate.getMonth() + 3);
// 获取当前日期
var currentDate = new Date();
// 对应字段控制日期范围,最早日期为当天,最晚日期为"sqrq"字段的后三个月
WfForm.controlDateRange(m_zdrq_fieldid, currentDate, earliestDate);
}
}, 0);
});
});
</script>
3. 重写window.alert系统弹窗:文字过多自动换行,窗口右侧实现滑动精度条,倒计时弹窗确认关闭窗口
<script>
// 重写 window.alert 函数
window.alert = function(data, callback) {
// 创建遮罩层元素
var alert_bg = document.createElement('div');
// 创建提示框容器元素
var alert_box = document.createElement('div');
// 创建提示框标题栏元素
var alert_title = document.createElement('div');
// 创建提示框文字内容元素
var alert_text = document.createElement('div');
// 创建确认按钮元素
var alert_btn = document.createElement('button');
// 创建滚动条容器元素
var alert_scroll = document.createElement('div');
// 创建倒计时显示元素
var alert_countdown = document.createElement('div');
// 创建文字节点
var textNode = document.createTextNode(data ? data : '');
// 创建标题节点
var titleNode = document.createTextNode('这是一个流程提示'); // 标题文字
// 创建按钮文字节点
var btnText = document.createTextNode('确 定');
// 设置倒计时时间
var countdown = 8;
// 设置遮罩层样式
css(alert_bg, {
'position': 'fixed',
'top': '0',
'left': '0',
'right': '0',
'bottom': '0',
'background-color': 'rgba(0, 0, 0, 0.5)', // 修改背景颜色为半透明黑色
'z-index': '999999999'
});
// 设置提示框容器样式
css(alert_box, {
'width': '570px',// 修改此处可调整提示框的宽度
'max-width': '90%', // 修改此处可调整提示框的最大宽度
'font-size': '16px',
'text-align': 'center',
'background-color': '#fff',
'border-radius': '15px',
'position': 'absolute',
'top': '50%',
'left': '50%',
'transform': 'translate(-50%, -50%)',
'display': 'flex',
'flex-direction': 'column',
'align-items': 'center',
'justify-content': 'center'
});
// 设置标题栏样式
css(alert_title, {
'background-color': '#81d8d0', // 修改此处可调整标题栏的颜色
'color': '#fff',
'padding': '10px',
'border-top-left-radius': '15px',
'border-top-right-radius': '15px',
'width': '100%',
'box-sizing': 'border-box'
});
// 设置文字内容样式
css(alert_text, {
'padding': '15px 15px', // 修改此处可调整文字上下左右间距
'color': 'red',
'border-bottom': '1px solid #ddd',
'overflow': 'hidden',
'max-height': '350px',// 修改此处可调整提示框的高度
'line-height': '1.5',
'word-wrap': 'break-word',
'word-break': 'break-all',
'display': '-webkit-box',
'-webkit-box-orient': 'vertical',
'-webkit-line-clamp': '8',
'overflow-y': 'auto'
});
// 设置滚动条容器样式
css(alert_scroll, {
'height': '100%',
'width': '5px',
'position': 'absolute',
'top': '0',
'right': '0',
'background': 'rgba(0, 0, 0, 0.1)'
});
// 设置确认按钮样式
css(alert_btn, {
'padding': '10px 0',
'color': '#007aff',
'font-weight': '600',
'cursor': 'pointer',
'border': 'none',
'background': 'none',
'font-size': '16px',
'display': 'none'
});
// 设置倒计时显示样式
css(alert_countdown, {
'margin-top': '10px',
'font-size': '14px',
'color': '#888'
});
// 更新倒计时显示
function updateCountdown() {
if (countdown > 0) {
alert_countdown.textContent = '等待 ' + countdown + ' 秒...';
countdown--;
} else {
clearInterval(countdownInterval);
css(alert_btn, {
'display': 'block',
'pointer-events': 'auto',
'opacity': '1'
});
alert_countdown.textContent = '';
}
}
// 启动倒计时
var countdownInterval = setInterval(updateCountdown, 1000);
// 构建提示框结构
alert_title.appendChild(titleNode);
alert_text.appendChild(textNode);
alert_btn.appendChild(btnText);
alert_box.appendChild(alert_title); // 添加标题栏
alert_box.appendChild(alert_text);
alert_box.appendChild(alert_scroll);
alert_box.appendChild(alert_btn);
alert_box.appendChild(alert_countdown);
alert_bg.appendChild(alert_box);
// 将提示框添加到页面
document.getElementsByTagName('body')[0].appendChild(alert_bg);
// 确认按钮点击事件
alert_btn.onclick = function() {
alert_bg.parentNode.removeChild(alert_bg);
clearInterval(countdownInterval);
if (typeof callback === 'function') {
callback();
}
};
}
// 设置元素样式的工具函数
function css(targetObj, cssObj) {
var str = targetObj.getAttribute("style") ? targetObj.getAttribute('style') : '';
for (var i in cssObj) {
str += i + ':' + cssObj[i] + ';';
}
targetObj.style.cssText = str;
}
// 调用重写的 alert 函数
alert('元戎启行是一家L4级自动驾驶全栈解决方案提供商,专注于模型训练、高精地图测绘等,以支持量产百辆以上的车队运营。公司与国内国际厂商合作,共同设计、研发针对无人驾驶出行服务的量产车辆;打造无人专车运营服务,进行技术输出和服务。自主研发仿真模拟平台,可以对多种类型的场景进行真实的模拟和复现。')
</script>
4.流程移动端(H5)alert/confirm提示信息去除网址(URL)
<script type="text/javascript">
window.alert = function(name){
var iframe = document.createElement("IFRAME");
iframe.style.display="none";
iframe.setAttribute("src", 'data:text/plain,');
document.documentElement.appendChild(iframe);
window.frames[0].window.alert(name);
iframe.parentNode.removeChild(iframe);
};
</script>
5.建模查询自定义按钮验证行数据
function onUrl(){
var ids = ModeList.getCheckedID();
var json = ModeList.getTableDatas();
var obj = eval( json);
for(var i = 0;i<ids.length;i++){
for(var j = 0;j<obj.length;j++){
if(ids[i] == obj[j].id){
//alert(obj[j].id);
if(obj[j].spsl>400){
alert("第"+j+"行商品数据异常");
}else{
alert("第"+j+"行商品数据正常");
}
}
}
}
}
6. 建模查询页面扩展批量操作新建流程带入查询列表字段数据
<script>
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.href.substr(1).match(reg);
if(r!=null)return decodeURI(r[2]); return null;
}
//模块:页面扩展批量操作菜单按钮
/*
(function(){
var ids = ModeList.getCheckedID();
if(ids==""){ModeList.showMessage("至少勾选一条",2,1);return;}
var url = '/spa/workflow/static4form/index.html?_rdm=1634001315677#/main/workflow/req?iscreate=1&workflowid=2&certs='+ids;
window.open(url);
})()
*/
//获取建模查询自定义按钮传递的参数的值,并且赋值明细表字段:参数certs,bh
jQuery(document).ready(function(){
var certs =GetQueryString("certs");
var bh =GetQueryString("bh");
//alert(certs);
var certarr=certs.split(",");
//alert(certarr);
//WfForm.changeFieldValue("field9599", {value:certs});
for(var i =0;i<certarr.length;i++){
WfForm.addDetailRow("detail_1",{field9933:{
value:certarr[i]
}})
}
})
</script>
<style>
select {
line-height: 22px;
height: 22px;
background: none;
border: none;
min-width: 95%;
}
/* 样式-下拉框长度 */
.wea-select{
width: 95%
}
/*选择框宽度*/
.wea-select ,.ant-select-selection{
width: 95%;
border-style: none;
}
/*浏览框去边框,调整宽度*/
.wea-associative-search {
border-style: none;
min-width: 95% !important;
}
/* e9样式结束*/
/*通用圆角样式*/
.ysyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-top-right-radius:9px;
}
.zxyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-bottom-left-radius:9px;
}
.yxyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-bottom-right-radius:9px;
}
.zsyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-top-left-radius:9px;
}
/* 修复 input 框 Chrome 自动填充屎黄色背景 */
input:-webkit-autofill,.excelMainTable input:-webkit-autofill:hover,.excelMainTable input:-webkit-autofill:focus,.excelMainTable input:-webkit-autofill:active {
-webkit-transition-delay: 99999s;
-webkit-transition: color 99999s ease-out, background-color 99999s ease-out;
}
</style>
<style>
select {
line-height: 22px;
height: 22px;
background: none;
border: none;
min-width: 95%;
}
/* 样式-下拉框长度 */
.wea-select{
width: 95%
}
/*选择框宽度*/
.wea-select ,.ant-select-selection{
width: 95%;
border-style: none;
}
/*浏览框去边框,调整宽度*/
.wea-associative-search {
border-style: none;
min-width: 95% !important;
}
/* e9样式结束*/
/*通用圆角样式*/
.ysyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-top-right-radius:9px;
}
.zxyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-bottom-left-radius:9px;
}
.yxyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-bottom-right-radius:9px;
}
.zsyj{
height:15px;
width:100%;
background:#ffffff!important;
border: 1px solid #ffffff!important;
border-top-left-radius:9px;
}
/*单行文本去背景*/
input.InputStyle,
input.Inputstyle,
input.inputStyle,
input.inputstyle,
.excelMainTable input[type="text"],
.excelMainTable input[type="password"],
.e8_innerShowContent,
.excelMainTable textarea,
.sbHolder {
/*border: 1px solid #F2F2F2 !important;*/
border: none;
background: none;
}
/* 修复 input 框 Chrome 自动填充屎黄色背景 */
input:-webkit-autofill,.excelMainTable input:-webkit-autofill:hover,.excelMainTable input:-webkit-autofill:focus,.excelMainTable input:-webkit-autofill:active {
-webkit-transition-delay: 99999s;
-webkit-transition: color 99999s ease-out, background-color 99999s ease-out;
}
</style>
7.任意页面获取登录用户信息
<%@ page language="java" contentType="application/json" pageEncoding="UTF-8"%>
<%@ page import="net.sf.json.*"%>
<%@ page import="java.util.*" %>
<%@ page import="weaver.general.*" %>
<%@ page import="weaver.hrm.HrmUserVarify"%>
<%@ page import="weaver.hrm.User"%>
<jsp:useBean id="rs" class="weaver.conn.RecordSet" scope="page" />
<%
response.setContentType("application/json;charset=UTF-8");
BaseBean log = new BaseBean();
User user = HrmUserVarify.getUser(request, response);
if (user == null) {
response.sendRedirect("/login/Login.jsp");
return;
}
String userloginid=user.getLoginid();
String userlastname=user.getLastname();
int userid=user.getUID();
out.println("登录名:"+userloginid);
out.println("用户名:"+userloginid);
out.println("用户ID:"+userid);
%>
8.dosql()特殊处理流程字段数组ID
<script>
WfForm.bindFieldChangeEvent("field5818", function(obj,id,value){ //多选字段变化
var arr = WfForm.getFieldValue("field5818").split(',');//转换成数组
var strArr = arr.join("','");//数组元素转字符串
WfForm.changeFieldValue("field5819", {value:strArr});//赋值给辅助文本字段
});
</script>
–sql查询条件:where 字段 in (‘m a i n . 字 段 1 main.字段1main.字段1’) 字段1:field5819
9.流程action方法汇总
package weaver.interfaces.workflow.action.javacode;
//导入包
import java.util.*;
import net.sf.json.*;
import weaver.general.*;
import weaver.soa.workflow.*;
import weaver.soa.workflow.request.*;
import weaver.conn.RecordSet;
import weaver.conn.RecordSet.*;
import weaver.hrm.*;
import weaver.interfaces.workflow.action.Action;
//在线自定义action接口
public class Action20220706020703 extends BaseBean implements Action{
//流程自定义接口代码示例
public String execute(RequestInfo request) {
//日志
writeLog("in my online edited action");
//获取表名称,流程id
String requestId = request.getRequestid();//请求ID
String requestlevel = request.getRequestlevel();//请求紧急程度
String workflowid = request.getWorkflowid();//流程ID
String tablename = request.getRequestManager().getBillTableName();//表单名称
int billid = request.getRequestManager().getBillid();//表单数据ID
String requestname = request.getRequestManager().getRequestname();//请求标题
String remark = request.getRequestManager().getRemark();//当前用户提交时的签字意见
int formid = request.getRequestManager().getFormid();//表单ID
int isbill = request.getRequestManager().getIsbill();//是否是自定义表单
//取主表数据
Map<String, String> mainTableDataMap = new HashMap<String, String>();
Property[] properties = request.getMainTableInfo().getProperty();// 获取表单主字段信息
for (int i = 0; i < properties.length; i++) {
String fieldname = properties[i].getName().toLowerCase();// 主字段名称,字段名转换为小写
String fieldval = Util.null2String(properties[i].getValue());// 主字段对应的值
mainTableDataMap.put(fieldname, fieldval);// 存为数组
System.out.println(fieldname + " " + fieldval);
}
//取明细数据
DetailTable[] detailtable = request.getDetailTableInfo().getDetailTable();// 获取所有明细表
if (detailtable.length > 0) {
for (int i = 0; i < detailtable.length; i++) {
DetailTable dt = detailtable[i];// 指定明细表
Row[] s = dt.getRow();// 当前明细表的所有数据,按行存储
for (int j = 0; j < s.length; j++) {
Row r = s[j];// 指定行
Cell c[] = r.getCell();// 每行数据再按列存储
for (int k = 0; k < c.length; k++) {
Cell c1 = c[k];// 指定列
String name = c1.getName();// 明细字段名称
String value = c1.getValue();// 明细字段的值
System.out.println(name + " " + value);
}
}
}
}
/*
//方法1:修改表单字段值
Property[] mainProps = request.getMainTableInfo().getProperty();
// 要修改的主表字段
String mainField = "field101";
// 该主表字段修改后的值
String mainFieldValue = "value101";
for(int i=0; i< mainProps.length; i++){
if(mainProps[i].getName().equals(mainField)){ //主表中存在此字段
prop = mainProps[i];
prop.setValue(mainFieldValue);
request.getMainTableInfo().setProperty(i,prop);
}
}
// 调用 BaseBean 的写日志方法
// 会将日志写入泛微 E8 根目录的 /log/ecology 文件中
this.writeLog("已完成修改,仅用于 Java 缓存读取,不可用于全流程");
// 返回 SUCCESS 则依次进入: 当前环节的其他【节点后操作】、系统的出口条件判断、下一环节的【节点前操作】
// 返回 FAILURE_AND_PASS 则会停留在当前环节的界面,提交不成功
return Action.SUCCESS;
*/
/*
//方法2:修改表单字段值
Property[] mainProps = request.getMainTableInfo().getProperty();
// 要修改的主表名称
String mainTableName = request.getRequestManager().getBillTableName();
// 要修改的对应记录行号
String requestId = request.getRequestid();
// 要修改的主表字段
String mainField = "field101";
// 该主表字段修改后的值
String mainFieldValue = "value102";
RecordSet rs = new RecordSet(); //直接更新数据库内容,控制流程走向
String sql = "update "+ mainTableName +" set "+mainField+"= '"+mainFieldValue+"' where requestid ="+requestId;
rs.execute(sql);
// 调用 BaseBean 的写日志方法
// 会将日志写入泛微 E8 根目录的 /log/ecology 文件中
this.writeLog("已完成修改,可用于全流程");
// 返回 SUCCESS 则依次进入: 当前环节的其他【节点后操作】、系统的出口条件判断、下一环节的【节点前操作】
// 返回 FAILURE_AND_PASS 则会停留在当前环节的界面,提交不成功
return Action.SUCCESS;
*/
RecordSet rs = new RecordSet();
rs.execute("select * from "+tablename+" where requestid = "+requestId);
rs.next();
//获取表字段值
String mainid = rs.getString("id");
String wenben = rs.getString("wenben");
//查询字段值,存为json数组
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
String cxsql = "select id,workflowname from workflow_base ";
rs.executeSql(cxsql);
while(rs.next()){
Map<String, String> result = new HashMap<String, String>();
result.put("id",rs.getString("id"));
result.put("workflowname",rs.getString("workflowname"));
list.add(result);
}
JSONArray jo = JSONArray.fromObject(list);
//禁止提交
if(1==1){
request.getRequestManager().setMessageid("90001");
request.getRequestManager().setMessagecontent("系统异常终止流程提交!"+"\n"+"流程ID:"+requestId+"\n"+"主表数据:"+mainTableDataMap+"\n"+"数据库查询JSON:"+jo);
return Action.FAILURE_AND_CONTINUE;
}else{
//允许提交
return Action.SUCCESS;
}
}
}
10.建模查询字段显示转换
<div style="background:pink;
background-repeat:repeat;
background-position:center center;
background-image:url(images/l.jpg);
background-position:center top;
background-attachment:fixed;
color:#00FF00;
font-size:20px;
background-repeat;
text-align:center;
text-decoration:none;
text-overflow:ellipsis;
white-space:normal;
border-radius;"
>$sqrq$
</div>
11.显示模板函数公式
函数 | 含义 | 示例 | |
---|---|---|---|
ABS | 求数值绝对值 | ABS(数值) | |
AVERAGE | 返回一组数值中的平均值 | AVERAGE(数值1,数值2…) | |
COS | 返回给定角度的余弦值 | COS(数值) | |
EXP | 返回e的n次冥。常数e等于2.71828182845904,是自然对数的底 | EXP(数值) | |
INT | 返回舍入实数后的整数值 | INT(数值) | |
LN | 返回基底为自然数e的一个数的对数 | LN(正实数) | |
LOG10 | 返回以10为底的对数 | LOG10(正实数) | |
MAX | 返回一组值中的最大值 | MAX(数值1,数值2…) | |
MIN | 返回一组值中的最小值 | MIN(数值1,数值2…) | |
MOD | 返回两数相除的余数 | MOD(被除数,除数) | |
PI | 返回数字3.14159265358979 | PI() | |
ROUND | 四舍五入 | ROUND(数值,小数位数) | |
SIN | 返回给定角度的正弦值 | SIN(数值) | |
SQRT | 返回数值正平方根 | SQRT(正实数) | |
SUM | 求和,返回参数列表中所有数值之和 | SUM(数值1,数值2…) | |
SUM_USERVAL | 对单元区域中用户自定义数值相同的单元进行求和 | SUM_USERVAL(单元区域,用户自定义数值) | |
SUM_USERVAL_DOWN | 从上到下对单元区域中的单元用户自定义数值相同的单元进行求和,用户自定义数值不相同后不再计算 | SUM_USERVAL_DOWN(单元区域,用户自定义数值) | |
SUM_USERVAL_UP | 从下到上对单元区域中的单元用户自定义数值相同的单元进行求和,用户自定义数值不相同后不再计算 | SUM_USERVAL_UP(单元区域,用户自定义数值) | |
SUMD | 对单元区域中没有公式的单元进行求和 | SUMD(单元区域1,单元区域2…) | |
SUMF | 对单元区域中有公式的单元进行求和 | SUMF(单元区域1,单元区域2…) | |
TAN | 返回给定角度的正切值 | TAN(数值) | |
TRUNC | 将数字截止定位小数的整数 | TRUNC(数值,小数位) |
12.根据明细表1中的字段rkck(字段类型为浏览按钮)的值来设置明细表1字段cfdd(字段类型为文本)的必填属性。当rkck值为2时,cfdd必填,否则不改变属性。
我的需求是:根据明细表1中的字段rkck(字段类型为浏览按钮)的值来设置明细表1字段cfdd(字段类型为文本)的必填属性。当rkck值为2时,cfdd必填,否则不改变属性。字段信息 字段ID : field12115 数据库字段名称 : rkck 字段信息 字段ID : field12116 数据库字段名称 : cfdd
ChatGPT
根据你的需求,你想根据明细表1中的字段 rkck
的值来设置明细表1中的字段 cfdd
的必填属性。根据提供的文档,我将为你详细解释如何实现这一功能。
步骤概述
- 绑定明细字段值变化触发事件:使用
bindDetailFieldChangeEvent
方法监控rkck
字段的值变化。 - 根据条件改变字段属性:在值变化的回调函数中,根据
rkck
的值决定是否将cfdd
字段设置为必填。
具体实现
首先,根据你提供的字段信息,假设 rkck
的字段ID 为 field12115
,cfdd
的字段ID 为 field12116
。
1. 绑定字段值变化触发事件
使用 bindDetailFieldChangeEvent
方法,监听 rkck
字段值的变化:
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent("field12115", function(fieldId, rowIndex, value){
// 监听 rkck 字段值变化
if (value === '2') {
// 当 rkck 的值为 '2' 时,设置 cfdd 字段为必填
WfForm.changeFieldAttr("field12116_" + rowIndex, 3); // 3 表示必填
} else {
// 当 rkck 的值不为 '2' 时,设置 cfdd 字段为可编辑(或其他状态)
WfForm.changeFieldAttr("field12116_" + rowIndex, 2); // 2 表示可编辑
}
});
});
2. 解释代码
WfForm.bindDetailFieldChangeEvent("field12115", function(fieldId, rowIndex, value){ ... });
:绑定了rkck
字段的值变化事件。当rkck
字段的值发生变化时,回调函数中的value
参数将获取到rkck
字段当前的值。WfForm.changeFieldAttr("field12116_" + rowIndex, 3);
:根据rkck
字段的值设置cfdd
字段的属性。在这里,如果rkck
的值为 '2',则将cfdd
字段设置为必填 (3
表示必填状态),否则可以根据需求设置为可编辑或其他状态。
注意事项
- 请确保在页面加载完成后再执行绑定事件的代码,即
jQuery(document).ready(function(){ ... });
。 - 参数
rowIndex
表示明细行的序号,用于标识明细表中的每一行,确保在设置字段属性时使用正确的行号。
通过这样的实现,当明细表1中的 rkck
字段的值发生变化时,系统将自动根据条件设置 cfdd
字段的必填属性,实现了根据字段值动态改变字段显示属性的功能。