LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

点晴MIS系统页面动态JS加载自定义SQL语句开发设计指南

admin
2024年10月24日 10:4 本文热度 756

页面动态JS加载脚本,是点晴MIS系统中一项非常重要的功能,可以动态加载JS脚本、自定义SQL语句获取JSON返回值等,从而对页面上的元素进行更为个性化的控制,以及增加新的功能。

为了避免动态JS加载自定义SQL语句时,别有用心的人员通过浏览器调试模式自行修改自定义SQL语句给系统带来安全隐患,点晴MIS系统页面动态JS加载脚本设计时,必须严格按照以下规范来引入自定义SQL语句。

一、点击相应模块页面右上角按钮“页面JS脚本”,进入后先在页面最顶部增加需要使用的自定义SQL语句

增加自定义SQL语句时,系统会自动给每个SQL语句分配一个20位长的唯一识别码,后面引用此自定义SQL语句时,必须使用此20位唯一识别码,不允许直接在JS中写SQL语句:

1、上述值更改后直接生效,本页最下方保存按钮不会保存本位置内容变更;

2、在下面JS脚本中需要动态使用SQL的位置,用上面固定长度20位的识别码代替真实自定义SQL语句,可以有效防范SQL被用户篡改;

3、请不要在下面的JS脚本中直接使用SQL语句,直接写入的SQL不会被后台执行;

4、输入自定义SQL时,SQL中需要接收的变量,用“{传入参数名称}”代替,示例:

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四个脚本框中,视需要引入上面增加的自定义SQL语句

引入自定义SQL语句时,必须使用上面系统分配的20位唯一识别码,考虑到SQL中需要带入JS传入的变量,所以约定按照以下格式引入自定义SQL语句以及接收JS传入的参数:

"自定义SQL语句唯一码?参数1="+参数1值+"&参数2="+参数2值+"&参数3="+参数3值;

var sql_str="SQL2410240936XALWYO3?client_code="+client_code+"&product_code="+product_code;

类似于页面URL地址结构,第一个值必须是自定义SQL语句唯一识别码,后面是接收传入的参数。


范例参见点晴ERP系统新增采购单-》JS提取询价单价:

自定义SQL语句:

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,用于复杂查询,直接传入完整SQL

  var sql_str="SQL2310231215LLNNVIT?client_code="+client_code+"&product_code="+product_code+"&order_quantity="+order_quantity;

  var get_id="tmpID"+at_num;  //随意命名,用于临时暂存数据的ID,不与页面上其他ID重复即可

  var alert_flag=1;

  var wait_time=3000;

  get_sql_value(sql_str, get_id, alert_flag);  //本行勿动,以上变量会自动传入本函数

  var tmpValue=await getSomething(get_id,wait_time);  //本行勿动,以上变量会自动传入本函数

  //alert(id_value+"所在岗位:"+tmpValue);  //tmpValue即为获得的字段值,此行开始自行写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();

}

执行JS按钮脚本:

if(!confirm("你确定要提取询价价格吗?")){return false;}

var client_code=document.getElementById("client_code").value;

if (client_code==""){alert("执行JS失败:供应商名称禁止为空!");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);

}

}


相关教程:

如何给点晴MIS系统任意页面增加自定义JS函数及操作脚本功能,并支持JS直接提取SQLServer数据库后台数据参与运算或赋值显示[2254]
  http://17810.oa22.cn


该文章在 2024/10/30 11:37:23 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved