瀏覽代碼

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

Tony Kang 2 年之前
父節點
當前提交
ed4bec45b7
共有 6 個文件被更改,包括 327 次插入122 次删除
  1. 1 1
      app/public/js/advance_audit.js
  2. 145 1
      app/public/js/material.js
  3. 1 1
      app/service/material_list.js
  4. 1 0
      app/view/advance/detail.ejs
  5. 178 119
      app/view/material/info.ejs
  6. 1 0
      config/web.js

+ 1 - 1
app/public/js/advance_audit.js

@@ -42,7 +42,7 @@ $(document).ready(function () {
             $('#start-modal').append('<p class="text-danger">无法上报,请设置审批流程。</p>')
             $('#tm-submit').hide()
         } else {
-            $('#start-modal').append(`<p>确认上报第${advance.order}期${advance.type === 0 ? '开工' : '材料'}预付款?</p>`)
+            $('#start-modal').append(`<p>确认上报第${advance.order}期${typeColMap[advance.type].text}?</p>`)
             $('#tm-submit').show()
         }
     }

+ 145 - 1
app/public/js/material.js

@@ -574,6 +574,7 @@ $(document).ready(() => {
             const data = SpreadJsObj.getSelectObject(info.sheet);
             materialSpreadObj.setReadOnly(true);
             // console.log(data);
+            setCurBillSourceList(data.mb_id || data.id, $('#myTab').find('.active').data('msid') || null);
         },
         editEnded: function (e, info) {
             if (info.sheet.zh_setting) {
@@ -1188,6 +1189,117 @@ $(document).ready(() => {
         },
     };
 
+    // 应耗来源sjs
+    const material_source_cols = [
+        {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 100, formatter: '@'},
+        {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 150, formatter: '@'},
+        {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 70, formatter: '@'},
+        {title: '本期应耗', colSpan: '1', rowSpan: '2', field: 'quantity', hAlign: 0, width: 100, formatter: '@'},
+    ];
+    const materialSourceSpread = SpreadJsObj.createNewSpread($('#material-source-spread')[0]);
+    const materialSourceSpreadSetting = {
+        cols: material_source_cols,
+        emptyRows: 0,
+        headRows: 1,
+        headRowHeight: [32],
+        defaultRowHeight: 21,
+        headerFont: '12px 微软雅黑',
+        font: '12px 微软雅黑',
+        readOnly: true,
+    };
+    SpreadJsObj.initSheet(materialSourceSpread.getActiveSheet(), materialSourceSpreadSetting);
+    SpreadJsObj.loadSheetData(materialSourceSpread.getActiveSheet(), SpreadJsObj.DataType.Data, []);
+
+    let first = true;
+    function setListsData(sid = null, ms_id = null) {
+        if (first) {
+            // 加载清单数据 - 暂时统一加载,如有需要,切换成动态加载并缓存
+            postData(window.location.pathname + '/list/load', {sid}, async function (result) {
+                ledger = result.ledger;
+                curLedgerData = result.curLedgerData;
+                pos = result.pos;
+                curPosData = result.curPosData;
+                materialListData2 = result.materialListData;
+                gclList = result.gclList;
+                notJoinList = result.materialNotJoinListData;
+                selfList = result.materialSelfListData;
+                materialChecklistData = result.materialChecklistData;
+                if (isStageSelf) {
+                    const newGclGatherListData = [];
+                    for (const [index, s] of result.ledgerListData.entries()) {
+                        gclGatherModel.loadLedgerData(_.cloneDeep(ledger), s);
+                        gclGatherModel.loadPosData(_.cloneDeep(pos), result.posListData[index]);
+                        const oneGclGatherData = gclGatherModel.gatherGclData().filter(item => {
+                            return item.qc_qty || item.contract_qty
+                        });
+                        newGclGatherListData.push(oneGclGatherData);
+                    }
+                    gclGatherListData = newGclGatherListData;
+                }
+                // 解析清单汇总数据
+                gclGatherModel.loadLedgerData(_.cloneDeep(ledger), curLedgerData);
+                gclGatherModel.loadPosData(_.cloneDeep(pos), curPosData);
+                gclGatherData = gclGatherModel.gatherGclData();
+                gclGatherData = gclGatherData.filter(item => {
+                    return item.qc_qty || item.contract_qty
+                });
+                if (openMaterialChecklist) {
+                    // 取交集
+                    const selfListGcl = _.uniq(_.map(selfList, 'gcl_id'));
+                    gclGatherData = _.filter(gclGatherData, function (item) {
+                        if (_.find(materialChecklistData, {
+                            b_code: item.b_code,
+                            name: item.name,
+                            unit: item.unit,
+                            unit_price: item.unit_price
+                        })) {
+                            return true;
+                        } else {
+                            const gcl_ids = item.leafXmjs ? _.uniq(_.map(item.leafXmjs, 'gcl_id')) : [];
+                            const jiaoji = _.intersection(gcl_ids, selfListGcl);
+                            if (jiaoji.length > 0) {
+                                return true;
+                            }
+                        }
+                    });
+                }
+                // calculateJiaCha(gclGatherData);
+                console.log(gclGatherData);
+                setCurBillSourceList(materialBillsData[0] ? materialBillsData[0].mb_id || materialBillsData[0].id : null, ms_id);
+                first = false;
+            });
+        } else {
+            const i = _.findIndex(materialStageData, { sid });
+            gclGatherData = gclGatherListData[i];
+            gclGatherData = gclGatherData.filter(item => {
+                return item.qc_qty || item.contract_qty
+            });
+            if (openMaterialChecklist) {
+                // 取交集
+                const selfListGcl = _.uniq(_.map(selfList, 'gcl_id'));
+                gclGatherData = _.filter(gclGatherData, function (item) {
+                    if (_.find(materialChecklistData, {
+                        b_code: item.b_code,
+                        name: item.name,
+                        unit: item.unit,
+                        unit_price: item.unit_price
+                    })) {
+                        return true;
+                    } else {
+                        const gcl_ids = item.leafXmjs ? _.uniq(_.map(item.leafXmjs, 'gcl_id')) : [];
+                        const jiaoji = _.intersection(gcl_ids, selfListGcl);
+                        if (jiaoji.length > 0) {
+                            return true;
+                        }
+                    }
+                });
+            }
+            // calculateJiaCha(gclGatherData);
+            console.log(gclGatherData);
+        }
+    }
+    setListsData(isStageSelf ? materialStageData[0].sid : null, isStageSelf ? materialStageData[0].id : null);
+
     SpreadJsObj.initSpreadSettingEvents(materialSpreadSetting, materialCol);
     SpreadJsObj.initSheet(materialSpread.getActiveSheet(), materialSpreadSetting);
     materialSpreadObj.getMaterialBillsData();
@@ -1213,9 +1325,41 @@ $(document).ready(() => {
                 html += '<tr><td>' + calcBase[iBase].name + '</td><td>' + calcBase[iBase].code + '</td><td>' + calcBase[iBase].value + '</td></tr>';
             }
             $('#calcBase').html(html);
+            const ms_id = parseInt($('#myTab').find('.active').data('msid'));
+            const msInfo = _.find(materialStageData, { id: ms_id });
+            setListsData(msInfo.sid, ms_id);
+            const data = SpreadJsObj.getSelectObject(materialSpread.getActiveSheet());
+            setCurBillSourceList(data.mb_id || data.id, ms_id);
             closeWaitingView();
         }, 1000);
     });
