NtkoWebSign.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  1. /**
  2. * WebSign控件。
  3. * 使用方法:
  4. * var obj=new NtkoWebSign();
  5. * loadWebSign(targetId,attachmentId,espFileIdx,widthx,heightx);
  6. * targetId: 文档容器id
  7. * espFileIdx:附件id,如果指定那么根据该文件id加载签章。
  8. *
  9. * saveRemote:保存文档到服务器
  10. *
  11. * @returns {OfficeControl}
  12. */
  13. NtkoWebSign=function(){
  14. {
  15. var _self=this;
  16. this.user = {id:"0",name:"开发用户",groupId:"0",groupName:"开发部"};
  17. this.divId="targetId";
  18. this.webSignId="ntkoocx";
  19. this.webSignObj=null;
  20. this.espFileId="";
  21. this.height="0"; //隐藏
  22. this.width="0"; //隐藏
  23. this.checkForm="";
  24. this.configStyle={user:{},imgStyle:'display: none;',buttonStyle:"display: none;"};
  25. };
  26. /**
  27. * 加载NTKO Web版电子印章控件
  28. * arg targetId 加载控件存放的目标Dom元素(Div)最好是唯一的。
  29. * arg attachmentId NTKO电子印章对象ID。如果不为空,加载对应的文件 最好是唯一的
  30. * espFileIdx 有没有对应的 NTKO电子印章文件(info文件),加载时放入!espFileIdx唯一标识
  31. */
  32. this.loadWebSign = function(targetId,attachmentId,espFileIdx,conf) {
  33. this.divId=targetId;
  34. if((attachmentId!="")&&(attachmentId!=null)&&('undefined' != typeof (attachmentId))){
  35. this.webSignId=attachmentId;
  36. }
  37. this.espFileId=espFileIdx;
  38. this.configStyle=$.extend({},this.configStyle,conf);
  39. this.user = conf.user;
  40. var cabPath=__ctx +"/js/ntkoWebSign/ntkoWebSign.cab#version=4,0,2,0";
  41. var tags="";
  42. //图片 以后扩展有用...
  43. // tags+='<div id="webSignImgSeal" style="'+this.configStyle.imgStyle+'" ><img id="webSignImg" name="webSignImg" src="" /></div>';
  44. //Web印章对象
  45. tags+='<div id="webSignSeal" style="display: block;">';
  46. tags+='<object id="'+this.webSignId+'" classid="clsid:DB5B521C-DA92-48e0-AE32-BDC944858D42" codebase="'+cabPath+'" ';
  47. tags+=' width="'+this.width+'" height="'+this.height+'"> ';
  48. tags+='<param name="BackColor" value="16744576"> ';
  49. tags+='<param name="ForeColor" value="16777215"> ';
  50. tags+='<SPAN STYLE="color:red">不能装载NTKO WebSignHelper 控件。请在检查浏览器的选项中检查浏览器的安全设置。</SPAN> ';
  51. tags+='</object>';
  52. tags+='</div> ';
  53. //用于默认要需要表单验证功能标记 (如果表单设计没有需要表单验证的字段(没有页面对象中没有validate="{'isWebSign':true}")时,这标签可以防止签单报错)
  54. tags+='<input type="hidden" id="isWebSignMark" name="isWebSignMark" lablename="验证功能标记" validate="{\'isWebSign\':true}" value="WebSignTrue" />';
  55. //用于获取鼠标的位置的对象
  56. tags+='<input type="hidden" id="mousePosX" name="mousePosX" value="50" />';
  57. tags+='<input type="hidden" id="mousePosY" name="mousePosY" value="50" />';
  58. //Web印章按钮的相关内容
  59. /* tags+='<div id="webSignButtonSeal" style="'+this.configStyle.buttonStyle+'" >';
  60. tags+='<select name="webSignSelect" id="webSignSelect" value="0" onchange="webSignSelectEvent(\'webSignSelect\');" >';
  61. tags+='<option value="0" selected >Web印章选项</option>';
  62. tags+='<option value="1">手写批注无口令(自动)</option>';
  63. tags+='<option value="2">手写批注</option>';
  64. tags+='<option value="3">手写批注有口令(自动)</option>';
  65. tags+='<option value="4">输入批注</option>';
  66. tags+='<option value="5">本地签章</option>';
  67. tags+='<option value="6">URL签章</option>';
  68. tags+='<option value="7">Ekey签章</option>';
  69. tags+='<option value="8">保存签章</option>';
  70. tags+='<option value="9">清除签章</option>';
  71. tags+='<option value="10">服务器签章</option>';
  72. tags+='</select>';
  73. //用超链接
  74. tags+='<div class="group"><a class="link AddSecHandSignNoPrompt" onclick="AddSecHandSignNoPromptX()" >手写批注无口令(自动)</a></div>';
  75. tags+='<div class="group"><a class="link AddSecHandSign" onclick="AddSecHandSignX()" >手写批注</a></div>';
  76. tags+='<div class="group"><a class="link AddSecHandSignAdjust" onclick="AddSecHandSignAdjustX()" >手写批注有口令(自动)</a></div>';
  77. tags+='<div class="group"><a class="link AddSecKeyBoardComment" onclick="AddSecKeyBoardCommentX()" >输入批注</a></div>';
  78. tags+='<div class="group"><a class="link AddSecSignFromLocal" onclick="AddSecSignFromLocalX(true)" >本地签章</a></div>';
  79. tags+='<div class="group"><a class="link AddSecSignFromURL" onclick="AddSecSignFromURLX()" >URL签章</a></div>';
  80. tags+='<div class="group"><a class="link AddSecSignFromEkey" onclick="AddSecSignFromEkeyX()" >Ekey签章</a></div>';
  81. tags+='<div class="group"><a class="link SavePicAsTempFile" onclick="SavePicAsTempFileX(\'webSignImg\')" >签章保存为本地图片并清除临时文件</a></div>';
  82. tags+='<div class="group"><a class="link ClearAllSigns" onclick="ClearAllSignsX()" >清除签章</a></div>';
  83. tags+='<div class="group"><a class="link SaveToServer" onclick="SaveToServerX()" >保存签章</a></div>';
  84. tags+='</div>';*/
  85. $('#'+this.divId).html(tags);
  86. // alert($('#'+this.divId).html());
  87. this.webSignObj = document.getElementById(this.webSignId);
  88. if('undefined' == typeof (this.webSignObj.StatusCode)){
  89. $.ligerDialog.warn("不能装载WEB印章控件,必须使用IE内核浏览器。可能需要在浏览器的Internet选项安全设置中修改ActiveX配置。",'提示信息',function(){
  90. window.history.back();
  91. });
  92. return false;
  93. }
  94. if((this.espFileId!="")&&(this.espFileId!=null)&&('undefined' != typeof (this.espFileId))){
  95. this.loadFileInfo();
  96. }
  97. };
  98. /**
  99. * 获取webSignObj,代表当前的电子印章对象
  100. */
  101. this.getntkoWebSignObj = function() {
  102. // this.webSignObj.IsShowRect = false;
  103. return this.webSignObj;
  104. };
  105. //注意:以下四个方法是接管印章事件的内部方法。
  106. //NtkoReservedEvent_BeforeDoSecSign如果返回true,标识可以继续盖章,如果返回false,标识取消印章。
  107. //可以在这个函数中,调用Helper对象的DoWebExecute2方法查询服务器是否可以继续盖章并返回true或者false.
  108. this.NtkoReservedEvent_BeforeDoSecSign = function (UserName,SignName,SignUser,SignSN)
  109. {
  110. return true;
  111. // alert("1NtkoReservedEvent_BeforeDoSecSign:UserName="+UserName+",SignName="+SignName+",SignUser="+SignUser+",SignSN="+SignSN);
  112. try
  113. {
  114. var retValue = this.webSignObj.DoWebExecute2("http://192.168.0.100/testchecksign/checksign.asp",
  115. "UserName="+UserName+"&SignName="+SignName+"&SignUser="+SignUser+"&SignSN="+SignSN);
  116. // alert(retValue);
  117. return true;
  118. }
  119. catch(err)
  120. {
  121. alert("查询印章可用状态错误!"+ err.number + ":" + err.description);
  122. return false;
  123. }
  124. };
  125. //NtkoReservedEvent_BeforeDoSecSignFromEkey如果返回true,标识可以继续盖章,如果返回false,标识取消印章。
  126. //可以在这个函数中,调用Helper对象的DoWebExecute2方法查询服务器是否可以继续盖章并返回true或者false.
  127. this.NtkoReservedEvent_BeforeDoSecSignFromEkey = function (UserName,SignName,SignUser,SignSN,EkeySN)
  128. {
  129. return true;
  130. // alert("NtkoReservedEvent_BeforeDoSecSignFromEkey:UserName="+UserName+",SignName="+SignName+",SignUser="+SignUser+",SignSN="+SignSN+",EkeySN="+EkeySN);
  131. try
  132. {
  133. var retValue = this.webSignObj.DoWebExecute2("http://192.168.0.100/testchecksign/checksign.asp",
  134. "UserName="+UserName+"&SignName="+SignName+"&SignUser="+SignUser+"&SignSN="+SignSN+"&EkeySN="+EkeySN);
  135. // alert(retValue);
  136. return true;
  137. }
  138. catch(err)
  139. {
  140. alert("查询印章可用状态错误!"+ err.number + ":" + err.description);
  141. return false;
  142. }
  143. };
  144. //该事件在印章被删除之后触发。
  145. this.NtkoReservedEvent_AfterSecSignDeleted = function(UserName,SignName,SignUser,SignSN,EkeySN,UserData)
  146. {
  147. //alert("3NtkoReservedEvent_AfterSecSignDeleted:UserName="+UserName+",SignName="+SignName+",SignUser="+SignUser+",SignSN="+SignSN+",EkeySN="+EkeySN+",UserData="+UserData);
  148. };
  149. //NtkoReservedEvent_BeforeSecSignCheckRight事件在印章需要验证权限之前被触发。
  150. /***************************************************************
  151. 其中的SignType:印章类型.0标识印章.1标识手写签名,2标识键盘批注
  152. 返回0,1,2.
  153. 0:标识用户自定义权限验证成功,且不需要系统进一步验证。
  154. 1:标识用户自定义权限验证失败,且不需要系统进一步验证。
  155. 2:标识用户自定义权限不起作用,需要系统进一步验证(用自身方法)
  156. /***************************************************************/
  157. this.NtkoReservedEvent_BeforeSecSignCheckRight = function(UserName,SignName,SignUser,SignSN,EkeySN,SignType,UserData)
  158. {
  159. // alert("BeforeSecSignCheckRight:UserName="+UserName+",SignName="+SignName+",SignUser="+SignUser+
  160. // ",SignSN="+SignSN+",EkeySN="+EkeySN+",SignType="+SignType+",UserData="+UserData);
  161. /***********************************************************************
  162. //以下可以通过调用Helper对象的DoWebExecute2方法查询服务器
  163. try
  164. {
  165. var retValue = ntkoobj.DoWebExecute2("http://192.168.0.100/testchecksign/checkright.asp",
  166. "UserName="+UserName+"&SignName="+SignName+"&SignUser="+SignUser+"&SignSN="+SignSN+"&EkeySN="+EkeySN);
  167. alert(retValue);
  168. return 0; //0:标识用户自定义权限验证成功,且不需要系统进一步验证。
  169. }
  170. catch(err)
  171. {
  172. alert("查询印章权限错误!"+ err.number + ":" + err.description);
  173. return 1; //1:标识用户自定义权限验证失败,且不需要系统进一步验证。
  174. }
  175. *****************************************************************/
  176. return 2; //2:标识用户自定义权限不起作用,需要系统进一步验证(用自身方法)
  177. };
  178. /**
  179. * 增加有提示的手写WEB批注(没有自动对正大小)
  180. */
  181. this.AddSecHandSign=function()
  182. {
  183. var secSignObj = this.webSignObj.AddSecSignOcx("SecHandSignID",20,20);
  184. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  185. secSignObj.HandSignPenColor = 14402205; // 此数值计算方式为:假设需要设定颜色值RGB,则value = (blue * 65536) + (green * 256) + red
  186. secSignObj.HandSignPenWidth = 5; //笔宽为5
  187. secSignObj.HandSignPenStyle = 0; //笔形为1
  188. //secSignObj.IsReadOnlyMode = true;
  189. this.webSignObj.AddSecHandSign(secSignObj,_self.user.name,0,false,false,true,true,null,true);
  190. };
  191. /**
  192. * 增加没有提示的手写WEB批注(自动对正大小)
  193. */
  194. this.AddSecHandSignNoPrompt=function()
  195. {
  196. var strxy = this.getXy();
  197. if( strxy!="" && (strxy.split("&").length==2)){
  198. var arrys = strxy.split("&");
  199. var secSignObj = this.webSignObj.AddSecSignOcx("SecHandSignID",arrys[0],arrys[1]);
  200. if(secSignObj)
  201. {
  202. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  203. // secSignObj.HandSignPenColor = 0; // 此数值计算方式为:假设需要设定颜色值RGB,则value = (blue * 65536) + (green * 256) + red
  204. secSignObj.HandSignPenWidth = 3; //笔宽为5
  205. secSignObj.HandSignPenStyle = 0; //笔形为1
  206. secSignObj.UserData = "my user data";
  207. this.webSignObj.AddSecHandSign(secSignObj,_self.user.name,2,false,false,true,false,null,false,80);
  208. }
  209. }
  210. };
  211. /**
  212. * 增加有提示的手写WEB批注(自动对正大小)
  213. */
  214. this.AddSecHandSignAdjust=function()
  215. {
  216. var secSignObj = this.webSignObj.AddSecSignOcx("SecHandSignID",20,20);
  217. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  218. this.webSignObj.AddSecHandSign(secSignObj,_self.user.name,0,false,false,true,true,null,true,50);
  219. };
  220. /**
  221. * 增加输入WEB批注(自动对正大小)
  222. */
  223. this.AddSecKeyBoardComment=function()
  224. {
  225. var secSignObj = this.webSignObj.AddSecSignOcx("SecKeyBoardCommentID",20,20);
  226. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  227. this.webSignObj.AddSecKeyBoardComment(secSignObj,_self.user.name,0,false,false,true,false);
  228. };
  229. /**
  230. * 输入有提示的本地WEB签章批注
  231. */
  232. this.AddSecSignFromLocal=function(isAddComment)
  233. {
  234. var secSignObj = this.webSignObj.AddSecSignOcx("SecSignFromLocalID",20,20);
  235. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  236. this.webSignObj.AddSecSignFromLocal(secSignObj,_self.user.name,'',true,1,false,false,true,true,null,isAddComment);
  237. };
  238. /**
  239. * 输入有提示的远程(URL)WEB签章批注
  240. */
  241. this.AddSecSignFromURL=function()
  242. {
  243. var secSignObj = this.webSignObj.AddSecSignOcx("SecSignFromURLID",20,20);
  244. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  245. //secSignObj.PositionTagId = "JiaFanSpan";//定义印章加盖的位置 JiaFanSpan 一般为DIV
  246. this.webSignObj.AddSecSignFromURL(secSignObj,_self.user.name,
  247. 'http://www.ntko.com/admin/ocv14_test.nsf/vwSigns/2C0B608DD5844CA848256E46000A4C3D/$file/zhang_hetong.gif.esp?openelement',
  248. 2,false,false,true,false,"11111111",false);
  249. };
  250. /**
  251. * 从服务器中选印章对表单进行签章
  252. */
  253. this.AddSecSignFromService=function(){
  254. var strxy = this.getXy();
  255. if( strxy!="" && (strxy.split("&").length==2)){
  256. var arrys = strxy.split("&");
  257. // alert("X:"+arrys[0]+" Y:"+arrys[1]);
  258. var url = __ctx + "/platform/system/seal/dialog.ht";
  259. var winArgs = "dialogWidth=800px;dialogHeight=600px;help=0;status=0;scroll=1;center=0;resizable=1;";
  260. url = url.getNewUrl();
  261. //var retVal = window.showModalDialog(url, "", winArgs);
  262. /*if(typeof(retVal)==undefined){
  263. return false;
  264. }
  265. if(retVal.fileId.isEmpty()){
  266. return false;
  267. }
  268. var signUrl=__ctx + "/platform/system/sysFile/getFileById.ht?fileId=" + retVal.fileId;
  269. try{
  270. var secSignObj = this.webSignObj.AddSecSignOcx("SecSignFromURLID",arrys[0],arrys[1]);
  271. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  272. //secSignObj.PositionTagId = "JiaFanSpan";//定义印章加盖的位置 JiaFanSpan 一般为DIV
  273. this.webSignObj.AddSecSignFromURL(secSignObj,_self.user.name,signUrl,2,false,false,true,false,"",false);
  274. }catch(err){
  275. alert("AddSecSignFromService:" +err.name + ": " + err.message);
  276. return -1;
  277. }*/
  278. var that =this;
  279. /*KILLDIALOG*/
  280. DialogUtil.open({
  281. height:600,
  282. width: 800,
  283. title : '签章',
  284. url: url,
  285. showMax: false,
  286. showToggle: true,
  287. showMin: false,
  288. isResize: true,
  289. slide: false,
  290. //自定义参数
  291. sucCall:function(retVal){
  292. if(typeof(retVal)==undefined){
  293. return;
  294. }
  295. if(retVal.fileId.isEmpty()){
  296. return;
  297. }
  298. var signUrl=__ctx + "/platform/system/sysFile/getFileById.ht?fileId=" + retVal.fileId;
  299. try{
  300. var secSignObj = that.webSignObj.AddSecSignOcx("SecSignFromURLID",arrys[0],arrys[1]);
  301. secSignObj.WebSignInfo = that.checkPrintForm(); //要Web签章验证的信息;
  302. //secSignObj.PositionTagId = "JiaFanSpan";//定义印章加盖的位置 JiaFanSpan 一般为DIV
  303. that.webSignObj.AddSecSignFromURL(secSignObj,_self.user.name,signUrl,2,false,false,true,false,"",false);
  304. }catch(err){
  305. alert("AddSecSignFromService:" +err.name + ": " + err.message);
  306. return -1;
  307. }
  308. }
  309. });
  310. }
  311. };
  312. /**
  313. * 输入有提示的Ekey硬件WEB签章批注
  314. */
  315. this.AddSecSignFromEkey=function()
  316. {
  317. if(this.webSignObj!=null){
  318. /*if(!this.webSignObj.IsEkeyConnected)
  319. {
  320. alert("没有检测到EKEY.请将EKEY插入到计算机!然后点击确定继续.");
  321. return false;
  322. }*/
  323. var secSignObj = this.webSignObj.AddSecSignOcx("SecSignFromEkeyID",20,20);
  324. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  325. this.webSignObj.AddSecSignFromEkey(secSignObj,_self.user.name,2,false,false,true,true);
  326. }
  327. };
  328. /**
  329. * 输入有提示的Ekey硬件WEB签章批注
  330. */
  331. this.AddSecSignFromEkeyWithSignIndex=function()
  332. {
  333. if(this.webSignObj!=null){
  334. /*if(!this.webSignObj.IsEkeyConnected)
  335. {
  336. alert("没有检测到EKEY.请将EKEY插入到计算机!然后点击确定继续.");
  337. return false;
  338. }*/
  339. var secSignObj = this.webSignObj.AddSecSignOcx("SecSignFromEkeyID",20,20);
  340. secSignObj.WebSignInfo = this.checkPrintForm(); //要Web签章验证的信息;
  341. this.webSignObj.AddSecSignFromEkey(secSignObj,_self.user.name,2,false,false,true,true,null,true,1/*SignIndex*/);
  342. }
  343. };
  344. /**
  345. * 获取所有签章的相关信息
  346. */
  347. this.ShowSignsInfo=function()
  348. {
  349. var objs = document.getElementsByTagName("object");
  350. for(var i=0;i<objs.length;i++)
  351. {
  352. var obj = objs(i);
  353. if(obj.classid == "clsid:AA4B3728-B61C-4bcc-AEE7-0AA47D3C0DDA")
  354. {
  355. var info = "";
  356. info += "SignName="+obj.SignName;
  357. info += ",Signer="+obj.Signer;
  358. info += ",SignUser="+obj.SignUser;
  359. info += ",SignSource="+obj.SignSource;
  360. info += ",SignTime="+obj.SignTime;
  361. info += ",SignSN="+obj.SignSN;
  362. info += ",EkeySN="+obj.EkeySN;
  363. info += ",PrintMode="+obj.PrintMode;
  364. alert(info);
  365. }
  366. }
  367. };
  368. /**
  369. * 清除所有印章
  370. */
  371. this.ClearAllSigns=function() //清除所有印章
  372. {
  373. var objs = document.getElementsByTagName("object");
  374. for(var i=objs.length-1;i>=0;i--)
  375. {
  376. var obj = objs(i);
  377. if(obj.classid == "clsid:AA4B3728-B61C-4bcc-AEE7-0AA47D3C0DDA")
  378. {
  379. obj.Close();
  380. obj.removeNode();
  381. }
  382. }
  383. };
  384. /**
  385. * 是否支持印章对象对表单验证
  386. */
  387. this.AllCheckDocChange=function(mark)
  388. {
  389. var objs = document.getElementsByTagName("object");
  390. for(var i=0;i<objs.length;i++)
  391. {
  392. var obj = objs(i);
  393. if(obj.classid == "clsid:AA4B3728-B61C-4bcc-AEE7-0AA47D3C0DDA")
  394. {
  395. obj.CheckDocChange(mark);
  396. }
  397. }
  398. };
  399. /**
  400. * 保存为本地图片并清除临时文件
  401. */
  402. this.SavePicAsTempFile = function(imgDivid)
  403. {
  404. var objs = document.getElementsByTagName("object");
  405. var signscount = 0;
  406. for(var i=0;i<objs.length;i++)
  407. {
  408. var obj = objs(i);
  409. if(obj.classid == "clsid:AA4B3728-B61C-4bcc-AEE7-0AA47D3C0DDA") //找到一个印章
  410. {
  411. signscount++;
  412. var tempName = obj.SavePicAsTempFile();
  413. alert("第" + signscount + "个章的临时文件:" + tempName);
  414. document.getElementById(imgDivid).src = "";
  415. document.getElementById(imgDivid).src = tempName;
  416. // document.all("tmpimg").src = "";
  417. // document.all("tmpimg").src = tempName;
  418. alert(document.getElementById(imgDivid).src);
  419. // alert("准备删除第"+signscount+"个章的临时文件");
  420. document.getElementById(imgDivid).style.display='block';
  421. obj.ClearTempFile();
  422. }
  423. }
  424. };
  425. /**
  426. * 设定所有印章只读
  427. */
  428. this.setAllsignsReadOnlyMode = function(isReadOnlyMode)
  429. {
  430. var objs = document.getElementsByTagName("object");
  431. for(var i=0;i<objs.length;i++)
  432. {
  433. var obj = objs(i);
  434. if(obj.classid == "clsid:AA4B3728-B61C-4bcc-AEE7-0AA47D3C0DDA")
  435. {
  436. obj.IsReadOnlyMode = isReadOnlyMode;
  437. }
  438. }
  439. };
  440. /**
  441. * 获取要检验的表单数据
  442. */
  443. this.checkPrintForm = function(){
  444. var aryInput = $("input:text,input:hidden,textarea,select");
  445. // var aryInput = $("input:text,input:hidden,textarea,select,input:checkbox,input:radio,span");
  446. this.checkForm='';
  447. for (var i = 0, len = aryInput.length; i < len; i++) {
  448. var tmp = aryInput.get(i);
  449. // var validRule = tmp.validate; //获取自定义属性时,IE8或以下才可以用,IE8以上的都不能稳定获取!
  450. var validRule = tmp.getAttribute("validate"); //获取自定义属性IE7、8、9通用
  451. if ( validRule != null && validRule != '' && 'undefined' != validRule.toLowerCase() ){
  452. var json = eval('(' + validRule + ')');
  453. if(json.isWebSign){
  454. var name = tmp.getAttribute("lablename"); //字段说明名称
  455. if( (name=="")||(name==null)||('undefined'==typeof(name)) ){
  456. var arrys = (tmp.name).split(":"); //tmp.name 固定属性IE7、8、9都可以获取!
  457. name = arrys[arrys.length-1];
  458. }
  459. this.checkForm += name + '=' + tmp.getAttribute("name") +';'
  460. }
  461. }
  462. }
  463. if(this.checkForm.length>0){
  464. this.checkForm = this.checkForm.substr(0,this.checkForm.length-1) //去年最后一个字符
  465. }
  466. return this.checkForm;
  467. };
  468. /**
  469. * 保存签章相关信息
  470. */
  471. this.SaveToServer = function()
  472. {
  473. var path= __ctx + "/platform/system/sysFile/saveFileInfo.ht";
  474. var uploadName = this.webSignId +"_pdf"
  475. var params="fileId=" + this.espFileId + "&uploadName="+ uploadName;
  476. var curDate=new Date();
  477. var espName=Math.random()*curDate.getMilliseconds()*10000;
  478. //保存数据到服务器。
  479. var retstr = this.webSignObj.SaveToURL(path,uploadName,params,espName+".info",0);
  480. if(retstr!=""&&('undefined' != typeof (retstr))&& retstr>0){
  481. this.espFileId = retstr;
  482. return retstr;
  483. }else{
  484. return "";
  485. }
  486. };
  487. /**
  488. * 加载签章相关信息
  489. */
  490. this.loadFileInfo = function()
  491. {
  492. if((this.espFileId!="")&&(this.espFileId!=null)&&('undefined' != typeof (this.espFileId))){
  493. var path= __ctx + "/platform/system/sysFile/getFileById.ht?fileId=" + this.espFileId;
  494. this.webSignObj.LoadFromURL(path);
  495. if (0 != this.webSignObj.StatusCode) {
  496. return false;
  497. }
  498. }
  499. };
  500. /**
  501. * 鼠标获取位置
  502. */
  503. this.getXy=function()
  504. {
  505. var mousePosX = document.getElementById('mousePosX').value;
  506. var mousePosY = document.getElementById('mousePosY').value;
  507. var str = mousePosX +"&"+ mousePosY;
  508. document.getElementById('mousePosX').value = '50';
  509. document.getElementById('mousePosY').value = '50';
  510. if(mousePosX=='50' && mousePosY=='50'){
  511. if(confirm("当前签章将保存位置:横坐标("+mousePosX+"px),纵坐标("+mousePosY+"px)!确认不需要更改吗?")){
  512. return str;
  513. }else{
  514. alert("请通过双击鼠标左键确定将选择的印章位置,再进行签章!");
  515. return "";
  516. }
  517. }else{
  518. return str;
  519. }
  520. };
  521. };