update.html 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  1. <!DOCTYPE html>
  2. <html xmlns="http://www.w3.org/1999/xhtml" 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. <style>
  11. body {
  12. background-color: #ffffff;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <form class="layui-form" action="" lay-filter="formDemo">
  18. <div class="layui-tab layui-tab-card">
  19. <ul class="layui-tab-title">
  20. <li class="layui-this">常规</li>
  21. <li>报账计划</li>
  22. <li>付款计划</li>
  23. </ul>
  24. <div class="layui-tab-content">
  25. <!--常规开始-->
  26. <div class="layui-tab-item layui-show" style="min-height: 550px; margin-bottom: 5px">
  27. <form class="layui-form" action="" lay-filter="formDemo">
  28. <div class="layui-form layuimini-form">
  29. <div class="layui-form-item layui-inline" style="width: 100%">
  30. <label class="layui-form-label required" style="width: 10%">任务书</label>
  31. <div class="layui-input-inline" style="width: 80%">
  32. <input type="hidden" id="rws" name="rws" class="layui-input" th:value="${contract.rws}"
  33. readonly>
  34. <input type="text" id="rwsmc" name="rwsmc" class="layui-input"
  35. th:value="${contract.rwsmc}" readonly>
  36. </div>
  37. </div>
  38. <div class="layui-form-item layui-inline" style="width: 100%">
  39. <label class="layui-form-label required" style="width: 10%">合同名称</label>
  40. <div class="layui-input-inline" style="width: 25%">
  41. <input type="hidden" id="id" name="id" class="layui-input" th:value="${contract.id}" >
  42. <input type="text" id="htmc" name="htmc" lay-verify="required" lay-reqtext="合同名称不能为空" autocomplete="off" class="layui-input" th:value="${contract.htmc}">
  43. </div>
  44. <label class="layui-form-label required" style="width: 15%">合同金额(万元)</label>
  45. <div class="layui-input-inline" style="width: 35%">
  46. <input type="number" id="htje" name="htje" class="layui-input" lay-verify="required" lay-reqtext="合同金额不能为空"
  47. th:value="${contract.htje}"
  48. autocomplete="off">
  49. </div>
  50. </div>
  51. <div class="layui-form-item layui-inline" style="width: 100%">
  52. <label class="layui-form-label required" style="width: 10%">招标批次</label>
  53. <div class="layui-input-inline" style="width: 25%">
  54. <input type="text" id="zbpc" name="zbpc" autocomplete="off" class="layui-input" lay-verify="required" lay-reqtext="招标批次不能为空" th:value="${contract.zbpc}">
  55. </div>
  56. <label class="layui-form-label" style="width: 15%">中选单位</label>
  57. <div class="layui-input-inline" style="width: 35%">
  58. <input type="text" id="zxdw" name="zxdw" class="layui-input" autocomplete="off" th:value="${contract.zxdw}" >
  59. </div>
  60. </div>
  61. <div class="layui-form-item layui-inline" style="width: 100%">
  62. <label class="layui-form-label required" style="width: 10%">执行周期</label>
  63. <div class="layui-input-inline" style="width: 25%">
  64. <input type="text" name="kssj" id="kssj" placeholder="开始时间" class="layui-input" lay-verify="required" lay-reqtext="开始时间不能为空"
  65. th:value="${contract.kssj}"
  66. readonly>
  67. </div>
  68. <div class="layui-form-mid">-</div>
  69. <div class="layui-input-inline" style="width: 25%">
  70. <input type="text" name="jssj" id="jssj" placeholder="终止时间" class="layui-input" lay-verify="required" lay-reqtext="结束不能为空"
  71. th:value="${contract.jssj}"
  72. readonly>
  73. </div>
  74. </div>
  75. <div class="layui-form-item layui-inline" style="width: 100%">
  76. <label class="layui-form-label required" style="width: 10%">是否验收</label>
  77. <div class="layui-input-inline" style="width: 10%">
  78. <input type="checkbox" name="sfys" id="sfys" title="ON|OFF" lay-skin="switch" lay-filter="sfys" checked>
  79. </div>
  80. <div id="sfysdiv">
  81. <label class="layui-form-label required" style="width: 10%">验收时间</label>
  82. <div class="layui-input-inline" style="width: 25%">
  83. <input type="text" id="yssj" name="yssj" autocomplete="off" class="layui-input" lay-verify="required" lay-reqtext="验收时间不能为空!" th:value="${contract.yssj}">
  84. </div>
  85. </div>
  86. <label class="layui-form-label required" style="width: 15%">是否是系统内单位</label>
  87. <div class="layui-input-inline" style="width: 10%">
  88. <input type="checkbox" name="sfsxtndw" id="sfsxtndw" title="ON|OFF" lay-skin="switch" lay-filter="sfsxtndw" checked>
  89. </div>
  90. </div>
  91. <div class="layui-form-item layui-inline" style="width: 100%">
  92. <label class="layui-form-label" style="width: 60px">合同文件</label>
  93. <div class="layuimini-container"
  94. style="margin-left: 90px; margin-right: 20px; padding-bottom: 10px">
  95. <input type="hidden" id="wj" name="wj" class="layui-input" th:value="${contract.wj}">
  96. <div class="layui-btn-group" style="margin-bottom: -8px">
  97. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm upload"
  98. id="upLoad1" lay-data="{fileType:'htwj'}"><i class="layui-icon"></i>上传
  99. </button>
  100. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  101. lay-filter="deleteFile1"><i class="layui-icon"></i>删除
  102. </button>
  103. </div>
  104. <table class="layui-hide" id="currentTableId1" name="currentTableId1"
  105. lay-filter="currentTableFilter1"
  106. style="padding-top: 0px;margin-top: 0px"></table>
  107. <label>上传招标合同、中标通知书、合同流转单(上传文件形式:word.pdf.excel)。</label>
  108. </div>
  109. </div>
  110. <div class="layui-form-item layui-inline" style="width: 100%">
  111. <label class="layui-form-label" style="width: 60px">验收资料</label>
  112. <div class="layuimini-container"
  113. style="margin-left: 90px; margin-right: 20px; padding-bottom: 10px">
  114. <input type="hidden" id="yszl" name="yszl" class="layui-input"
  115. th:value="${contract.yszl}">
  116. <div class="layui-btn-group" style="margin-bottom: -8px">
  117. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm upload"
  118. id="upLoad2" lay-data="{fileType:'yszl'}"><i class="layui-icon"></i>上传
  119. </button>
  120. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  121. lay-filter="deleteFile2"><i class="layui-icon"></i>删除
  122. </button>
  123. </div>
  124. <table class="layui-hide" id="currentTableId2" name="currentTableId2"
  125. lay-filter="currentTableFilter2"
  126. style="padding-top: 0px;margin-top: 0px"></table>
  127. <label>需上传合同约定的技术报告、测试报告、第三方检测报告、图纸、文宣专利等乙方应提供成果;外委验收意见(包括完成情况表及专家签名)。</label>
  128. </div>
  129. </div>
  130. <!-- 右侧悬浮按钮 -->
  131. <div class="right-bottom-btn">
  132. <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn">
  133. <i class="layui-icon layui-icon-ok"></i>保存
  134. </button>
  135. <button type="button" class="layui-btn" lay-filter="cancleBtn">
  136. <i class="layui-icon layui-icon-close"></i>取消
  137. </button>
  138. </div>
  139. </div>
  140. </form>
  141. </div>
  142. <!--常规结束-->
  143. <!--报账计划开始-->
  144. <div class="layui-tab-item" style="min-height: 550px; padding-left: 30px; padding-right: 30px">
  145. <form class="layui-form" action="" lay-filter="formDemo">
  146. <div class="layui-form layuimini-form">
  147. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  148. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  149. lay-filter="btnAdd3"><i class="layui-icon"></i>新建
  150. </button>
  151. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  152. lay-filter="btnEdit3"><i class="layui-icon"></i>编辑
  153. </button>
  154. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  155. lay-filter="btnView3"><i class="layui-icon">&#xe63c;</i>查看
  156. </button>
  157. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  158. lay-filter="btnDelete3"><i class="layui-icon"></i>删除
  159. </button>
  160. </div>
  161. <table class="layui-hide" id="currentTableId" name="currentTableId"
  162. lay-filter="currentTableFilter"></table>
  163. <div class="layui-form-item layui-inline" style="width: 100%">
  164. <div class="layui-input-block" style="margin-left: 1%; width: 85%;">
  165. </p>
  166. </div>
  167. </div>
  168. <!-- 右侧悬浮按钮 -->
  169. <div class="right-bottom-btn" style="margin-bottom: 5px">
  170. <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn3">
  171. <i class="layui-icon layui-icon-ok"></i>保存
  172. </button>
  173. <button class="layui-btn" lay-filter="cancleBtn">
  174. <i class="layui-icon layui-icon-close"></i>取消
  175. </button>
  176. </div>
  177. </div>
  178. </form>
  179. </div>
  180. <!--报账计划结束-->
  181. <!--付款计划开始-->
  182. <div class="layui-tab-item" style="min-height: 550px; padding-left: 30px; padding-right: 30px">
  183. <form class="layui-form" action="" lay-filter="formDemo">
  184. <div class="layui-form layuimini-form">
  185. <div class="layui-btn-group" style="margin-bottom: 0.5%">
  186. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  187. lay-filter="btnAdd2"><i class="layui-icon"></i>新建
  188. </button>
  189. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  190. lay-filter="btnEdit2"><i class="layui-icon"></i>编辑
  191. </button>
  192. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  193. lay-filter="btnView2"><i class="layui-icon">&#xe63c;</i>查看
  194. </button>
  195. <button type="button" class="layui-btn layui-btn-primary layui-btn-sm"
  196. lay-filter="btnDelete2"><i class="layui-icon"></i>删除
  197. </button>
  198. </div>
  199. <table class="layui-hide" id="currentTableId3" name="currentTableId3"
  200. lay-filter="currentTableFilter3"></table>
  201. <div class="layui-form-item layui-inline" style="width: 100%">
  202. <div class="layui-input-block" style="margin-left: 1%; width: 85%;">
  203. <p style="color: red;">注:现要求付款计划必须一次性填写完成,并且付款计划总金额等于合同金额!!
  204. </p>
  205. </div>
  206. </div>
  207. <!-- 右侧悬浮按钮 -->
  208. <div class="right-bottom-btn" style="margin-bottom: 5px">
  209. <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn2">
  210. <i class="layui-icon layui-icon-ok"></i>保存
  211. </button>
  212. <button class="layui-btn" lay-filter="cancleBtn">
  213. <i class="layui-icon layui-icon-close"></i>关闭
  214. </button>
  215. </div>
  216. </div>
  217. </form>
  218. </div>
  219. <!--付款计划结束-->
  220. </div>
  221. </div>
  222. </form>
  223. <script>
  224. const sfys = [[${contract.sfys}]];
  225. const sfsxtnbdw = [[${contract.sfsxtndw}]];
  226. var sf = document.getElementById('sfys');
  227. var nbdw = document.getElementById('sfsxtndw');
  228. if (sfys == 1){
  229. sf.checked = true;
  230. sf.value = 1;
  231. document.getElementById('sfysdiv').style.display = 'block';
  232. }else {
  233. sf.checked = false;
  234. sf.value = 0;
  235. document.getElementById('sfysdiv').style.display = 'none';
  236. }
  237. if (sfsxtnbdw == 1){
  238. nbdw.checked = true;
  239. nbdw.value = 1;
  240. }else {
  241. nbdw.checked = false;
  242. nbdw.value = 0;
  243. }
  244. </script>
  245. <script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
  246. <script th:src="@{/lib/layui/layui.js}" charset="utf-8"></script>
  247. <script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
  248. <script th:src="@{/lib/xm-select-v1.2.2/xm-select.js}" charset="utf-8"></script>
  249. <script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
  250. <script type="text/javascript" th:inline="javascript">
  251. AjaxUtil.ctx = /*[[@{/}]]*/'';
  252. var updateflag = 0;//更新标志
  253. var htInfo = {};
  254. var bzjh = [];
  255. var fkjh = [];
  256. layui.use(['form', 'table', 'treeTable', 'layCascader', 'upload','laydate'], function () {
  257. var form = layui.form,
  258. table = layui.table,
  259. layer = layui.layer,
  260. upload = layui.upload,
  261. laydate = layui.laydate;
  262. var htId = $("#id").val();
  263. var rwsId = $("#rws").val();
  264. var xmApproval = parent.getXmApproval();
  265. var spzt =xmApproval.spzt;
  266. var userPostName = [[${userPostName}]]
  267. var rwsqssj = [[${rwsqssj}]]
  268. var rwswcsj = [[${rwswcsj}]]
  269. var sfysid = [[${contract.sfys}]]
  270. var sfsxtndwid = [[${contract.sfsxtndw}]]
  271. console.log(spzt)
  272. //申请时间
  273. laydate.render({
  274. elem: '#kssj',
  275. done: function (value, date, endDate) {
  276. sqsj1 = $("#kssj").val();
  277. sqsj2 = $("#jssj").val();
  278. yssj = $("#yssj").val();
  279. if (rwsqssj ==''||rwswcsj==''){
  280. layer.msg('请先选择任务书!',{icon:8});
  281. $("#kssj").val("");
  282. return;
  283. }
  284. if (sqsj1<rwsqssj){
  285. layer.msg("合同开始时间不能早于任务书开始时间,应该在任务书项目周期内!",{icon:2})
  286. $("#kssj").val("");
  287. return;
  288. }
  289. if (sqsj2 !=''&&sqsj1 == sqsj2){
  290. layer.msg('执行周期开始时间与结束时间不能为同一天!',{icon:2});
  291. $("#kssj").val("");
  292. return;
  293. }
  294. if (yssj != ''){
  295. if (sqsj1 > yssj){
  296. layer.msg('验收时间不能早于或等于合同开始时间!',{icon:2});
  297. $("#kssj").val("");
  298. return;
  299. }
  300. }
  301. if (sqsj1 != "" && sqsj2 != "") {
  302. if (sqsj1 > sqsj2) {
  303. Message.warning("起始时间不能晚于终止时间!", 1500);
  304. $("#kssj").val("");
  305. return;
  306. }
  307. }
  308. }
  309. });
  310. laydate.render({
  311. elem: '#jssj',
  312. done: function (value, date, endDate) {
  313. sqsj1 = $("#kssj").val();
  314. sqsj2 = $("#jssj").val();
  315. const currentDate = new Date();
  316. const sqsj3 = new Date(sqsj2);
  317. if (rwsqssj ==''||rwswcsj==''){
  318. layer.msg('请先选择任务书!',{icon:8});
  319. $("#jssj").val("");
  320. return;
  321. }
  322. if (sqsj2>rwswcsj){
  323. layer.msg("合同结束时间不能晚于任务书结束时间,应该在任务书项目周期内!",{icon:2})
  324. $("#jssj").val("");
  325. return;
  326. }
  327. if (sqsj1!=''&&sqsj1 == sqsj2){
  328. layer.msg('执行周期开始时间与结束时间不能为同一天!',{icon:2});
  329. $("#jssj").val("");
  330. return;
  331. }
  332. if (sqsj1 != "" && sqsj2 != "") {
  333. if (sqsj1 > sqsj2) {
  334. Message.warning("终止时间不能早于开始时间!", 1500);
  335. $("#jssj").val("");
  336. return;
  337. }
  338. }
  339. }
  340. });
  341. laydate.render({
  342. elem: '#yssj',
  343. done: function (value, date, endDate) {
  344. sqsj1 = $("#kssj").val();
  345. sqsj2 = $("#jssj").val();
  346. yssj = $("#yssj").val();
  347. if (sqsj1 != '' && yssj != ''){
  348. if (yssj <= sqsj1){
  349. layer.msg('验收时间不能早于或等于合同开始时间!',{icon:2});
  350. $("#yssj").val("");
  351. }
  352. }else {
  353. layer.msg('请先填写执行周期!',{icon:8});
  354. $("#yssj").val("");
  355. }
  356. }
  357. });
  358. var verify = {
  359. required:function (value) {
  360. if (value === ''){
  361. return '项目已验收,验收时间不能为空!';
  362. }
  363. }
  364. };
  365. // 监听是否验收
  366. form.on('switch(sfys)',function (data) {
  367. if (data.elem.checked) {
  368. $('#sfysdiv').css('display','block');
  369. $('#sfys').val(1);
  370. form.verify(verify);
  371. console.log('复选框已选中');
  372. return;
  373. } else {
  374. console.log('复选框已取消选中');
  375. $('#sfysdiv').css('display','none');
  376. $('#sfys').val(0);
  377. form.verify({});
  378. return;
  379. }
  380. });
  381. // 监听是否是内部单位
  382. form.on('switch(sfsxtndw)', function (data) {
  383. console.log('进来了');
  384. if (data.elem.checked) {
  385. $('#sfsxtndw').val(1);
  386. console.log('复选框已选中');
  387. return;
  388. } else {
  389. console.log('复选框已取消选中');
  390. $('#sfsxtndw').val(0);
  391. return;
  392. }
  393. });
  394. // 用于存放表格数据
  395. var dataHtwj = new Array();
  396. if ([[${contract.wj}]] != null && [[${contract.wj}]] != "") {
  397. dataHtwj = eval('(' + [[${contract.wj}]] + ')');
  398. }
  399. //合同文件
  400. var currTable1 = table.render({
  401. elem: '#currentTableId1',
  402. data: dataHtwj,
  403. cols: [
  404. [
  405. {type: "radio", fixed: 'left'},
  406. {field: 'wjm', title: '文件名', width: '40%'},
  407. {field: 'scrq', title: '上传日期', width: '15%', align: 'center'},
  408. {field: 'sm', title: '说明', edit: 'text'}
  409. ]
  410. ],
  411. autoSort: false,
  412. limit: Number.MAX_VALUE,
  413. page: false,
  414. skin: 'grid',
  415. done: function (res, curr, count) { // done为数据渲染完的回调
  416. }
  417. });
  418. //文件上传
  419. upload.render({
  420. elem: '#upLoad1' //绑定元素
  421. , url: AjaxUtil.ctx + 'fileupload/upload'
  422. , methd: 'post'
  423. , accept: 'file'
  424. , data: {}
  425. , done: function (res) {
  426. if (0 === res.code) {
  427. var curData = {
  428. "wjm": res.data.fileName,
  429. "scrq": res.data.fileDate,
  430. "Url": res.data.fileUrl,
  431. "sm": res.data.sm
  432. };
  433. dataHtwj.push(curData);
  434. currTable1.reload();
  435. } else
  436. layer.alert("上传文件出现错误!");
  437. }
  438. , error: function () {
  439. layer.alert("上传文件出现错误!");
  440. }
  441. , before: function (res) {
  442. let fileType = this.fileType;
  443. this.data.fileType = fileType;
  444. }
  445. });
  446. $("button[lay-filter='deleteFile1']").click(function () {
  447. if (dataHtwj.length == 0)
  448. return;
  449. var checkStatus = table.checkStatus('currentTableId1')
  450. , data = checkStatus.data;
  451. if (data == null || data.length === 0) {
  452. Message.warning("请选择要删除的文件!", 1000);
  453. return;
  454. }
  455. for (var i = 0; i < dataHtwj.length; i++) {
  456. var item = dataHtwj[i];
  457. if (item.LAY_CHECKED) {//条件:选中
  458. dataHtwj.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  459. i--;
  460. }
  461. }
  462. //刷新表格
  463. currTable1.reload();
  464. });
  465. //双击(合同文件)
  466. table.on('rowDouble(currentTableFilter1)', function (obj) {
  467. window.open(obj.data.Url);
  468. });
  469. // 用于存放表格数据
  470. var dataYszl = new Array();
  471. if ([[${contract.yszl}]] != null && [[${contract.yszl}]] != "") {
  472. dataYszl = eval('(' + [[${contract.yszl}]] + ')');
  473. }
  474. //验收资料
  475. var currTable2 = table.render({
  476. elem: '#currentTableId2',
  477. data: dataYszl,
  478. cols: [
  479. [
  480. {type: "checkbox", align: 'center'},
  481. {type: 'numbers', align: 'center'},
  482. {field: 'wjm', title: '文件名', width: '30%'},
  483. {field: 'scrq', title: '上传日期', width: '15%', align: 'center'},
  484. {field: 'sm', title: '说明', edit: 'text'}
  485. ]
  486. ],
  487. autoSort: false,
  488. limits: [10, 15, 20, 25, 50, 100],
  489. limit: Number.MAX_VALUE,
  490. page: false,
  491. skin: 'grid',
  492. done: function (res, curr, count) { // done为数据渲染完的回调
  493. }
  494. });
  495. //文件上传
  496. upload.render({
  497. elem: '#upLoad2' //绑定元素
  498. , url: AjaxUtil.ctx + 'fileupload/upload'
  499. , methd: 'post'
  500. , accept: 'file'
  501. , data: {}
  502. , done: function (res) {
  503. if (0 === res.code) {
  504. var curData = {
  505. "wjm": res.data.fileName,
  506. "scrq": res.data.fileDate,
  507. "Url": res.data.fileUrl,
  508. "sm": res.data.sm
  509. };
  510. dataYszl.push(curData);
  511. currTable2.reload();
  512. } else
  513. layer.alert("上传文件出现错误!");
  514. }
  515. , error: function () {
  516. layer.alert("上传文件出现错误!");
  517. }
  518. , before: function (res) {
  519. let fileType = this.fileType;
  520. this.data.fileType = fileType;
  521. }
  522. });
  523. $("button[lay-filter='deleteFile2']").click(function () {
  524. if (dataYszl.length == 0)
  525. return;
  526. var checkStatus = table.checkStatus('currentTableId2')
  527. , data = checkStatus.data;
  528. if (data == null || data.length === 0) {
  529. Message.warning("请选择要删除的文件!", 1000);
  530. return;
  531. }
  532. for (var i = 0; i < dataYszl.length; i++) {
  533. var item = dataYszl[i];
  534. if (item.LAY_CHECKED) {//条件:选中
  535. dataYszl.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  536. i--;
  537. }
  538. }
  539. //刷新表格
  540. currTable2.reload();
  541. });
  542. //双击(验收资料)
  543. table.on('rowDouble(currentTableFilter2)', function (obj) {
  544. window.open(obj.data.Url);
  545. });
  546. // 监听确认按钮(常规)
  547. form.on('submit(saveBtn)', function (data) {
  548. var sfys = document.getElementById('sfys');
  549. var sfsxtndw = document.getElementById('sfsxtndw');
  550. if (sfys.value != 0 && sfys.value != 1){
  551. if (sfysid != null && sfysid != ''){
  552. data.field.sfys = sfysid;
  553. }else {
  554. data.field.sfys = 0;
  555. }
  556. }
  557. if(sfsxtndw != 0 && sfsxtndw != 1){
  558. if (sfsxtndwid != null && sfsxtndwid != ''){
  559. data.field.sfsxtndw = sfsxtndwid;
  560. }else {
  561. data.field.sfsxtndw = 0;
  562. }
  563. }
  564. if (spzt !=='未锁定'&&userPostName !='科技项目管理专责'&&userPostName !='科技项目管理专责2'){
  565. Message.warning("该合同状态为锁定中,只能修改付款计划,不可修改常规信息!", 2000);
  566. return false;
  567. }
  568. //合同文件
  569. var dataWB_Htwj = [];
  570. for (const item of dataHtwj) {
  571. var dfWb = {
  572. "id": item.id,
  573. "wjm": item.wjm,
  574. "Url": item.Url,
  575. "scrq": item.scrq,
  576. "sm": item.sm
  577. };
  578. dataWB_Htwj.push(dfWb);
  579. }
  580. $("#wj").val(JSON.stringify(dataWB_Htwj));
  581. data.field.wj = JSON.stringify(dataWB_Htwj);
  582. //验收资料
  583. var dataWB_Yszl = [];
  584. for (const item of dataYszl) {
  585. var dfWb = {
  586. "id": item.id,
  587. "wjm": item.wjm,
  588. "Url": item.Url,
  589. "scrq": item.scrq,
  590. "sm": item.sm
  591. };
  592. dataWB_Yszl.push(dfWb);
  593. }
  594. $("#yszl").val(JSON.stringify(dataWB_Yszl));
  595. data.field.yszl = JSON.stringify(dataWB_Yszl);
  596. var url = AjaxUtil.ctx + "prjContract/doUpdate";
  597. if (htId == -1)
  598. url = AjaxUtil.ctx + "prjContract/doAdd";
  599. var index = layer.load(0, {shade: 0.1});
  600. AjaxUtil.post({
  601. url: url,
  602. data: data.field,
  603. success: function (res) {
  604. if (res.code === 0) {
  605. if (htId == -1) {
  606. htId = res.data.id;
  607. $("#id").val(htId);
  608. }
  609. parent.setUpdateFlag();
  610. Message.success(res.message, 1000);
  611. } else {
  612. Message.error(res.message, 1000);
  613. }
  614. layer.close(index);
  615. },
  616. error: function (error) {
  617. Message.error(error.message, 1000)
  618. }
  619. });
  620. return false;
  621. //验收资料
  622. var dataWB_Yszl = [];
  623. for (const item of dataYszl) {
  624. var dfWb = {
  625. "id": item.id,
  626. "wjm": item.wjm,
  627. "Url": item.Url,
  628. "scrq": item.scrq,
  629. "sm": item.sm
  630. };
  631. dataWB_Yszl.push(dfWb);
  632. }
  633. $("#yszl").val(JSON.stringify(dataWB_Yszl));
  634. data.field.yszl = JSON.stringify(dataWB_Yszl);
  635. var index = layer.load(0, {shade: 0.1});
  636. AjaxUtil.post({
  637. url: AjaxUtil.ctx + "prjContract/doUpdate",
  638. data: data.field,
  639. success: function (res) {
  640. layer.close(index);
  641. if (res.code === 0) {
  642. parent.setUpdateFlag();
  643. } else {
  644. }
  645. parent.layer.close(parent.layer.getFrameIndex(window.name));
  646. },
  647. error: function (error) {
  648. Message.error(error.message, 1000)
  649. }
  650. });
  651. return false;
  652. });
  653. var dataBzjh = [[${dataBzjh}]]
  654. var currTable3 = table.render({
  655. elem: '#currentTableId',
  656. data: dataBzjh,
  657. cols: [
  658. [
  659. {type: "checkbox"},
  660. {type: 'numbers', align: 'center',title: '序号'},
  661. {field: 'jhmc', title: '计划名称', width: '15%'},
  662. {field: 'nf', title: '年份', width: '20%'},
  663. {field: 'bzbl', title: '报账比例(%)', width: '14%'},
  664. {field: 'bzje', title: '报账金额(万元)', width: '16%'},
  665. {field: 'cjsj', title: '创建时间', align: 'center'}
  666. ]
  667. ],
  668. parseData: function (res) { //res 即为原始返回的数据
  669. return {
  670. "code": res.code, //解析接口状态
  671. "msg": res.message, //解析提示文本
  672. "count": res.data.total, //解析数据长度
  673. "data": res.data.rows //解析数据列表
  674. };
  675. }
  676. });
  677. //新建报账计划
  678. $("button[lay-filter='btnAdd3']").click(function () {
  679. if (htId == -1) {
  680. Message.error("请先创建并保存合同,然后创建报账计划", 2000);
  681. } else {
  682. var startYear = new Date(rwsqssj).getFullYear();
  683. var endYear = new Date(rwswcsj).getFullYear();
  684. var years = [];
  685. for (var year = startYear; year <= endYear; year++) {
  686. years.push(year);
  687. }
  688. nf = years
  689. htInfo = {
  690. "rws": rwsId,
  691. "ht": htId,
  692. "htje": $("#htje").val()
  693. }
  694. layer.open({
  695. title: '新建报账计划',
  696. type: 2,
  697. maxmin: true,
  698. shade: 0.2,
  699. area: [layerwidth + 'px', layerheight + 'px'],
  700. content: AjaxUtil.ctx + 'prjReimbursementplan/forAdd',
  701. end: function (index) {
  702. // 重载表格
  703. if (updateflag == 1)
  704. var oldData = table.cache["currentTableId"];
  705. console.log(oldData)
  706. oldData.push(bzjh);
  707. if (oldData != '' && oldData !=null) {
  708. table.reload('currentTableId', {
  709. data: oldData,
  710. })
  711. }
  712. updateflag = 0;
  713. }
  714. });
  715. }
  716. return false;
  717. });
  718. //编辑报账计划
  719. $("button[lay-filter='btnEdit3']").click(function () {
  720. var subTopics = table.cache["currentTableId"];
  721. if (subTopics && subTopics.length === 0) {
  722. return;
  723. }
  724. var checkStatus = table.checkStatus('currentTableId')
  725. , data = checkStatus.data;
  726. if (data == null || data.length === 0) {
  727. Message.warning("请选择要编辑的付款计划!", 1500);
  728. } else if (data.length > 1) {
  729. Message.warning("请选择一条记录进行编辑!", 1500);
  730. } else {
  731. var startYear = new Date(rwsqssj).getFullYear();
  732. var endYear = new Date(rwswcsj).getFullYear();
  733. var years = [];
  734. for (var year = startYear; year <= endYear; year++) {
  735. years.push(year);
  736. }
  737. nf = years
  738. htInfo = {
  739. "htje": $("#htje").val()
  740. }
  741. bzjh = {
  742. 'id':data[0].id,
  743. 'fysq':data[0].fysq,
  744. 'rws':data[0].rws,
  745. 'ht':data[0].ht,
  746. 'cjr':data[0].cjr,
  747. 'jhmc':data[0].jhmc,
  748. 'bzbl':data[0].bzbl,
  749. 'bzje':data[0].bzje,
  750. 'nf':data[0].nf,
  751. 'cjsj':data[0].cjsj,
  752. }
  753. layer.open({
  754. title: '编辑报账计划',
  755. type: 2,
  756. maxmin: true,
  757. shade: 0.2,
  758. area: [layerwidth + 'px', layerheight + 'px'],
  759. content: AjaxUtil.ctx + 'prjReimbursementplan/forUpdate',
  760. end: function (index) {
  761. // 重载表格
  762. if (updateflag == 1)
  763. for (var i = 0; i < subTopics.length; i++) {
  764. var item = subTopics[i];
  765. if (item.LAY_CHECKED) {//选中
  766. subTopics[i] = bzjh;
  767. break;
  768. }
  769. }
  770. //刷新表格
  771. var currData = subTopics;
  772. table.reload('currentTableId', {
  773. data: currData
  774. });
  775. updateflag = 0;
  776. }
  777. });
  778. }
  779. });
  780. // 监听查看按钮(报账计划)
  781. $("button[lay-filter='btnView3']").click(function () {
  782. var subTopics = table.cache["currentTableId"];
  783. if (subTopics.length == 0)
  784. return;
  785. var checkStatus = table.checkStatus('currentTableId')
  786. , data = checkStatus.data;
  787. if (data == null || data.length === 0) {
  788. Message.warning("请选择要浏览的付款计划!", 1500);
  789. } else if (data.length > 1) {
  790. Message.warning("请选择一条记录进行浏览!", 1500);
  791. } else {
  792. bzjh = {
  793. 'jhmc':data[0].jhmc,
  794. 'nf':data[0].nf,
  795. 'bzbl':data[0].bzbl,
  796. 'bzje':data[0].bzje,
  797. 'cjsj':data[0].cjsj
  798. }
  799. layer.open({
  800. title: '浏览报账计划',
  801. type: 2,
  802. maxmin: true,
  803. shade: 0.2,
  804. area: [layerwidth + 'px', layerheight + 'px'],
  805. content: AjaxUtil.ctx + 'prjReimbursementplan/forView',
  806. end: function () {
  807. }
  808. });
  809. }
  810. });
  811. // 监听删除按钮(报账计划)
  812. $("button[lay-filter='btnDelete3']").click(function () {
  813. var subTopics = table.cache["currentTableId"];
  814. if (subTopics.length == 0)
  815. return;
  816. var checkStatus = table.checkStatus('currentTableId')
  817. , data = checkStatus.data;
  818. if (data == null || data.length === 0) {
  819. Message.warning("请选择要删除的付款计划!", 1500);
  820. } else {
  821. layer.confirm('确定删除所选中的报账计划吗?', function (index) {
  822. layer.close(index);
  823. for (var i = 0; i < subTopics.length; i++) {
  824. var item = subTopics[i];
  825. if (item.LAY_CHECKED) {//条件:选中
  826. subTopics.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  827. i--;
  828. }
  829. }
  830. //刷新表格
  831. var currData = subTopics;
  832. table.reload('currentTableId', {
  833. data: currData
  834. });
  835. });
  836. }
  837. });
  838. //双击(报账计划)
  839. table.on('rowDouble(currentTableFilter)', function (obj) {
  840. var data = obj.data;
  841. bzjh = {
  842. 'jhmc':data.jhmc,
  843. 'nf':data.nf,
  844. 'bzbl':data.bzbl,
  845. 'bzje':data.bzje,
  846. 'cjsj':data.cjsj
  847. }
  848. layer.open({
  849. title: '浏览报账计划',
  850. type: 2,
  851. maxmin: true,
  852. shade: 0.2,
  853. area: [layerwidth + 'px', layerheight + 'px'],
  854. content: AjaxUtil.ctx + 'prjReimbursementplan/forView',
  855. end: function (index) {
  856. layer.close(index);
  857. }
  858. });
  859. });
  860. //提交报账计划
  861. form.on('submit(saveBtn3)', function (data) {
  862. var subTopics = table.cache["currentTableId"];
  863. // 获取合同金额,并保留 小数点后八位
  864. const htje =parseFloat($("#htje").val()).toFixed(8);
  865. var prjReimbursementplanList =[];
  866. var count = 0;
  867. let sum =0;
  868. if (!subTopics && subTopics.length === 0) {
  869. Message.warning("请先创建报账计划!!!", 1500);
  870. return;
  871. }
  872. for (let i = 0; i < subTopics.length; i++) {
  873. let bzje = parseFloat(subTopics[i].bzje) || 0;
  874. let scaledValue = (bzje * 100000).toFixed(8);
  875. sum += parseFloat(scaledValue);
  876. }
  877. count = sum/100000;
  878. for (const item of subTopics) {
  879. var prjReimbursementplan = {
  880. "id":item.id,
  881. "nf": item.nf,
  882. "ht": item.ht,
  883. "jhmc": item.jhmc,
  884. "rws": item.rws,
  885. "bzbl": item.bzbl,
  886. "bzje": item.bzje,
  887. };
  888. prjReimbursementplanList.push(prjReimbursementplan);
  889. }
  890. if (count>htje){
  891. Message.warning("报账计划付款总金额大于合同金额!!!", 1500);
  892. return;
  893. }else if (count<htje){
  894. Message.warning("报账计划付款总金额小于合同金额!", 1500);
  895. return;
  896. }else {
  897. var index = layer.load(0, {shade: 0.1});
  898. AjaxUtil.post({
  899. url: AjaxUtil.ctx + "prjReimbursementplan/doAdd/?htje="+htje,
  900. contentType: "application/json",
  901. data: JSON.stringify(prjReimbursementplanList),
  902. success: function (res) {
  903. if (res.code == 0){
  904. layer.msg(res.message,{icon:1},function () {
  905. layer.close(index)
  906. });
  907. }else if (res.code == -1){
  908. layer.msg(res.message,{icon:2},function () {
  909. return;
  910. })
  911. }
  912. },
  913. error: function (error) {
  914. Message.error(error.message, 1000);
  915. }
  916. });
  917. }
  918. });
  919. var dataFkjh = [[${dataFkjh}]]
  920. //付款计划
  921. var currTable3 = table.render({
  922. elem: '#currentTableId3',
  923. data: dataFkjh,
  924. cols: [
  925. [
  926. {type: "checkbox"},
  927. {type: 'numbers', align: 'center',title: '序号'},
  928. {field: 'jhmc', title: '计划名称', width: '15%'},
  929. {field: 'fkyq', title: '付款要求', width: '20%'},
  930. {field: 'zfbl', title: '支付比例(%)', width: '14%'},
  931. {field: 'zfje', title: '支付金额(万元)', width: '16%'},
  932. {field: 'cjsj', title: '创建时间', align: 'center'},
  933. {field: 'countpay', title: '关联付款申请', hide: true}
  934. ]
  935. ],
  936. autoSort: false,
  937. parseData: function (res) { //res 即为原始返回的数据
  938. return {
  939. "code": res.code, //解析接口状态
  940. "msg": res.message, //解析提示文本
  941. "count": res.data.total, //解析数据长度
  942. "data": res.data.rows //解析数据列表
  943. };
  944. }
  945. });
  946. //监听合同金额
  947. $("#htje").blur(function (e) {
  948. var htje = parseFloat(e.delegateTarget.value);
  949. if (htje < 0) {
  950. alert("金额不能为负数或无效的数字,请重新输入!");
  951. e.delegateTarget.value = "";
  952. }else if (htje>1000){
  953. alert("合同金额单位为万元,请确认当前数据无误。")
  954. }
  955. });
  956. // 监听新建按钮(付款计划)
  957. $("button[lay-filter='btnAdd2']").click(function () {
  958. htInfo = {
  959. "rws": rwsId,
  960. "ht": htId,
  961. "htje": $("#htje").val()
  962. }
  963. layer.open({
  964. title: '新建付款计划',
  965. type: 2,
  966. maxmin: true,
  967. shade: 0.2,
  968. area: [layerwidth + 'px', layerheight + 'px'],
  969. content: AjaxUtil.ctx + 'prjPayplan/forAdd',
  970. end: function (index) {
  971. // 重载表格
  972. if (updateflag == 1)
  973. // currTable3.reload()
  974. var oldData = table.cache["currentTableId3"];
  975. console.log('新建前'+oldData)
  976. oldData.push(fkjh);
  977. console.log('新建后'+oldData)
  978. if (oldData != '' && oldData !=null) {
  979. table.reload('currentTableId3', {
  980. data: oldData,
  981. })
  982. }
  983. updateflag = 0;
  984. }
  985. });
  986. });
  987. // 监听编辑按钮(付款计划)
  988. $("button[lay-filter='btnEdit2']").click(function () {
  989. var subTopics = table.cache["currentTableId3"];
  990. if (subTopics.length == 0)
  991. return;
  992. var checkStatus = table.checkStatus('currentTableId3')
  993. , data = checkStatus.data;
  994. if (data == null || data.length === 0) {
  995. Message.warning("请选择要编辑的付款计划!", 1500);
  996. } else if (data.length > 1) {
  997. Message.warning("请选择一条记录进行编辑!", 1500);
  998. } else {
  999. htInfo = {
  1000. "htje": $("#htje").val()
  1001. }
  1002. fkjh = {
  1003. 'id':data[0].id,
  1004. 'fysq':data[0].fysq,
  1005. 'rws':data[0].rws,
  1006. 'ht':data[0].ht,
  1007. 'cjr':data[0].cjr,
  1008. 'jhmc':data[0].jhmc,
  1009. 'fkyq':data[0].fkyq,
  1010. 'zfbl':data[0].zfbl,
  1011. 'zfje':data[0].zfje,
  1012. 'cjsj':data[0].cjsj,
  1013. 'fkxx':data[0].fkxx,
  1014. }
  1015. layer.open({
  1016. title: '编辑付款计划',
  1017. type: 2,
  1018. maxmin: true,
  1019. shade: 0.2,
  1020. area: [layerwidth + 'px', layerheight + 'px'],
  1021. content: AjaxUtil.ctx + 'prjPayplan/forUpdate',
  1022. end: function (index) {
  1023. // 重载表格
  1024. if (updateflag == 1)
  1025. console.log('编辑前'+subTopics)
  1026. updateflag = 0;
  1027. for (var i = 0; i < subTopics.length; i++) {
  1028. var item = subTopics[i];
  1029. if (item.LAY_CHECKED) {//选中
  1030. subTopics[i] = fkjh;
  1031. break;
  1032. }
  1033. }
  1034. //刷新表格
  1035. var currData = subTopics;
  1036. console.log('编辑后'+currData)
  1037. console.log(currData)
  1038. table.reload('currentTableId3', {
  1039. data: currData
  1040. });
  1041. }
  1042. });
  1043. }
  1044. });
  1045. // 监听查看按钮(付款计划)
  1046. $("button[lay-filter='btnView2']").click(function () {
  1047. var subTopics = table.cache["currentTableId3"];
  1048. if (subTopics.length == 0)
  1049. return;
  1050. var checkStatus = table.checkStatus('currentTableId3')
  1051. , data = checkStatus.data;
  1052. if (data == null || data.length === 0) {
  1053. Message.warning("请选择要浏览的付款计划!", 1500);
  1054. } else if (data.length > 1) {
  1055. Message.warning("请选择一条记录进行浏览!", 1500);
  1056. } else {
  1057. fkjh = {
  1058. 'jhmc':data[0].jhmc,
  1059. 'fkyq':data[0].fkyq,
  1060. 'zfbl':data[0].zfbl,
  1061. 'zfje':data[0].zfje,
  1062. 'cjsj':data[0].cjsj,
  1063. 'fkxx':data[0].fkxx,
  1064. }
  1065. layer.open({
  1066. title: '浏览付款计划',
  1067. type: 2,
  1068. maxmin: true,
  1069. shade: 0.2,
  1070. area: [layerwidth + 'px', layerheight + 'px'],
  1071. content: AjaxUtil.ctx + 'prjPayplan/forView1',
  1072. end: function () {
  1073. }
  1074. });
  1075. }
  1076. });
  1077. // 监听删除按钮(付款计划)
  1078. $("button[lay-filter='btnDelete2']").click(function () {
  1079. var subTopics = table.cache["currentTableId3"];
  1080. if (subTopics.length == 0)
  1081. return;
  1082. var checkStatus = table.checkStatus('currentTableId3')
  1083. , data = checkStatus.data;
  1084. if (data == null || data.length === 0) {
  1085. Message.warning("请选择要删除的付款计划!", 1500);
  1086. } else {
  1087. var failedItems = data.filter(item => item.countpay > 0);
  1088. if (failedItems.length > 0) {
  1089. var failedMessages = failedItems.map(item => `计划名称: ${item.jhmc}, 关联的付款计划个数: ${item.countpay}`).join(', ');
  1090. Message.warning(`删除失败:以下付款计划已经付款: ${failedMessages}`, 1500);
  1091. } else {
  1092. layer.confirm('确定删除所选中的付款计划吗?', function (index) {
  1093. layer.close(index);
  1094. for (var i = 0; i < subTopics.length; i++) {
  1095. var item = subTopics[i];
  1096. if (item.LAY_CHECKED) {//条件:选中
  1097. subTopics.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
  1098. i--;
  1099. }
  1100. }
  1101. //刷新表格
  1102. var currData = subTopics;
  1103. table.reload('currentTableId3', {
  1104. data: currData
  1105. });
  1106. });
  1107. }
  1108. }
  1109. });
  1110. //双击(付款计划)
  1111. table.on('rowDouble(currentTableFilter3)', function (obj) {
  1112. var data = obj.data;
  1113. fkjh = {
  1114. 'jhmc':data.jhmc,
  1115. 'fkyq':data.fkyq,
  1116. 'zfbl':data.zfbl,
  1117. 'zfje':data.zfje,
  1118. 'cjsj':data.cjsj,
  1119. 'fkxx':data.fkxx,
  1120. }
  1121. layer.open({
  1122. title: '浏览付款计划',
  1123. type: 2,
  1124. maxmin: true,
  1125. shade: 0.2,
  1126. area: [layerwidth + 'px', layerheight + 'px'],
  1127. content: AjaxUtil.ctx + 'prjPayplan/forView1',
  1128. end: function (index) {
  1129. layer.close(index);
  1130. }
  1131. });
  1132. });
  1133. //监听付款计划保存按钮
  1134. form.on('submit(saveBtn2)', function (data) {
  1135. var subTopics = table.cache["currentTableId3"];
  1136. var htje =parseFloat($("#htje").val())
  1137. var prjPayplanList =[];
  1138. var count = 0;
  1139. var sum = 0;
  1140. if (!subTopics && subTopics.length === 0) {
  1141. Message.warning("请先创建付款计划!!!", 1500);
  1142. return;
  1143. }
  1144. for (let i = 0; i < subTopics.length; i++) {
  1145. let zfje = parseFloat(subTopics[i].zfje) || 0;
  1146. let scaledValue = (zfje * 100000).toFixed(8);
  1147. sum += parseFloat(scaledValue);
  1148. }
  1149. count =sum/100000;
  1150. for (const item of subTopics) {
  1151. var prjPayplan = {
  1152. "id":item.id,
  1153. "fkxx": item.fkxx,
  1154. "fkyq": item.fkyq,
  1155. "ht": item.ht,
  1156. "jhmc": item.jhmc,
  1157. "rws": item.rws,
  1158. "zfbl": item.zfbl,
  1159. "zfje": item.zfje,
  1160. };
  1161. prjPayplanList.push(prjPayplan);
  1162. }
  1163. console.log(sum)
  1164. console.log(count)
  1165. console.log(htje)
  1166. console.log(subTopics)
  1167. if (count>htje){
  1168. Message.warning("付款计划付款总金额大于合同金额!!!", 1500);
  1169. return;
  1170. }else if (count<htje){
  1171. Message.warning("付款计划付款总金额小于合同金额!!!", 1500);
  1172. return;
  1173. }else {
  1174. var index = layer.load(0, {shade: 0.1});
  1175. AjaxUtil.post({
  1176. url: AjaxUtil.ctx + "prjPayplan/doAdd1/?htje="+htje,
  1177. contentType: "application/json",
  1178. data: JSON.stringify(prjPayplanList),
  1179. success: function (res) {
  1180. // layer.msg(res.message);
  1181. Message.success(res.message,1500)
  1182. layer.close(index);
  1183. var iframeIndex = parent.layer.getFrameIndex(window.name);
  1184. setTimeout(function() {
  1185. parent.layer.close(iframeIndex);
  1186. }, 1500);
  1187. },
  1188. error: function (error) {
  1189. Message.error(error.message, 1000);
  1190. }
  1191. });
  1192. }
  1193. });
  1194. // 监听取消按钮
  1195. $("button[lay-filter='cancleBtn']").click(function () {
  1196. var iframeIndex = parent.layer.getFrameIndex(window.name);
  1197. parent.layer.close(iframeIndex);
  1198. });
  1199. });
  1200. function getHtInfo() {
  1201. return htInfo;
  1202. }
  1203. function getBzjh() {
  1204. return bzjh;
  1205. }
  1206. function setBzjh(expense) {
  1207. bzjh = expense;
  1208. }
  1209. function getFkjh() {
  1210. return fkjh;
  1211. }
  1212. function setFkjh(expense) {
  1213. fkjh = expense;
  1214. }
  1215. function setUpdateFlag() {
  1216. updateflag = 1;
  1217. }
  1218. function getNf() {
  1219. return nf;
  1220. }
  1221. </script>
  1222. </body>
  1223. </html>