浏览代码

移除台账审批页面,功能合并至台账分解

MaiXinRong 1 年之前
父节点
当前提交
9665d8730f

+ 0 - 58
app/controller/ledger_audit_controller.js

@@ -27,64 +27,6 @@ module.exports = app => {
         }
 
         /**
-         * 台账审批页面(get)
-         *
-         * @param ctx
-         * @return {Promise<void>}
-         */
-        async index(ctx) {
-            try {
-                const renderData = {
-                    tender: ctx.tender.data,
-                    tenderInfo: ctx.tender.info,
-                    tenderMenu: this.menu.tenderMenu,
-                    preUrl: '/tender/' + ctx.tender.id,
-                    measureType,
-                };
-                const [ledgerSpread, posSpread] = await spreadSetting.getLedgerSpreadSetting(ctx, ctx.tender.id, true);
-                const sjsRela = await this.ctx.service.project.getTenderSjsRela(ctx.session.sessionProject.id, ctx.tender.info.display.exMemo);
-                this.ctx.helper.refreshSpreadShow(sjsRela.ledgerCol, [ledgerSpread, posSpread]);
-
-                const curAuditor = await ctx.service.ledgerAudit.getCurAuditor(ctx.tender.id, ctx.tender.data.ledger_times);
-                if (!curAuditor && (ctx.tender.data.ledger_status !== auditConst.status.checkNo && ctx.tender.data.ledger_status !== auditConst.status.checked)) {
-                    throw '审核信息错误';
-                }
-
-                renderData.user = await ctx.service.projectAccount.getAccountInfoById(ctx.tender.data.user_id);
-                renderData.auditHistory = [];
-                const times = ctx.tender.data.ledger_status === auditConst.status.checkNo ? ctx.tender.data.ledger_times - 1 : ctx.tender.data.ledger_times;
-                const auditors = await ctx.service.ledgerAudit.getAuditorsWithOwner(ctx.tender.id, times);
-                if (ctx.tender.data.user_id !== ctx.session.sessionUser.accountId) {
-                    if (auditors.length > 0) {
-                        const auditor = auditors.find(function(a) { return a.audit_id === ctx.session.sessionUser.accountId; });
-                        if (!auditor) {
-                            throw '您无权查看台账审批';
-                        }
-                    }
-                }
-                if (times >= 1) {
-                    for (let i = 1; i <= times; i++) {
-                        renderData.auditHistory.push(await ctx.service.ledgerAudit.getAuditors(ctx.tender.id, i));
-                    }
-                }
-                const ledgerData = await ctx.service.ledger.getData(ctx.tender.id);
-                renderData.curAuditor = curAuditor;
-                renderData.auditConst = auditConst;
-                renderData.auditors = auditors;
-                renderData.ledger = JSON.stringify(ledgerData);
-                renderData.ledgerSpreadSetting = JSON.stringify(ledgerSpread);
-                renderData.posSpreadSetting = JSON.stringify(posSpread);
-                renderData.readOnly = true;
-                renderData.jsFiles = this.app.jsFiles.common.concat(this.app.jsFiles.ledger.audit);
-                renderData.nodeType = stdConst.nodeType;
-                await this.layout('ledger/audit.ejs', renderData, 'ledger/audit_modal.ejs');
-            } catch (err) {
-                this.log(err);
-                ctx.redirect('/tender/' + ctx.tender.id);
-            }
-        }
-
-        /**
          * 新增审批人(Ajax)
          *
          * @param ctx

+ 6 - 0
app/public/js/ledger.js

@@ -3939,3 +3939,9 @@ function checkAuditorFrom () {
         return true;
     }
 }
+// texterea换行
+function auditCheck(i) {
+    const opinion = $('textarea[name="opinion"]').eq(i).val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ');
+    $('textarea[name="opinion"]').eq(i).val(opinion);
+    return true;
+}

+ 0 - 313
app/public/js/ledger_audit.js

@@ -1,313 +0,0 @@
-'use strict';
-
-/**
- *
- *
- * @author Mai
- * @date 2018/5/30
- * @version
- */
-
-const ckBillsSpread = window.location.pathname + '-billsSelect';
-function getTenderId() {
-    return window.location.pathname.split('/')[2];
-}
-
-function checkTzMeasureType () {
-    return tender.measure_type === measureType.tz.value;
-}
-
-$(document).ready(() => {
-    autoFlashHeight();
-    const ledgerSpread = SpreadJsObj.createNewSpread($('#ledger-spread')[0]);
-    const treeSetting = {
-        id: 'ledger_id',
-        pid: 'ledger_pid',
-        order: 'order',
-        level: 'level',
-        rootId: -1,
-        keys: ['id', 'tender_id', 'ledger_id'],
-        preUrl: '/ledger',
-        autoExpand: 3,
-        // markFoldKey: 'bills-fold',
-        // markFoldSubKey: window.location.pathname.split('/')[2],
-        markExpandKey: 'bills-expand',
-        markExpandSubKey: window.location.pathname.split('/')[2],
-    };
-    if (checkTzMeasureType()) {
-        treeSetting.calcFields = ['sgfh_tp', 'sjcl_tp', 'qtcl_tp', 'total_price'];
-    } else {
-        treeSetting.calcFields = ['deal_tp', 'sgfh_tp', 'sjcl_tp', 'qtcl_tp', 'total_price'];
-    }
-    treeSetting.calcFun = function (node) {
-        node.dgn_price = ZhCalc.round(ZhCalc.div(node.total_price, node.dgn_qty1), 2);
-    };
-    const ledgerTree = createNewPathTree('fx', treeSetting);
-    sjsSettingObj.setFxTreeStyle(ledgerSpreadSetting, sjsSettingObj.FxTreeStyle.jz);
-    if (thousandth) sjsSettingObj.setTpThousandthFormat(ledgerSpreadSetting);
-    sjsSettingObj.setNodeTypeCol(ledgerSpreadSetting.cols, [{field: 'node_type'}]);
-    SpreadJsObj.initSheet(ledgerSpread.getActiveSheet(), ledgerSpreadSetting);
-
-    // 初始化 部位明细
-    const pos = new PosData({
-        id: 'id', ledgerId: 'lid',
-    });
-    const posSpread = SpreadJsObj.createNewSpread($('#pos-spread')[0]);
-
-    const posSearch = $.posSearch({selector: '#pos-search', searchSpread: posSpread});
-    $.subMenu({
-        menu: '#sub-menu', miniMenu: '#sub-mini-menu', miniMenuList: '#mini-menu-list',
-        toMenu: '#to-menu', toMiniMenu: '#to-mini-menu',
-        key: 'menu.1.0.0',
-        miniHint: '#sub-mini-hint', hintKey: 'menu.hint.1.0.1',
-        callback: function (info) {
-            if (info.mini) {
-                $('.panel-title').addClass('fluid');
-                $('#sub-menu').removeClass('panel-sidebar');
-            } else {
-                $('.panel-title').removeClass('fluid');
-                $('#sub-menu').addClass('panel-sidebar');
-            }
-            autoFlashHeight();
-            ledgerSpread.refresh();
-            posSpread.refresh();
-        }
-    });
-
-    const loadCurPosData = function () {
-        const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
-        SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
-        if (node) {
-            const posData = pos.ledgerPos[itemsPre + node.id] || [];
-            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', posData);
-        } else {
-            SpreadJsObj.loadSheetData(posSpread.getActiveSheet(), 'data', []);
-        }
-    };
-    // 台账模式加载部位明细数据
-    if (checkTzMeasureType()) {
-        $.divResizer({
-            select: '#main-resize',
-            callback: function () {
-                ledgerSpread.refresh();
-                let bcontent = $(".bcontent-wrap") ? $(".bcontent-wrap").height() : 0;
-                $(".sp-wrap").height(bcontent-30);
-                posSpread.refresh();
-            }
-        });
-        sjsSettingObj.setGridSelectStyle(posSpreadSetting);
-        SpreadJsObj.initSheet(posSpread.getActiveSheet(), posSpreadSetting);
-    }
-
-    $.contextMenu({
-        selector: '#ledger-spread',
-        build: function ($trigger, e) {
-            const target = SpreadJsObj.safeRightClickSelection($trigger, e, ledgerSpread);
-            return target.hitTestType === spreadNS.SheetArea.viewport || target.hitTestType === spreadNS.SheetArea.rowHeader;
-        },
-        items: {
-            showLast: {
-                name: '显示至最底层',
-                callback: function (key, opt, menu, e) {
-                    const node = SpreadJsObj.getSelectObject(ledgerSpread.getActiveSheet());
-                    setTimeout(() => {
-                        showWaitingView();
-                        ledgerTree.expandByCustom(x => {
-                            return x.expanded || (x.id === node.id) || (x.full_path.indexOf(node.ledger_id + '-') >= 0);
-                        });
-                        SpreadJsObj.refreshTreeRowVisible(ledgerSpread.getActiveSheet());
-                        closeWaitingView();
-                    }, 100);
-                },
-            },
-        }
-    });
-
-    postData('/tender/' + getTenderId() + '/ledger/load', null, function (data) {
-        ledgerTree.loadDatas(data.bills);
-        treeCalc.calculateAll(ledgerTree);
-        SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), 'tree', ledgerTree);
-        SpreadJsObj.loadTopAndSelect(ledgerSpread.getActiveSheet(), ckBillsSpread);
-
-        checkShowLast(data.bills.length);
-
-        pos.loadDatas(data.pos);
-        loadCurPosData();
-        SpreadJsObj.resetTopAndSelect(posSpread.getActiveSheet());
-    }, null, true);
-
-    ledgerSpread.bind(spreadNS.Events.SelectionChanged, function (e, info) {
-        loadCurPosData();
-        SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
-        posSearch.search($('#pos-keyword').val());
-    });
-    ledgerSpread.bind(spreadNS.Events.TopRowChanged, function (e, info) {
-        SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
-    });
-
-    let dealBills, searchLedger;
-    $.divResizer({
-        select: '#right-spr',
-        callback: function () {
-            ledgerSpread.refresh();
-            if (posSpread) {
-                posSpread.refresh();
-            }
-            if (dealBills) {
-                dealBills.spread.refresh();
-            }
-        }
-    });
-    // 展开收起 签约清单|清单意见
-    $('a', '.side-menu').bind('click', function () {
-        const tab = $(this), tabPanel = $(tab.attr('content'));
-        const showSideTools = function (show) {
-            const left = $('#left-view'), right = $('#right-view'), parent = left.parent();
-            if (show) {
-                right.show();
-                autoFlashHeight();
-                /**
-                 * right.show()后, parent被撑开成2倍left.height, 导致parent.width减少了10px
-                 * 第一次left.width调整后,parent的缩回left.height, 此时parent.width又增加了10px
-                 * 故需要通过最终的parent.width再计算一次left.width
-                 *
-                 * Q: 为什么不通过先计算left.width的宽度,以避免计算两次left.width?
-                 * A: 右侧工具栏不一定显示,当右侧工具栏显示过一次后,就必须使用parent和right来计算left.width
-                 *
-                 */
-                // left.css('width', parent.width() - right.outerWidth());
-                // left.css('width', parent.width() - right.outerWidth());
-                const percent = 100 - right.outerWidth() /parent.width() * 100;
-                left.css('width', percent + '%');
-            } else {
-                left.width(parent.width());
-                right.hide();
-            }
-        };
-        if (!tab.hasClass('active')) {
-            $('a', '.side-menu').removeClass('active');
-            tab.addClass('active');
-            $('.tab-content .tab-pane').removeClass('active');
-            tabPanel.addClass('active');
-            showSideTools(tab.hasClass('active'));
-            if (tab.attr('content') === '#deal-bills' && !dealBills) {
-                dealBills = new DealBills($('#deal-bills-spread')[0], {
-                    cols: [
-                        {title: '清单编号', field: 'code', width: 85, formatter: '@', readOnly: true},
-                        {title: '名称', field: 'name', width: 150, formatter: '@', readOnly: true},
-                        {title: '单位', field: 'unit', width: 50, formatter: '@', readOnly: true},
-                        {title: '单价', field: 'unit_price', width: 50, readOnly: true},
-                        {title: '数量', field: 'quantity', width: 50, readOnly: true},
-                        {title: '金額', field: 'total_price', width: 50, readOnly: true},
-                    ],
-                    emptyRows: 0,
-                    headRows: 1,
-                    headRowHeight: [32],
-                    defaultRowHeight: 21,
-                    headerFont: '12px 微软雅黑',
-                    font: '12px 微软雅黑',
-                    headColWidth: [30],
-                    selectedBackColor: '#fffacd',
-                });
-                dealBills.loadData();
-            } else if (tab.attr('content') === '#search' && !searchLedger) {
-                if (!searchLedger) {
-                    searchLedger = $.billsSearch({
-                        selector: '#search',
-                        searchSpread: ledgerSpread,
-                        resultSpreadSetting: {
-                            cols: [
-                                {title: '项目节编号', field: 'code', hAlign: 0, width: 90, formatter: '@'},
-                                {title: '清单编号', field: 'b_code', hAlign: 0, width: 80, formatter: '@'},
-                                {title: '名称', field: 'name', width: 150, hAlign: 0, formatter: '@'},
-                                {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@'},
-                                {title: '单价', field: 'unit_price', hAlign: 2, width: 50},
-                                {title: '数量', field: 'quantity', hAlign: 2, width: 50},
-                                {title: '部位', field: 'bw', hAlign: 2, width: 90},
-                            ],
-                            emptyRows: 0,
-                            headRows: 1,
-                            headRowHeight: [32],
-                            headColWidth: [30],
-                            defaultRowHeight: 21,
-                            headerFont: '12px 微软雅黑',
-                            font: '12px 微软雅黑',
-                            selectedBackColor: '#fffacd',
-                            readOnly: true
-                        },
-                        afterLocated: function () {
-                            loadCurPosData();
-                        },
-                        calcSum: function (result) {
-                            const sum = { name: '合计' };
-                            for (const r of result) {
-                                sum.quantity = ZhCalc.add(r.quantity, sum.quantity);
-                            }
-                            return sum;
-                        }
-                    });
-                }
-                searchLedger.spread.refresh();
-            }
-        } else {
-            tab.removeClass('active');
-            tabPanel.removeClass('active');
-            showSideTools(tab.hasClass('active'));
-        }
-        ledgerSpread.refresh();
-        if (posSpread) {
-            posSpread.refresh();
-        }
-    });
-    class DealBills {
-        constructor (obj, spreadSetting) {
-            this.obj = obj;
-            this.url = '/tender/' + getTenderId() + '/deal';
-            this.spreadSetting = spreadSetting;
-            this.spread = SpreadJsObj.createNewSpread(this.obj);
-            SpreadJsObj.initSheet(this.spread.getActiveSheet(), this.spreadSetting);
-        }
-        loadData () {
-            const self = this;
-            postData(this.url+'/get-data', {}, function (data) {
-                SpreadJsObj.loadSheetData(self.spread.getActiveSheet(), 'data', data);
-            });
-        }
-    }
-    // 显示层次
-    (function (select, sheet) {
-        $(select).click(function () {
-            if (!sheet.zh_tree) return;
-            const tag = $(this).attr('tag');
-            const tree = sheet.zh_tree;
-            setTimeout(() => {
-                showWaitingView();
-                switch (tag) {
-                    case "1":
-                    case "2":
-                    case "3":
-                    case "4":
-                    case "5":
-                        tree.expandByLevel(parseInt(tag));
-                        SpreadJsObj.refreshTreeRowVisible(sheet);
-                        break;
-                    case "last":
-                        tree.expandByCustom(() => { return true; });
-                        SpreadJsObj.refreshTreeRowVisible(sheet);
-                        break;
-                    case "leafXmj":
-                        tree.expandToLeafXmj();
-                        SpreadJsObj.refreshTreeRowVisible(sheet);
-                        break;
-                }
-                closeWaitingView();
-            }, 100);
-        });
-    })('a[name=showLevel]', ledgerSpread.getActiveSheet());
-});
-// texterea换行
-function auditCheck(i) {
-    const opinion = $('textarea[name="opinion"]').eq(i).val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ');
-    $('textarea[name="opinion"]').eq(i).val(opinion);
-    return true;
-}

