list.html 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  6. <title>付款申请</title>
  7. <link rel="stylesheet" th:href="@{/lib/layui/css/layui.css}" media="all">
  8. <link rel="stylesheet" th:href="@{/css/public.css}" media="all">
  9. <link rel="stylesheet" th:href="@{/lib/font-awesome-4.7.0/css/font-awesome.min.css}" media="all">
  10. </head>
  11. <body>
  12. <div class="layuimini-container">
  13. <div class="layuimini-main">
  14. <fieldset class="table-search-fieldset">
  15. <legend>搜索信息(<b>收起-展开</b>)</legend>
  16. <div id="search-div" style="margin: 5px 10px -10px 0px">
  17. <form class="layui-form" action="" lay-filter="search-form">
  18. <div class="layui-form-item">
  19. <div class="layui-inline">
  20. <label class="layui-form-label" style="width: 70px;">项目名称</label>
  21. <div class="layui-input-inline" style="width: 140px;">
  22. <input type="text" name="rwsmc" id="rwsmc" autocomplete="off" class="layui-input">
  23. </div>
  24. </div>
  25. <div class="layui-inline">
  26. <label class="layui-form-label" style="width: 70px;">ERP编号</label>
  27. <div class="layui-input-inline" style="width: 140px;">
  28. <input type="text" name="erpbh" id="erpbh" autocomplete="off" class="layui-input">
  29. </div>
  30. </div>
  31. <div class="layui-inline">
  32. <label class="layui-form-label" style="width: 90px;">科研编号</label>
  33. <div class="layui-input-inline" style="width: 140px;">
  34. <input type="text" name="bh" id="bh" autocomplete="off" class="layui-input">
  35. </div>
  36. </div>
  37. <div class="layui-inline">
  38. <label class="layui-form-label" style="width: 70px;">年份</label>
  39. <div class="layui-input-inline" style="width: 140px;">
  40. <select name="nf" id="nf" lay-filter="status" class="layui-select">
  41. <option value="0">全部</option>
  42. <option th:each="item: ${yearList}" th:text="${item}" th:value="${item}"></option>
  43. </select>
  44. </div>
  45. </div>
  46. <div class="layui-inline">
  47. <label class="layui-form-label" style="width: 60px;">审批状态</label>
  48. <div class="layui-input-inline" style="width: 150px;">
  49. <select name="spzt" lay-filter="status" class="layui-select">
  50. <option value="">全部</option>
  51. <!-- Assume 'approveList' is populated with options -->
  52. <option th:each="item: ${approveList}" th:text="${item.name}" th:value="${item.name}"></option>
  53. </select>
  54. </div>
  55. </div>
  56. <div class="layui-inline">
  57. <label class="layui-form-label" style="width: 70px;">费用申请</label>
  58. <div class="layui-input-inline" style="width: 140px;">
  59. <input type="text" name="fysqmc" id="fysqmc" autocomplete="off" class="layui-input">
  60. </div>
  61. </div>
  62. <div class="layui-inline">
  63. <label class="layui-form-label" style="width: 70px;">创建人</label>
  64. <div class="layui-input-inline" style="width: 140px;">
  65. <input type="text" name="cjr" id="cjr" autocomplete="off" class="layui-input">
  66. </div>
  67. </div>
  68. <div class="layui-inline" style="margin-left: 20px">
  69. <label class="layui-form-label" style="width: 70px;">创建时间</label>
  70. <div class="layui-input-inline" style="width: 140px;">
  71. <input type="text" name="cjsj1" id="cjsj1" placeholder="开始日期" class="layui-input" readonly>
  72. </div>
  73. <div class="layui-form-mid">-</div>
  74. <div class="layui-input-inline" style="width: 140px;">
  75. <input type="text" name="cjsj2" id="cjsj2" placeholder="结束日期" class="layui-input" readonly>
  76. </div>
  77. </div>
  78. <div class="layui-inline">
  79. <button type="submit" class="layui-btn" lay-submit lay-filter="data-search-btn"><i class="layui-icon">&#xe615;</i> 搜索</button>
  80. <button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-reset-btn"><i class="layui-icon layui-icon-refresh"></i> 重置</button>
  81. </div>
  82. </div>
  83. </form>
  84. </div>
  85. </fieldset>
  86. <script type="text/html" id="toolbarDemo">
  87. <div class="layui-btn-container">
  88. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="edit">
  89. <i class="layui-icon layui-icon-edit" style="font-size: 10px;"></i>编辑
  90. </button>
  91. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="view">
  92. <i class="layui-icon layui-icon-file" style="font-size: 10px;"></i>查看
  93. </button>
  94. <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delete">
  95. <i class="layui-icon layui-icon-delete" style="font-size: 10px;"></i>删除
  96. </button>
  97. <button class="layui-btn layui-btn-sm data-add-btn" lay-event="tjApprove">
  98. <i class="layui-icon layui-icon-ok" style="font-size: 10px;"></i>提交审批
  99. </button>
  100. <button class="layui-btn layui-btn-sm data-add-btn" lay-event="tjrevokeApprove">
  101. <i class="layui-icon layui-icon-edit" style="font-size: 10px;"></i>撤销审批
  102. </button>
  103. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="spOption">
  104. <i class="layui-icon layui-icon-edit" style="font-size: 10px;"></i>审核
  105. </button>
  106. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-event="spList">
  107. <i class="layui-icon layui-icon-list" style="font-size: 10px;"></i>审批列表
  108. </button>
  109. <button class="layui-btn layui-btn-sm iconfont layui-icon-export" lay-event="export" style="background-color: black">
  110. <i class="layui-icon" style="font-size: 10px;"></i>导出列表
  111. </button>
  112. <!-- <button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="nullify">-->
  113. <!-- <i class="layui-icon layui-icon-delete" style="font-size: 10px;"></i>作废-->
  114. <!-- </button>-->
  115. <!-- <button class="layui-btn layui-btn-sm" lay-event="exportExcel">
  116. <i class="layui-icon layui-icon-export" style="font-size: 10px;"></i>导出列表
  117. </button>-->
  118. </div>
  119. </script>
  120. <input type="hidden" id="userId" name="userId" class="layui-input" th:value="${userId}">
  121. <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
  122. </div>
  123. </div>
  124. <script>
  125. // 当文档加载完成后执行以下操作
  126. document.addEventListener('DOMContentLoaded', function() {
  127. // 获取下拉框元素
  128. var selectElement = document.getElementById('nf');
  129. // 获取当前年份并转换为字符串
  130. var currentYear = new Date().getFullYear().toString();
  131. // 遍历下拉框选项
  132. for (var i = 0; i < selectElement.options.length; i++) {
  133. // 如果选项的值与当前年份相匹配,则将该选项设为被选中状态并结束循环
  134. if (selectElement.options[i].value === currentYear) {
  135. selectElement.options[i].selected = true;
  136. break;
  137. }
  138. }
  139. });
  140. </script>
  141. <script>
  142. // 获取所有需要去除空格的输入框
  143. const inputs = [
  144. document.getElementById('rwsmc'),
  145. document.getElementById('erpbh'),
  146. document.getElementById('bh'),
  147. document.getElementById('cjr'),
  148. document.getElementById('fysqmc')
  149. ];
  150. // 为每个输入框添加事件监听
  151. inputs.forEach(input => {
  152. input.addEventListener('input', function() {
  153. this.value = this.value.replace(/\s+/g, ''); // 去除空格
  154. });
  155. });
  156. </script>
  157. <script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
  158. <script th:src="@{/lib/layui/layui.js}" charset="utf-8"></script>
  159. <script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
  160. <script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
  161. <script th:src="@{/lib/xm-select-v1.2.2/xm-select.js}" charset="utf-8"></script>
  162. <script th:inline="javascript" type="text/javascript">
  163. AjaxUtil.ctx = /*[[@{/}]]*/'';
  164. var updateflag = 0;
  165. var xmApproval = {};
  166. layui.use(['form', 'table', 'tableSelect', 'laydate'], function () {
  167. var form = layui.form,
  168. laydate = layui.laydate,
  169. table = layui.table;
  170. var userId = $("#userId").val();
  171. var selectYear = $("#nf").val();
  172. //日期
  173. laydate.render({
  174. elem: '#cjsj1'
  175. });
  176. laydate.render({
  177. elem: '#cjsj2'
  178. });
  179. var currTable = table.render({
  180. elem: '#currentTableId',
  181. url: AjaxUtil.ctx + 'staPayapproval/list/?nf='+ selectYear,
  182. method: 'post',
  183. toolbar: '#toolbarDemo',
  184. // defaultToolbar: ['filter', 'print'],
  185. cols: [
  186. [
  187. {type: "checkbox", fixed: 'left'},
  188. {type: 'numbers', fixed: 'left'},
  189. {field: 'spzt', width: '11%',title: '审批状态', fixed: 'left'},
  190. {field: 'rwsmc', width: '11%', title: '项目名称', fixed: 'left'},
  191. {field: 'bh', width: '11%', title: '科研编号'},
  192. {field: 'erpbh', width: '10%', title: 'ERP编号'},
  193. {field: 'nf',width: '7%',title: '年份'},
  194. {field: 'htmc', width: '11%', title: '合同'},
  195. {field: 'fysqmc', width: '15%',title: '费用申请'},
  196. {field: 'bcfkje', width: '10%', title: '本次付款金额(万元)',align: 'right'},
  197. {field: 'fkjhmc', width: '12%', title: '付款计划'},
  198. {field: 'cjrxm', width: '7%', title: '创建人'},
  199. {field: 'cjrq', width: '8%', title: '创建时间', align: 'center'},
  200. {field: 'htje', title: '合同金额(万元)' ,width: '8%',align: 'right'}
  201. ]
  202. ],
  203. autoSort: false,
  204. limits: [10, 15, 20, 25, 50, 100],
  205. limit: 10,
  206. page: true,
  207. skin: 'grid',
  208. parseData: function(res){ //res 即为原始返回的数据
  209. return {
  210. "code": res.code, //解析接口状态
  211. "msg": res.message, //解析提示文本
  212. "count": res.data.total, //解析数据长度
  213. "data": res.data.rows //解析数据列表
  214. };
  215. },
  216. done: function(res, curr, count) { // done为数据渲染完的回调
  217. // 测试打印出后端返回的权限列表
  218. // let permissionSet = [[${permissionSet}]];
  219. // console.log(JSON.stringify(permissionSet));
  220. }
  221. });
  222. // 监听搜索操作
  223. form.on('submit(data-search-btn)', function (data) {
  224. // 执行搜索重载
  225. currTable.reload({
  226. page: {
  227. curr: 1 // 页码从1开始
  228. },
  229. where: form.val("search-form")
  230. });
  231. return false;
  232. });
  233. // 监听重置操作
  234. form.on('submit(data-reset-btn)', function (data) {
  235. form.val("search-form", {
  236. "erpbh": '',
  237. "xmmc": '',
  238. "bh": '',
  239. "nf": '0',
  240. "spzt": '',
  241. "cjr": '',
  242. "cjsj1":'',
  243. "cjsj2":'',
  244. "mc":'',
  245. "bzr":'',
  246. "fysqmc":''
  247. });
  248. // 执行搜索重载
  249. currTable.reload({
  250. page: {
  251. curr: 1
  252. },
  253. where: form.val("search-form")
  254. });
  255. return false;
  256. });
  257. // 监听工具栏事件
  258. table.on('toolbar(currentTableFilter)', function (obj) {
  259. if (obj.event == 'edit') {
  260. var dataBudget = table.cache["currentTableId"];
  261. if(dataBudget.length == 0)
  262. return;
  263. var checkStatus = table.checkStatus('currentTableId')
  264. , data = checkStatus.data;
  265. if (data == null || data.length === 0) {
  266. Message.warning("请选择要编辑的付款申请!", 1500);
  267. } else if (data.length > 1) {
  268. Message.warning("请选择一条记录进行编辑!", 1500);
  269. } else if (data[0].spzt == "作废") {
  270. Message.warning("该付款申请已作废!", 1500);
  271. } else if (data[0].spzt == "审批结束") {
  272. Message.warning("该付款申请已审批结束,不能修改!", 2000);
  273. } else if (data[0].spzt != null && data[0].spzt.indexOf("未提交") < 0) {
  274. Message.warning("该付款申请审批中,不能修改!", 2000);
  275. } else {
  276. var index = layer.open({
  277. title: '编辑付款申请',
  278. type: 2,
  279. shade: 0.3,
  280. maxmin: true,
  281. shadeClose: true,
  282. area: ['950px', '750px'],
  283. content: AjaxUtil.ctx + "staPayapproval/forUpdate/" +data[0].id,
  284. end: function () {
  285. if (updateflag == 1)
  286. currTable.reload();
  287. updateflag = 0;
  288. layer.close(index);
  289. }
  290. });
  291. }
  292. }
  293. else if (obj.event == 'view') {
  294. var dataBudget = table.cache["currentTableId"];
  295. if(dataBudget.length == 0)
  296. return;
  297. var checkStatus = table.checkStatus('currentTableId')
  298. , data = checkStatus.data;
  299. if (data == null || data.length === 0) {
  300. Message.warning("请选择要查看的付款申请!", 1500);
  301. } else if (data.length > 1) {
  302. Message.warning("请选择一条记录进行查看!", 1500);
  303. } else {
  304. var index = layer.open({
  305. title: '查看付款申请',
  306. type: 2,
  307. shade: 0.3,
  308. maxmin: true,
  309. shadeClose: true,
  310. area: ['950px', '750px'],
  311. content: AjaxUtil.ctx + "staPayapproval/forView/" +data[0].id,
  312. end: function () {
  313. layer.close(index);
  314. }
  315. });
  316. }
  317. }
  318. else if (obj.event === 'delete') { // 监听删除操作
  319. var dataBudget = table.cache["currentTableId"];
  320. if(dataBudget.length == 0)
  321. return;
  322. var checkStatus = table.checkStatus('currentTableId')
  323. ,data = checkStatus.data;
  324. if (data == null || data.length === 0) {
  325. Message.warning("请选择要删除的付款申请!", 1000);
  326. return;
  327. } else {
  328. for(let item of data) {
  329. if(item.spzt != "未提交") {
  330. if(item.spzt == "审批结束")
  331. Message.warning("存在已审批结束的付款申请,不能直接删除!", 2000);
  332. else if (data[0].spzt != null)
  333. Message.warning("存在审批中的付款申请,不能直接删除!", 2000);
  334. return;
  335. }
  336. }
  337. }
  338. layer.confirm('确定批量删除付款申请吗?', function (index) {
  339. layer.close(index);
  340. AjaxUtil.post({
  341. url: AjaxUtil.ctx + "staPayapproval/batchDelete",
  342. contentType: "application/json",
  343. data: JSON.stringify(data),
  344. success: function (res) {
  345. if (res.code === 0) {
  346. Message.success(1500, res.message, function () {
  347. // 重载表格
  348. currTable.reload();
  349. });
  350. } else {
  351. Message.error(res.message, 1000);
  352. }
  353. },
  354. error: function (error) {
  355. }
  356. });
  357. });
  358. }
  359. else if (obj.event === 'tjApprove') {
  360. var dataBudget = table.cache["currentTableId"];
  361. if (dataBudget.length == 0)
  362. return;
  363. var checkStatus = table.checkStatus('currentTableId')
  364. , data = checkStatus.data;
  365. if (data == null || data.length === 0) {
  366. Message.warning("请选择要提交审批的付款申请!", 1500);
  367. } else if (data.length > 1) {
  368. Message.warning("请选择一条记录进行提交!", 1500);
  369. } else if (data[0].spzt == "审批结束") {
  370. Message.warning("该付款申请已审批结束!", 1500);
  371. } else if (data[0].spzt == "作废") {
  372. Message.warning("该付款申请已作废!", 1500);
  373. } else if (data[0].spzt != null && data[0].spzt.indexOf("未提交") < 0) {
  374. Message.warning("该付款申请正在审批中……", 1500);
  375. } else {
  376. xmApproval = {
  377. "xmid": data[0].id,
  378. "xm": data[0].sqmc,
  379. "zt": data[0].spzt,
  380. "htje": data[0].htje
  381. };
  382. if(data[0].spzt == null) {
  383. xmApproval.zt = "未提交";
  384. data[0].spzt = "未提交";
  385. }
  386. var content = AjaxUtil.ctx + 'staPayapproval/forApproveAdd';
  387. if (data[0].spzt != "未提交")
  388. content = AjaxUtil.ctx + 'staPayapproval/forApproveUpdate/' + data[0].id + '/' + data[0].htje + '?spzt=' + data[0].spzt;
  389. var index = layer.open({
  390. title: '提交审批',
  391. type: 2,
  392. shade: 0.3,
  393. maxmin: true,
  394. shadeClose: true,
  395. area: ['1015px', layerheight + 'px'],
  396. content: content,
  397. end: function () {
  398. if (updateflag == 1)
  399. currTable.reload();
  400. updateflag = 0;
  401. layer.close(index);
  402. }
  403. });
  404. }
  405. }
  406. else if (obj.event === 'spOption') {
  407. var dataBudget = table.cache["currentTableId"];
  408. if (dataBudget.length == 0)
  409. return;
  410. var checkStatus = table.checkStatus('currentTableId')
  411. , data = checkStatus.data;
  412. if (data == null || data.length === 0) {
  413. Message.warning("请选择要审批的付款申请!", 1500);
  414. } else if (data.length > 1) {
  415. Message.warning("请选择一条记录进行审批!", 1500);
  416. } else if (data[0].spzt == null || data[0].spzt.indexOf("未提交") >= 0) {
  417. Message.warning("该付款申请尚未提交审批!", 1500);
  418. } else if (data[0].spzt == "审批结束") {
  419. Message.warning("该付款申请已审批结束!", 1500);
  420. } else if (data[0].spzt == "作废") {
  421. Message.warning("该付款申请已作废!", 1500);
  422. } else {
  423. xmApproval = {
  424. "xmid": data[0].id,
  425. "xm": data[0].sqmc,
  426. "zt": data[0].spzt,
  427. "htje": data[0].htje
  428. };
  429. var index = layer.open({
  430. title: '审批意见',
  431. type: 2,
  432. shade: 0.3,
  433. maxmin: true,
  434. shadeClose: true,
  435. area: ['1020px', layerheight + 'px'],
  436. content: AjaxUtil.ctx + 'staPayapproval/forApproveUpdate/' + data[0].id + '/' + data[0].htje + '?spzt=' + data[0].spzt,
  437. end: function () {
  438. if (updateflag == 1)
  439. currTable.reload();
  440. updateflag = 0;
  441. layer.close(index);
  442. }
  443. });
  444. }
  445. }
  446. else if (obj.event === 'spList') {
  447. var dataBudget = table.cache["currentTableId"];
  448. if (dataBudget.length == 0)
  449. return;
  450. var checkStatus = table.checkStatus('currentTableId')
  451. , data = checkStatus.data;
  452. if (data == null || data.length === 0) {
  453. Message.warning("请选择要查看审批列表的付款申请!", 1500);
  454. } else if (data.length > 1) {
  455. Message.warning("请选择一条记录进行查看!", 1500);
  456. } else if (data[0].spzt == null || data[0].spzt == "未提交") {
  457. Message.warning("该付款申请尚未提交审批!", 1500);
  458. } else {
  459. xmApproval = {
  460. "xmid": data[0].id,
  461. "xm": data[0].sqmc
  462. };
  463. var index = layer.open({
  464. title: '审批列表',
  465. type: 2,
  466. shade: 0.3,
  467. maxmin: true,
  468. shadeClose: true,
  469. area: ['1300px', layerheight + 'px'],
  470. content: AjaxUtil.ctx + 'staPayapproval/forApproveList',
  471. end: function () {
  472. layer.close(index);
  473. }
  474. });
  475. }
  476. }
  477. else if (obj.event === 'export') {
  478. var dataBudget = table.cache["currentTableId"];
  479. if (dataBudget.length == 0)
  480. return;
  481. var formData = form.val('search-form');
  482. // 获取form 表单代码
  483. console.log(formData);
  484. var formDataString = JSON.stringify(formData);
  485. let a = document.createElement('a');
  486. a.href = AjaxUtil.ctx + 'staPayapproval/exportExcel/'+formDataString;
  487. a.click();
  488. a.parentNode.removeChild(a);
  489. }
  490. else if(obj.event==='tjrevokeApprove'){
  491. var projects = table.cache["currentTableId"];
  492. if (projects.length == 0)
  493. return;
  494. var checkStatus = table.checkStatus('currentTableId')
  495. , data = checkStatus.data;
  496. if (data == null || data.length === 0) {
  497. Message.warning("请选择要撤销的付款申请!", 1500);
  498. } else if (data.length > 1) {
  499. Message.warning("请选择一条记录进行撤销!", 1500);
  500. } else if (data[0].spzt == "审批结束") {
  501. Message.warning("该付款申请已审批结束!", 1500);
  502. }
  503. // else if (data[0].cjr != userId) {
  504. //Message.error("您不是该付款申请的创建人!", 1500);}
  505. else {
  506. xmApproval = {
  507. "xmid": data[0].id,
  508. "xm": data[0].zwmc,
  509. "zt": "未提交"
  510. };
  511. if(data[0].spzt == null) {
  512. xmApproval.zt = "未提交";
  513. data[0].spzt = "未提交";
  514. }
  515. var project = {
  516. "id": xmApproval.xmid,
  517. "spzt": '未提交'
  518. }
  519. layer.confirm('确定撤销付款申请吗?', function (index) {
  520. layer.close(index);
  521. AjaxUtil.post({
  522. url: AjaxUtil.ctx + "staPayapproval/TJrevokeApprove",
  523. contentType: "application/json",
  524. data: JSON.stringify(project),
  525. success: function (res) {
  526. if (res.code === 0) {
  527. Message.success(1500, res.message, function () {
  528. // 重载表格
  529. currTable.reload();
  530. });
  531. } else {
  532. Message.error(res.message, 1000);
  533. }
  534. },
  535. error: function (error) {
  536. }
  537. });
  538. });
  539. }
  540. }
  541. });
  542. //双击
  543. table.on('rowDouble(currentTableFilter)', function (obj) {
  544. var index = layer.open({
  545. title: '查看付款申请',
  546. type: 2,
  547. shade: 0.3,
  548. // maxmin: true,
  549. shadeClose: true,
  550. area: ['950px', '750px'],
  551. content: AjaxUtil.ctx + "staPayapproval/forView/" + obj.data.id,
  552. end: function () {
  553. layer.close(index);
  554. }
  555. });
  556. });
  557. });
  558. function getXmApproval() {
  559. return xmApproval;
  560. }
  561. function setUpdateFlag() {
  562. updateflag = 1;
  563. }
  564. </script>
  565. </body>
  566. </html>