Преглед на файлове

修改付款计划保存逻辑,付款计划必须一次性创建完成并且付款计划总金额等于合同金额

梁世豪 преди 5 месеца
родител
ревизия
3123d89469

+ 43 - 6
src/main/java/com/liang/controller/PrjPayplanController.java

@@ -6,6 +6,7 @@ import com.liang.common.base.BaseController;
6 6
 import com.liang.common.base.BaseResult;
7 7
 import com.liang.entity.PrjPayplan;
8 8
 import com.liang.entity.PrjProject;
9
+import com.liang.entity.StaExpertFee;
9 10
 import com.liang.entity.StaPayapproval;
10 11
 import com.liang.service.PrjPayplanService;
11 12
 import com.liang.service.PrjPayplannameService;
@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
19 20
 
20 21
 import javax.annotation.Resource;
21 22
 import java.math.BigDecimal;
23
+import java.sql.Date;
22 24
 import java.util.ArrayList;
23 25
 import java.util.HashMap;
24 26
 import java.util.List;
@@ -144,20 +146,50 @@ public class PrjPayplanController extends BaseController {
144 146
 
145 147
     }
146 148
 
149
+    @ResponseBody
150
+    @RequestMapping(value = "/doAdd1", method = RequestMethod.POST)
151
+        public BaseResult doAdd( @RequestBody String data,
152
+                            @RequestParam(required = false,value = "htje")Double htje) {
153
+        List<PrjPayplan> prjPayplanList = JsonTool.parseArray(data, PrjPayplan.class);
154
+        //先清空该合同下的所有付款计划
155
+        Integer ht = prjPayplanList.get(0).getHt();
156
+        prjPayplanService.deleteByHtId(ht);
157
+        //再次校验付款计划总金额
158
+        Double count = 0.0;
159
+        for (int i = 0; i <prjPayplanList.size(); i++) {
160
+            count +=prjPayplanList.get(i).getZfje();
161
+        }
162
+        BigDecimal countBD = BigDecimal.valueOf(count);
163
+        BigDecimal htjeBD = BigDecimal.valueOf(htje);
164
+        if (countBD.compareTo(htjeBD) == 0) {
165
+            for (int i = 0; i < prjPayplanList.size(); i++) {
166
+                prjPayplanList.get(i).setCjr(getSysUserId());
167
+                prjPayplanList.get(i).setCjsj(new Date(System.currentTimeMillis()));
168
+            }
169
+            int num = prjPayplanService.insertBatch(prjPayplanList);
170
+            if (num > 0)
171
+                return BaseResult.success("保存成功!", prjPayplanList);
172
+            else
173
+                return BaseResult.failure("保存失败!");
174
+        }else {
175
+            return BaseResult.failure("保存失败,付款计划总金额不等于合同金额!");
176
+        }
177
+
178
+    }
179
+
147 180
     /**
148 181
      * 编辑数据
149 182
      *
150 183
      * @return
151 184
      */
152
-    @RequestMapping(value = "/forUpdate/{id}", method = RequestMethod.GET)
153
-    public String forUpdate(Model model, @PathVariable Integer id) {
154
-        //当前项目
155
-        PrjPayplan payplan = prjPayplanService.queryById(id);
156
-        model.addAttribute("payplan", payplan);
185
+    @RequestMapping(value = "/forUpdate", method = RequestMethod.GET)
186
+    public String forUpdate() {
187
+//        //当前项目
188
+//        PrjPayplan payplan = prjPayplanService.queryById(id);
189
+//        model.addAttribute("payplan", payplan);
157 190
 
158 191
         return "prjpayplan/update";
159 192
     }
160
-
161 193
     /**
162 194
      * 更新数据
163 195
      *
@@ -186,6 +218,11 @@ public class PrjPayplanController extends BaseController {
186 218
 
187 219
         return "prjpayplan/view";
188 220
     }
221
+    @RequestMapping(value = "/forView1", method = RequestMethod.GET)
222
+    public String forView1(Model model) {
223
+        //当前项目
224
+        return "prjpayplan/view1";
225
+    }
189 226
 
190 227
     /**
191 228
      * 批量删除

+ 4 - 0
src/main/java/com/liang/service/PrjPayplanService.java

@@ -71,4 +71,8 @@ public interface PrjPayplanService {
71 71
      * @return
72 72
      */
73 73
     List<PrjPayplan> getPayPlanList(Integer ht);
74
+
75
+    int insertBatch(List<PrjPayplan> prjPayplanList);
76
+
77
+    void deleteByHtId(Integer ht);
74 78
 }

+ 10 - 0
src/main/java/com/liang/service/impl/PrjPayplanServiceImpl.java

@@ -92,4 +92,14 @@ public class PrjPayplanServiceImpl implements PrjPayplanService {
92 92
     public List<PrjPayplan> getPayPlanList(Integer ht) {
93 93
         return this.prjPayplanDao.getPayPlanList(ht);
94 94
     }
95
+
96
+    @Override
97
+    public int insertBatch(List<PrjPayplan> prjPayplanList) {
98
+        return this.prjPayplanDao.insertBatch(prjPayplanList);
99
+    }
100
+
101
+    @Override
102
+    public void deleteByHtId(Integer ht) {
103
+        prjPayplanDao.deleteByHtId(ht);
104
+    }
95 105
 }