+ 0 - 1
app/router.js

@@ -223,7 +223,6 @@ module.exports = app => {
     app.post('/tender/:id/ledger/compresse/file', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerController.downloadZip');
 
     // 台账审批相关
-    app.get('/tender/:id/ledger/audit', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.index');
     app.post('/tender/:id/ledger/audit/add', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.add');
     app.post('/tender/:id/ledger/audit/delete', sessionAuth, tenderCheck, uncheckTenderCheck, 'ledgerAuditController.remove');
     app.post('/tender/:id/ledger/audit/start', sessionAuth, tenderCheck, uncheckTenderCheck, ledgerAuditCheck, tenderBuildCheck, 'ledgerAuditController.start');

+ 2 - 2
app/view/dashboard/index.ejs

@@ -99,7 +99,7 @@
                                                     <td><a href="/tender/<%- t.id %>"><%- t.name %></a></td>
                                                     <td>台账</td>
                                                     <td><%- (t.begin_time ? ctx.moment(t.begin_time).format('YYYY/MM/DD HH:mm') : '') %></td>
-                                                    <td><a href="/tender/<%- t.id %>/ledger/audit" class="btn btn-outline-primary btn-sm btn-table" role="button">审批</a></td>
+                                                    <td><a href="/tender/<%- t.id %>/ledger" class="btn btn-outline-primary btn-sm btn-table" role="button">审批</a></td>
                                                 </tr>
                                             <% } else { %>
                                                 <tr data-type="5">
@@ -107,7 +107,7 @@
                                                     <td><a href="/tender/<%- t.id %>"><%- t.name %></a></td>
                                                     <td>台账</td>
                                                     <td><%- (t.end_time ? ctx.moment(t.end_time).format('YYYY/MM/DD HH:mm') : '') %></td>
-                                                    <td><a href="/tender/<%- t.id %>/ledger/audit" class="btn btn-outline-warning btn-sm btn-table text-warning" role="button">重新上报</a></td>
+                                                    <td><a href="/tender/<%- t.id %>/ledger" class="btn btn-outline-warning btn-sm btn-table text-warning" role="button">重新上报</a></td>
                                                 </tr>
                                             <% } %>
                                         <% } %>

+ 0 - 122
app/view/ledger/audit.ejs

@@ -1,122 +0,0 @@
-<% include ../tender/tender_sub_menu.ejs %>
-<div class="panel-content">
-    <div class="panel-title">
-        <div class="title-main d-flex">
-            <% include ../tender/tender_sub_mini_menu.ejs %>
-            <div class="d-inline-block">
-                <div class="dropdown">
-                    <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
-                        <i class="fa fa-list-ol"></i> 显示层级
-                    </button>
-                    <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
-                        <a class="dropdown-item" name="showLevel" tag="1" href="javascirpt: void(0);">第一层</a>
-                        <a class="dropdown-item" name="showLevel" tag="2" href="javascirpt: void(0);">第二层</a>
-                        <a class="dropdown-item" name="showLevel" tag="3" href="javascirpt: void(0);">第三层</a>
-                        <a class="dropdown-item" name="showLevel" tag="4" href="javascirpt: void(0);">第四层</a>
-                        <a class="dropdown-item" name="showLevel" tag="5" href="javascirpt: void(0);">第五层</a>
-                        <a class="dropdown-item" name="showLevel" tag="last" href="javascirpt: void(0);">最底层</a>
-                        <a class="dropdown-item" name="showLevel" tag="leafXmj" href="javascirpt: void(0);">只显示项目节</a>
-                    </div>
-                </div>
-            </div>
-            <div></div>
-            <div class="ml-auto">
-                <% if (tender.ledger_status === auditConst.status.checkNo) { %>
-                    <a href="#sp-list"  data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm text-dark mr-1 sp-list-btn">退回意见</a>
-                <% } else if (tender.ledger_status === auditConst.status.checking) { %>
-                    <% if (curAuditor.audit_id === ctx.session.sessionUser.accountId) { %>
-                        <a href="#sp-done" data-toggle="modal" data-target="#sp-done" class="btn btn-success btn-sm mr-1">审批通过</a>
-                        <a href="#sp-back" data-toggle="modal" data-target="#sp-back" class="btn btn-warning btn-sm mr-1">审批退回</a>
-                    <% } else {%>
-                        <a href="#sp-list"  data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm text-dark mr-1 sp-list-btn">审批中</a>
-                    <% } %>
-                <% } else if (tender.ledger_status === auditConst.status.checked) { %>
-                <a href="#sp-list" data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-success btn-sm text-dark mr-1 sp-list-btn">审批通过</a>
-                <% } %>
-            </div>
-        </div>
-    </div>
-    <div class="content-wrap row pr-46">
-        <div class="c-header p-0 col-12">
-        </div>
-        <!--核心内容(两栏)-->
-        <div class="row w-100 sub-content">
-            <!--左栏-->
-            <div class="c-body" id="left-view" style="width: 100%">
-                <div class="sjs-height-1" id="ledger-spread">
-                </div>
-                <% if (tender.measure_type === measureType.tz.value) { %>
-                <div id="main-resize" r-Type="height" div1="#ledger-spread" div2="#main-bottom" store-id="audit-main" store-version="1.0.0" min="100"></div>
-                <div class="bcontent-wrap" id="main-bottom">
-                    <div class="bc-bar mb-1">
-                        <ul class="nav nav-tabs">
-                            <li class="nav-item">
-                                <a class="nav-link active" href="javascript:void(0)">计量单元</a>
-                            </li>
-                            <li class="nav-item" id="pos-search">
-                            </li>
-                        </ul>
-                    </div>
-                    <div class="sp-wrap" id="pos-spread">
-                    </div>
-                </div>
-                <% } %>
-            </div>
-            <!--右栏-->
-            <div class="c-body" id="right-view" style="display: none; width: 33%">
-                <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
-                <div class="tab-content">
-                    <div id="deal-bills" class="tab-pane">
-                        <div class="sjs-bar-2">
-                            签约清单
-                            <a href="/tender/<%- ctx.tender.id %>/deal/download/签约清单.xlsx" class="btn btn-sm btn-primary" style="display: none">下载签约清单</a>
-                        </div>
-                        <div class="sjs-sh-2" id="deal-bills-spread">
-                        </div>
-                    </div>
-                    <div id="search" class="tab-pane">
-                    </div>
-                </div>
-            </div>
-        </div>
-        <!--右侧菜单-->
-        <div class="side-menu">
-            <!--右侧菜单-->
-            <ul class="nav flex-column right-nav">
-                <li class="nav-item">
-                    <a class="nav-link" href="javascript: void(0);" role="tab" content="#deal-bills">签约清单</a>
-                </li>
-                <li class="nav-item">
-                    <a class="nav-link" href="javascript: void(0);" role="tab" content="#search">查找定位</a>
-                </li>
-            </ul>
-        </div>
-    </div>
-</div>
-<script type="text/javascript">
-    const tender = JSON.parse('<%- JSON.stringify(tender) %>');
-    const thousandth = <%- ctx.tender.info.display.thousandth %>;
-    const measureType = JSON.parse('<%- JSON.stringify(measureType) %>');
-    let ledgerSpreadSetting = '<%- ledgerSpreadSetting %>';
-    ledgerSpreadSetting = JSON.parse(ledgerSpreadSetting);
-    ledgerSpreadSetting.localCache = {
-        key: 'ledger-bills',
-        colWidth: true,
-    };
-    let posSpreadSetting = JSON.parse('<%- posSpreadSetting %>');
-    posSpreadSetting.localCache = {
-        key: 'ledger-pos',
-        colWidth: true,
-    };
-    $('.sp-list-btn').click(function () {
-        const type = $(this).data('type')
-        if (type === 'hide') {
-            $('.sp-list-item').hide()
-            $('.modal-title').text('审批流程')
-        } else {
-            $('.sp-list-item').show()
-            $('.modal-title').text('重新上报')
-        }
-    });
-    const nodeType = JSON.parse('<%- JSON.stringify(nodeType) %>');
-</script>

+ 0 - 184
app/view/ledger/audit_modal.ejs

@@ -383,190 +383,6 @@
         </form>
     </div>
 </div>
-<% } else { %>
-<!--审批流程/结果-->
-<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"><%- tender.ledger_status === auditConst.status.checked ? '审批流程' : '重新上报' %></h5>
-            </div>
-            <div class="modal-body">
-                <div class="row">
-                    <div class="col-4">
-                        <% if(tender.ledger_status === auditConst.status.checkNo) { %>
-                            <a class="sp-list-item" href="#sub-sp" data-toggle="modal" data-target="#sub-sp" id="hideSp">修改审批流程</a>
-                        <% } %>
-                        <div class="card mt-3">
-                            <ul class="list-group list-group-flush">
-                                <% auditors.forEach((item, idx) => { %>
-                                <% if (idx === 0) { %>
-                                <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
-                                    <i class="fa fa fa-play-circle fa-rotate-90"></i> <%- item.name %>
-                                    <small class="text-muted"><%- item.role %></small>
-                                    <span class="pull-right">原报</span>
-                                </li>
-                                <% } else if(idx === auditors.length -1 && idx !== 0) { %>
-                                <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
-                                    <i class="fa fa fa-stop-circle"></i> <%- item.name %>
-                                    <small class="text-muted"><%- item.role %></small>
-                                    <span class="pull-right">终审</span>
-                                </li>
-                                <% } else {%>
-                                <li class="list-group-item" data-auditorId="<%- item.audit_id %>">
-                                    <i class="fa fa-chevron-circle-down"></i> <%- item.name %>
-                                    <small class="text-muted"><%- item.role %></small>
-                                    <span class="pull-right"><%= ctx.helper.transFormToChinese(idx) %>审</span>
-                                </li>
-                                <% } %>
-                                <% }) %>
-                            </ul>
-                        </div>
-                    </div>
-                    <div class="col-8 modal-height-500" style="overflow: auto">
-                        <% auditHistory.forEach((auditors, idx) => { %>
-                            <!-- 展开/收起历史流程 -->
-                        <% if(idx === auditHistory.length - 1 && auditHistory.length !== 1) { %>
-                            <div class="text-right">
-                                <a href="javascript: void(0);" id="fold-btn" data-target="show">展开历史审批流程</a>
-                            </div>
-                        <% } %>
-                        <div class="<%- idx < auditHistory.length - 1 ? 'fold-card' : '' %>">
-                            <div class="text-center text-muted"><%- idx+1 %>#</div>
-                            <ul class="timeline-list list-unstyled mt-2">
-                                <% auditors.forEach((auditor, index) => { %>
-                                <% if (index === 0) { %>
-                                <li class="timeline-list-item pb-2">
-                                    <div class="timeline-item-date">
-                                        <%- ctx.helper.formatDate(auditor.begin_time) %>
-                                    </div>
-                                    <div class="timeline-item-tail"></div>
-                                    <div class="timeline-item-icon bg-success text-light">
-                                        <i class="fa fa-caret-down"></i>
-                                    </div>
-                                    <div class="timeline-item-content">
-                                        <div class="card">
-                                            <div class="card-body p-3">
-                                                <div class="card-text">
-                                                    <p class="mb-1"><span
-                                                            class="h5"><%- user.name %></span><span
-                                                            class="pull-right text-success"><%- idx !== 0 ? '重新' : '' %>上报审批</span>
-                                                    </p>
-                                                    <p class="text-muted mb-0"><%- user.role %></p>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </div>
-                                </li>
-                                <li class="timeline-list-item pb-2">
-                                    <div class="timeline-item-date">
-                                        <%- ctx.helper.formatDate(auditor.end_time) %>
-                                    </div>
-                                    <% if(index < auditors.length - 1) { %>
-                                    <div class="timeline-item-tail"></div>
-                                    <% } %>
-                                    <% if(auditor.status === auditConst.status.checked) { %>
-                                    <div class="timeline-item-icon bg-success text-light">
-                                        <i class="fa fa-check"></i>
-                                    </div>
-                                    <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre) {%>
-                                    <div class="timeline-item-icon bg-warning text-light">
-                                        <i class="fa fa-level-up"></i>
-                                    </div>
-                                    <% } else if(auditor.status === auditConst.status.checking) { %>
-                                    <div class="timeline-item-icon bg-warning text-light">
-                                        <i class="fa fa-ellipsis-h"></i>
-                                    </div>
-                                    <% } else {%>
-                                    <div class="timeline-item-icon bg-secondary text-light">
-                                    </div>
-                                    <% } %>
-                                    <div class="timeline-item-content">
-                                        <div class="card">
-                                            <div class="card-body p-3">
-                                                <div class="card-text">
-                                                    <p class="mb-1"><span class="h5"><%- auditor.name %></span><span
-                                                            class="pull-right <%- auditConst.statusClass[auditor.status] %>"><%- auditConst.statusString[auditor.status] %></span>
-                                                    </p>
-                                                    <p class="text-muted mb-0"><%- auditor.role %></p>
-                                                </div>
-                                            </div>
-
-                                            <!--审批意见-->
-                                            <% if (auditor.opinion) { %>
-                                            <div class="card-body p-3 border-top">
-                                                <p style="margin: 0;"><%- auditor.opinion %></p>
-                                            </div>
-                                            <% } %>
-                                        </div>
-                                    </div>
-                                </li>
-                                <% } else {%>
-                                <li class="timeline-list-item pb-2">
-                                    <div class="timeline-item-date">
-                                        <%- ctx.helper.formatDate(auditor.end_time) %>
-                                    </div>
-                                    <% if(index < auditors.length - 1) { %>
-                                    <div class="timeline-item-tail"></div>
-                                    <% } %>
-                                    <% if(auditor.status === auditConst.status.checked) { %>
-                                    <div class="timeline-item-icon bg-success text-light">
-                                        <i class="fa fa-check"></i>
-                                    </div>
-                                    <% } else if(auditor.status === auditConst.status.checkNo || auditor.status === auditConst.status.checkNoPre) {%>
-                                    <div class="timeline-item-icon bg-warning text-light">
-                                        <i class="fa fa-level-up"></i>
-                                    </div>
-                                    <% } else if(auditor.status === auditConst.status.checking) { %>
-                                    <div class="timeline-item-icon bg-warning text-light">
-                                        <i class="fa fa-ellipsis-h"></i>
-                                    </div>
-                                    <% } else { %>
-                                    <div class="timeline-item-icon bg-secondary text-light">
-                                    </div>
-                                    <% } %>
-                                    <div class="timeline-item-content">
-                                        <div class="card">
-                                            <div class="card-body p-3">
-                                                <div class="card-text">
-                                                    <p class="mb-1"><span class="h5"><%- auditor.name %></span>
-                                                        <span
-                                                            class="pull-right
-                                                                            <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
-                                                            <%- auditor.status === auditConst.status.checkNo ? user.name : '' %>
-                                                        </span>
-                                                    </p>
-                                                    <p class="text-muted mb-0"><%- auditor.role %></p>
-                                                </div>
-                                            </div>
-                                            <!--审批意见-->
-                                            <% if (auditor.opinion) { %>
-                                            <div class="card-body p-3 border-top">
-                                                <p style="margin: 0;"><%- auditor.opinion %></p>
-                                            </div>
-                                            <% } %>
-                                        </div>
-                                    </div>
-                                </li>
-                                <% } %>
-                                <% }) %>
-                            </ul>
-                        </div>
-
-                        <% }) %>
-                    </div>
-                </div>
-            </div>
-            <form class="modal-footer" method="post" action="<%- preUrl %>/ledger/audit/start" onsubmit="return checkAuditorFrom()">
-                <input type="hidden" name="_csrf_j" value="<%= ctx.csrf %>">
-                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
-                <% if(tender.ledger_status === auditConst.status.checkNo && ctx.session.sessionUser.accountId === tender.user_id) { %>
-                    <button class="btn btn-primary btn-sm sp-list-item" type="submit">确认上报</button>
-                <% } %>
-            </form>
-        </div>
-    </div>
-</div>
 <% } %>
 <script>
     const cur_uid  = parseInt('<%- ctx.session.sessionUser.accountId %>');

+ 6 - 1
app/view/ledger/explode.ejs

@@ -52,7 +52,7 @@
                 <a class="btn btn-sm btn-primary mr-1" id="ledger-check2" href="javascript: void(0);">数据检查</a>
                 <% if (tender.ledger_status === auditConst.status.checkNo) { %>
                     <a href="#sp-list" data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm text-dark sp-list-btn">审批退回</a>
-                <% } else if (tender.ledger_status === auditConst.status.checking) { %>
+                <% } else if (tender.ledger_status === auditConst.status.checking && curAuditor.audit_id !== ctx.session.sessionUser.accountId) { %>
                     <a href="#sp-list" data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-warning btn-sm text-dark sp-list-btn">审批中</a>
                 <% } else if (tender.ledger_status === auditConst.status.checked) { %>
                     <a href="#sp-list" data-type="hide" data-toggle="modal" data-target="#sp-list" class="btn btn-outline-secondary btn-sm sp-list-btn">审批完成</a>
@@ -64,6 +64,11 @@
                         <a href="#sp-list" data-type="show" data-toggle="modal" data-target="#sp-list" class="btn btn-primary btn-sm sp-list-btn" style="margin-right: 5px;">重新上报</a>
                     <% } %>
                 <% } %>
