步骤:
1.找到查询页面关联的模块。
2.在模块中找到“页面扩展”,并进行新建。 新建所填写内容如下图:
3.在链接目标地址栏目中写入判断以及发起的代码。
var idsText = ModeList.getCheckedID();//获取勾选行的ID
var dtIds = idsText.split(',');//以,将ID分开展示
var vendorArr = [];
var paymentGradeArr = [];
if (idsText == '') {
swal({
title: '提示',
type: 'info',
timer: 10000,
html: '请至少勾选一条数据'
});
}else{
//获取所有勾选数据中付款阶段与供应商的值
for(var i=0; i<dtIds.length; i++){
//jQuery获取元素内容的方法,F12可进行查看,替换gradeState即可(适用于E9,其他版本不确定)
var thisGradeState = $("td[ecid*=" + dtIds[i] + "][ecid$='gradeState']").attr('stsdata');
if(!paymentGradeArr.includes(thisGradeState)){//判断数组中是否已存在勾选的数据
paymentGradeArr.push(thisGradeState);//若没有则加入
}
var thisVendor = $("td[ecid*=" + dtIds[i] + "][ecid$='vendor']").attr('stsdata');
if(!vendorArr.includes(thisVendor)){
vendorArr.push(thisVendor);
}
}
}
//判断所勾选的数据中阶段状态字段是否只有一种且为待付款,以及供应商字段为同一家
if(paymentGradeArr.length == 1 && paymentGradeArr[0] == 2 && vendorArr.length == 1){
//发起流程;field32818和field32817为流程内字段ID,用于将勾选的信息带入
window.open('http://oa.xihuasci.com:20080/spa/workflow/static4form/index.html?_rdm=1666337031193#/main/workflow/req?iscreate=1&workflowid=49&field32818=' + idsText+'&field32817='+thisVendor );
}else{//报错提示
swal({
title: '提示',
type: 'info',
timer: 10000,
html: '发起付款时只能选择「阶段状态」为“待付款”的同一供应商下的付款阶段!'
});
}
报错效果:供应商不同,阶段状态也不是待付款。
4.流程内主表添加一个文本字段用于存放所选数据的ID字符串,即上边的field32818;明细中再添加一个字段用于存放单个数据ID,通过流程内JS将主表中的ID字符串写进明细中。
$(function(){
var thisRequestId = WfForm.getBaseInfo().requestid;
if(thisRequestId == -1){
var arr = WfForm.getFieldValue("field32818").split(',');//存放ID字符串的字段
if(arr!=''){
for(var i=0; i<arr.length; i++){
WfForm.addDetailRow("detail_1",{field32820:{value:arr[i]}});
}
}
}
});
5.明细中数据ID写入后,再通过字段联动将其他信息带入。