BPM常用方法

  • 事件说明:

表头参照前

设置参照前过滤条件、不满足某个条件时放弃参照操作

变量

功能

说明

sendor

filter

设置参照过滤条件

bassignment

设置参照后是否立即赋值(默认为true)

bmultselect

设置是否允许多选

parameters

存储过程数据源参数 @参数名=参数值,@参数名=参数值

fieldLabel

获取当前控件标签文本

getValue()

获取当前控件的值

cancel

true/false

设置是否放弃后续操作,默认false

表头参照后

获取返回数据集

变量

功能

说明

sendor

fieldLabel

获取当前控件标签文本

getValue()

获取当前控件的值

records

get(“字段名”)

获取返回记录集的字段值

表体参照前

设置参照前过滤条件、不满足某个条件时放弃参照操作

变量

功能

说明

sendor

reffield

获取参照单元格字段名称

filter

设置参照过滤条件

bassignment

设置参照后是否立即赋值(默认为true)

bmultselect

设置是否允许多选

parameters

存储过程数据源参数 @参数名=参数值,@参数名=参数值

getValue()

获取当前单元格的值

cancel

true/false

设置是否放弃后续操作,默认false

表体参照后

获取返回数据集

变量

功能

说明

sendor

tablename

参照单元格所属表体表名

records

records[行号].get(“字段名”)

循环获取返回记录集的字段值

说明:参照数据源类型为存储过程时不能选择非关联字段(因为没有视图可以关联查询数据),必须在参照后事件里写脚本赋值

单击单元格

1、获取单元格相关值:sendor.field 字段名  sendor.value  当前值  sendor.rowIdx  行索引   sendor.colIdx 列索引   sendor.column.text  列标题

2、控制单元格的可编辑状态,符合某条件时不可编辑return false;即可实现

双击选择行