+
+                <% if (tender.ledger_status === auditConst.status.checking && curAuditor.audit_id === ctx.session.sessionUser.accountId) { %>
+                <a href="#sp-done" data-toggle="modal" data-target="#sp-done" class="btn btn-success btn-sm mr-1">审批通过</a>
+                <a href="#sp-back" data-toggle="modal" data-target="#sp-back" class="btn btn-warning btn-sm mr-1">审批退回</a>
+                <% }%>
             </div>
         </div>
     </div>

+ 1 - 0
app/view/ledger/explode_modal.ejs

@@ -452,3 +452,4 @@
 <% include ../shares/new_tag_modal.ejs %>
 <% include ../shares/tender_select_modal.ejs %>
 <% include ../shares/db2full_code.ejs %>
+<% include ./audit_modal.ejs %>

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

@@ -18,9 +18,6 @@
             <h3><i class="fa fa-list-alt fa-fw"></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>
-                <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
-                <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台账审批</span></a></li>
-                <% } %>
                 <% if (ctx.tender.data.measure_type === 1 && ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.bwtz) === 1) { %>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/bwtz') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/bwtz"><span>部位台账</span></a></li>
                 <% } %>

+ 0 - 3
app/view/tender/tender_sub_mini_menu.ejs

@@ -21,9 +21,6 @@
             <h3><i class="fa fa-list-alt fa-fw"></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>
