浏览代码

feat: 预付款功能基础架构完成

lanjianrong 5 年之前
父节点
当前提交
ea755f369d

+ 52 - 0
app/controller/advance_controller.js

@@ -0,0 +1,52 @@
+'use strict'
+
+module.exports = app => {
+    class advanceController extends app.BaseController {
+        /**
+         * 开工预付款页面(AJAX) GET
+         * @param {Object} ctx 全局上下文
+         */
+        async index(ctx) {
+            const renderData = {
+                type: 'start',
+                advancePayTotal: ctx.tender.info.deal_param.startAdvance
+            }
+            await this.layout('advance/index.ejs', renderData, 'advance/modal.ejs')
+        }
+
+        /**
+         * 材料预付款页面(AJAX) GET
+         * @param {Object} ctx 全局上下文
+         */
+        async materialInfo(ctx) {
+            const renderData = {
+                type: 'material',
+                advancePayTotal: ctx.tender.info.deal_param.materialAdvance
+            }
+            await this.layout('advance/index.ejs', renderData, 'advance/modal.ejs')
+        }
+
+        /**
+         * 预付款详情页(AJAX) GET
+         * @param {Object} ctx 全局上下文
+         */
+        async detail(ctx) {
+            const renderData = {}
+            await this.layout('advance/detail.ejs', renderData)
+        }
+
+        /**
+         * 开始新一期(AJAX) GET
+         * @param {Object} ctx 全局上下文
+         */
+        async add(ctx) {
+            const type = ctx.params.type
+            console.log(ctx.tender)
+            const renderData = {
+                isEdited: true
+            }
+            await this.layout('advance/detail.ejs', renderData)
+        }
+    }
+    return advanceController
+}

+ 26 - 0
app/router.js

