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

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

admin
2022年4月29日 16:54 本文热度 2088
为了给点晴MIS系统任意页面增加自定义JS函数及操作脚本功能,并支持JS直接提取SQLServer数据库后台数据参与运算或赋值显示,需要用到如下几个页面:
/MIS/ajax_data/set_page_js.asp   -----》用于设置相关JS参数
/MIS/ajax_data/get_field_value.asp   ------》用于在需要增加JS控制的页面上获取相关JS脚本和函数
/MIS/ajax_data/return_field_value.asp    ------》提供返回数据的远端页面,单表查询,正常情况下无需用到或修改
/MIS/ajax_data/return_sql_value.asp    ------》提供返回数据的远端页面,复杂SQL查询,正常情况下无需用到或修改
/MIS/js/lime_util.min.js    ------》JS工具库,内置了将近300个常用JS函数,方便JS高效设计
这个功能是通用设计方法,支持点晴MIS系统中任意页面增加自定义JS脚本功能,可以方便的对任意页面进行精确的控制,包括:更改指定字段的只读、禁止留空、动态从SQL Server中提取信息刷新到页面上、动态批量加载信息到当前页面等。

下面以采购单打印页面为例,说明如何改造打印页面增加自定义JS函数及操作脚本功能,并利用新增的功能动态更改打印人、将要求到货时间改为当前时间之后的3天。

第一步:给打印页面增加自定义JS函数及操作脚本功能
先找到采购单打印页面“/mis/mrp/purchase_order_checkinfo.asp”,在最顶部增加:
page_site="mis_mrp_document_print_edit_asp"  '默认为当前页面完整路径,但单据打印页面有点不同应该设置为模板设计页面地址,路径中的“/.”都要改成“_”
sub_code=pr_code_i   '默认留空,如果当前页面有多种子页面,那么要启用子识别码,例如打印设计页面对应着送货单、销售单、入库单等各种单据类型
在页面最底部加入下面红色内容(这些红色内容务必放在最底部,需要获取上面这两个值,并且有一个隐藏的DIV,以免加载异常):
<script language="javascript">
<%call get_js_body(page_site,sub_code,0)%>
</script>
<!--#include file="../ajax_data/get_field_value.asp"-->
'引入get_field_value.asp要用到上面的两个参数page_site、sub_code

在页面右上角增加管理员才能访问的按钮:
if popedom100185>0 then input_button=input_button &"<input type=""button"" class=""button_80px button_ui_orange"" value=""页面JS脚本"" onclick=""open_win('/mis/ajax_data/set_page_js.asp?page_site="& page_site &"&sub_code="& sub_code &"',960,640);"">"

如果启用提交前JS,那么还要在提交JS中加上以下这个:
<%call get_js_submit(page_site,sub_code,0)%>

如果启用提交后JS,那么还要在提交JS后面加上以下这个:
<%call get_js_submit_after(page_site,sub_code,0)%>

如果要在页面上显示“执行JS”按钮,用于某些不方便在进入页面时、也不方便在提交表单时加载的JS脚本:
<%call get_js_button(page_site,sub_code,0)%>

然后找到采购单打印设置页面“/mis/mrp/document_print_edit.asp”,在页面顶部增加:
page_site="mis_mrp_document_print_edit_asp"  '默认为当前页面完整路径,路径中的“/.”都要改成“_”
sub_code=pr_code_i   '默认留空,如果当前页面有多种子页面,那么要启用子识别码,例如打印设计页面对应着送货单、销售单、入库单等各种单据类型
在页面最底部加入下面内容(这些脚本务必放在最底部,需要获取上面这两个值,并且有一个隐藏的DIV,以免加载异常):
<!--#include file="../ajax_data/get_field_value.asp"-->
'引入get_field_value.asp要用到的两个参数page_site、sub_code