获取双击行记录集和鼠标所在单元格值(表单操作

tablename

表体表名 用来判断双击的表体表名

record

双击行记录集,record.get(“字段名”)可以获取各字段值

fieldname

光标所在单元格字段名

fieldtext

光标所在单元格列标题

fieldvalue

光标所在单元格字段值/也可以用record.get(fieldname)获取

rowindex

双击行索引  

colindex

双击列索引

示例代码

if(fieldname ==”存货编码”){

var cinvcode= fieldvalue;  //存货编码赋值给变量

/*js代码获取或更新数据、打开查询窗体等操作*/

}

双击选择行

查询数据记录(数据列表操作

LoadMode

数据列表模式:嵌入表单、数据列表

示例代码

try

{    

    if(LoadMode=="list")  

    {

        //数据列表模式代码

        OpenFunction(0,"FormSaleOut", {BillID:currecord.get("iid")});        

    }

    else{

        //嵌入表单模式代码

        var top = window.parent;

        //获取单据IID

        top.HeadID =currecord.get("iid");    

        //单据非编辑状态时查询数据

        if (!top.bEdit) {

            top.QueryData();

        }

    }

}

catch(err){

    alert(err.message);

}

列绑定事件

用于数据列表单元格渲染

变量

功能

说明

cellmeta

cellmeta.column.format 所属列显示格式

cellmeta.column.dataIndex 所属列字段名

cellmeta.tdCls 所属单元格样式(CSS)

cellmeta.column.datatype  所属列数据类型

record

所属行数据集

value

单元格原值

rowIndex

所属行索引

columnIndex

所属列索引

如果只对格式进行设置,不需要显示返回值。如果改变了值,需要显示返回值 return 新值

  • 方法说明

GetHeadID

获取表头最大ID(常用于推单场景)

参数

tableName

表头表名

返回值

表头最大ID

GetSelection

获取数据列表选中记录数组,循环数组取得字段值

参数

sourceName

数据列表数据源名

返回值

records

选中记录数组

示例代码

var records = GetSelection(“列表数据源名”);

for (var i = 0; i < records.length; i++) {

    alert(records[i].get("字段名"));

}

GetModifiedRecords

获取表体或数据列表已更新行记录

参数

sourceName

表体表名或数据列表数据源名

返回值

records

表体或数据列表已更新行记录

示例代码

var records = GetModifiedRecords (“表体表名/列表数据源名”);

for (var i = 0; i < records.length; i++) {

alert(records[i].get("字段名"));

}

GetRemovedRecords

获取数据列表已删除行记录或者表单表体已删除行记录

参数

sourceName

表体表名或数据列表数据源名

返回值

records

数据列表已删除行记录或者表单表体已删除行记录

示例代码

var records = GetModifiedRecords (“表体表名/列表数据源名”);

for (var i = 0; i < records.length; i++) {

alert(records[i].get("字段名"));

}

GetBodyRecord

获得表体指定行记录

参数

tableName

表体表名

rowIndex

行号

返回值

表体记录集(传递-1时获取所有记录)

示例代码

var records=GetBodyRecord("表体表名",-1);

for(var i=0;i<records.length; i++){

   alert(records[i].get(“字段名”));

}

GetBodyRcordCount

获得表体行数(数据列表行数)

参数

tableName

表体表名(列表数据源名)

返回值

表体行数(数据列表行数)

示例代码

DelBodyRow

删除表体行

参数

tableName

表体表名

rowIndex

<0时删除选中行  >=0时删除指定行

示例代码

AddBodyRow

新增表体行

参数

tableName

表体表名

示例代码

InsertBodyRow

插入表体行

参数

tableName

表体表名

rowIndex

<0时 当前行上面插入一行  >=0时指定行上面插入一行

示例代码

ClearBodyRow

清空表体行

参数

tableName

表体表名

示例代码

LoadListData

刷新数据列表

参数

示例代码

GetDataBySql

异步执行SQL语句获取后台数据

参数

字段字符串

逗号分隔的需要返回的字段名

Sql 语句

执行获取数据的SQL语句

示例代码

GetDataBySql("字段1,字段2,字段n..."," select 字段1,字段2,字段n... from 表 where 条件 ",function(records){

    for(var i=0;i<records.length;i++){

        var 字段1值= records[i].get("字段1");

        var 字段2值= records[i].get("字段2");

        var 字段n值= records[i].get("字段n");

    }

});

GetDataBySqlSync

同步执行SQL语句获取后台数据

参数

字段字符串

逗号分隔的需要返回的字段名

Sql 语句

执行获取数据的SQL语句

示例代码

GetDataBySqlSync ("字段1,字段2,字段n..."," select 字段1,字段2,字段n... from 表 where 条件 ",function(records){

for(var i=0;i<records.length;i++){

        var 字段1值= records[i].get("字段1");

        var 字段2值= records[i].get("字段2");

        var 字段n值= records[i].get("字段n");

    }});

SetHeadReadOnly

设置表头字段只读

参数

fieldName

字段名数组(设置全部字段时传空字符串)

bReadOnly

true/false 是否只读

bAll

true/false 是否设置全部字段

示例代码

if(条件判断){

SetHeadReadOnly([字段名1, “字段名2], true, true);

}

SetBodyDisable

设置表体无效/有效

参数

tableName

表体表名数组(设置全部表体时传空字符串)

bDisable

true 无效 false 有效

bAll

true/false 是否设置全部表体

示例代码

if(条件判断){

SetBodyDisable ([表名1, “表名2], true, true);

}

SetHeadVisible

设置表头字段显示/隐藏

参数

fieldName

字段名数组(设置全部字段时传空字符串)

bVisible

true/false 是否显示

bAll

true/false 是否设置全部字段(分组内无组件时自动隐藏)

示例代码

if(条件判断){

SetHeadVisible ([字段名1, “字段名2], true, true);

}

SetBodyVisible

设置表体显示/隐藏

参数

tableName

表体表名数组(设置全部表体时传空字符串)

bVisible

true/false 是否显示

bAll

true/false 是否设置全部表体

示例代码

if(条件判断){

SetBodyVisible ([表名1, “表名2], true, true);

}

SetBodyFiledVisible

设置表体字段显示/隐藏

参数

tableName

表体表名(字符串)

filedNames

字段名数组

bVisible

true/false 是否显示

示例代码

if(条件判断){

SetBodyFiledVisible (“表名”, [“字段名1”,“字段名2”], true);}

SetColumnTitle

设置表体列标题文本

参数

tableName

表体表名

cFieldName

字段名

value

标题值

示例代码

SetColumnReadOnly

设置表体列只读

参数

tableName

表体表名

cFieldName

字段名

readOnly

是否只读  true/false

示例代码

SetButtonDisable

设置工具栏按钮无效/有效

参数

btnID

按钮标识数组(设置全部工具栏按钮时传空字符串)

bDisable

true 无效 false 有效

bAll

true/false 是否设置全部工具栏按钮

SetButtonVisible

设置工具栏按钮显示/隐藏

参数

btnID

按钮标识数组(设置全部工具栏按钮时传空字符串)

bVisible

true/false是否显示

bAll

true/false 是否设置全部工具栏按钮

示例代码

if(条件判断){

SetButtonVisible ([按钮标识1, “按钮标识2], true, true);

}

PrintVouchs

批量打印单据

参数

cFormNo

单据/列表编号

HeadIDs

单据表头ID串,用逗号隔开

示例代码

var HeadIDs="";

var records = GetSelection("列表数据源名");

for (var i = 0; i < records.length; i++) {

    HeadIDs+=records[i].get("iid")+",";    

}

if(HeadIDs.length>0){

    HeadIDs=HeadIDs.substring(0,HeadIDs.length-1);

    

    //批量打印单据

    PrintVouchs("单据/列表编号", HeadIDs);

}

SetBodyRowBackColor

设置表体行背景颜色

参数

tableName

表体表名

rowIndex

行索引

color

颜色名称(redyellowgreengrayblueorange

示例代码

if(条件判断){

    //设置第一行红色背景

SetBodyRowBackColor(表体表名”,0,”red”);

}

SetGridDataSource

设置Grid数据源头

参数

gridName

Grid名称

strSql

Sql语句或存储过程

示例代码

SetFocus

设置字段焦点

参数

cFieldName

表单字段名

示例代码

DeleteVouch

批量删除单据

参数

sendor

删除按钮句柄,无按钮调用时可以传NULL

FormNo

表单编号

HeadIDs

删除单据ID串

callback

删除后回调函数

示例代码

var HeadIDs="";

var records=GetSelection(SourceName);

for(var i=0;i<records.length;i++){

    HeadIDs+=records[i].get("iid")+",";

}

if(HeadIDs.length>0){    

    HeadIDs=HeadIDs.substring(0,HeadIDs.length-1);    

    DeleteVouch(this,"SaleOut",HeadIDs,function(){

        //删除后刷新数据列表

        LoadListData();

    });     

}

ExamineVouch

批量审核单据

参数

sendor

审核按钮句柄,无按钮调用时可以传NULL

FormNo

表单编号

HeadIDs

审核单据ID串

callback

审核后回调函数

示例代码

var HeadIDs="";

var records=GetSelection(SourceName);

for(var i=0;i<records.length;i++){

    HeadIDs+=records[i].get("iid")+",";

}

if(HeadIDs.length>0){    

    HeadIDs=HeadIDs.substring(0,HeadIDs.length-1);    

    ExamineVouch(this,"SaleOut",HeadIDs,function(){

        //审核后刷新数据列表

        LoadListData();

    });     

}

UnExamineVouch

批量弃审单据

参数

sendor

弃审按钮句柄,无按钮调用时可以传NULL

FormNo

表单编号

HeadIDs

弃审单据ID串

callback

弃审后回调函数

示例代码

var HeadIDs="";

var records=GetSelection(SourceName);

for(var i=0;i<records.length;i++){

    HeadIDs+=records[i].get("iid")+",";

}

if(HeadIDs.length>0){    

    HeadIDs=HeadIDs.substring(0,HeadIDs.length-1);    

    UnExamineVouch(this,"SaleOut",HeadIDs,function(){

        //弃审后刷新数据列表

        LoadListData();

    });     

}

ImportBody

导入表体

参数

iMode

0-覆盖  1-追加

bAssignment

True 平台自动处理 false 手动代码处理

自动处理说明

  1. 该方法用来导入表单的多个表体
  2. 非编辑模式下不执行操作
  3. 要求Excel文件sheet顺序与表体顺序一致,列标题与表体列标题一致
  4. 日期型字段的合法格式为:yyyy-mm-dd、yyyy-m-d、yyyy/mm/dd、yyyy/m/d
  5. 如果需要导入中间的某一个表体时,Excel文件前面的sheet空着即可。例如:有3个表体分别为基本信息、存货信息、结算信息。我们只需要导入存货信息,Excel文件内sheet1空着,sheet2录入存货信息,sheet3可有可无

手动处理主代码

/*关键对象说明:

1、workbook为导入后的Excel workbook对象

2、worksheet Excel工作表对象

3、rows 工作表数据(数组)对象

4、row  工作表内的一行数据(数组)对象

5、colNames 列名(数组)对象

*/

if(workbook!=null){

    var sheetcount=0;

    var colNames; var colName = "",sheetname="";

    var worksheet,csv, row, rows;

    

    //获取sheet数量

    sheetcount = workbook.SheetNames.length;               

   

    //循环sheet,写入数据

    for (var i = 0; i < sheetcount; i++) {

        //将Sheet内容转换成CSV

        sheetname = workbook.SheetNames[i];

        worksheet = workbook.Sheets[sheetname];

        csv = XLSX.utils.sheet_to_csv(worksheet);

        rows = csv.split('\n');

        rows.pop(); // 去掉最后的空行               

        //获取列名数组(CSV文件的第一行为列名)

        colNames = rows[0].split(',');

        //从第二行循环读取CSV文件内容

        for (j = 1; j < rows.length; j++) {           

            row = rows[j].split(',');     //获取到一行数据

    //循环列名赋值

            for (col = 0; col < colNames.length; col++) {

                colName = colNames[col];

                

            }           

        }

    }

}

SetBodyRowNo

整理表体行号

参数:

tableName

表体表名

说明:

适用于表体行变化时的行号整理。例如:表头参照对表体赋值后

reflect

DLL函数调用

参数

assName

程序集名称

clsName

类名称

funName

方法名称

param

方法参数名称

callback

回调函数

说明

reflect("VouchInterface", "VouchInterface", "ReflectTest", "aaa,bbb", function(result){

    alert(result);

});

reflect_obj

DLL函数调用(支持传递json字符串,需先编码)

参数

assName

程序集名称

clsName

类名称

funName

方法名称

param

方法参数{Param1:json1,Param2: json2,......ParamN: jsonN}

callback

回调函数

说明

var bodyJson = BodyParseJSON(表体表名/数据列表数据源名);

reflect_obj("VouchInterface","VouchInterface","ReflectTest",{Param1:encodeURIComponent(bodyJson),Param2:"bbb"}, function(result){

    alert(result);

});

注意:json格式的参数,必须用encodeURIComponent函数编码

TreeGrid节点选择事件公共处理函数例子(通过重写这两个方法来完成所需的业务处理逻辑)

//递归设置子节点选中状态

function SetChildNodeChecked(node,checked) {  

    //此处可以根据条件设置选择状态

    if(node.get(MappingField('corgno')).length>=6) {

    node.set('checked', checked);       

    }  

    

var childNodes = node.childNodes;            

for (var i = 0; i < childNodes.length; i++) {

SetChildNodeChecked(childNodes[i],checked);

}            

}

//TreeGrid节点选择事件处理

function TreeCheckChange(node, checked, eOpts) {   

var childNodes = node.childNodes;

for (var i = 0; i < childNodes.length; i++) {

SetChildNodeChecked(childNodes[i],checked);

}

}

  • 全局变量

  1. 登录信息

LoginInfo[0].属性名,属性定义如下:

DepCode: 部门编码   DepName: 部门名称  LoginDate: 登录日期  OrgNo: 组织编号 OrgName:组织名称     PositionCode: 职位编码    PositionName: 职位名称    RoleNo:角色编号  RoleName: 角色名称

ServerDate: 服务器当前日期    UserCode: 用户编码    UserName: 用户姓名

表体信息

curbodyname     当前表体表名

currecord;              当前行记录集

currowindex             当前行索引

curcolindex             当前列索引(不常用,可用字段名代替)

curbodyfield 当前列字段名

消息提醒

SuccessfulMsg           操作成功消息提醒(004)

FailedMsg               操作失败消息提醒(005)

ConfirmMsg              确认操作消息提醒(006)

AllowNullMsg            必填字段消息提醒(007)

NoBodyData              请输入表体数据(009

NoDelSysemSet           不能删除系统默认配置(010)

系统默认值

@@year 系统当前日期年份

@@month 系统当前日期月份

@@day 系统当前日期天

@@curDate 系统当前日期

@@loginYear 系统登陆日期年份

@@loginMonth 系统登陆日期月份

@@loginDate 系统登录日期

@@loginUserCode 用户编码

@@loginUserName 用户名称

@@companyCode 组织编码

@@companyName 组织名称

@@depID     部门ID

@@cdepCode 部门编码

@@cdepName 部门名称

@@positionCode 职位编码

@@positionName 职位名称

  • U8数据接口

  1. 销售管理
  2. 销售订单

SaveSaleOrder

新增/修改销售订单

参数

cDSCode

数据源编号

cHeadFilter

表头数据源过滤条件

cBodyFilter

表体数据源过滤条件

cAccID

U8账套号

bAdd

0-新增   1-修改

示例代码

返回值

成功:U8单据表头ID  失败:空字符串

AuditSaleOrder

审核/弃审销售订单

参数

cDSCode

数据源编号

cHeadFilter

表头数据源过滤条件

cAccID

U8账套号

bVerify

true-审核   false-弃审

示例代码

返回值

  • 打印/报表设计

    1. 配置说明

配置说明

表单

数据列表

报表

模板数量

多个

单个

单个

输出样式

模板

模板

模板

输出格式

PDF、Excel、Word、PPT、CSV

PDF、Excel、Word、PPT、CSV

PDF、Excel、Word、PPT、CSV

  1. 按钮定义

分类

按钮名

描述

打印

print_browser

浏览器打印

print_pdf

PDF打印

刷新

refresh

刷新

输出

export_pdf

输出PDF

export_excel2007

输出Excel

export_word2007

输出Word

export_csv

输出CSV

  1. 参数定义

分类

参数

参数说明

代码

表单单条打印

HeadIDs

表头记录ID

BPM平台零代码

表单批量打印

HeadIDs   

表头记录ID串(

BPM平台零代码

数据列表打印

Filter

数据列表过滤条件

BPM平台零代码

  • U9数据接口

  • 事件处理注意事项:

  1. 表头参照对表体赋值时,需自行处理以下两点
  2. 表体有默认值时需要代码赋值
  3. 表体有行号字段时,需要调用SetBodyRowNo(tableName)方法整理行号

  • SQL 处理注意事项:

存储过程内抛出异常         RAISERROR ('错误消息',15, 1)  

存储过程内抛出异常并返回 RAISERROR ('错误消息',15, 1)  return

  • 单点登录

var formData = new FormData();

formData.append('userno', 'kdq');

formData.append('secret', '123');

var xhr = new XMLHttpRequest();

xhr.open('POST', 'Authentication/GetToken.aspx') ;

xhr.send(formData);

xhr.onreadystatechange = function(){

    if( xhr.readyState == 4 && xhr.status == 200 ) {

     alert( xhr.responseText);

    }     

};

十、手写板公共函数

//加一个签字按钮,事件代码如下(用来打开签字窗口):    

$.ajax({

    type: "get",

    url: "http://127.0.0.1:29999/HWPenSign/HWInitialize",

    data: {

        "nLogo":"签字",

        "nPenwidth":"2",

        "nOrgX":"100",

        "nOrgY":"200",

        "width":"500",

        "height":"300",

    },

    dataType: "jsonp",

    success: function(data){

        if(data.msgID == 0){           

            intval = setInterval(SaveCroppedImg, 3000);

        }else{

            alert(data.message);

        }

    },

    error : function(){

        alert("打开签字窗口失败!");

    }

});



//获取并上传签名图片

function SaveCroppedImg(){  

    var fileUrl="";

    $.ajax({

        type: "get",

        url: "http://127.0.0.1:29999/HWPenSign/HWGetSign",

        data: {

            "nImageType": "3",

            "nImageWidth": "500",

            "nImageHeight": "300"

        },

        dataType: "jsonp",

        success: function (data) {           

            if (data.msgID == 0) {

                clearInterval(intval);                

                var base64Img=data.message;                

                var blobInfo=base64toBlob(base64Img);

                

                //同步上传文件

                var xhr, formData;

                xhr = new XMLHttpRequest();

                xhr.withCredentials = false;

                xhr.open('POST', '../Handers/CommonHandler.ashx?action=UpLoadImage_Sign',false);    

                xhr.onreadystatechange = function(){

                    if(xhr.readyState == 4 && xhr.status == 200 ) {

                        var json=JSON.parse(xhr.responseText);

                        if (!json || typeof json.location !== 'string') {

                            alert('Invalid JSON: ' + xhr.responseText);

                            return;

                        }

                        else{

                            fileUrl=json.location;

                        }

                    }

                }    

                formData = new FormData();   

                formData.append("file",blobInfo,"sign.png");

                xhr.send(formData);

                SetHeadValue("cSignaturePic",fileUrl);

                

            } else if (data.msgID == -10) {                

                 //没有点击设备的确定按钮,没有获取笔记的Base64                

            } else if(data.msgID == -15) {

                //签字窗口没有笔迹,并且关闭了签字窗口

                clearInterval(intval);         

            }

            else{

                

            }

        },

        error: function () {

            console.log("sign error \n");

        }

    });   

    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值