zoukankan      html  css  js  c++  java
  • 蓝凌OA二次开发手册

    1.蓝凌OA表单前端调用后台数据

    一、后台存储过程:

    create procedure sp_test

    @ftext nvarchar(50)

    as

    begin

    select @ftext as '测试1','aaaa' as '测试2'

    end

    --exec sp_test 'bbb'

    二、主表单配置script:

    函数名:gettest()

    script:

    var emp=document.getElementById("用户").value;

    var dept=document.getElementById("部门").value;

    var rtn=function_GetRecordBySP("test 'bbb'"); --取单行数据
    alert(rtn.测试1);
    alert(rtn.测试2);

    主表单字段高级属性--报销部门字段--script属性:配置gettest()

    三、预览表单,报销部门字段输入值后,弹出窗口1,内容为“bbb”;弹出窗口2,内容为“aaa”。

    备注:如果是页面加载时触发函数,在this_formscript()函数内写功能代码调用后台数据

    存储过程如下:

    函数名:this_formscript()

    script:

    var emp=document.getElementById("用户").value;

    var dept=document.getElementById("部门").value;

    var rtn=function_GetRecordBySP("test 'bbb'");

    alert(rtn.测试1);

    alert(rtn.测试2);

    附取多行数据写法:

    var isearch=window.location.href.search(/mobileapp/i);
    if(isearch==-1)
    {
    var fnumber=document.getElementById("订单编号").value;
    var rtn= function_GetDataSetBySP("sp_bobang_bug_按单号取历史订单 '"+fnumber+"'", 1);
    var t1=0;
    var t2=0;
    var prej=-1;
    var rtHead=new Object();
    rtHead=rtn[0];
    document.getElementById("ATS数量").value=formatValue(rtHead.ATS数量,'system.float','0');
    document.getElementById("LOGO和说明书").value=rtHead.LOGO和说明书;
    document.getElementById("ATS").value=rtHead.ATS;
    document.getElementById("总售价USD").value=formatValue(rtHead.总售价USD,'system.float','0.00');
    document.getElementById("铭牌内容").value=rtHead.铭牌内容;
    document.getElementById("客户LOGO数量").value=formatValue(rtHead.客户LOGO数量,'system.float','0');
    
    for(var i=0 ; i<rtn.length; i++)   
    {
        if(i>0)
        {
            newRow('edittable_订单内容');
        }
        t1=t1+1;
        var rtEntry= new Object();
        rtEntry=rtn[i];
        for(var j=0;j<100;j++)
        {
            var j1="品名_"+(j+1);
            var obj1=document.getElementById(j1);
            var j2="K3规格_"+(j+1);
            var obj2=document.getElementById(j2);
            var j3="常用功率KW_"+(j+1);
            var obj3=document.getElementById(j3);
            var j4="备用功率KW_"+(j+1);
            var obj4=document.getElementById(j4);
       
            var obj8=document.getElementById(j8);
            var j9="数量_"+(j+1);
            var obj9=document.getElementById(j9);
            var j10="单价USD_"+(j+1);
            var obj10=document.getElementById(j10);
            var j11="单价RMB_"+(j+1);
            var obj11=document.getElementById(j11);
            var j12="总金额USD_"+(j+1);
            var j16="备注_"+(j+1);
            var obj16=document.getElementById(j16);
            var j17="成品类型_"+(j+1);
            var obj17=document.getElementById(j17);
            var j18="OA型号_"+(j+1);
            var obj18=document.getElementById(j18);
            if(document.getElementById(j1)){
                if(j>prej&&prej!=j){
                    prej=j;
                    t2=t2+1;
                }
    
                if(t1==t2){
                    obj1.value = rtEntry.品名.toUpperCase();
                    obj2.value = rtEntry.K3规格.toUpperCase();
                    obj3.value = rtEntry.常用功率KW.toUpperCase();
                    obj4.value = rtEntry.备用功率KW.toUpperCase();
                    obj9.value = rtEntry.数量.toUpperCase();
                    obj10.value = rtEntry.单价USD.toUpperCase();
                    obj11.value = rtEntry.单价RMB.toUpperCase();
                    obj12.value = rtEntry.总金额USD.toUpperCase();
                    obj18.value = rtEntry.OA型号.toUpperCase();
                    
                    break;
               }
            }
        }
    }    
    }         
    

      

    2.蓝凌OA开发的功能如何获取登陆用户

    解决方法一(推荐):以自定义的开发功能“会议室预约”为例,需求:按30分钟列出一天的上班时间段,每个时间段,点击“预约功能”,就自动完成会议室预约。

    步骤1:新建自定义表单“会议室预约跳转页”,包括两个字段:用户名、部门。

              在字段高级属性,设置用户名为只读文本框,缺省值:登陆人账号; 部门为只读文本框,缺省值:登陆人部门

    步骤2: this_formscript()函数是表单加载后触发的javascript函数,是蓝凌的系统函数,默认在表单里是没有创建的。

    创建this_formscript()函数,代码如下:       

    var emp=document.getElementById("用户名").value;
    var dept=document.getElementById("部门").value;
    window.location = "http://localhost:8080/bbxd/meetroom.aspx?emp=" + escape(emp) + "&dept="+escape(dept)+"";

    步骤3:后台管理--菜单导航--我的工作,将“我的会议”改为“会议预约”,链接选择“协同办公--自定义表单--会议室预约跳转页--列表”,

    得到链接:/frm/frm_form_list_main.aspx?form_id=68&list_id=68,这步是为了记录下表单的id,这里是68

    步骤4:将链接修改为:/frm/frm_form_edit.aspx?Mode=add&Dialog=modal&ID=0&frm_id=68,这里用到表单id,点击提交,进行保存。

             这样在前台页面,我的工作栏目,有个“会议预约”的功能,点击会打开“会议室预约跳转页”。 跳转页会触发this_formscript()函数,

             抓取到登陆人账号部门,然后通过链接传参到我们二次开发的会议室预约功能页面。  

    通过蓝凌的表单页面做中转的方式,获取当前登陆人,完成当前登陆人的抓取。

    解决方法二:

    通过在后台创建一个扩展功能验证码数据表,该表与蓝凌用户表关联,为每个用户分配一串验证码,在使用扩展功能时,必须输入验证码。

    这样依靠读取验证码,获得当前登陆用户。

    步骤1:创建扩展功能验证码表。代码如下:

    --扩展开发功能验证码表
    create table bobang_ExtendValidCode
    (
    username nvarchar(50),
    vcode nvarchar(200)
    )

    步骤2:创建SQL Server定时作业,每天24点执行一次,执行代码如下:(第一次使用,请先执行一遍代码)

    --需要启用SQL Server代理的定时作业
    --自动生成每个用户的扩展开发功能验证码
    insert into bobang_ExtendValidCode(username,vcode)
    select t1.account,sys.fn_sqlvarbasetostr(HashBytes('MD5',convert(nvarchar(50),t1.id)+t1.account))  
    from FI_ORG_EMP t1
    where (1=1)
    and not exists (
    select t2.username from bobang_ExtendValidCode t2 where t2.username=t1.account
    )

    步骤3:蓝凌后台管理--应用配置--报表管理,配置报表,数据对象类型选择“表”,数据对象选择“bobang_ExtendValidCode”。

              配置的报表,默认参数为当前登陆人账号。 在这里,报表显示的就是当前登陆人的验证码,完成“验证码”和“登陆人”的关联。

    步骤4:以“会议室预约功能”为例,使用查询功能,必须填入“扩展功能验证码”。 

    3.调用主表单的从表操作按钮:新增、删除、插入、复制、剪切、黏贴、导入

    新增:newRow('edittable_订单内容');
    删除:deleteRow('edittable_订单内容');
    插入:insertRow('edittable_订单内容');
    复制:copyRow('edittable_订单内容');
    剪切:cutRow('edittable_订单内容');
    粘贴:pasteRow('edittable_订单内容');
    导入:et_importData('edittable_订单内容');

    4.获取订单编号,填充主表、从表数据

    var fnumber=document.getElementById("订单编号").value;
    //取存储过程的数据,rtn是一个一维数组,每个参数是一个Object对象
    var rtn= function_GetDataSetBySP("sp_bobang_bug_按单号取历史订单 '"+fnumber+"'", 1); var t1=0; var t2=0; var prej=-1; var rthead=new Object(); rtHead=rtn[0];
    //主表数据赋值 document.getElementById(
    "AOSIF数量").value=formatValue(rtHead.AOSIF数量,'system.float','0'); document.getElementById("LOGO和说明书").value=rtHead.LOGO和说明书; document.getElementById("客户LOGO数量").value=formatValue(rtHead.客户LOGO数量,'system.float','0');
    //从表记录循环
    for(var i=0 ; i<rtn.length; i++) { if(i>0) { newRow('edittable_订单内容'); } t1=t1+1; var rtEntry= new Object(); rtEntry=rtn[i];
    //从表循环赋值,由于从表序号是1、4、5往下编号,没有按顺序编。从表列数和从表记录数不能直接匹配。
    for(var j=0;j<100;j++) { var j1="品名_"+(j+1); var obj1=document.getElementById(j1); var j2="K3规格_"+(j+1); var obj2=document.getElementById(j2); if(document.getElementById(j1)){
    //prej是上一个已赋值的从表循环计数
    if(j>prej&&prej!=j){ prej=j; t2=t2+1; } if(t1==t2){ obj1.value = rtEntry.品名.toUpperCase(); obj2.value = rtEntry.K3规格.toUpperCase(); break; } } } }

     5.后台【EXCEL数据导入】功能配置在前台的方法:

    【EXCEL数据导入】功能网址:http://www.eis.com:8080/sm/data_operate_list.aspx

    【部门设置】功能网址:/sm/org_dept_new.aspx

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/star-studio/p/5647221.html
Copyright © 2011-2022 走看看