@@ -90,8 +90,10 @@ module.exports = app => {
     // 金额概况
     app.get('/list', sessionAuth, 'tenderController.listDefault');
     app.get('/list/info', sessionAuth, 'tenderController.listInfo');
+
     // 计量进度
     app.get('/list/progress', sessionAuth, 'tenderController.listProgress');
+
     // 管理标段
     app.get('/list/manage', sessionAuth, 'tenderController.listManage');
     app.post('/list/add', sessionAuth, 'tenderController.addTender');
@@ -104,6 +106,13 @@ module.exports = app => {
     app.post('/tender/:id/save', sessionAuth, tenderCheck, 'tenderController.saveTenderInfo');
     app.post('/tender/rule', sessionAuth, 'tenderController.rule');
     app.post('/tender/:id/rule/first', sessionAuth, tenderCheck, 'tenderController.ruleFirst');
+
+    // 预付款
+    app.get('/tender/:id/advance', sessionAuth, tenderCheck, 'advanceController.index');
+    app.get('/tender/:id/advance/material', sessionAuth, tenderCheck, 'advanceController.materialInfo');
+    app.get('/tender/:id/advance/:order/detail', sessionAuth, tenderCheck, 'advanceController.detail');
+    app.get('/tender/:id/advance/:type/add', sessionAuth, tenderCheck, 'advanceController.add');
+
     // 标段协作办公
     app.get('/tender/:id/cooperation', sessionAuth, tenderCheck, 'tenderController.tenderCooperation');
 
@@ -118,6 +127,7 @@ module.exports = app => {
     app.post('/tender/:id/pos/paste', sessionAuth, tenderCheck, 'ledgerController.posPaste');
     app.post('/tender/:id/ledger/deal2sgfh', sessionAuth, tenderCheck, 'ledgerController.deal2sgfh');
     app.post('/tender/:id/ledger/check', sessionAuth, tenderCheck, 'ledgerController.check');
+
     // 台账审批相关
     app.get('/tender/:id/ledger/audit', sessionAuth, tenderCheck, 'ledgerAuditController.index');
     app.post('/tender/:id/ledger/audit/add', sessionAuth, tenderCheck, 'ledgerAuditController.add');
@@ -139,6 +149,7 @@ module.exports = app => {
     app.post('/tender/:id/revise/cancel', sessionAuth, tenderCheck, 'reviseController.cancel');
     app.post('/tender/:id/revise/save', sessionAuth, tenderCheck, 'reviseController.save');
     // app.post('/tender/:id/revise/deal2sgfh', sessionAuth, tenderCheck, 'reviseController.deal2sgfh');
+
     // 台账修订页面
     app.get('/tender/:id/revise/info', sessionAuth, tenderCheck, 'reviseController.info');
     app.post('/tender/:id/revise/auditors', sessionAuth, tenderCheck, 'reviseController.reviseAuditors');
@@ -146,10 +157,12 @@ module.exports = app => {
     app.post('/tender/:id/revise/info/update', sessionAuth, tenderCheck, 'reviseController.update');
     app.post('/tender/:id/revise/info/upload-excel/:ueType', sessionAuth, tenderCheck, 'reviseController.uploadExcel');
     app.post('/tender/:id/revise/info/check', sessionAuth, tenderCheck, 'reviseController.checkData');
+
     // 查看修订数据
     app.get('/tender/:id/revise/history', sessionAuth, tenderCheck, 'reviseController.history');
     app.post('/tender/:id/revise/history/load', sessionAuth, tenderCheck, 'reviseController.loadHistoryData');
     app.post('/tender/:id/revise/history/info', sessionAuth, tenderCheck, 'reviseController.historyInfo');
+
     // 修订审批
     app.post('/tender/:id/revise/audit/add', sessionAuth, tenderCheck, 'reviseController.addAuditor');
     app.post('/tender/:id/revise/audit/remove', sessionAuth, tenderCheck, 'reviseController.removeAuditor');
@@ -168,8 +181,10 @@ module.exports = app => {
     app.post('/tender/:id/measure/add', sessionAuth, tenderCheck, 'measureController.add');
     app.post('/tender/:id/measure/save', sessionAuth, tenderCheck, 'measureController.save');
     app.post('/tender/:id/measure/stage/delete', sessionAuth, tenderCheck, 'measureController.delete');
+
     // 计量台账 -- 清单汇总
     app.get('/tender/:id/measure/gather', sessionAuth, tenderCheck, 'measureController.gather');
+
     // 计量台账 -- 审核比较
     app.get('/tender/:id/measure/compare', sessionAuth, tenderCheck, 'measureController.compare');
     app.post('/tender/:id/measure/compare/load', sessionAuth, tenderCheck, 'measureController.loadCompareData');
@@ -183,12 +198,14 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/valid-change', sessionAuth, tenderCheck, stageCheck, 'stageController.searchValidChange');
     app.post('/tender/:id/measure/stage/:order/use-change', sessionAuth, tenderCheck, stageCheck, 'stageController.useChange');
     app.post('/tender/:id/measure/stage/:order/check', sessionAuth, tenderCheck, stageCheck, 'stageController.check');
+
     // 计量附件
     app.post('/tender/:id/measure/stage/:order/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageController.uploadFile');
     app.get('/tender/:id/measure/stage/:order/download/file/:fid', sessionAuth, 'stageController.downloadFile');
     app.post('/tender/:id/measure/stage/:order/delete/file', sessionAuth, tenderCheck, stageCheck, 'stageController.deleteFile');
     app.post('/tender/:id/measure/stage/:order/save/file', sessionAuth, tenderCheck, stageCheck, 'stageController.saveFile');
     app.post('/tender/:id/measure/stage/:order/check/file', sessionAuth, tenderCheck, stageCheck, 'stageController.checkFile');
+
     // 中间计量
     app.get('/tender/:id/measure/stage/:order/detail', sessionAuth, tenderCheck, stageCheck, 'stageController.detail');
     app.post('/tender/:id/measure/stage/:order/detail/build', sessionAuth, tenderCheck, stageCheck, 'stageController.buildDetailData');
@@ -197,6 +214,7 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/detail/save', sessionAuth, tenderCheck, stageCheck, 'stageController.saveDetailData');
     app.post('/tender/:id/measure/stage/:order/detail/add-img', sessionAuth, tenderCheck, stageCheck, 'stageController.addCalcImage');
     app.post('/tender/:id/measure/stage/:order/detail/merge-img', sessionAuth, tenderCheck, stageCheck, 'stageController.mergeCalcImage');
+
     // 合同支付
     app.get('/tender/:id/measure/stage/:order/pay', sessionAuth, tenderCheck, stageCheck, 'stageController.pay');
     app.post('/tender/:id/measure/stage/:order/pay/detail', sessionAuth, tenderCheck, stageCheck, 'stageController.chapterDetail');
@@ -204,24 +222,30 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/pay/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageController.payUploadFile');
     app.get('/tender/:id/measure/stage/:order/pay/download/file/:pid/:index', sessionAuth, 'stageController.payDownloadFile');
     app.post('/tender/:id/measure/stage/:order/pay/delete/file', sessionAuth, tenderCheck, stageCheck, 'stageController.payDeleteFile');
+
     // 变更概况
     app.get('/tender/:id/measure/stage/:order/change', sessionAuth, tenderCheck, stageCheck, 'stageController.change');
     app.post('/tender/:id/measure/stage/:order/change/data', sessionAuth, tenderCheck, stageCheck, 'stageController.getChangeData');
     app.post('/tender/:id/measure/stage/:order/change/detail', sessionAuth, tenderCheck, stageCheck, 'stageController.changeDetail');
+
     // 审批
     app.post('/tender/:id/measure/stage/:order/audit/add', sessionAuth, tenderCheck, stageCheck, 'stageController.addAudit');
     app.post('/tender/:id/measure/stage/:order/audit/delete', sessionAuth, tenderCheck, stageCheck, 'stageController.deleteAudit');
     app.post('/tender/:id/measure/stage/:order/audit/start', sessionAuth, tenderCheck, stageCheck, 'stageController.startAudit');
     app.post('/tender/:id/measure/stage/:order/audit/check', sessionAuth, tenderCheck, stageCheck, 'stageController.checkAudit');
     app.get('/tender/:id/measure/stage/:order/audit/check/again', sessionAuth, tenderCheck, stageCheck, 'stageController.checkAuditAgain');
+
     // 部位台账
     app.get('/tender/:id/measure/stage/:order/bwtz', sessionAuth, tenderCheck, stageCheck, 'stageController.bwtz');
     app.post('/tender/:id/measure/stage/:order/bwtz/load', sessionAuth, tenderCheck, stageCheck, 'stageController.loadBwtz');
+
     // 清单汇总
     app.get('/tender/:id/measure/stage/:order/gather', sessionAuth, tenderCheck, stageCheck, 'stageController.gather');
+
     // 审核比较
     app.get('/tender/:id/measure/stage/:order/compare', sessionAuth, tenderCheck, stageCheck, 'stageController.compare');
     app.post('/tender/:id/measure/stage/:order/compare/load', sessionAuth, tenderCheck, stageCheck, 'stageController.compareAuditor');
+
     // 附加功能
     app.get('/tender/:id/measure/stage/:order/extra/jgcl', sessionAuth, tenderCheck, stageCheck, 'stageExtraController.jgcl');
     app.post('/tender/:id/measure/stage/:order/extra/jgcl/load', sessionAuth, tenderCheck, stageCheck, 'stageExtraController.loadJgcl');
@@ -235,9 +259,11 @@ module.exports = app => {
     app.post('/tender/:id/measure/stage/:order/extra/upload/file', sessionAuth, tenderCheck, stageCheck, 'stageExtraController.uploadFile');
     app.get('/tender/:id/measure/stage/:order/extra/download/file', sessionAuth, tenderCheck, stageCheck, 'stageExtraController.downloadFile');
     app.post('/tender/:id/measure/stage/:order/extra/delete/file', sessionAuth, tenderCheck, stageCheck, 'stageExtraController.deleteFile');
+
     // 期审批管理
     app.get('/tender/:id/measure/stage/:order/manager', sessionAuth, tenderCheck, stageCheck, 'stageController.manager');
     app.post('/tender/:id/measure/stage/:order/manager/audit/delete', sessionAuth, tenderCheck, stageCheck, 'stageController.managerAuditDelete');
+
     // 报表
     app.get('/tender/:id/report', sessionAuth, tenderCheck, 'reportController.index');
     app.get('/tender/:id/measure/stage/:order/report', sessionAuth, tenderCheck, stageCheck, 'reportController.index');

+ 11 - 0
app/service/advance.js

@@ -0,0 +1,11 @@
+'use strict'
+
+module.exports = app => {
+    class Advance extends app.BaseService {
+        constructor(ctx) {
+            super(ctx)
+            this.tableName = 'advance_pay'
+        }
+    }
+    return Advance
+}

+ 267 - 0
app/view/advance/detail.ejs

@@ -0,0 +1,267 @@
+<% include ../tender/tender_sub_menu.ejs %>
+<div class="panel-content">
+    <div class="panel-title">
+        <div class="title-main d-flex justify-content-between">
+            <div>
+                <div class="d-inline-block">
+                    第3期
+                </div>
+            </div>
+            <div>
+                <a href="#sp-back" data-toggle="modal" data-target="#sp-back" class="btn btn-warning btn-sm">审批退回</a>
+                <a href="#sp-done" data-toggle="modal" data-target="#sp-done" class="btn btn-success btn-sm">审批通过</a>
+            </div>
+        </div>
+    </div>
+    <div class="content-wrap">
+        <div class="c-body">
+            <div class="sjs-height-0">
+                <div class="col-8 mx-auto">
+                    <h4 class="mt-3 text-center">第3期 开工预付款</h4>
+                    <table class="table table-bordered">
+                        <thead>
+                            <tr>
+                                <th colspan="4" class="text-center">
+                                    <h5>签约开工预付款:8,121,212.00 元</h5>
+                                </th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <% if(isEdited) { %>
+                                <th width="150">支付比例</th>
+                                <td class="text-right">
+                                    <div class="input-group input-group-sm"><input type="number"
+                                            class="form-control nospin text-right" value="2" max="100" min="1"
+                                            placeholder="请填写支付比例,将自动计算本期金额">
+                                        <div class="input-group-append"><span class="input-group-text">%</span></div>
+                                    </div>
+                                </td>
+                                <th width="150">本期金额</th>
+                                <td class="text-right">
+                                    <div class="input-group input-group-sm"><input type="number"
+                                            class="form-control nospin text-right" min="1" placeholder="请填写本期金额,将自动计算支付比例">
+                                        <div class="input-group-append"><span class="input-group-text">元</span></div>
+                                    </div>
+                                </td>
+                                </tr>
+                            <% } else {%>
+                                <tr>
+                                    <th width="150">支付比例</th>
+                                    <td class="text-right">
+                                        <h5>20%</h5>
+                                    </td>
+                                    <th width="150">本期金额</th>
+                                    <td class="text-right">
+                                        <h5>30000.00</h5>
+                                    </td>
+                                </tr>
+                            <% } %>
+                            <tr>
+                                <th>截止上期</th>
+                                <td class="text-right">
+                                    <h5>40000.00</h5>
+                                </td>
+                                <th>截止本期金额</th>
+                                <td class="text-right">
+                                    <h5>70000.00</h5>
+                                </td>
+                            </tr>
+                            <tr>
+                                <th>备注</th>
+                                <td colspan="3"></td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <table class="table table-bordered mt-3">
+                        <thead>
+                            <tr>
+                                <th colspan="3" class="text-center">附件</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td width="70">1</td>
+                                <td><a href="">11212.jpg</a></td>
+                                <td width="90"><a href="#" target="_blank" title="下载"><i
+                                            class="fa fa-download "></i></a></td>
+                            </tr>
+                            <tr>
+                                <td width="70">2</td>
+                                <td><a href="">444555.jpg</a></td>
+                                <td width="90"><a href="#" target="_blank" title="下载"><i
+                                            class="fa fa-download "></i></a></td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <% if(isEdited) { %>
+                    <table class="table table-bordered mt-3">
+                        <thead>
+                            <tr>
+                                <th colspan="2" class="text-center">审批流程</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td width="30%">
+                                    <div class="card">
+                                        <ul class="list-group list-group-flush">
+                                            <li class="list-group-item"><i
+                                                    class="fa fa fa-play-circle fa-rotate-90"></i> 布尔 <small
+                                                    class="text-muted">施工</small></li>
+                                            <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 张三
+                                                <small class="text-muted">监理</small></li>
+                                            <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 王五
+                                                <small class="text-muted">监理</small></li>
+                                            <li class="list-group-item"><i class="fa fa fa-stop-circle"></i> 李四 <small
+                                                    class="text-muted">监理</small></li>
+                                        </ul>
+                                    </div>
+                                </td>
+                                <td width="70%">
+                                    <div class="form-group">
+                                        <label>选择审批人</label>
+                                        <div class="input-group">
+                                            <div class="input-group-prepend">
+                                                <select class="form-control">
+                                                    <option>所有分组</option>
+                                                    <option>建设单位</option>
+                                                    <option>监理单位</option>
+                                                    <option>施工单位</option>
+                                                    <option>设计单位</option>
+                                                </select>
+                                            </div>
+                                            <select class="form-control">
+                                                <option>选择审批人</option>
+                                                <option>张三(监理)-中交第一公路工程局有限公司国道311线满别公路施工一分部</option>
+                                            </select>
+                                        </div>
+                                    </div>
+                                    <div class="card mt-3">
+                                        <div class="card-header">
+                                            审批流程
+                                        </div>
+                                        <ul class="list-group list-group-flush">
+                                            <li class="list-group-item"><a href=""
+                                                    class="text-danger pull-right">移除</a>1 张三 <small
+                                                    class="text-muted">监理</small>
+                                                <p class="m-0 ml-2"><small
+                                                        class="text-muted">中交第一公路工程局有限公司国道311线满别公路施工一分部</small></p>
+                                            </li>
+                                            <li class="list-group-item"><a href=""
+                                                    class="text-danger pull-right">移除</a>2 王五 <small
+                                                    class="text-muted">监理</small>
+                                                <p class="m-0 ml-2"><small class="text-muted">XXX单位</small></p>
+                                            </li>
+                                            <li class="list-group-item"><a href=""
+                                                    class="text-danger pull-right">移除</a>3 李四 <small
+                                                    class="text-muted">监理</small>
+                                                <p class="m-0 ml-2"><small class="text-muted">XXX单位</small></p>
+                                            </li>
+                                        </ul>
+                                    </div>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <% } else {%>
+                    <table class="table table-bordered mt-3">
+                        <thead>
+                            <tr>
+                                <th colspan="2" class="text-center">审批流程</th>
+                            </tr>
+                        </thead>
+                        <tbody>
+                            <tr>
+                                <td width="30%">
+                                    <div class="card">
+                                        <ul class="list-group list-group-flush">
+                                            <li class="list-group-item"><i
+                                                    class="fa fa fa-play-circle fa-rotate-90"></i> 布尔 <small
+                                                    class="text-muted">施工</small></li>
+                                            <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 张三
+                                                <small class="text-muted">监理</small></li>
+                                            <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 王五
+                                                <small class="text-muted">监理</small></li>
+                                            <li class="list-group-item"><i class="fa fa fa-stop-circle"></i> 李四 <small
+                                                    class="text-muted">监理</small></li>
+                                        </ul>
+                                    </div>
+                                </td>
+                                <td width="70%">
+                                    <div class="card mb-1">
+                                        <ul class="list-group list-group-flush">
+                                            <li class="list-group-item">
+                                                <span class="text-success pull-right">上报</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-play-circle fa-rotate-90 text-success"></i> 布尔
+                                                    <small class="text-muted">施工</small></h5>
+                                                <p class="card-text">2017-11-25</p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <span class="text-success pull-right">审批通过</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-chevron-circle-down text-success"></i> 张三 <small
+                                                        class="text-muted">监理</small></h5>
+                                                <p class="card-text">审批意见。2017-11-25</p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <span class="text-success pull-right">审批通过</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-chevron-circle-down text-success"></i> 王五 <small
+                                                        class="text-muted">监理</small></h5>
+                                                <p class="card-text">审批通过。2017-11-26</p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <span class="text-warning pull-right">审批退回 布尔</span>
+                                                <h5 class="card-title"><i class="fa fa-stop-circle text-warning"></i> 李四
+                                                    <small class="text-muted">监理</small></h5>
+                                                <p class="card-text">审批退回,审批意见文本。2017-11-27</p>
+                                            </li>
+                                        </ul>
+                                    </div>
+                                    <div class="card mb-1">
+                                        <ul class="list-group list-group-flush">
+                                            <li class="list-group-item">
+                                                <span class="text-success pull-right">重新上报</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-play-circle fa-rotate-90 text-success"></i> 布尔
+                                                    <small class="text-muted">施工</small></h5>
+                                                <p class="card-text">2017-12-01</p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <span class="text-success pull-right">审批通过</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-chevron-circle-down text-success"></i> 张三 <small
+                                                        class="text-muted">监理</small></h5>
+                                                <p class="card-text">审批通过 2017-12-02</p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <span class="text-warning pull-right">审批退回 张三</span>
+                                                <h5 class="card-title"><i
+                                                        class="fa fa-chevron-circle-down text-warning"></i> 王五 <small
+                                                        class="text-muted">监理</small></h5>
+                                                <p class="card-text">审批退回 2017-12-02</p>
+                                            </li>
+                                            <!--王五退回上一审批人 张三,张三重新审批-->
+                                            <li class="list-group-item">
+                                                <span class="pull-right">审批中</span>
+                                                <h5 class="card-title"><i class="fa fa-chevron-circle-down"></i> 张三
+                                                    <small class="text-muted">监理</small></h5>
+                                                <p class="card-text"></p>
+                                            </li>
+                                            <li class="list-group-item">
+                                                <h5 class="card-title"><i class="fa fa-stop-circle"></i> 李四 <small
+                                                        class="text-muted">监理</small></h5>
+                                            </li>
+                                        </ul>
+                                    </div>
+                                </td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <% } %>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>

+ 133 - 0
app/view/advance/index.ejs

@@ -0,0 +1,133 @@
+<% include ../tender/tender_sub_menu.ejs %>
+<div class="panel-content">
+    <div class="panel-title">
+        <div class="title-main d-flex justify-content-between">
+            <div>
+                <div class="d-inline-block">
+                    <div class="btn-group">
+                        <a class="btn btn-sm btn-light <%- type === 'start' ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance">
+                            开工预付款(第3期)
+                        </a>
+                        <a class="btn btn-sm btn-light <%- type === 'material' ? 'active' : '' %>" href="/tender/<%- ctx.tender.id %>/advance/material">
+                            材料预付款(第5期)
+                        </a>
+                    </div>
+                </div>
+                <div class="d-inline-block ml-2">
+                    <% if(type === 'start') { %>
+                        签约开工预付款:
+                    <% } else {%>
+                        签约材料预付款:
+                    <% } %>
+                    <b><%- advancePayTotal %></b> 元
+                </div>
+                <div class="d-inline-block ml-4" style="width:300px">
+                    <div class="progress">
+                        <div class="progress-bar bg-success" style="width: 14%;" data-placement="bottom"
+                            data-toggle="tooltip" data-original-title="截止上期金额:¥40,000.00">14%</div>
+                        <div class="progress-bar bg-info" style="width:8%;" data-placement="bottom"
+                            data-toggle="tooltip" data-original-title="本期金额:¥30,000.00">8%</div>
+                        <div class="progress-bar bg-gray" style="width:78%;" data-placement="bottom"
+                            data-toggle="tooltip" data-original-title="未完成:¥930,00.00">78%</div>
+                    </div>
+                </div>
+            </div>
+            <div>
+                <a href="/tender/<%- ctx.tender.id %>/advance/<%- type %>/add" class="btn btn-primary btn-sm pull-right">开始新一期</a>
+            </div>
+        </div>
+    </div>
+    <div class="content-wrap">
+        <div class="c-body">
+            <div class="sjs-height-0">
+                <table class="table table-bordered">
+                    <thead>
+                        <tr>
+                            <th>期数</th>
+                            <th class="text-center" width="10%">支付比例</th>
+                            <th class="text-center" width="15%">本期金额</th>
+                            <th class="text-center" width="15%">截止上期</th>
+                            <th class="text-center" width="15%">截止本期金额</th>
+                            <th class="text-center">附件</th>
+                            <th class="text-center">进度</th>
+                            <th class="text-center" width="100">操作</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第3期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td>待上报</td>
+                            <td><a href="yufukuan-qi-add.html" class="btn btn-primary btn-sm">编辑</a></td>
+                        </tr>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第3期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td class="text-warning">审批退回</td>
+                            <td><a href="yufukuan-qi-add.html" class="btn btn-primary btn-sm">编辑</a></td>
+                        </tr>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第3期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td class=" text-warning"><a href="#sp-list" data-toggle="modal"
+                                    data-target="#sp-list">张三</a> 审批中</td>
+                            <td><a href="yufukuan-qi-detail.html" class="btn btn-success btn-sm">审批</a></td>
+                        </tr>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第3期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td class=" text-warning"><a href="#sp-list" data-toggle="modal"
+                                    data-target="#sp-list">张三</a> 审批中</td>
+                            <td class="text-warning">审批中</td>
+                        </tr>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第2期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td class=" text-success"><a href="#sp-list" data-toggle="modal"
+                                    data-target="#sp-list">张三</a> 审批通过</td>
+                            <td class="text-success">审批通过</td>
+                        </tr>
+                        <tr>
+                            <td><a href="yufukuan-qi-detail.html">第1期</a></td>
+                            <td>20%</td>
+                            <td class="text-right">30000.00</td>
+                            <td class="text-right">40000.00</td>
+                            <td class="text-right">70000.00</td>
+                            <td><a class="btn btn-sm" href="#file" data-toggle="modal" data-target="#file"><i
+                                        class="fa fa-paperclip "></i> 3</a></td>
+                            <td class=" text-success"><a href="#sp-list" data-toggle="modal"
+                                    data-target="#sp-list">张三</a> 审批通过</td>
+                            <td class="text-success">审批通过</td>
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+    </div>
+</div>
+</div>

+ 187 - 0
app/view/advance/modal.ejs

@@ -0,0 +1,187 @@
+<!--弹出添加期-->
+<div class="modal fade" id="add-qi" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">添加新一期</h5>
+            </div>
+            <div class="modal-body">
+                <div class="form-group">
+                    <label>调差期</label>
+                    <input class="form-control" value="第 6 期" type="text" readonly="">
+                </div>
+                <div class="form-group">
+                    <label>本期调差,包含计量期<span class="ml-2 text-danger">第<b class="mx-2">9,10</b>期</span></label>
+                    <div class="row">
+                        <div class="col-4">
+                            <div class="custom-control custom-checkbox">
+                                <input type="checkbox" class="custom-control-input" id="customCheck9" checked="">
+                                <label class="custom-control-label" for="customCheck9">第9期</label>
+                            </div>
+                        </div>
+                        <div class="col-4">
+                            <div class="custom-control custom-checkbox">
+                                <input type="checkbox" class="custom-control-input" id="customCheck10">
+                                <label class="custom-control-label" for="customCheck10">第10期</label>
+                            </div>
+                        </div>
+                        <div class="col-4">
+                            <div class="custom-control custom-checkbox">
+                                <input type="checkbox" class="custom-control-input" id="customCheck11">
+                                <label class="custom-control-label" for="customCheck11">第11期</label>
+                            </div>
+                        </div>
+                        <div class="col-4">
+                            <div class="custom-control custom-checkbox">
+                                <input type="checkbox" class="custom-control-input" id="customCheck12">
+                                <label class="custom-control-label" for="customCheck12">第12期</label>
+                            </div>
+                        </div>
+                        <div class="col-4">
+                            <div class="custom-control custom-checkbox">
+                                <input type="checkbox" class="custom-control-input" id="customCheck3">
+                                <label class="custom-control-label" for="customCheck3">第13期</label>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                <button type="button" class="btn btn-primary">确定添加</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!--附件-->
+<div class="modal fade" id="file" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">附件</h5>
+            </div>
+            <div class="modal-body">
+                <div class="modal-height-500">
+                    <table class="table table-sm table-bordered">
+                        <thead>
+                            <tr>
+                                <th>文件名</th>
+                                <th>上传时间</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tr>
+                            <td>XXXX.jpg</td>
+                            <td>2018-01-01</td>
+                            <td><a href="#" target="_blank" title="下载"><i class="fa fa-download "></i></a></td>
+                        </tr>
+                        <tr>
+                            <td>YYYY.jpg</td>
+                            <td>2018-01-01</td>
+                            <td><a href="#" target="_blank" title="下载"><i class="fa fa-download "></i></a></td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+                <button type="button" class="btn btn-primary">确定</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!--审批流程/结果-->
+<div class="modal fade" id="sp-list" data-backdrop="static">
+    <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">审批流程</h5>
+            </div>
+            <div class="modal-body">
+                <div class="row">
+                    <div class="col-4">
+                        <div class="card mt-3">
+                            <ul class="list-group list-group-flush">
+                                <li class="list-group-item"><i class="fa fa fa-play-circle fa-rotate-90"></i> 布尔 <small
+                                        class="text-muted">施工</small></li>
+                                <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 张三 <small
+                                        class="text-muted">监理</small></li>
+                                <li class="list-group-item"><i class="fa fa-chevron-circle-down"></i> 王五 <small
+                                        class="text-muted">监理</small></li>
+                                <li class="list-group-item"><i class="fa fa fa-stop-circle"></i> 李四 <small
+                                        class="text-muted">监理</small></li>
+                            </ul>
+                        </div>
+                    </div>
+                    <div class="col-8 modal-height-500" style="overflow: auto">
+                        <div class="card mt-3">
+                            <ul class="list-group list-group-flush">
+                                <li class="list-group-item">
+                                    <span class="text-success pull-right">上报</span>
+                                    <h5 class="card-title"><i class="fa fa-play-circle fa-rotate-90 text-success"></i>
+                                        布尔 <small class="text-muted">施工</small></h5>
+                                    <p class="card-text">2017-11-25</p>
+                                </li>
+                                <li class="list-group-item">
+                                    <span class="text-success pull-right">审批通过</span>
+                                    <h5 class="card-title"><i class="fa fa-chevron-circle-down text-success"></i> 张三
+                                        <small class="text-muted">监理</small></h5>
+                                    <p class="card-text">审批意见。2017-11-25</p>
+                                </li>
+                                <li class="list-group-item">
+                                    <span class="text-success pull-right">审批通过</span>
+                                    <h5 class="card-title"><i class="fa fa-chevron-circle-down text-success"></i> 王五
+                                        <small class="text-muted">监理</small></h5>
+                                    <p class="card-text">审批通过。2017-11-26</p>
+                                </li>
+                                <li class="list-group-item">
+                                    <span class="text-warning pull-right">审批退回 布尔</span>
+                                    <h5 class="card-title"><i class="fa fa-stop-circle text-warning"></i> 李四 <small
+                                            class="text-muted">监理</small></h5>
+                                    <p class="card-text">审批退回,审批意见文本。2017-11-27</p>
+                                </li>
+                            </ul>
+                        </div>
+                        <!--退回原报重新上报-->
+                        <div class="card mt-3">
+                            <ul class="list-group list-group-flush">
+                                <li class="list-group-item">
+                                    <span class="text-success pull-right">重新上报</span>
+                                    <h5 class="card-title"><i class="fa fa-play-circle fa-rotate-90 text-success"></i>
+                                        布尔 <small class="text-muted">施工</small></h5>
+                                    <p class="card-text">2017-12-01</p>
+                                </li>
+                                <li class="list-group-item">
+                                    <span class="text-success pull-right">审批通过</span>
+                                    <h5 class="card-title"><i class="fa fa-chevron-circle-down text-success"></i> 张三
+                                        <small class="text-muted">监理</small></h5>
+                                    <p class="card-text">审批通过 2017-12-02</p>
+                                </li>
+                                <li class="list-group-item">
+                                    <span class="text-warning pull-right">审批退回 张三</span>
+                                    <h5 class="card-title"><i class="fa fa-chevron-circle-down text-warning"></i> 王五
+                                        <small class="text-muted">监理</small></h5>
+                                    <p class="card-text">审批退回 2017-12-02</p>
+                                </li>
+                                <!--王五退回上一审批人 张三,张三重新审批-->
+                                <li class="list-group-item">
+                                    <span class="pull-right">审批中</span>
+                                    <h5 class="card-title"><i class="fa fa-chevron-circle-down"></i> 张三 <small
+                                            class="text-muted">监理</small></h5>
+                                    <p class="card-text"></p>
+                                </li>
+                                <li class="list-group-item">
+                                    <h5 class="card-title"><i class="fa fa-stop-circle"></i> 李四 <small
+                                            class="text-muted">监理</small></h5>
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 6 - 0
app/view/tender/tender_sub_menu.ejs

@@ -9,6 +9,12 @@
             </ul>
         </div>
         <div class="nav-box">
+            <ul class="nav-list list-unstyled">
+                <% const curUrl = `/tender/${ctx.tender.id}/advance` %>
+                <li <% if (ctx.url.indexOf(curUrl) !== -1) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/advance"><i class="fa fa-handshake-o"></i> <span>预付款</span></a></li>
+            </ul>
+        </div>
+        <div class="nav-box">
             <h3><i class="fa fa-list-alt"></i> 0号台帐</h3>
             <ul class="nav-list list-unstyled sub-list">
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger"><span>台帐分解</span></a></li>

+ 17 - 0
sql/update.sql

@@ -38,3 +38,20 @@ CREATE TABLE `zh_s2b_log` (
   `post_time` datetime DEFAULT NULL COMMENT '请求时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+CREATE TABLE `calculation`.`zh_advance_pay` (
+  `id` INT(11) NOT NULL,
+  `pid` INT(11) NOT NULL COMMENT '项目id',
+  `uid` INT(11) NOT NULL COMMENT '创建者id',
+  `status` INT(11) NOT NULL COMMENT '审核状态',
+  `tid` INT(11) NOT NULL COMMENT '标段id',
+  `order` INT(11) NOT NULL COMMENT '期数索引',
+  `pay_ratio` DECIMAL(3,2) NOT NULL COMMENT '支付比例',
+  `cur_amount` DECIMAL(24,8) NOT NULL COMMENT '本期金额',
+  `prev_amount` DECIMAL(24,8) NOT NULL COMMENT '截止上期金额',
+  `prev_total_amount` DECIMAL(24,8) NOT NULL COMMENT '截止本期金额',
+  `create_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP,
+  `type` INT(1) NOT NULL DEFAULT 0 COMMENT '预付款类型,0为开工预付款,1为材料预付款',
+  PRIMARY KEY (`id`))
+COMMENT = '预付款记录';
+