由于本页面中还需要显示字段说明,所以还需要在相应位置的表头print_top_intro和表尾print_bottom_intro说明中增加以下内容:
add_custom_id_remark=get_js_remark(page_site,sub_code,1)   '获取字段说明
if add_custom_id_remark&"CS"<>"CS" then print_top_intro=replace(print_top_intro &"|"& add_custom_id_remark,"||","|")
if add_custom_id_remark&"CS"<>"CS" then print_bottom_intro=replace(print_bottom_intro &"|"& add_custom_id_remark,"||","|")

增加完以上代码后,页面上就会出现一个“页面JS脚本”按钮:

点击“页面JS脚本”按钮就会出现以下JS设计页面:

第二步:设计JS取数脚本
在以上界面中,可以自定义设计表体JS、提交前JS、说明文字等信息。其中表体JS支持直接从SQL Server中动态提取数值,并将返回值参与到JS运算、或者直接刷新页面上的内容,刷新方式包括DIV的innerHTML、input的value等内容,也支持JS的replace函数更新模板页面上原有的:$input_time${销售单号}等进行替换,十分的灵活方便。点击上面的“加载预置值”按钮,就可以看到系统提供的预置样板,JS方式动态从SQL Server取数提供了单表和识别字段直接简单取数、以及自写SQL脚本实现复杂取数两种方式。

由于JS从SQL Server中动态取数是异步实现的,所以相对麻烦些,下面提供两段信息供参考:
表体JS:
async function compute(){
  var table_name="userinf";  //SQL Server表名称
  var sole_id="username";  //用于唯一识别的字段
  var id_value="wuxin";  //唯一识别的字段值
  var get_id="name";  //需要返回的字段名
  var alert_flag=1;  //有异常时是否弹出提醒,0-否、1-是
  var wait_time=500;  //异步查询等待时间,单位ms
  get_field_value(table_name, sole_id, id_value, get_id, alert_flag);  //本行勿动,以上变量会自动传入本函数
  var tmpValue=await getSomething(get_id,wait_time);  //本行勿动,以上变量会自动传入本函数
  document.getElementById("print_body").innerHTML=document.getElementById("print_body").innerHTML.replace("{制单人}",tmpValue);  //tmpValue即为获得的字段值,此行开始自行写JS脚本
}
compute();  //此处去掉斜杠启用上面的JS脚本

页面说明:
制单人:{制单人}|制单时间:{制单时间}

保存后,就可以在页面上看到新增的内容了,我们在上面插入这个新增的字段{制单人}:

设计完毕后,返回采购单打印页面,就会看到上面的“{制单人}”已经被自动更换为“伍鑫”了:

另外,为了方便JS开发,本功能还引入JS工具库(已经强制引入,无需再次引入,直接使用即可),提供了将近300个API函数,可以极大的简化JS设计,此JS库的使用方法参见以下教程:
lime-util 前端模块化 Javascript 工具库[9]
  http://17809.oa22.cn

高级应用:
更复杂的自定义SQL查询并返回json数据集的例子,参见询价单自动转为采购单,这个新增采购单页面提供了自动抓取多个物料的相应询价价格的功能,位置:采购管理-》新增采购单。


该文章在 2022/8/11 16:54:45 编辑过

全部评论1

Ccoffee
2022年6月17日 8:47
标签打印时超出了打印宽度折行造成整张标签打印变形,可以用JS函数reduceStrFontSize按照设置的打印最大宽度自动缩小字体大小
函数说明:
reduceStrFontSize(strID, strFontSize, strMaxWidth, targetMinFontsize)strID-需要缩小的字符串ID,strFontSize-当前字符串的字体大小单位pt,strMaxWidth-当前字符串最大所占宽度,targetMinFontsize-超出宽度后自动缩小最小的字体大小单位pt
函数应用:
var lable_num=document.getElementById('lable_num').value;
for(i=1;i<lable_num;i++){
 try{reduceStrFontSize("product_spec_display"+i, 12, 150,7);}catch(err){}
 try{reduceStrFontSize("product_model_display"+i, 12, 60, 7);}catch(err){}
}

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