藍凌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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM