kingdee OA 表单功能增强(一)

公司一直在用kingdee OA 5.2的版本,虽然好多功能不太完善,好在它的一些架构还是比较好的,最近在用js+css对其进行一些改动。

从琴日开始,在想一个问题,根据查询结果向表单中自动填充内容。难点在于1.表单保存时是html格式,2。系统展现表单时做了一些转义,如原来是文本框的,转义后会变成了下拉框,这不是最大问题,最大问题是它的name属性改变了,而且没有包含id属性,无法直接用document.getElementById("b1"),看来只能供助jquery之类的工具库了

 

下面是一个例子,放在这里备查吧!

服务器端的程序(GetValue.jsp) 

<%@ page import="javax.xml.parsers.*,javax.xml.transform.*,javax.xml.transform.dom.*,javax.xml.transform.stream.*,org.w3c.dom.*,java.util.*,java.sql.*"
     contentType="text/html; charset=UTF-8"
%>
<%
    response.setHeader("Cache-Control", "no-store");
    response.setDateHeader("Expires", 0);
    response.setContentType("text/xml; charset=utf-8");
%>
<%
 // 创建文档对象。
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
 // 创建文档对象根元素。
    Element xmlRoot = doc.createElement("result");
 

//连接数据库(最原始的方式)
Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();

String url="jdbc:jtds:sqlserver://*********:1433;DatabaseName=*****";

String user="sa";
String password="*****";
Connection conn= DriverManager.getConnection(url,user,password);
PreparedStatement stmt=conn.prepareStatement(" exec GetNeiBuZhuanZhanRecrod ? "); //调用存储过程
stmt.setString(1,request.getParameter("fileno1")); //获取传递过来的参数值,给当前参数赋值
ResultSet rs =stmt.executeQuery(); //将查询结果返回给rs

String country="" //定义参数存放查出的结果 
if (rs.next() )  //这一句一定要加,因为只返回一个结果,如果要规范一些的,可以将if 换成while

{

country =rs.getString("str1") ; //将查出的结果赋值
}else
{
country="none"; //当没有结果时显示none

}

rs.close();   //关闭
stmt.close();

conn.close(); 

//生成xml节点
Element city = doc.createElement("city");
city.appendChild(doc.createTextNode(country ));
xmlRoot.appendChild(city);
                 
    // 将文档根元素加到文档对象。
    doc.appendChild(xmlRoot);
    // 将xml文档数据发送给客户端浏览器。
    DOMSource doms = new DOMSource(doc);
    StreamResult sr = new StreamResult(response.getOutputStream( ));
    TransformerFactory tf = TransformerFactory.newInstance( );
    Transformer t = tf.newTransformer( );
    t.setOutputProperty("encoding", "UTF-8");
    t.transform(doms, sr);


%>

 

一个公文表单(html文件):


<script src="../jquery.js"></script>
<table style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" align="center" height="42"><font size="+1"><strong>转账通知单</strong></font></td>
        </tr>
    </tbody>
</table>

<p align="center"><span class="writetd">申请人职务:<input id="c1" class="igray" size="10" name="开票人" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;收/付款部门:<input id="c2" class="igray" size="10" name="收付款部门" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO:</span><span class="writetd"><input class="igray" name="文件编号" /> </span></p>
<table style="BORDER-COLLAPSE: collapse" bordercolor="#666666" cellspacing="0" cellpadding="0" width="95%" align="center" border="1">
    <tbody>
        <tr valign="middle">
            <td align="center" bgcolor="#ffffff">收款部门</td>
            <td class="writetd" width="15%" bgcolor="#ffffff"><input id="c3"  class="igray" size="12" name="收款部门" /></td>
            <td class="writetd" width="8%" bgcolor="#ffffff">申请人</td>
            <td align="center" width="11%" bgcolor="#ffffff">&nbsp;<input class="igray" size="8" name="提交人" /></td>
            <td align="center" width="11%" bgcolor="#ffffff"><span class="writetd">付款部门</span></td>
            <td class="writetd" width="18%" bgcolor="#ffffff"><input  id="c4"  class="igray" size="12" name="付款部门" /></td>
            <td class="writetd" width="10%" bgcolor="#ffffff">转账日期</td>
            <td class="writetd" width="18%" bgcolor="#ffffff"><input class="igray" id="转账日期" size="12" name="转账日期" /></td>
        </tr>
        <tr valign="middle">
            <td align="center" width="9%" bgcolor="#ffffff">摘要</td>
            <td class="writetd" bgcolor="#ffffff" colspan="7"><textarea id="c5" class="igray" rows="3" cols="98" name="摘要"></textarea></td>
        </tr>
        <tr valign="middle">
            <td align="center" bgcolor="#ffffff">文件标题</td>
            <td class="writetd" bgcolor="#ffffff" colspan="5"><input class="igray" id="文件标题" size="50" name="文件标题" /></td>
            <td class="writetd" bgcolor="#ffffff">转账金额</td>
            <td class="writetd" bgcolor="#ffffff"><input class="igray" id="c6"  size="12" name="转账金额" /></td>
        </tr>
        <tr>
            <td align="center" bgcolor="#ffffff">备注</td>
            <td class="writetd" bgcolor="#ffffff" colspan="7"><textarea id="c7" class="igray" rows="3" cols="98" name="备注"></textarea></td>
        </tr>
        <tr>
            <td align="center" bgcolor="#ffffff">收款方确认人员</td>
            <td class="writetd" bgcolor="#ffffff" colspan="7"><textarea class="igray" rows="3" cols="98" name="收款方确认人员"></textarea></td>
        </tr>
        <tr>
            <td align="center" bgcolor="#ffffff">付款方确认人员</td>
            <td class="writetd" bgcolor="#ffffff" colspan="7"><textarea class="igray" rows="3" cols="98" name="付款方确认人员"></textarea></td>
        </tr>
        <tr>
            <td align="center" bgcolor="#ffffff">总账核算会计确认</td>
            <td class="writetd" bgcolor="#ffffff" colspan="7"><textarea class="igray" rows="3" cols="98" name="总账核算会计确认"></textarea></td>
        </tr>
    </tbody>
