biangeng-approval.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. <!DOCTYPE html>
  2. <html lang=zh-cn>
  3. <head>
  4. <meta charset=utf-8>
  5. <title>纵横计量支付系统</title>
  6. <meta name=description content=计量支付>
  7. <meta name=copyright content=smartcost.com.cn>
  8. <meta name="viewport" content="width=device-width,initial-scale=1.0">
  9. <link rel=stylesheet href="{{rootUrl}}global/css/bootstrap.css">
  10. <link rel="stylesheet" type="text/css" href="{{rootUrl}}global/css/dataTables.bootstrap.min.css">
  11. <link rel="stylesheet" type="text/css" href="{{rootUrl}}global/css/fixedColumns.bootstrap.min.css">
  12. <link rel=stylesheet href={{rootUrl}}global/css/style.css>
  13. <link href="{{rootUrl}}global/css/assets/styles.css" rel="stylesheet">
  14. <script src={{rootUrl}}global/js/jquery-1.9.1.min.js></script>
  15. <script src={{rootUrl}}global/js/bootstrap.js></script>
  16. <script src={{rootUrl}}global/js/jl.js></script>
  17. <style type="text/css" class="init">
  18. #list td input{
  19. width: 100%
  20. }
  21. .allwidth1{
  22. }
  23. .allwidth2{
  24. }
  25. .allwidth3{
  26. text-align:right;
  27. }
  28. .allwidth3 input{
  29. text-align:right;
  30. }
  31. .allwidth5{
  32. text-align:center;
  33. }
  34. div.DTFC_LeftFootWrapper table, div.DTFC_RightFootWrapper table{
  35. border-top: 1px solid #ddd;
  36. }
  37. div.dataTables_scrollFootInner table{
  38. margin-top: 0 !important;
  39. }
  40. .bg-con-warp:nth-child(2) th{
  41. text-align: center !important;
  42. }
  43. </style>
  44. </head>
  45. <body>
  46. <!-- include "top" -->
  47. <div class="wrapContent">
  48. <!-- include "left" -->
  49. <div class="mainContainer" data-spy="scroll" data-target="#navbar-example">
  50. <!--内容-->
  51. <div class="mainContent">
  52. <input id="pmid" type="hidden" value="{{pmArray.pmid}}">
  53. <input id="cid" type="hidden" value="{{cid}}">
  54. <input id="uid" type="hidden" value="{{uid}}">
  55. <input id="verification" type="hidden" value="{{verification}}">
  56. <div class="title" id="xinxi">
  57. <div class="bg-top-btn affix"><button class="btn btn-success showapproval" status="pass">通过</button>&nbsp;<button class="btn btn-warning showapproval" status="back">退回</button>&nbsp;<button class="btn btn-danger showapproval" status="stop">终止</button></div>
  58. <h1><a href="/change/index/tender/{{pmArray.pmid}}" title="返回"><span class="closePanel" aria-hidden="true" data-icon="Z"></span></a>&nbsp;{{changeArray.pnum}}</h1>
  59. </div>
  60. <div class="row">
  61. <div class="col-md-2" id="navbar-example">
  62. <ul class="nav nav-pills nav-stacked bg-nav affix">
  63. <li><a href="#xinxi"><span class="glyphicon glyphicon-info-sign"></span> 变更信息</a></li>
  64. <li><a href="#qingdan"><span class="glyphicon glyphicon-list-alt"></span> 变更清单</a></li>
  65. <li><a href="#fujian"><span class="glyphicon glyphicon-paperclip"></span> 附件</a></li>
  66. <li><a href="#shenpi"><span class="glyphicon glyphicon-check"></span> 审批流程</a></li>
  67. </ul>
  68. </div>
  69. <div class="col-md-10">
  70. <div class="bg-con-warp">
  71. <legend><span class="glyphicon glyphicon-info-sign"></span> 变更信息</legend>
  72. <div class="row">
  73. <div class="col-md-4">
  74. <div class="form-group">
  75. <label>申请编号</label>
  76. <input class="form-control" value="{{changeArray.pnum}}" type="text" readonly disabled>
  77. </div>
  78. <div class="form-group">
  79. <label>工程名称</label>
  80. <input class="form-control" value="{{changeArray.pname}}" type="text" readonly disabled>
  81. </div>
  82. <div class="form-group">
  83. <label>桩号</label>
  84. <input class="form-control" value="{{changeArray.mnum}}" type="text" readonly disabled>
  85. </div>
  86. <div class="form-group">
  87. <label>原设计图名称</label>
  88. <input class="form-control" placeholder="" value="{{changeArray.odname}}" type="text" readonly disabled>
  89. </div>
  90. <div class="form-group">
  91. <label>原图号</label>
  92. <input class="form-control" placeholder="" value="{{changeArray.onum}}" type="text" readonly disabled>
  93. </div>
  94. <div class="form-group">
  95. <label>变更设计图名称</label>
  96. <input class="form-control" placeholder="" value="{{changeArray.cdname}}" type="text" readonly disabled>
  97. </div>
  98. <div class="form-group">
  99. <label>变更图号</label>
  100. <input class="form-control" placeholder="" value="{{changeArray.cnum}}" type="text" readonly disabled>
  101. </div>
  102. </div>
  103. <div class="col-md-4" style="z-index:999;">
  104. <div class="form-group">
  105. <label>工程变更理由及内容</label>
  106. <textarea class="form-control" rows="6" readonly disabled>{{changeArray.description}}</textarea>
  107. </div>
  108. <div class="form-group">
  109. <label>工程变更合同依据</label>
  110. <textarea class="form-control" rows="6" readonly disabled>{{changeArray.basis}}</textarea>
  111. </div>
  112. <div class="form-group">
  113. <label>备注</label>
  114. <textarea class="form-control" rows="3" readonly disabled>{{changeArray.remarks}}</textarea>
  115. </div>
  116. </div>
  117. <div class="col-md-4">
  118. <!-- if !empty({{changeArray.ctype}}) -->
  119. <div class="form-group">
  120. <label>变更类型</label>
  121. <div class="checkbox">
  122. <!-- loop changeArray.ctypelist -->
  123. <label class="checkbox-inline">
  124. <input type="checkbox" checked disabled>{{ctypelist' value.typename}}
  125. </label>
  126. <!-- endloop -->
  127. </div>
  128. </div>
  129. <!-- endif -->
  130. <div class="form-group">
  131. <label>变更类别 </label>
  132. <select class="form-control" disabled><option>{{changeArray.categoryname}}</option></select>
  133. </div>
  134. <div class="form-group">
  135. <label>变更性质 </label>
  136. <select class="form-control" disabled><option>{{changeArray.naturename}}</option></select>
  137. </div>
  138. <div class="form-group">
  139. <label>变更提出单位</label>
  140. <select class="form-control" disabled><option>{{changeArray.companyname}}</option></select>
  141. </div>
  142. <div class="form-group">
  143. <label>费用承担方</label>
  144. <div class="radio">
  145. <label class="radio-inline">
  146. <input id="inlineCheckbox1" value="option1" type="radio" checked disabled> <!-- if {{changeArray.bear}} == 1 -->业主<!-- else -->承包人<!-- endif -->
  147. </label>
  148. </div>
  149. </div>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="bg-con-warp">
  154. <legend id="qingdan"><span class="glyphicon glyphicon-list-alt"></span> 变更清单</legend>
  155. {{listtablehtml}}
  156. </div>
  157. <div class="bg-con-warp">
  158. <legend id="fujian"><span class="glyphicon glyphicon-paperclip"></span> 附件&nbsp;&nbsp;<a href="#addfujian" class="btn btn-primary btn-xs" data-toggle="modal"><span class="glyphicon glyphicon-open"></span> 上传附件</a></legend>
  159. <table class="table table-bordered">
  160. <thead>
  161. <tr><th width="50">序号</th><th>名称</th><th width="90">大小</th><th width="100">上传时间</th><th width="100">操作</th></tr>
  162. </thead>
  163. <tbody id="filesshow">
  164. <!-- if !empty({{attlist}}) -->
  165. <!-- loop attlist -->
  166. <tr><td>{{attlist' value.sort}}</td><td><a href="{{attlist' value.downurl}}">{{attlist' value.filename}}</a></td><td>{{attlist' value.size}}</td><td>{{attlist' value.time}}</td><td><!-- if {{attlist' value.uid}} == {{userid}} --><a id="delatt_{{attlist' value.fid}}" file_id="{{attlist' value.fid}}" class="btn btn-default btn-sm" title="删除附件"><span class="glyphicon glyphicon-trash text-danger"></span></a><!-- endif --></td></tr>
  167. <!-- endloop -->
  168. <!-- endif -->
  169. </tbody>
  170. </table>
  171. </div>
  172. <div class="bg-con-warp">
  173. <legend id="shenpi"><span class="glyphicon glyphicon-check"></span> 审批流程</legend>
  174. <table class="table table-bordered">
  175. <!-- loop auditlist -->
  176. <tr>
  177. <td width="100"><!-- if {{auditlist' value.usite}} == 0 --><i class="glyphicon glyphicon-download text-muted"></i> 提交<!-- else --><!-- if {{auditlist' value.usite}} != {{auditlist' value.lastusite}} --><i class="glyphicon glyphicon-arrow-down text-muted"></i> 审批<!-- else --><i class="glyphicon glyphicon-stop text-muted"></i> 终审<!-- endif --><!-- endif --></td>
  178. <td width="150"><h4 class="media-heading">{{auditlist' value.name}}</h4>
  179. {{auditlist' value.jobs}} </td>
  180. <td width="200">{{auditlist' value.email}}<br>{{auditlist' value.company}}</td>
  181. <!-- if {{auditlist' value.usite}} == 0 -->
  182. <!-- if {{auditlist' value.status}} == 'checked' --><td width="100" class="colGreen">上报完成</td><td>{{formatDate(auditlist' value.sintime)}}<br></td>
  183. <!-- elseif {{auditlist' value.times}} == 0 && {{auditlist' value.status}} == 'checking' --><td width="100" class="colOrange">上报中</td><td><br></td>
  184. <!-- elseif {{auditlist' value.times}} != 0 && {{auditlist' value.status}} == 'checking' --><td width="100" class="colOrange">重新上报中</td><td><br></td>
  185. <!-- endif -->
  186. <!-- else -->
  187. <!-- if {{auditlist' value.status}} == 'checked' --><td width="100" class="colGreen">审批通过</td><td>{{formatDate(auditlist' value.sintime)}}<br>{{auditlist' value.sdesc}}</td>
  188. <!-- elseif {{auditlist' value.status}} == 'back' || {{auditlist' value.status}} == 'backnew' --><td width="100" class="colRed">退回</td><td>{{formatDate(auditlist' value.sintime)}}<br>{{auditlist' value.sdesc}}</td>
  189. <!-- elseif {{auditlist' value.status}} == 'checkno' --><td width="100" class="colRed">审批终止</td><td>{{formatDate(auditlist' value.sintime)}}<br>{{auditlist' value.sdesc}}</td>
  190. <!-- elseif {{auditlist' value.status}} == 'checking' --><td width="100" class="colOrange">审批中</td><td></td>
  191. <!-- else --><td width="100"></td><td></td>
  192. <!-- endif -->
  193. <!-- endif -->
  194. </tr>
  195. <!-- endloop -->
  196. </table>
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. <!--内容-->
  202. </div>
  203. </div>
  204. <!-- 审批弹出 -->
  205. <div id="approval" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  206. <div class="modal-dialog">
  207. <div class="modal-content">
  208. <div class="modal-header">
  209. <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  210. <h4 class="modal-title">审批变更</h4>
  211. </div>
  212. <form method="post" onsubmit="return checksubmit();">
  213. <input type="hidden" id="approvalstatus" value="1">
  214. <input type="hidden" name="approval" value="1">
  215. <input type="hidden" name="clist" id="oneclist" value="">
  216. <input type="hidden" name="lastuid" value="{{lastuid}}">
  217. <div class="modal-body">
  218. <!-- if {{isenduser}} == 1 -->
  219. <div class="form-group approval-success" style="display: none">
  220. <label>申请编号</label>
  221. <input class="form-control" value="{{changeArray.pnum}}" readonly type="text">
  222. </div>
  223. <div class="form-group approval-success" style="display: none">
  224. <label>批复编号</label>
  225. <input class="form-control" id="batchnumber" name="bnum" value="{{changeArray.pnum}}" type="text">
  226. </div>
  227. <!-- endif -->
  228. <div class="form-group">
  229. <label>审批意见</label>
  230. <textarea class="form-control" name="desc" rows="4"></textarea>
  231. </div>
  232. <div class="alert alert-success" style="display: none;" role="alert">审批通过,将由下一审批人继续审批,如果您是终审,变更审批将完成。</div>
  233. <div class="alert alert-warning" style="display: none;" role="alert">审批退回,将由上一审批人重新审批或将由原报重新提交变更。</div>
  234. <div class="alert alert-danger" style="display: none;" role="alert">审批终止,将结束本次审批。</div>
  235. <div id="backform" style="display: none">
  236. <!-- if {{firstcheck}} == 0 -->
  237. <label class="radio-inline">
  238. <input type="radio" name="back" value="1" checked> 退回上一个审批人 <b>{{lastusername}}</b>
  239. </label>
  240. <!-- endif -->
  241. <label class="radio-inline">
  242. <input type="radio" name="back" value="2" <!-- if {{firstcheck}} != 0 -->checked<!-- endif -->> 退回提交人 <b>{{createusername}}</b>
  243. </label>
  244. </div>
  245. </div>
  246. <div class="modal-footer" id="submitform">
  247. <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</button>
  248. <button class="btn btn-success" style="display: none" name="status" value="checked" type="submit">通过</button><button style="display: none" type="submit" name="status" value="back" class="btn btn-warning">退回</button><button style="display: none" type="submit" name="status" value="checkno" class="btn btn-danger">终止</button>
  249. </div>
  250. </form>
  251. </div>
  252. </div>
  253. </div>
  254. <!--添加附件-->
  255. <div class="modal fade" id="addfujian" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  256. <div class="modal-dialog" role="document">
  257. <div class="modal-content">
  258. <div class="modal-header">
  259. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  260. <h4 class="modal-title" id="myModalLabel">附件</h4>
  261. </div>
  262. <div class="modal-body">
  263. <p>上传文件大小最大:10MB</p>
  264. <div class="row">
  265. <div class="col-xs-2">
  266. <button id="uploadBtn" class="btn btn-large btn-primary">选择文件</button>
  267. </div>
  268. </div>
  269. <div class="row">
  270. <div class="col-xs-12">
  271. <div id="progressBox"> </div>
  272. </div>
  273. </div>
  274. <div class="row" style="padding-top:10px;">
  275. <div class="col-xs-10">
  276. <div id="msgBox">
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. </div>
  282. </div>
  283. </div>
  284. <!--添加附件-->
  285. <script type="text/javascript">autoFlashHeight();</script>
  286. <link href="{{rootUrl}}global/css/toastr.css" rel="stylesheet">
  287. <script src="{{rootUrl}}global/js/toastr.min.js"></script>
  288. <script src="{{rootUrl}}global/js/SimpleAjaxUploader.min.js"></script>
  289. <script type="text/javascript" language="javascript" src="{{rootUrl}}global/js/jquery.dataTables.min.js"></script>
  290. <script type="text/javascript" language="javascript" src="{{rootUrl}}global/js/dataTables.bootstrap.min.js"></script>
  291. <script type="text/javascript" language="javascript" src="{{rootUrl}}global/js/dataTables.fixedColumns.min.js"></script>
  292. <script src="{{rootUrl}}global/js/jlzf-change-table.js"></script>
  293. <script>
  294. function escapeTags( str ) {
  295. return String( str )
  296. .replace( /&/g, '&amp;' )
  297. .replace( /"/g, '&quot;' )
  298. .replace( /'/g, '&#39;' )
  299. .replace( /</g, '&lt;' )
  300. .replace( />/g, '&gt;' );
  301. }
  302. $.event.special.valuechange = {
  303. teardown: function (namespaces) {
  304. $(this).unbind('.valuechange');
  305. },
  306. handler: function (e) {
  307. $.event.special.valuechange.triggerChanged($(this));
  308. },
  309. add: function (obj) {
  310. $(this).on('keyup.valuechange cut.valuechange paste.valuechange input.valuechange', obj.selector, $.event.special.valuechange.handler)
  311. },
  312. triggerChanged: function (element) {
  313. var current = element[0].contentEditable === 'true' ? element.html() : element.val()
  314. , previous = typeof element.data('previous') === 'undefined' ? element[0].defaultValue : element.data('previous');
  315. if (current !== previous) {
  316. element.trigger('valuechange', [element.data('previous')]);
  317. element.data('previous', current);
  318. }
  319. }
  320. };
  321. $(function(){
  322. toastr.options = {
  323. "closeButton": false,
  324. "debug": false,
  325. "newestOnTop": false,
  326. "progressBar": false,
  327. "positionClass": "toast-top-right",
  328. "preventDuplicates": false,
  329. "onclick": null,
  330. "showDuration": "300",
  331. "hideDuration": "1000",
  332. "timeOut": "5000",
  333. "extendedTimeOut": "1000",
  334. "showEasing": "swing",
  335. "hideEasing": "linear",
  336. "showMethod": "fadeIn",
  337. "hideMethod": "fadeOut"
  338. };
  339. var table = $('#tablelist').removeAttr('width').DataTable({
  340. columnDefs: [
  341. { className: 'allwidth1', width: 90, targets: 0 },
  342. { className: 'allwidth2', width: 150, targets: 1 },
  343. { className: 'allwidth5', width: 60, targets: 2 },
  344. { className: 'allwidth3',width: 80, targets: '_all' }
  345. ],
  346. fixedColumns: {
  347. leftColumns: 4
  348. }
  349. });
  350. $('.clist input').on("valuechange", function (e, previous) {
  351. var num = $(this).val();
  352. var unitprice = $(this).parents('.clist').children('td').eq(3).text();
  353. var total = num.trim() != '' && unitprice.trim() != '' ? parseFloat(parseFloat(unitprice)*parseFloat(num)).toFixed(2) : '';
  354. $(this).parents('.clist').find('.cnum').text(total);
  355. //统计合计金额
  356. var utotalnum = 0;
  357. $('.clist').each(function(){
  358. var utotal = $(this).find('.cnum').text();
  359. utotalnum = utotal != '' ? parseFloat(utotalnum)+parseFloat(utotal) : parseFloat(utotalnum);
  360. });
  361. $('.utotalnum').eq(1).text(parseFloat(utotalnum).toFixed(2));
  362. });
  363. $('.showapproval').on('click',function(){
  364. var status = $(this).attr('status');
  365. if(status == 'pass'){
  366. $('#submitform').find('.btn-success').show();
  367. $('#submitform').find('.btn-warning').hide();
  368. $('#submitform').find('.btn-danger').hide();
  369. $('#approval').find('.alert-success').show();
  370. $('#approval').find('.alert-warning').hide();
  371. $('#approval').find('.alert-danger').hide();
  372. $('#approval').find('.approval-success').show();
  373. $('#approvalstatus').val(1);
  374. $('#backform').hide();
  375. }else if(status == 'back'){
  376. $('#submitform').find('.btn-success').hide();
  377. $('#submitform').find('.btn-warning').show();
  378. $('#submitform').find('.btn-danger').hide();
  379. $('#approval').find('.alert-success').hide();
  380. $('#approval').find('.alert-warning').show();
  381. $('#approval').find('.alert-danger').hide();
  382. $('#approval').find('.approval-success').hide();
  383. $('#approvalstatus').val(2);
  384. $('#backform').show();
  385. }else{
  386. $('#submitform').find('.btn-success').hide();
  387. $('#submitform').find('.btn-warning').hide();
  388. $('#submitform').find('.btn-danger').show();
  389. $('#approval').find('.alert-success').hide();
  390. $('#approval').find('.alert-warning').hide();
  391. $('#approval').find('.alert-danger').show();
  392. $('#approval').find('.approval-success').hide();
  393. $('#approvalstatus').val(3);
  394. $('#backform').hide();
  395. }
  396. var clist = new Array();
  397. $('.clist input').each(function(){
  398. var value = $(this).val();
  399. var lid = $(this).attr('listid');
  400. clist.push(lid+'_'+value);
  401. });
  402. $('#oneclist').val(clist.join(','));
  403. $('#approval').modal('show');
  404. });
  405. //文件上传
  406. var btn = document.getElementById('uploadBtn'),
  407. msgBox = document.getElementById('msgBox'),
  408. filenum = $('#filesshow tr').length+1;
  409. var uploader = new ss.SimpleUpload({
  410. button: btn,
  411. url: '/change/file/upload/'+ $('#pmid').val() +'/'+$('#cid').val(),
  412. // sessionProgressUrl: '/code/ajaxuploader/sessionProgress.php',
  413. name: 'uploadfile',
  414. multipart: true,
  415. hoverClass: 'hover',
  416. focusClass: 'focus',
  417. responseType: 'json',
  418. multipleSelect: true,
  419. multiple: true,
  420. maxSize: 10240,
  421. data:{uid:$('#uid').val(),verification:$('#verification').val()},
  422. onSubmit: function(filename, extension) {
  423. var progress = document.createElement('div'),
  424. bar = document.createElement('div'),
  425. fileSize = document.createElement('div'),
  426. wrapper = document.createElement('div'),
  427. progressBox = document.getElementById('progressBox');
  428. progress.className = 'progress progress-striped';
  429. bar.className = 'progress-bar progress-bar-success';
  430. fileSize.className = 'size';
  431. wrapper.className = 'wrapper';
  432. progress.appendChild(bar);
  433. wrapper.innerHTML = '<div class="name">'+filename+'</div>';
  434. wrapper.appendChild(fileSize);
  435. wrapper.appendChild(progress);
  436. progressBox.appendChild(wrapper);
  437. this.setProgressBar(bar);
  438. this.setFileSizeBox(fileSize);
  439. this.setProgressContainer(wrapper);
  440. },
  441. onComplete: function( filename, response ) {
  442. if ( !response ) {
  443. toastr.error('无法上传文件');
  444. msgBox.innerHTML = '无法上传文件';
  445. return;
  446. }
  447. var msgBoxfiles = document.createElement('div');
  448. msgBoxfiles.className = 'msg';
  449. if ( response.success === true ) {
  450. toastr.success(filename + ' 上传成功。');
  451. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>' + ' 上传成功。';
  452. msgBox.appendChild(msgBoxfiles);
  453. var filestr = '<tr><td>'+ filenum +'</td><td><a href="'+ response.files.downurl +'">'+ response.files.filename +'</a></td><td>'+ response.files.size +'</td><td>'+ response.files.time +'</td><td><a id="delatt_'+ response.files.id +'" file_id="'+ response.files.id +'" class="btn btn-default btn-sm" title="删除附件"><span class="glyphicon glyphicon-trash text-danger"></span></a></td></tr>';
  454. $('#filesshow').append(filestr);
  455. filenum++;
  456. setTimeout(function(){
  457. msgBox.removeChild(msgBoxfiles);
  458. },3000);
  459. } else {
  460. if ( response.msg ) {
  461. toastr.error(filename + ' ' + response.msg);
  462. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong> ' + response.msg;
  463. msgBox.appendChild(msgBoxfiles);
  464. setTimeout(function(){
  465. msgBox.removeChild(msgBoxfiles);
  466. },3000);
  467. } else {
  468. toastr.error(filename + ' 发生错误,上传失败。');
  469. msgBoxfiles.innerHTML = '<strong>' + escapeTags( filename ) + '</strong>'+ ' 发生错误,上传失败。';
  470. msgBox.appendChild(msgBoxfiles);
  471. setTimeout(function(){
  472. msgBox.removeChild(msgBoxfiles);
  473. },3000);
  474. }
  475. }
  476. },
  477. onError: function() {
  478. var msgBoxfiles = document.createElement('div');
  479. msgBoxfiles.className = 'msg';
  480. toastr.error('无法上传文件');
  481. msgBoxfiles.innerHTML = '无法上传文件';
  482. msgBox.appendChild(msgBoxfiles);
  483. setTimeout(function(){
  484. msgBox.removeChild(msgBoxfiles);
  485. },3000);
  486. }
  487. });
  488. //删除附件
  489. $('body').on('click',"a[id^='delatt_']",function (){
  490. var fid = $(this).attr('file_id');
  491. $(this).parents('tr').remove();
  492. var newsort = 1;
  493. $('#filesshow tr').each(function(){
  494. $(this).children('td').eq(0).text(newsort);
  495. newsort++;
  496. });
  497. filenum = newsort;
  498. $.ajax({
  499. type: 'post',
  500. url: '/change/file/delete',
  501. data:{fid: fid},
  502. dataType: 'json',
  503. success: function(result){
  504. }
  505. })
  506. });
  507. //让回车提交表单方法失效并改成光标往下
  508. $("body").on('keypress','input',function (e) {
  509. var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
  510. if (keyCode == 13) {
  511. var inputs = $('#tablelist input');
  512. for(var i = 0;i<inputs.length;i++){
  513. // 如果是最后一个,则焦点回到第一个
  514. if(i==(inputs.length-1)){
  515. // inputs[0].focus();
  516. inputs[0].select();
  517. break;
  518. }else if(this == inputs[i]){
  519. // inputs[i+1].focus();
  520. inputs[i+1].select();
  521. break;
  522. }
  523. }
  524. return false;
  525. } else {
  526. return true;
  527. }
  528. });
  529. $("#tablelist input[type=text]").focus(function() {
  530. $(this).select();
  531. });
  532. });
  533. function checksubmit() {
  534. if($('#approvalstatus').val() == 1){
  535. if($('#batchnumber').length >0 && $.trim($('#batchnumber').val()) == ''){
  536. toastr.error('批复编号不能为空');
  537. return false;
  538. }
  539. }
  540. }
  541. </script>
  542. </body>