+ 2 - 2
src/main/resources/mapper/PrjPayplanDao.xml

@@ -109,11 +109,11 @@
109 109
     </insert>
110 110
 
111 111
     <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
112
-        insert into prj_PayPlan(FKYQ, ZFBL, ZFJE, CJR, CJSJ, RWS, FYSQ, JHMC, HT)
112
+        insert into prj_PayPlan(FKYQ, ZFBL, ZFJE, CJR, CJSJ, RWS, FYSQ, JHMC, HT,FKXX)
113 113
         values
114 114
         <foreach collection="entities" item="entity" separator=",">
115 115
             (#{entity.fkyq}, #{entity.zfbl}, #{entity.zfje}, #{entity.cjr}, #{entity.cjsj}, #{entity.rws},
116
-            #{entity.fysq}, #{entity.jhmc}, #{entity.ht})
116
+            #{entity.fysq}, #{entity.jhmc}, #{entity.ht},#{entity.fkxx})
117 117
         </foreach>
118 118
     </insert>
119 119
 

+ 149 - 38
src/main/resources/templates/prjcontract/add.html

@@ -156,9 +156,17 @@
156 156
 
157 157
                         <table class="layui-hide" id="currentTableId3" name="currentTableId3"
158 158
                                lay-filter="currentTableFilter3"></table>
159
-
159
+                        <div class="layui-form-item layui-inline" style="width: 100%">
160
+                            <div class="layui-input-block" style="margin-left: 1%; width: 85%;">
161
+                                <p style="color: red;">注:现要求付款计划必须一次性填写完成,并且付款计划总金额等于合同金额!!
162
+                                </p>
163
+                            </div>
164
+                        </div>
160 165
                         <!-- 右侧悬浮按钮 -->
161 166
                         <div class="right-bottom-btn" style="margin-bottom: 5px">
167
+                            <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn2">
168
+                                <i class="layui-icon layui-icon-ok"></i>保存
169
+                            </button>
162 170
                             <button class="layui-btn" lay-filter="cancleBtn">
163 171
                                 <i class="layui-icon layui-icon-close"></i>取消
164 172
                             </button>
@@ -181,6 +189,7 @@
181 189
     AjaxUtil.ctx = /*[[@{/}]]*/'';
182 190
     var updateflag = 0;//更新标志
183 191
     var htInfo = {};
192
+    var fkjh = [];
184 193
 
185 194
     layui.use(['form', 'table', 'treeTable', 'layCascader', 'upload','laydate'], function () {
186 195
         var form = layui.form,
@@ -552,20 +561,20 @@
552 561
         //付款计划
553 562
         var dataFkjh = new Array();
554 563
 
555
-        function freshFkjh() {
556
-            $.ajax({
557
-                url: AjaxUtil.ctx + 'prjPayplan/list/' + htId,
558
-                type: "post",
559
-                async: false,
560
-                dataType: "json",
561
-                success: function (result) {
562
-                    dataFkjh = result.data.rows;
563
-                    table.reload('currentTableId3', {
564
-                        data: dataFkjh
565
-                    });
566
-                }
567
-            });
568
-        }
564
+        // function freshFkjh() {
565
+        //     $.ajax({
566
+        //         url: AjaxUtil.ctx + 'prjPayplan/list/' + htId,
567
+        //         type: "post",
568
+        //         async: false,
569
+        //         dataType: "json",
570
+        //         success: function (result) {
571
+        //             dataFkjh = result.data.rows;
572
+        //             table.reload('currentTableId3', {
573
+        //                 data: dataFkjh
574
+        //             });
575
+        //         }
576
+        //     });
577
+        // }
569 578
 
570 579
         var currTable3 = table.render({
571 580
             elem: '#currentTableId3',
@@ -612,8 +621,28 @@
612 621
                     end: function (index) {
613 622
                         // 重载表格
614 623
                         if (updateflag == 1)
615
-                            freshFkjh();
624
+                            // freshFkjh();
625
+                            var oldData = table.cache["currentTableId3"];
626
+                             console.log(oldData)
627
+                            oldData.push(fkjh);
628
+                             if (oldData != '' && oldData !=null) {
629
+                                 table.reload('currentTableId3', {
630
+                                     data: oldData,
631
+                                 })
632
+                             }
616 633
                         updateflag = 0;
634
+                        for (var i = 0; i < subTopics.length; i++) {
635
+                            var item = subTopics[i];
636
+                            if (item.LAY_CHECKED) {//选中
637
+                                subTopics[i] = fkjh;
638
+                                break;
639
+                            }
640
+                        }
641
+                        //刷新表格
642
+                        var currData = subTopics;
643
+                        table.reload('currentTableId3', {
644
+                            data: currData
645
+                        });
617 646
                     }
618 647
                 });
619 648
             }
@@ -622,8 +651,9 @@
622 651
         // 监听编辑按钮(付款计划)
623 652
         $("button[lay-filter='btnEdit2']").click(function () {
624 653
             var subTopics = table.cache["currentTableId3"];
625
-            if (subTopics.length == 0)
654
+            if (subTopics && subTopics.length === 0) {
626 655
                 return;
656
+            }
627 657
 
628 658
             var checkStatus = table.checkStatus('currentTableId3')
629 659
                 , data = checkStatus.data;
@@ -635,17 +665,30 @@
635 665
                 htInfo = {
636 666
                     "htje": $("#htje").val()
637 667
                 }
668
+                fkjh = {
669
+                    'fysq':data[0].fysq,
670
+                    'rws':data[0].rws,
671
+                    'ht':data[0].ht,
672
+                    'cjr':data[0].cjr,
673
+                    'jhmc':data[0].jhmc,
674
+                    'fkyq':data[0].fkyq,
675
+                    'zfbl':data[0].zfbl,
676
+                    'zfje':data[0].zfje,
677
+                    'cjsj':data[0].cjsj,
678
+                    'fkxx':data[0].fkxx,
679
+                }
680
+
638 681
                 layer.open({
639 682
                     title: '编辑付款计划',
640 683
                     type: 2,
641 684
                     maxmin: true,
642 685
                     shade: 0.2,
643 686
                     area: [layerwidth + 'px', layerheight + 'px'],
644
-                    content: AjaxUtil.ctx + 'prjPayplan/forUpdate/' + data[0].id,
687
+                    content: AjaxUtil.ctx + 'prjPayplan/forUpdate',
645 688
                     end: function (index) {
646 689
                         // 重载表格
647 690
                         if (updateflag == 1)
648
-                            freshFkjh();
691
+                            // freshFkjh();
649 692
                         updateflag = 0;
650 693
                     }
651 694
                 });
@@ -664,16 +707,25 @@
664 707
             } else if (data.length > 1) {
665 708
                 Message.warning("请选择一条记录进行浏览!", 1500);
666 709
             } else {
710
+                fkjh = {
711
+                    'jhmc':data[0].jhmc,
712
+                    'fkyq':data[0].fkyq,
713
+                    'zfbl':data[0].zfbl,
714
+                    'zfje':data[0].zfje,
715
+                    'cjsj':data[0].cjsj,
716
+                    'fkxx':data[0].fkxx,
717
+                }
667 718
                 layer.open({
668 719
                     title: '浏览付款计划',
669 720
                     type: 2,
670 721
                     maxmin: true,
671 722
                     shade: 0.2,
672 723
                     area: [layerwidth + 'px', layerheight + 'px'],
673
-                    content: AjaxUtil.ctx + 'prjPayplan/forView/' + data[0].id,
724
+                    content: AjaxUtil.ctx + 'prjPayplan/forView1',
674 725
                     end: function () {
675 726
                     }
676 727
                 });
728
+
677 729
             }
678 730
         });
679 731
         // 监听删除按钮(付款计划)
@@ -687,24 +739,19 @@
687 739
             if (data == null || data.length === 0) {
688 740
                 Message.warning("请选择要删除的付款计划!", 1500);
689 741
             } else {
690
-                layer.confirm('确定批量删除付款计划吗?', function (index) {
742
+                layer.confirm('确定删除所选中的付款计划吗?', function (index) {
691 743
                     layer.close(index);
692
-                    AjaxUtil.post({
693
-                        url: AjaxUtil.ctx + "prjPayplan/batchDelete",
694
-                        contentType: "application/json",
695
-                        data: JSON.stringify(data),
696
-                        success: function (res) {
697
-                            if (res.code === 0) {
698
-                                Message.success(1000, res.message, function () {
699
-                                    // 重载表格
700
-                                    freshFkjh();
701
-                                });
702
-                            } else {
703
-                                Message.error(res.message, 1000);
704
-                            }
705
-                        },
706
-                        error: function (error) {
744
+                    for (var i = 0; i < subTopics.length; i++) {
745
+                        var item = subTopics[i];
746
+                        if (item.LAY_CHECKED) {//条件:选中
747
+                            subTopics.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
748
+                            i--;
707 749
                         }
750
+                    }
751
+                    //刷新表格
752
+                    var currData = subTopics;
753
+                    table.reload('currentTableId3', {
754
+                        data: currData
708 755
                     });
709 756
                 });
710 757
             }
@@ -712,18 +759,77 @@
712 759
         //双击(付款计划)
713 760
         table.on('rowDouble(currentTableFilter3)', function (obj) {
714 761
             var data = obj.data;
762
+            fkjh = {
763
+                'jhmc':data.jhmc,
764
+                'fkyq':data.fkyq,
765
+                'zfbl':data.zfbl,
766
+                'zfje':data.zfje,
767
+                'cjsj':data.cjsj,
768
+                'fkxx':data.fkxx,
769
+            }
715 770
             layer.open({
716 771
                 title: '浏览付款计划',
717 772
                 type: 2,
718 773
                 maxmin: true,
719 774
                 shade: 0.2,
720 775
                 area: [layerwidth + 'px', layerheight + 'px'],
721
-                content: AjaxUtil.ctx + 'prjPayplan/forView/' + data.id,
776
+                content: AjaxUtil.ctx + 'prjPayplan/forView1',
722 777
                 end: function (index) {
723 778
                     layer.close(index);
724 779
                 }
725 780
             });
726 781
         });
782
+        form.on('submit(saveBtn2)', function (data) {
783
+            var subTopics = table.cache["currentTableId3"];
784
+            var htje =parseFloat($("#htje").val())
785
+            var prjPayplanList =[];
786
+            var count = 0;
787
+            if (!subTopics && subTopics.length === 0) {
788
+                Message.warning("请先创建付款计划!!!", 1500);
789
+                return;
790
+            }
791
+            for (let i = 0; i < subTopics.length; i++) {
792
+                count += parseFloat(subTopics[i].zfje) || 0;
793
+            }
794
+            for (const item of subTopics) {
795
+                var prjPayplan = {
796
+                    "fkxx": item.fkxx,
797
+                    "fkyq": item.fkyq,
798
+                    "ht": item.ht,
799
+                    "jhmc": item.jhmc,
800
+                    "rws": item.rws,
801
+                    "zfbl": item.zfbl,
802
+                    "zfje": item.zfje,
803
+                };
804
+                prjPayplanList.push(prjPayplan);
805
+            }
806
+            console.log(count)
807
+            console.log(htje)
808
+            console.log(subTopics)
809
+            if (count>htje){
810
+                Message.warning("付款计划付款总金额大于合同金额!!!", 1500);
811
+                return;
812
+            }else if (count<htje){
813
+                Message.warning("付款计划付款总金额小于合同金额!!!", 1500);
814
+                return;
815
+            }else {
816
+                var index = layer.load(0, {shade: 0.1});
817
+                AjaxUtil.post({
818
+                    url: AjaxUtil.ctx + "prjPayplan/doAdd1/?htje="+htje,
819
+                    contentType: "application/json",
820
+                    data: JSON.stringify(prjPayplanList),
821
+                    success: function (res) {
822
+                        layer.close(index);
823
+                            layer.msg(res.message);
824
+                        var iframeIndex = parent.layer.getFrameIndex(window.name);
825
+                        parent.layer.close(iframeIndex);
826
+                    },
827
+                    error: function (error) {
828
+                        Message.error(error.message, 1000);
829
+                    }
830
+                });
831
+            }
832
+        });
727 833
 
728 834
         // 监听取消按钮
729 835
         $("button[lay-filter='cancleBtn']").click(function () {
@@ -735,7 +841,12 @@
735 841
     function getHtInfo() {
736 842
         return htInfo;
737 843
     }
738
-
844
+    function getFkjh() {
845
+        return fkjh;
846
+    }
847
+    function setFkjh(expense) {
848
+        fkjh = expense;
849
+    }
739 850
     function setUpdateFlag() {
740 851
         updateflag = 1;
741 852
     }

+ 140 - 26
src/main/resources/templates/prjcontract/update.html

@@ -207,9 +207,17 @@
207 207
 
208 208
                         <table class="layui-hide" id="currentTableId3" name="currentTableId3"
209 209
                                lay-filter="currentTableFilter3"></table>
210
-
210
+                        <div class="layui-form-item layui-inline" style="width: 100%">
211
+                            <div class="layui-input-block" style="margin-left: 1%; width: 85%;">
212
+                                <p style="color: red;">注:现要求付款计划必须一次性填写完成,并且付款计划总金额等于合同金额!!
213
+                                </p>
214
+                            </div>
215
+                        </div>
211 216
                         <!-- 右侧悬浮按钮 -->
212 217
                         <div class="right-bottom-btn" style="margin-bottom: 5px">
218
+                            <button type="button" class="layui-btn" lay-submit lay-filter="saveBtn2">
219
+                                <i class="layui-icon layui-icon-ok"></i>保存
220
+                            </button>
213 221
                             <button class="layui-btn" lay-filter="cancleBtn">
214 222
                                 <i class="layui-icon layui-icon-close"></i>关闭
215 223
                             </button>
@@ -232,6 +240,7 @@
232 240
     AjaxUtil.ctx = /*[[@{/}]]*/'';
233 241
     var updateflag = 0;//更新标志
234 242
     var htInfo = {};
243
+    var fkjh = [];
235 244
 
236 245
     layui.use(['form', 'table', 'treeTable', 'layCascader', 'upload','laydate'], function () {
237 246
         var form = layui.form,
@@ -535,11 +544,14 @@
535 544
             return false;
536 545
         });
537 546
 
547
+        var dataFkjh = [[${dataFkjh}]]
548
+
538 549
         //付款计划
539 550
         var currTable3 = table.render({
540 551
             elem: '#currentTableId3',
541
-            url: AjaxUtil.ctx + 'prjPayplan/list/' + htId,
542
-            method: 'post',
552
+            // url: AjaxUtil.ctx + 'prjPayplan/list/' + htId,
553
+            // method: 'post',
554
+            data: dataFkjh,
543 555
             cols: [
544 556
                 [
545 557
                     {type: "checkbox"},
@@ -578,7 +590,16 @@
578 590
                 end: function (index) {
579 591
                     // 重载表格
580 592
                     if (updateflag == 1)
581
-                        currTable3.reload();
593
+                        // currTable3.reload()
594
+                        var oldData = table.cache["currentTableId3"];
595
+                    console.log('新建前'+oldData)
596
+                    oldData.push(fkjh);
597
+                    console.log('新建后'+oldData)
598
+                    if (oldData != '' && oldData !=null) {
599
+                        table.reload('currentTableId3', {
600
+                            data: oldData,
601
+                        })
602
+                    }
582 603
                     updateflag = 0;
583 604
                 }
584 605
             });
@@ -599,18 +620,44 @@
599 620
                 htInfo = {
600 621
                     "htje": $("#htje").val()
601 622
                 }
623
+                fkjh = {
624
+                    'fysq':data[0].fysq,
625
+                    'rws':data[0].rws,
626
+                    'ht':data[0].ht,
627
+                    'cjr':data[0].cjr,
628
+                    'jhmc':data[0].jhmc,
629
+                    'fkyq':data[0].fkyq,
630
+                    'zfbl':data[0].zfbl,
631
+                    'zfje':data[0].zfje,
632
+                    'cjsj':data[0].cjsj,
633
+                    'fkxx':data[0].fkxx,
634
+                }
602 635
                 layer.open({
603 636
                     title: '编辑付款计划',
604 637
                     type: 2,
605 638
                     maxmin: true,
606 639
                     shade: 0.2,
607 640
                     area: [layerwidth + 'px', layerheight + 'px'],
608
-                    content: AjaxUtil.ctx + 'prjPayplan/forUpdate/' + data[0].id,
641
+                    content: AjaxUtil.ctx + 'prjPayplan/forUpdate',
609 642
                     end: function (index) {
610 643
                         // 重载表格
611 644
                         if (updateflag == 1)
612
-                            currTable3.reload();
645
+                            console.log('编辑前'+subTopics)
613 646
                         updateflag = 0;
647
+                        for (var i = 0; i < subTopics.length; i++) {
648
+                            var item = subTopics[i];
649
+                            if (item.LAY_CHECKED) {//选中
650
+                                subTopics[i] = fkjh;
651
+                                break;
652
+                            }
653
+                        }
654
+                        //刷新表格
655
+                        var currData = subTopics;
656
+                        console.log('编辑后'+currData)
657
+                        console.log(currData)
658
+                        table.reload('currentTableId3', {
659
+                            data: currData
660
+                        });
614 661
                     }
615 662
                 });
616 663
             }
@@ -628,13 +675,21 @@
628 675
             } else if (data.length > 1) {
629 676
                 Message.warning("请选择一条记录进行浏览!", 1500);
630 677
             } else {
678
+                fkjh = {
679
+                    'jhmc':data[0].jhmc,
680
+                    'fkyq':data[0].fkyq,
681
+                    'zfbl':data[0].zfbl,
682
+                    'zfje':data[0].zfje,
683
+                    'cjsj':data[0].cjsj,
684
+                    'fkxx':data[0].fkxx,
685
+                }
631 686
                 layer.open({
632 687
                     title: '浏览付款计划',
633 688
                     type: 2,
634 689
                     maxmin: true,
635 690
                     shade: 0.2,
636 691
                     area: [layerwidth + 'px', layerheight + 'px'],
637
-                    content: AjaxUtil.ctx + 'prjPayplan/forView/' + data[0].id,
692
+                    content: AjaxUtil.ctx + 'prjPayplan/forView1',
638 693
                     end: function () {
639 694
                     }
640 695
                 });
@@ -650,25 +705,19 @@
650 705
             if (data == null || data.length === 0) {
651 706
                 Message.warning("请选择要删除的付款计划!", 1500);
652 707
             } else {
653
-                layer.confirm('确定批量删除付款计划吗?', function (index) {
708
+                layer.confirm('确定删除所选中的付款计划吗?', function (index) {
654 709
                     layer.close(index);
655
-                    AjaxUtil.post({
656
-                        url: AjaxUtil.ctx + "prjPayplan/batchDelete",
657
-                        contentType: "application/json",
658
-                        data: JSON.stringify(data),
659
-                        success: function (res) {
660
-                            if (res.code === 0) {
661
-                                layer.msg(res.message,{icon:3},function () {
662
-                                    // 重载表格
663
-                                    currTable3.reload();
664
-                                });
665
-                            } else {
666
-                                layer.msg(res.message,{icon:3});
667
-                            }
668
-                        },
669
-                        error: function (error) {
670
-                            layer.msg(res.message,{icon:3});
710
+                    for (var i = 0; i < subTopics.length; i++) {
711
+                        var item = subTopics[i];
712
+                        if (item.LAY_CHECKED) {//条件:选中
713
+                            subTopics.splice(i, 1);//移除后后造成数组下标索引发生变化,所以下面需要i--
714
+                            i--;
671 715
                         }
716
+                    }
717
+                    //刷新表格
718
+                    var currData = subTopics;
719
+                    table.reload('currentTableId3', {
720
+                        data: currData
672 721
                     });
673 722
                 });
674 723
             }
@@ -676,18 +725,78 @@
676 725
         //双击(付款计划)
677 726
         table.on('rowDouble(currentTableFilter3)', function (obj) {
678 727
             var data = obj.data;
728
+            fkjh = {
729
+                'jhmc':data.jhmc,
730
+                'fkyq':data.fkyq,
731
+                'zfbl':data.zfbl,
732
+                'zfje':data.zfje,
733
+                'cjsj':data.cjsj,
734
+                'fkxx':data.fkxx,
735
+            }
679 736
             layer.open({
680 737
                 title: '浏览付款计划',
681 738
                 type: 2,
682 739
                 maxmin: true,
683 740
                 shade: 0.2,
684 741
                 area: [layerwidth + 'px', layerheight + 'px'],
685
-                content: AjaxUtil.ctx + 'prjPayplan/forView/' + data.id,
742
+                content: AjaxUtil.ctx + 'prjPayplan/forView1',
686 743
                 end: function (index) {
687 744
                     layer.close(index);
688 745
                 }
689 746
             });
690 747
         });
748
+        //监听付款计划保存按钮
749
+        form.on('submit(saveBtn2)', function (data) {
750
+            var subTopics = table.cache["currentTableId3"];
751
+            var htje =parseFloat($("#htje").val())
752
+            var prjPayplanList =[];
753
+            var count = 0;
754
+            if (!subTopics && subTopics.length === 0) {
755
+                Message.warning("请先创建付款计划!!!", 1500);
756
+                return;
757
+            }
758
+            for (let i = 0; i < subTopics.length; i++) {
759
+                count += parseFloat(subTopics[i].zfje) || 0;
760
+            }
761
+            for (const item of subTopics) {
762
+                var prjPayplan = {
763
+                    "fkxx": item.fkxx,
764
+                    "fkyq": item.fkyq,
765
+                    "ht": item.ht,
766
+                    "jhmc": item.jhmc,
767
+                    "rws": item.rws,
768
+                    "zfbl": item.zfbl,
769
+                    "zfje": item.zfje,
770
+                };
771
+                prjPayplanList.push(prjPayplan);
772
+            }
773
+            console.log(count)
774
+            console.log(htje)
775
+            console.log(subTopics)
776
+            if (count>htje){
777
+                Message.warning("付款计划付款总金额大于合同金额!!!", 1500);
778
+                return;
779
+            }else if (count<htje){
780
+                Message.warning("付款计划付款总金额小于合同金额!!!", 1500);
781
+                return;
782
+            }else {
783
+                var index = layer.load(0, {shade: 0.1});
784
+                AjaxUtil.post({
785
+                    url: AjaxUtil.ctx + "prjPayplan/doAdd1/?htje="+htje,
786
+                    contentType: "application/json",
787
+                    data: JSON.stringify(prjPayplanList),
788
+                    success: function (res) {
789
+                        layer.close(index);
790
+                        layer.msg(res.message);
791
+                        var iframeIndex = parent.layer.getFrameIndex(window.name);
792
+                        parent.layer.close(iframeIndex);
793
+                    },
794
+                    error: function (error) {
795
+                        Message.error(error.message, 1000);
796
+                    }
797
+                });
798
+            }
799
+        });
691 800
 
692 801
         // 监听取消按钮
693 802
         $("button[lay-filter='cancleBtn']").click(function () {
@@ -699,7 +808,12 @@
699 808
     function getHtInfo() {
700 809
         return htInfo;
701 810
     }
702
-
811
+    function getFkjh() {
812
+        return fkjh;
813
+    }
814
+    function setFkjh(expense) {
815
+        fkjh = expense;
816
+    }
703 817
     function setUpdateFlag() {
704 818
         updateflag = 1;
705 819
     }

+ 22 - 20
src/main/resources/templates/prjpayplan/add.html

@@ -124,26 +124,28 @@
124 124
                 layer.msg('支付金额不能大于合同总金额!');
125 125
                 return false;
126 126
             }
127
-            var index = layer.load(0, {shade: 0.1});
128
-            AjaxUtil.post({
129
-                url: AjaxUtil.ctx + "prjPayplan/doAdd/?htje="+htje,
130
-                data: data.field,
131
-                success: function (res) {
132
-                    layer.close(index);
133
-                    if (res.code === 0) {
134
-                        parent.setUpdateFlag();
135
-                        parent.layer.close(parent.layer.getFrameIndex(window.name));
136
-                    } else {
137
-                        layer.msg(res.message);
138
-                    }
139
-
140
-                },
141
-                error: function (error) {
142
-                    Message.error(error.message, 1000);
143
-                }
144
-            });
145
-
146
-            return false;
127
+            // var index = layer.load(0, {shade: 0.1});
128
+            // AjaxUtil.post({
129
+            //     url: AjaxUtil.ctx + "prjPayplan/doAdd/?htje="+htje,
130
+            //     data: data.field,
131
+            //     success: function (res) {
132
+            //         layer.close(index);
133
+            //         if (res.code === 0) {
134
+            //             parent.setUpdateFlag();
135
+            //             parent.layer.close(parent.layer.getFrameIndex(window.name));
136
+            //         } else {
137
+            //             layer.msg(res.message);
138
+            //         }
139
+            //
140
+            //     },
141
+            //     error: function (error) {
142
+            //         Message.error(error.message, 1000);
143
+            //     }
144
+            // });
145
+            parent.setFkjh(data.field);
146
+            parent.setUpdateFlag();
147
+            parent.layer.close(parent.layer.getFrameIndex(window.name));// 关闭子窗口
148
+            // return false;
147 149
         });
148 150
         var prjPayplan = new Array();
149 151
         var currTable2 = table.render({

+ 42 - 30
src/main/resources/templates/prjpayplan/update.html

@@ -16,20 +16,20 @@
16 16
 <body>
17 17
 <form class="layui-form" action="" lay-filter="formDemo">
18 18
     <div class="layui-form layuimini-form" style="margin-right: 20px">
19
-        <input type="hidden" id="rws" name="rws" class="layui-input" th:value="${rws}">
20
-        <input type="hidden" id="ht" name="ht" class="layui-input" th:value="${ht}">
19
+        <input type="hidden" id="rws" name="rws" class="layui-input" >
20
+        <input type="hidden" id="ht" name="ht" class="layui-input" >
21 21
         <div class="layui-form-item">
22 22
             <label class="layui-form-label required" style="width: 70px">计划名称</label>
23 23
             <div class="layui-input-block">
24
-                <input type="hidden" id="id" name="id" class="layui-input" th:value="${payplan.id}">
25
-                <input type="text" id="jhmc" name="jhmc" class="layui-input" th:value="${payplan.jhmc}" readonly>
24
+                <input type="hidden" id="id" name="id" class="layui-input" >
25
+                <input type="text" id="jhmc" name="jhmc" class="layui-input" readonly>
26 26
             </div>
27 27
         </div>
28 28
         <div class="layui-form-item">
29 29
             <label class="layui-form-label" style="width: 70px">付款要求</label>
30 30
             <div class="layui-input-block">
31 31
                 <textarea id="fkyq" name="fkyq" class="layui-textarea" style="width: 100%;height: 100px"
32
-                          th:text="${payplan.fkyq}"></textarea>
32
+                         ></textarea>
33 33
                 <tip>按合同约定填写</tip>
34 34
             </div>
35 35
         </div>
@@ -38,14 +38,14 @@
38 38
             <label class="layui-form-label" style="width: 90px; margin-left: -20px">支付比例(%)</label>-->
39 39
             <div class="layui-input-block">
40 40
                 <!--                <input type="number" id="zfbl" name="zfbl" autocomplete="off" th:value="${payplan.zfbl}" class="layui-input" lay-verify="required" lay-reqtext="支付比例不能为空">-->
41
-                <input type="number" id="zfbl" name="zfbl" autocomplete="off" th:value="${payplan.zfbl}"
41
+                <input type="number" id="zfbl" name="zfbl" autocomplete="off"
42 42
                        class="layui-input">
43 43
             </div>
44 44
         </div>
45 45
         <div class="layui-form-item">
46 46
             <label class="layui-form-label required" style="width: 70px">支付金额(万元)</label>
47 47
             <div class="layui-input-block">
48
-                <input type="number" id="zfje" name="zfje" autocomplete="off" th:value="${payplan.zfje}"
48
+                <input type="number" id="zfje" name="zfje" autocomplete="off"
49 49
                        class="layui-input" lay-verify="required" lay-reqtext="支付金额不能为空">
50 50
             </div>
51 51
         </div>
@@ -86,6 +86,20 @@
86 86
             layer = layui.layer;
87 87
 
88 88
         var htInfo = parent.getHtInfo();
89
+        var fkjh = parent.getFkjh();
90
+        var prjPayplan = new Array();
91
+        console.log(fkjh)
92
+        console.log(fkjh.fkxx)
93
+        if (fkjh.fkxx != null && fkjh.fkxx != "") {
94
+            prjPayplan = eval('(' + fkjh.fkxx + ')');
95
+        }
96
+        console.log(fkjh)
97
+        $("#jhmc").val(fkjh.jhmc);
98
+        $("#fkyq").val(fkjh.fkyq);
99
+        $("#zfbl").val(fkjh.zfbl);
100
+        $("#zfje").val(fkjh.zfje);
101
+        $("#rws").val(fkjh.rws);
102
+        $("#ht").val(fkjh.ht);
89 103
         //支付比例
90 104
         $("#zfbl").on("input", function (e) {
91 105
             //获取input输入的值
@@ -95,10 +109,6 @@
95 109
                 $("#zfje").val(zfje.toFixed(2));
96 110
             }
97 111
         });
98
-        var prjPayplan = new Array();
99
-        if ([[${payplan.fkxx}]] != null && [[${payplan.fkxx}]] != "") {
100
-            prjPayplan = eval('(' + [[${payplan.fkxx}]] + ')');
101
-        }
102 112
         var currTable2 = table.render({
103 113
             elem: '#currentTableId2',
104 114
             data: prjPayplan,
@@ -134,25 +144,27 @@
134 144
             }
135 145
             $("#fkxx").val(JSON.stringify(data_prjPayplan));
136 146
             data.field.fkxx = JSON.stringify(data_prjPayplan);
137
-            var index = layer.load(0, {shade: 0.1});
138
-            AjaxUtil.post({
139
-                url: AjaxUtil.ctx + "prjPayplan/doUpdate",
140
-                data: data.field,
141
-                success: function (res) {
142
-                    layer.close(index);
143
-                    if (res.code === 0) {
144
-                        parent.setUpdateFlag();
145
-                    } else {
146
-                        // Message.error(res.message, 1000);
147
-                    }
148
-                    parent.layer.close(parent.layer.getFrameIndex(window.name));
149
-                },
150
-                error: function (error) {
151
-                    Message.error(error.message, 1000)
152
-                }
153
-            });
154
-
155
-            return false;
147
+            // var index = layer.load(0, {shade: 0.1});
148
+            // AjaxUtil.post({
149
+            //     url: AjaxUtil.ctx + "prjPayplan/doUpdate",
150
+            //     data: data.field,
151
+            //     success: function (res) {
152
+            //         layer.close(index);
153
+            //         if (res.code === 0) {
154
+            //             parent.setUpdateFlag();
155
+            //         } else {
156
+            //             // Message.error(res.message, 1000);
157
+            //         }
158
+            //         parent.layer.close(parent.layer.getFrameIndex(window.name));
159
+            //     },
160
+            //     error: function (error) {
161
+            //         Message.error(error.message, 1000)
162
+            //     }
163
+            // });
164
+            parent.setFkjh(data.field);
165
+            parent.setUpdateFlag();
166
+            parent.layer.close(parent.layer.getFrameIndex(window.name));// 关闭子窗口
167
+            // return false;
156 168
         });
157 169
         //监听添加行按钮
158 170
         $("button[lay-filter='add']").click(function () {

+ 114 - 0
src/main/resources/templates/prjpayplan/view1.html

@@ -0,0 +1,114 @@
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-form layuimini-form" style="margin-right: 20px">
19
+        <div class="layui-form-item">
20
+            <label class="layui-form-label" style="width: 70px">计划名称</label>
21
+            <div class="layui-input-block">
22
+                <input type="text" id="jhmc" name="jhmc" class="layui-input" readonly>
23
+            </div>
24
+        </div>
25
+        <div class="layui-form-item">
26
+            <label class="layui-form-label" style="width: 70px">付款要求</label>
27
+            <div class="layui-input-block">
28
+                <textarea id="fkyq" name="fkyq" class="layui-textarea" style="width: 100%;height: 100px"
29
+                           readonly></textarea>
30
+            </div>
31
+        </div>
32
+        <div class="layui-form-item">
33
+            <label class="layui-form-label" style="width: 80px; margin-left: -10px">支付比例(%)</label>
34
+            <div class="layui-input-block">
35
+                <input type="text" id="zfbl" name="zfbl" class="layui-input"  readonly>
36
+            </div>
37
+        </div>
38
+        <div class="layui-form-item">
39
+            <label class="layui-form-label" style="width: 70px">支付金额(万元)</label>
40
+            <div class="layui-input-block">
41
+                <input type="text" id="zfje" name="zfje" class="layui-input"  readonly>
42
+            </div>
43
+        </div>
44
+        <div class="layui-form-item layui-inline" style="width: 100%">
45
+            <label class="layui-form-label" style="width: 10%">付款信息</label>
46
+            <div class="layuimini-container" style="margin-left: 13%; padding-bottom: 10px;width: 90%">
47
+                <input type="hidden" id="fkxx" name="fkxx" class="layui-input">
48
+                <table class="layui-hide" id="currentTableId2" name="currentTableId2" lay-filter="currentTableFilter2" style="padding-top: 0px;margin-top: 0px"></table>
49
+            </div>
50
+        </div>
51
+
52
+
53
+        <!-- 右侧悬浮按钮 -->
54
+        <div class="right-bottom-btn">
55
+            <button class="layui-btn" lay-filter="cancleBtn">
56
+                <i class="layui-icon layui-icon-close"></i>关闭
57
+            </button>
58
+        </div>
59
+    </div>
60
+</form>
61
+
62
+<script th:src="@{/lib/jquery-3.4.1/jquery-3.4.1.min.js}" charset="utf-8"></script>
63
+<script th:src="@{/lib/layui/layui.js}" charset="utf-8"></script>
64
+<script th:src="@{/lib/coco-message/coco-message.js}" charset="utf-8"></script>
65
+<script th:src="@{/js/lay-config.js}" charset="utf-8"></script>
66
+<script type="text/javascript" th:inline="javascript">
67
+    AjaxUtil.ctx = /*[[@{/}]]*/'';
68
+    layui.use(['form', 'layer', 'tableSelect','table'], function () {
69
+        var table = layui.table;
70
+        var fkjh = parent.getFkjh();
71
+        // 用于存放表格数据
72
+        var prjPayplan = new Array();
73
+        console.log(fkjh)
74
+        console.log(fkjh.fkxx)
75
+        if (fkjh.fkxx != null && fkjh.fkxx != "") {
76
+            prjPayplan = eval('(' + fkjh.fkxx + ')');
77
+        }
78
+                console.log(fkjh)
79
+                $("#jhmc").val(fkjh.jhmc);
80
+                $("#fkyq").val(fkjh.fkyq);
81
+                $("#zfbl").val(fkjh.zfbl);
82
+                $("#zfje").val(fkjh.zfje);
83
+        console.log(prjPayplan)
84
+        var currTable2 = table.render({
85
+            elem: '#currentTableId2',
86
+            data: prjPayplan,
87
+            cols: [
88
+                [
89
+                    {type: "checkbox", align: 'center'},
90
+                    {type: 'numbers', align: 'center'},
91
+                    {field: 'name', title: '公司名称', width: '30%',align:'center',edit: 'text'},
92
+                    {field: 'fkje', title: '付款金额', width: '15%', align: 'center',edit:'text'},
93
+                    {field: 'fksm', title: '付款说明', align: 'center',edit: 'text'}
94
+                ]
95
+            ],
96
+            autoSort: false,
97
+
98
+            limit: Number.MAX_VALUE,
99
+            page: false,
100
+            skin: 'grid',
101
+            done: function (res, curr, count) { // done为数据渲染完的回调
102
+            }
103
+        });
104
+
105
+
106
+        // 监听取消按钮
107
+        $("button[lay-filter='cancleBtn']").click(function () {
108
+            var iframeIndex = parent.layer.getFrameIndex(window.name);
109
+            parent.layer.close(iframeIndex);
110
+        });
111
+    });
112
+</script>
113
+</body>
114
+</html>