</table>

 

<input id="wtu1" name="输入查询条件" size="12" />
<input id="b1" οnclick="processData(1) ;" type="button" value="点击查询" style="DISPLAY: ''"/>
<input id="b2" οnclick="processData(2);" type="button" value="点击直接获取最新的" style="DISPLAY: ''"/>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input  οnclick="ShowHelp();" type="button" value="显示帮助" />
<input  οnclick="NoShowHelp();" type="button" value="隐藏帮助" />
<div id="test2" style="DISPLAY: none">
<p><em>&nbsp;</em><font size="1">转账流程:分三种情况<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 收/付款部门意为:收款和付款部门</font></p>
</div>

 

<script type="text/javascript">
function ShowHelp()
{      document.getElementById("test2").style.display="" ;
}
function NoShowHelp()
{      document.getElementById("test2").style.display="none" ;
}

//读出服务器端(jsp)返回的xml格式文档

 // 从指定URL加载XML文档数据对象。
 // @param url 请求地址
 // @param reqText 请求数据
 function loadXMLDoc(url,reqData)
 {
  try
  {
   var xmlHttp;
     if (window.XMLHttpRequest)
     {
      // 创建 Mozilla/FireFox平台的 XMLHttpRequest 对象
       xmlHttp = new XMLHttpRequest();
     } else if (window.ActiveXObject)
     {
      // 创建 IE/Windows 平台的XMLHttp对象
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
        // 用POST,非异步方式开启请求地址,
        xmlHttp.open("POST", url, false);
        // 设置提交数据的格式为Form表单格式。
        // 如要发送xml格式的数据,将此行注释掉即可。或者显式指定为"Content-Type", "text/xml; charset=utf-8"
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        // 发送数据
        xmlHttp.send(reqData);
  //    alert(xmlHttp.responseXML.documentElement);
   // 返回xml文档数据对象
   return xmlHttp.responseXML;
  }catch(exception)
  {
   //alert(exception);
  }
 }
 


 function processData(param1)
 {
           if (param1==1) {
                 var param=document.getElementById("wtu1").value; //取输入的查询条件值
                           } else {
                                var param="a9999";  
                           }
                             
  
  // 请求地址
  var sUrl = "GetValue.jsp?fileno1="+param;
  // 加载xml文档数据对象
  var xmlDOM = loadXMLDoc(sUrl,param);
  // 下面开始将返回的xml数据解析出来,并添加到列表中。
  var root = xmlDOM.documentElement;
  try
  {      
    var sValue = root.getElementsByTagName('city')[0].firstChild.data;
    
var i;
var sa=sValue.split(";;");  //因为在存储过程中将各个字段合并成了一个字符串,每个字段间用";;"隔开,所以在这里再把它们分开出来,便于下面的赋值
 
 // document.getElementById("c1").value=sa[4]; 
  // document.getElementById("c2").value=sa[5];
   document.getElementById("c3").value=sa[3];
  document.getElementById("c4").value=sa[1];     
  document.getElementById("c5").value=sa[6];
  document.getElementById("c6").value=sa[2];
  document.getElementById("c7").value=sa[7];
  document.getElementById("title").value=sa[0];
  $("select[name='fieldstr5']").val(sa[4]);    // 因为OA在生成界面时做了一些转义方面的处理(将文本框的变成了下拉框,没有id,只有name属性,这里只能用jquery处理了
  $("select[name='fieldstr6']").val(sa[5]);

    
  }catch(exception)
  {
   //alert(exception);
  }
 }

 

function initT()
{
 var te1=document.getElementById("wtu1");    //控制操作的权限,只有出现查询条件录入框时,两个按钮才会出现。
 if (te1==null)
 {
    document.getElementById("b1").style.display="none" ;
    document.getElementById("b2").style.display="none" ;
 
 }else {
    document.getElementById("b1").style.display="" ;
    document.getElementById("b2").style.display="" ;
 }

}


initT();
</script>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值