+    // 本条工料应耗来源数据信息
+    function setCurBillSourceList(mb_id, ms_id = null) {
+        const showSourceList = [];
+        if (mb_id) {
+            const list = _.filter(materialListData2, { mb_id, ms_id });
+            console.log(list);
+            if (list.length > 0) {
+                for (const l of list) {
+                    const gcl = _.find(gclGatherData, function (item) {
+                        return item.leafXmjs && item.leafXmjs.length > 0 && _.findIndex(item.leafXmjs, { gcl_id: l.gcl_id }) !== -1;
+                    });
+                    const index = _.findIndex(showSourceList, { code: gcl.b_code, name: gcl.name, unit: gcl.unit });
+                    if (gcl && index === -1) {
+                        showSourceList.push({
+                            code: gcl.b_code,
+                            name: gcl.name,
+                            unit: gcl.unit,
+                            quantity: ZhCalc.mul(l.gather_qty, l.quantity),
+                        });
+                    } else if (gcl && index !== -1) {
+                        showSourceList[index].quantity = ZhCalc.add(showSourceList[index].quantity, ZhCalc.mul(l.gather_qty, l.quantity));
+                    }
+                }
+            }
+        }
+        SpreadJsObj.loadSheetData(materialSourceSpread.getActiveSheet(), SpreadJsObj.DataType.Data, showSourceList);
+    }
 
     if (!readOnly || editForAudit) {
         $('#expr_select button').on('click', function () {
@@ -1844,7 +1988,7 @@ $(document).ready(() => {
         const tab = $(this), tabPanel = $(tab.attr('content'));
         if (!tab.hasClass('active')) {
             $('a', '.side-menu').removeClass('active');
-            $('.tab-content .tab-pane').removeClass('active');
+            $('#right-view .tab-content .tab-pane').removeClass('active');
             tab.addClass('active');
             tabPanel.addClass('active');
             showSideTools(tab.hasClass('active'));

+ 1 - 1
app/service/material_list.js

@@ -377,7 +377,7 @@ module.exports = app => {
          * @return {void}
          */
         async getMaterialData(tid, mid) {
-            const sql = 'SELECT ml.`id`, mb.`code`, mb.`name`, mb.`unit`, ml.`order`, ml.`quantity`, ml.`expr`, ml.`mb_id`, ml.`gcl_id`, ml.`xmj_id`, ml.`mx_id`, ml.`ms_id`, ml.`tid`, ml.`mid`, mb.m_spread, ml.ms_id' +
+            const sql = 'SELECT ml.`id`, mb.`code`, mb.`name`, mb.`unit`, ml.`order`, ml.`gather_qty`, ml.`quantity`, ml.`expr`, ml.`mb_id`, ml.`gcl_id`, ml.`xmj_id`, ml.`mx_id`, ml.`ms_id`, ml.`tid`, ml.`mid`, mb.m_spread, ml.ms_id' +
                 ' FROM ' + this.tableName + ' as ml' +
                 ' LEFT JOIN ' + this.ctx.service.materialBills.tableName + ' as mb' +
                 ' ON ml.`mb_id` = mb.`id`' +

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

@@ -363,6 +363,7 @@
     // const decimal = parseInt('<%- decimal %>');
     const auditConst = JSON.parse('<%- JSON.stringify(auditConst) %>');
     const advance = JSON.parse(unescape('<%- escape(JSON.stringify(advance)) %>'));
+    const typeColMap = JSON.parse(unescape('<%- escape(JSON.stringify(typeColMap)) %>'));
     const prevAdvance = JSON.parse(unescape('<%- escape(JSON.stringify(prevAdvance)) %>'));
     const isEdited = JSON.parse('<%- isEdited %>');
     const advancePayTotal = parseFloat('<%- advancePayTotal %>');

+ 178 - 119
app/view/material/info.ejs

@@ -31,13 +31,13 @@
                         </div>
                     </a>
                     <% if ((material.status === auditConst.status.uncheck || material.status === auditConst.status.checkNo) && ctx.session.sessionUser.accountId === material.user_id) { %>
-                    <a href="#import-info" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#import-info">导入信息价</a>
+                        <a href="#import-info" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#import-info">导入信息价</a>
                     <% } %>
                 </div>
             </div>
             <div class="ml-auto">
                 <% if (ctx.session.sessionProject.page_show.openMaterialChecklist && material.order === material.highOrder) { %>
-                <a href="/tender/<%- ctx.tender.id %>/measure/material/<%- material.highOrder %>/checklist" class="btn btn-sm btn-outline-primary">批量设置调差清单</a>
+                    <a href="/tender/<%- ctx.tender.id %>/measure/material/<%- material.highOrder %>/checklist" class="btn btn-sm btn-outline-primary">批量设置调差清单</a>
                 <% } %>
             </div>
         </div>
@@ -90,134 +90,191 @@
                 <!--下部分-->
                 <div class="bcontent-wrap mt-1" id="main-bottom">
                     <div id="main-resize" class="resize-y" r-Type="height" div1=".sjs-height-1" div2=".bcontent-wrap" title="调整大小"><!--调整上下高度条--></div>
-
-                    <div class="bc-bar mb-1">
-                        <div class="input-group input-group-sm ">
-                            <div class="input-group-prepend">
-                                <span class="input-group-text" id="basic-addon1">建筑增值税</span>
+                    <div class="row">
+                        <div class="col-6">
+                            <div class="bc-bar mb-1">
+                                <ul class="nav nav-tabs">
+                                    <li class="nav-item">
+                                        <a class="nav-link active" data-toggle="tab" href="#yhly" role="tab">应耗来源</a>
+                                    </li>
+                                </ul>
                             </div>
-                            <input id="rateInput" class="form-control form-control-sm col-1" <% if (material.material_tax || material.readOnly || material.editForAudit) { %>disabled<% } %> type="number" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" min="0" step="1" max="100" value="<%- material.rate %>">
-                            <% if (!material.readOnly || !material.editForAudit || !material.material_tax) { %>
-                            <div class="dropdown-menu">
-                                <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="9">9%</a>
-                                <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="10">10%</a>
-                                <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="11">11%</a>
+                            <div class="tab-content">
+                                <div class="tab-pane active" id="yhly">
+                                    <div class="sp-wrap" id="material-source-spread">
+                                        <!--<table class="table table-sm table-bordered">-->
+                                            <!--<tr class="text-center">-->
+                                                <!--<th width="80px">清单编号</th>-->
+                                                <!--<th width="">名称</th>-->
+                                                <!--<th width="80px">单位</th>-->
+                                                <!--<th width="100px">本期应耗</th>-->
+                                            <!--</tr>-->
+                                            <!--<tr>-->
+                                                <!--<td class="text-left">403-1-a</td>-->
+                                                <!--<td class="text-left">光圆钢筋(HPB235、HPB300)</td>-->
+                                                <!--<td class="text-center">kg</td>-->
+                                                <!--<td class="text-right">50.256</td>-->
+                                            <!--</tr>-->
+                                            <!--<tr>-->
+                                                <!--<td class="text-left">403-1-b</td>-->
+                                                <!--<td class="text-left">带肋钢筋(HRB335、HRB400)</td>-->
+                                                <!--<td class="text-center">kg</td>-->
+                                                <!--<td class="text-right">60.258</td>-->
+                                            <!--</tr>-->
+                                            <!--<tr>-->
+                                                <!--<td class="text-left">403-2-a</td>-->
+                                                <!--<td class="text-left">光圆钢筋(HPB235、HPB300)</td>-->
+                                                <!--<td class="text-center">kg</td>-->
+                                                <!--<td class="text-right">40</td>-->
+                                            <!--</tr>-->
+                                        <!--</table>-->
+                                    </div>
+                                </div>
                             </div>
-                            <% } %>
-                            <!--<select class="form-control form-control-sm col-1" id="changeRate" <% if (material.material_tax) { %>disabled<% } %>>-->
-                                <!--<% if (!material.readOnly) { %>-->
-                                    <!--<option value="9" <% if(material.rate === 9) { %>selected<% } %>>9%</option>-->
-                                    <!--<option value="10" <% if(material.rate === 10) { %>selected<% } %>>10%</option>-->
-                                    <!--<option value="11" <% if(material.rate === 11) { %>selected<% } %>>11%</option>-->
-                                <!--<% } else { %>-->
-                                    <!--<option value="<%= material.rate %>" selected><%= material.rate %>%</option>-->
-                                <!--<% } %>-->
-                            <!--</select>-->
                         </div>
-                    </div>
-                    <div class="material-table-height row mr-1" style="overflow-y: auto">
-                        <div class="col-8">
-                            <% if (!material.material_tax && !old_had_tax) { %>
-                                <div class="sp-wrap" style="max-width: 800px;min-width: 500px;">
-                                    <div class="col-12 p-0">
-                                        <table class="table table-sm table-bordered">
-                                            <tr><th rowspan="2"></th><th colspan="2" class="text-center">信息价</th><th colspan="2" class="text-center">价格指数</th></tr>
-                                            <tr class="text-center"><th>本期金额</th><th>截止本期金额</th>
-                                                <th>本期金额
-                                                    <a href="javascript:void(0);" id="ex_expr" data-toggle="tooltip" data-placement="bottom" title="本期价差:<%- material.ex_expr ? material.ex_expr : '' %>"><i class="fa fa-question-circle-o"></i></a></th>
-                                                <th>截止本期金额</th></tr>
-                                            <tr id="tp_set"><td>材料价差费用</td>
-                                                <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(material.m_tp, material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.m_tp !== null || material.pre_tp !== null ? ctx.helper.add(material.pre_tp, ctx.helper.round(material.m_tp, material.decimal.tp)) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(material.ex_pre_tp, ctx.helper.round(material.ex_tp, material.decimal.tp)) : null %></td>
-                                            </tr>
-                                            <tr id="rate_set"><td>材料价差费用(含建筑税)</td>
-                                                <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.m_tp !== null || pre_tp_hs !== null ? ctx.helper.add(pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp)) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null || ex_pre_tp_hs !== null ? ctx.helper.add(ex_pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp)) : null %></td>
-                                            </tr>
-                                        </table>
+                        <div class="col-6">
+                            <div class="bc-bar mb-1">
+                                <ul class="nav nav-tabs">
+                                    <li class="nav-item">
+                                        <a class="nav-link active" data-toggle="tab" href="#fysum" role="tab">费用统计</a>
+                                    </li>
+                                    <% if (material.is_stage_self) { %>
+                                        <li class="nav-item">
+                                            <a class="nav-link " data-toggle="tab" href="#qidetail" role="tab">各期统计</a>
+                                        </li>
+                                    <% } %>
+                                    <li class="nav-item ml-2">
+                                        <div class="ml-2">
+                                            <!--调整税率-->
+                                            <div class="d-inline-flex">
+                                                <div class="input-group input-group-sm">
+                                                    <div class="input-group-prepend">
+                                                        <span class="input-group-text" id="basic-addon1">建筑增值税</span>
+                                                    </div>
+                                                    <input id="rateInput" class="form-control form-control-sm" <% if (material.material_tax || material.readOnly || material.editForAudit) { %>disabled<% } %> type="number" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" min="0" step="1" max="100" value="<%- material.rate %>">
+                                                    <% if (!material.readOnly || !material.editForAudit || !material.material_tax) { %>
+                                                        <div class="dropdown-menu">
+                                                            <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="9">9%</a>
+                                                            <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="10">10%</a>
+                                                            <a class="dropdown-item changeRate" href="javascript:void(0);" data-value="11">11%</a>
+                                                        </div>
+                                                    <% } %>
+                                                    <!--<select class="form-control form-control-sm col-1" id="changeRate" <% if (material.material_tax) { %>disabled<% } %>>-->
+                                                    <!--<% if (!material.readOnly) { %>-->
+                                                    <!--<option value="9" <% if(material.rate === 9) { %>selected<% } %>>9%</option>-->
+                                                    <!--<option value="10" <% if(material.rate === 10) { %>selected<% } %>>10%</option>-->
+                                                    <!--<option value="11" <% if(material.rate === 11) { %>selected<% } %>>11%</option>-->
+                                                    <!--<% } else { %>-->
+                                                    <!--<option value="<%= material.rate %>" selected><%= material.rate %>%</option>-->
+                                                    <!--<% } %>-->
+                                                    <!--</select>-->
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </li>
+                                </ul>
+                            </div>
+                            <div class="tab-content">
+                                <div class="tab-pane active" id="fysum">
+                                    <div class="sp-wrap">
+                                        <% if (!material.material_tax && !old_had_tax) { %>
+                                            <table class="table table-sm table-bordered">
+                                                <tr><th rowspan="2"></th><th colspan="2" class="text-center">信息价</th><th colspan="2" class="text-center">价格指数</th></tr>
+                                                <tr class="text-center"><th>本期金额</th><th>截止本期金额</th>
+                                                    <th>本期金额
+                                                        <a href="javascript:void(0);" id="ex_expr" data-toggle="tooltip" data-placement="bottom" title="本期价差:<%- material.ex_expr ? material.ex_expr : '' %>"><i class="fa fa-question-circle-o"></i></a></th>
+                                                    <th>截止本期金额</th></tr>
+                                                <tr id="tp_set"><td>材料价差费用</td>
+                                                    <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(material.m_tp, material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.m_tp !== null || material.pre_tp !== null ? ctx.helper.add(material.pre_tp, ctx.helper.round(material.m_tp, material.decimal.tp)) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(material.ex_pre_tp, ctx.helper.round(material.ex_tp, material.decimal.tp)) : null %></td>
+                                                </tr>
+                                                <tr id="rate_set"><td>材料价差费用(含建筑税)</td>
+                                                    <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.m_tp !== null || pre_tp_hs !== null ? ctx.helper.add(pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp)) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null || ex_pre_tp_hs !== null ? ctx.helper.add(ex_pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp)) : null %></td>
+                                                </tr>
+                                            </table>
+                                        <% } else { %>
+                                            <table class="table table-sm table-bordered">
+                                                <tr><th rowspan="2"></th><th colspan="2" class="text-center">信息价</th><th colspan="2" class="text-center">价格指数</th></tr>
+                                                <tr class="text-center"><th>本期金额</th><th>截止本期金额</th>
+                                                    <th>本期金额
+                                                        <a href="javascript:void(0);" id="ex_expr" data-toggle="tooltip" data-placement="bottom" title="本期价差:<%- material.ex_expr ? material.ex_expr : '' %>"><i class="fa fa-question-circle-o"></i></a></th>
+                                                    <th>截止本期金额</th></tr>
+                                                <tr id="tp_set"><td>材料价差费用</td>
+                                                    <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(material.m_tp, material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.m_tp !== null || material.pre_tp !== null ? ctx.helper.add(material.pre_tp, ctx.helper.round(material.m_tp, material.decimal.tp)) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(material.ex_pre_tp, ctx.helper.round(material.ex_tp, material.decimal.tp)) : null %></td>
+                                                </tr>
+                                                <tr id="tax_rate_set"><td>材料价差费用(含材料税)</td>
+                                                    <td class="text-center"><%= material.material_tax ? (material.m_tax_tp !== null ? material.m_tax_tp : null) : '-' %></td>
+                                                    <td class="text-center"><%= material.material_tax ? (material.m_tax_tp !== null || material.m_tax_pre_tp !== null ? ctx.helper.add(material.m_tax_pre_tp, material.m_tax_tp) : null) : material.m_tax_pre_tp %></td>
+                                                    <td class="text-center">-</td>
+                                                    <td class="text-center">-</td>
+                                                </tr>
+                                                <tr id="rate_set"><td>材料价差费用(含建筑税)</td>
+                                                    <td class="text-center"><%= !material.material_tax ? (material.m_tp !== null ? ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp) : null) : '-' %></td>
+                                                    <td class="text-center"><%= !material.material_tax ? (material.m_tp !== null || pre_tp_hs !== null ? ctx.helper.add(pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp)) : null) : pre_tp_hs !== null ? pre_tp_hs : '-' %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp) : null %></td>
+                                                    <td class="text-center"><%= material.ex_tp !== null || ex_pre_tp_hs !== null ? ctx.helper.add(ex_pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp)) : null %></td>
+                                                </tr>
+                                            </table>
+                                        <% } %>
                                     </div>
                                 </div>
-                            <% } else { %>
-                                <div class="sp-wrap" style="max-width: 800px;min-width: 500px;">
-                                    <div class="col-12 p-0">
-                                        <table class="table table-sm table-bordered">
-                                            <tr><th rowspan="2"></th><th colspan="2" class="text-center">信息价</th><th colspan="2" class="text-center">价格指数</th></tr>
-                                            <tr class="text-center"><th>本期金额</th><th>截止本期金额</th>
-                                                <th>本期金额
-                                                    <a href="javascript:void(0);" id="ex_expr" data-toggle="tooltip" data-placement="bottom" title="本期价差:<%- material.ex_expr ? material.ex_expr : '' %>"><i class="fa fa-question-circle-o"></i></a></th>
-                                                <th>截止本期金额</th></tr>
-                                            <tr id="tp_set"><td>材料价差费用</td>
-                                                <td class="text-center"><%= material.m_tp !== null ? ctx.helper.round(material.m_tp, material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.m_tp !== null || material.pre_tp !== null ? ctx.helper.add(material.pre_tp, ctx.helper.round(material.m_tp, material.decimal.tp)) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(material.ex_tp, material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null || material.ex_pre_tp !== null ? ctx.helper.add(material.ex_pre_tp, ctx.helper.round(material.ex_tp, material.decimal.tp)) : null %></td>
-                                            </tr>
-                                            <tr id="tax_rate_set"><td>材料价差费用(含材料税)</td>
-                                                <td class="text-center"><%= material.material_tax ? (material.m_tax_tp !== null ? material.m_tax_tp : null) : '-' %></td>
-                                                <td class="text-center"><%= material.material_tax ? (material.m_tax_tp !== null || material.m_tax_pre_tp !== null ? ctx.helper.add(material.m_tax_pre_tp, material.m_tax_tp) : null) : material.m_tax_pre_tp %></td>
-                                                <td class="text-center">-</td>
-                                                <td class="text-center">-</td>
-                                            </tr>
-                                            <tr id="rate_set"><td>材料价差费用(含建筑税)</td>
-                                                <td class="text-center"><%= !material.material_tax ? (material.m_tp !== null ? ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp) : null) : '-' %></td>
-                                                <td class="text-center"><%= !material.material_tax ? (material.m_tp !== null || pre_tp_hs !== null ? ctx.helper.add(pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.m_tp, 1+material.rate/100), material.decimal.tp)) : null) : pre_tp_hs !== null ? pre_tp_hs : '-' %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null ? ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp) : null %></td>
-                                                <td class="text-center"><%= material.ex_tp !== null || ex_pre_tp_hs !== null ? ctx.helper.add(ex_pre_tp_hs, ctx.helper.round(ctx.helper.mul(material.ex_tp, 1+material.exponent_rate/100), material.decimal.tp)) : null %></td>
-                                            </tr>
-                                        </table>
+                                <% if (material.is_stage_self) { %>
+                                    <div class="tab-pane" id="qidetail">
+                                        <div class="sp-wrap">
+                                            <table class="table table-bordered">
+                                                <thead>
+                                                <tr class="text-center"><th colspan="<% if (material.material_tax) { %>3<% } else { %>2<% } %>">期明细</th></tr>
+                                                <tr><th class="text-center">期数</th>
+                                                    <th class="text-center">本期调差金额</th>
+                                                    <% if (material.material_tax) { %>
+                                                        <th class="text-center">本期调差金额(材料税)</th>
+                                                    <% } %>
+                                                </tr>
+                                                </thead>
+                                                <tbody id="materialStageTable">
+                                                <% for (const ms of materialStageData) { %>
+                                                    <tr><td>第<%- ms.order %>期</td><td class="text-center"><%- ms.m_tp !== null ? ms.m_tp : null %></td>
+                                                        <% if (material.material_tax) { %>
+                                                            <td class="text-center"><%- ms.m_tax_tp !== null ? ms.m_tax_tp : null %></td>
+                                                        <% } %>
+                                                    </tr>
+                                                <% } %>
+                                                <tr><td>合计</td><td class="text-center"><%- material.m_tp %></td>
+                                                    <% if (material.material_tax) { %>
+                                                        <td class="text-center"><%- material.m_tax_tp %></td>
+                                                    <% } %>
+                                                </tr>
+                                                </tbody>
+                                            </table>
+                                        </div>
                                     </div>
-                                </div>
-                            <% } %>
-                        </div>
-                        <% if (material.is_stage_self) { %>
-                        <div class="col-4">
-                            <table class="table table-bordered">
-                                <thead>
-                                <tr class="text-center"><th colspan="<% if (material.material_tax) { %>3<% } else { %>2<% } %>">期明细</th></tr>
-                                <tr><th class="text-center">期数</th>
-                                    <th class="text-center">本期调差金额</th>
-                                    <% if (material.material_tax) { %>
-                                    <th class="text-center">本期调差金额(材料税)</th>
-                                    <% } %>
-                                </tr>
-                                </thead>
-                                <tbody id="materialStageTable">
-                                <% for (const ms of materialStageData) { %>
-                                <tr><td>第<%- ms.order %>期</td><td class="text-center"><%- ms.m_tp !== null ? ms.m_tp : null %></td>
-                                    <% if (material.material_tax) { %>
-                                        <td class="text-center"><%- ms.m_tax_tp !== null ? ms.m_tax_tp : null %></td>
-                                    <% } %>
-                                </tr>
                                 <% } %>
-                                <tr><td>合计</td><td class="text-center"><%- material.m_tp %></td>
-                                    <% if (material.material_tax) { %>
-                                        <td class="text-center"><%- material.m_tax_tp %></td>
-                                    <% } %>
-                                </tr>
-                                </tbody>
-                            </table>
+                            </div>
                         </div>
-                        <% } %>
                     </div>
                 </div>
             </div>
-        </div>
-        <div class="side-menu">
-            <!--右侧菜单-->
-            <ul class="nav flex-column right-nav">
-                <% if (!material.is_stage_self) { %>
-                <li class="nav-item">
-                    <a class="nav-link" content="#month-tab" href="javascript: void(0);">月信息价</a>
-                </li>
-                <% } %>
-                <li class="nav-item">
-                    <a class="nav-link" content="#material-tab" href="javascript: void(0);">工料机库</a>
-                </li>
-            </ul>
+            <div class="side-menu">
+                <!--右侧菜单-->
+                <ul class="nav flex-column right-nav">
+                    <% if (!material.is_stage_self) { %>
+                        <li class="nav-item">
+                            <a class="nav-link" content="#month-tab" href="javascript: void(0);">月信息价</a>
+                        </li>
+                    <% } %>
+                    <li class="nav-item">
+                        <a class="nav-link" content="#material-tab" href="javascript: void(0);">工料机库</a>
+                    </li>
+                </ul>
+            </div>
         </div>
     </div>
 </div>
@@ -259,4 +316,6 @@
     const months = JSON.parse('<%- JSON.stringify(months) %>');
     let monthsList = JSON.parse('<%- JSON.stringify(monthsList) %>');
     const gljLists = JSON.parse(unescape('<%- escape(JSON.stringify(gljLists)) %>'));
+    const openMaterialChecklist = parseInt(<%- ctx.session.sessionProject.page_show.openMaterialChecklist %>);
+    let materialListData2, materialChecklistData, notJoinList, ledger, curLedgerData, pos, curPosData, gclGatherData, gclList, selfList, gclGatherListData;
 </script>

+ 1 - 0
config/web.js

@@ -663,6 +663,7 @@ const JsFiles = {
                     '/public/js/spreadjs_rela/spreadjs_zh.js',
                     '/public/js/zh_calc.js',
                     '/public/js/path_tree.js',
+                    '/public/js/gcl_gather.js',
                     '/public/js/material.js',
                     '/public/js/shares/cs_tools.js',
                     '/public/js/material_audit.js',