頁(yè)面動(dòng)態(tài)JS加載腳本,是點(diǎn)晴MIS系統(tǒng)中一項(xiàng)非常重要的功能,可以動(dòng)態(tài)加載JS腳本、自定義SQL語(yǔ)句獲取JSON返回值等,從而對(duì)頁(yè)面上的元素進(jìn)行更為個(gè)性化的控制,以及增加新的功能。
為了避免動(dòng)態(tài)JS加載自定義SQL語(yǔ)句時(shí),別有用心的人員通過(guò)瀏覽器調(diào)試模式自行修改自定義SQL語(yǔ)句給系統(tǒng)帶來(lái)安全隱患,點(diǎn)晴MIS系統(tǒng)頁(yè)面動(dòng)態(tài)JS加載腳本設(shè)計(jì)時(shí),必須嚴(yán)格按照以下規(guī)范來(lái)引入自定義SQL語(yǔ)句。
一、點(diǎn)擊相應(yīng)模塊頁(yè)面右上角按鈕“頁(yè)面JS腳本”,進(jìn)入后先在頁(yè)面最頂部增加需要使用的自定義SQL語(yǔ)句
增加自定義SQL語(yǔ)句時(shí),系統(tǒng)會(huì)自動(dòng)給每個(gè)SQL語(yǔ)句分配一個(gè)20位長(zhǎng)的唯一識(shí)別碼,后面引用此自定義SQL語(yǔ)句時(shí),必須使用此20位唯一識(shí)別碼,不允許直接在JS中寫(xiě)SQL語(yǔ)句:
1、上述值更改后直接生效,本頁(yè)最下方保存按鈕不會(huì)保存本位置內(nèi)容變更;
2、在下面JS腳本中需要?jiǎng)討B(tài)使用SQL的位置,用上面固定長(zhǎng)度20位的識(shí)別碼代替真實(shí)自定義SQL語(yǔ)句,可以有效防范SQL被用戶篡改;
3、請(qǐng)不要在下面的JS腳本中直接使用SQL語(yǔ)句,直接寫(xiě)入的SQL不會(huì)被后臺(tái)執(zhí)行;
4、輸入自定義SQL時(shí),SQL中需要接收的變量,用“{傳入?yún)?shù)名稱}”代替,示例:
select TOP(1) inquiry_list_id,inquiry_of_price, inquiry_of_tax_price, max_quantity, min_quantity from scm_inquiry_order_list right OUTER JOIN scm_inquiry_order on scm_inquiry_order.inquiry_order_id=scm_inquiry_order_list.inquiry_order_id where scm_inquiry_order_list.client_code='{client_code}' AND scm_inquiry_order_list.product_code='{product_code}' and (('{order_quantity}'<=max_quantity and '{order_quantity}'>=min_quantity) or max_quantity=0) and scm_inquiry_order.orderstat=1 order by inquiry_list_id desc
二、在下面的表體JS、提交前JS、提交后JS、按鈕JS四個(gè)腳本框中,視需要引入上面增加的自定義SQL語(yǔ)句
引入自定義SQL語(yǔ)句時(shí),必須使用上面系統(tǒng)分配的20位唯一識(shí)別碼,考慮到SQL中需要帶入JS傳入的變量,所以約定按照以下格式引入自定義SQL語(yǔ)句以及接收J(rèn)S傳入的參數(shù):
"自定義SQL語(yǔ)句唯一碼?參數(shù)1="+參數(shù)1值+"&參數(shù)2="+參數(shù)2值+"&參數(shù)3="+參數(shù)3值;
var sql_str="SQL2410240936XALWYO3?client_code="+client_code+"&product_code="+product_code;
類似于頁(yè)面URL地址結(jié)構(gòu),第一個(gè)值必須是自定義SQL語(yǔ)句唯一識(shí)別碼,后面是接收傳入的參數(shù)。
范例參見(jiàn)點(diǎn)晴ERP系統(tǒng)新增采購(gòu)單-》JS提取詢價(jià)單價(jià):
自定義SQL語(yǔ)句:
select TOP(1) inquiry_list_id,inquiry_of_price, inquiry_of_tax_price, max_quantity, min_quantity from scm_inquiry_order_list right OUTER JOIN scm_inquiry_order on scm_inquiry_order.inquiry_order_id=scm_inquiry_order_list.inquiry_order_id where scm_inquiry_order_list.client_code='{client_code}' AND scm_inquiry_order_list.product_code='{product_code}' and (('{order_quantity}'<=max_quantity and '{order_quantity}'>=min_quantity) or max_quantity=0) and scm_inquiry_order.orderstat=1 order by inquiry_list_id desc
表體JS:
async function get_purchase_price(client_code,product_code,order_quantity,at_num){ //方法2,用于復(fù)雜查詢,直接傳入完整SQL
var sql_str="SQL2310231215LLNNVIT?client_code="+client_code+"&product_code="+product_code+"&order_quantity="+order_quantity;
var get_id="tmpID"+at_num; //隨意命名,用于臨時(shí)暫存數(shù)據(jù)的ID,不與頁(yè)面上其他ID重復(fù)即可
var alert_flag=1;
var wait_time=3000;
get_sql_value(sql_str, get_id, alert_flag); //本行勿動(dòng),以上變量會(huì)自動(dòng)傳入本函數(shù)
var tmpValue=await getSomething(get_id,wait_time); //本行勿動(dòng),以上變量會(huì)自動(dòng)傳入本函數(shù)
//alert(id_value+"所在崗位:"+tmpValue); //tmpValue即為獲得的字段值,此行開(kāi)始自行寫(xiě)JS腳本
var myobj=JSON.parse(tmpValue);
no_num=0;
for(var i=0;i<myobj.length;i++){
try{document.getElementById('inquiry_list_id'+at_num).value=myobj[i].inquiry_list_id;}catch(err){}
try{document.getElementById('order_tax_price'+at_num).value=myobj[i].inquiry_of_tax_price;}catch(err){}
try{document.getElementById('inquiry_max_quantity'+at_num).value=myobj[i].max_quantity;}catch(err){}
try{document.getElementById('inquiry_min_quantity'+at_num).value=myobj[i].min_quantity;}catch(err){}
try{document.getElementById('order_price'+at_num).value=myobj[i].inquiry_of_price;}catch(err){}
try{document.getElementById('product_sum_price'+at_num).value=zeroformat(myobj[i].inquiry_of_price*document.getElementById('order_quantity'+at_num).value);}catch(err){}
try{document.getElementById('product_sum_tax_price'+at_num).value=zeroformat(myobj[i].inquiry_of_tax_price*document.getElementById('order_quantity'+at_num).value);}catch(err){}
no_num++;
}
sum_list_price();
}
執(zhí)行JS按鈕腳本:
if(!confirm("你確定要提取詢價(jià)價(jià)格嗎?")){return false;}
var client_code=document.getElementById("client_code").value;
if (client_code==""){alert("執(zhí)行JS失敗:供應(yīng)商名稱禁止為空!");return false;}
var num=document.getElementById("num").value;
for (var tmpNum=0;tmpNum<num;tmpNum++)
{
var product_code=document.getElementById("product_code"+tmpNum).value;
var order_quantity=document.getElementById("order_quantity"+tmpNum).value;
if(product_code!="" && order_quantity>0)
{
get_purchase_price(client_code,product_code,order_quantity,tmpNum);
}
}
相關(guān)教程:
如何給點(diǎn)晴MIS系統(tǒng)任意頁(yè)面增加自定義JS函數(shù)及操作腳本功能,并支持JS直接提取SQLServer數(shù)據(jù)庫(kù)后臺(tái)數(shù)據(jù)參與運(yùn)算或賦值顯示[2254]
http://17810.oa22.cn
該文章在 2024/10/30 11:37:23 編輯過(guò)