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