-                <% if (ctx.tender.data.ledger_status !== ctx.tender.auditLedgerConst.status.uncheck) { %>
-                    <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/audit') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/audit"><span>台账审批</span></a></li>
-                <% } %>
                 <% if (ctx.session.sessionProject.page_show !== null && parseInt(ctx.session.sessionProject.page_show.bwtz) === 1) { %><li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/bwtz') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/bwtz"><span>部位台账</span></a></li><% } %>
                 <li <% if (ctx.url === '/tender/' + ctx.tender.id + '/ledger/gather') { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/ledger/gather"><span>清单对比</span></a></li>
                 <li <% if (ctx.url.indexOf('/tender/' + ctx.tender.id + '/revise') >= 0) { %>class="active"<% } %>><a href="/tender/<%- ctx.tender.id %>/revise"><span>台账修订</span></a></li>

+ 0 - 4
config/menu.js

@@ -113,10 +113,6 @@ const tenderMenu = {
                 display: true,
                 url: '/ledger/explode',
             }, {
-                name: '台账审批',
-                display: true,
-                url: '/ledger/audit',
-            }, {
                 name: '台账修订',
                 display: true,
                 url: '/revise',

+ 0 - 14
config/web.js

@@ -174,20 +174,6 @@ const JsFiles = {
                 ],
                 mergeFile: 'explode',
             },
-            audit: {
-                files: ['/public/js/spreadjs/sheets/v11/gc.spread.sheets.all.11.2.2.min.js', '/public/js/decimal.min.js'],
-                mergeFiles: [
-                    '/public/js/sub_menu.js',
-                    '/public/js/div_resizer.js',
-                    '/public/js/spreadjs_rela/spreadjs_zh.js',
-                    '/public/js/shares/sjs_setting.js',
-                    '/public/js/shares/cs_tools.js',
-                    '/public/js/zh_calc.js',
-                    '/public/js/path_tree.js',
-                    '/public/js/ledger_audit.js',
-                ],
-                mergeFile: 'ledger_audit',
-            },
             bwtz: {
                 files: [
                     '/public/js/spreadjs/sheets/v11/gc.spread.sheets.all.11.2.2.min.js',