Просмотр исходного кода

报表数据预设,显示层级

MaiXinRong 2 лет назад
Родитель
Сommit
df1ef54719

+ 4 - 0
app/controller/tender_controller.js

@@ -1524,6 +1524,9 @@ module.exports = app => {
                                 throw '您无权查看该数据';
                             }
                             break;
+                        case 'show_level':
+                            responseData.data[f] = ctx.tender.data.rpt_show_level;
+                            break;
                         default:
                             throw '未知数据类型';
                     }
@@ -1545,6 +1548,7 @@ module.exports = app => {
                 if (data.change_plan) await this.ctx.service.changePlan.defaultUpdateRows(data.change_plan);
                 if (data.advance) await this.ctx.service.advance.defaultUpdateRows(data.advance);
                 if (data.pm_deal) await this.ctx.service.project.setPmDealCache(this.ctx.session.sessionProject.id, data.pm_deal);
+                if (data.show_level) await this.ctx.service.tender.saveTenderData(ctx.tender.id, { rpt_show_level: data.show_level });
                 ctx.body = responseData;
             } catch (err) {
                 ctx.log(err);

+ 39 - 0
app/public/report/js/rpt_show_level.js

@@ -0,0 +1,39 @@
+const rptShowLevel = (function (){
+    const ratio = [{value: '2', title: '项'}, {value: '3', title: '目'}, {value: '4', title: '节'}, {value: '5', title: '细目'}, {value: 'leafXmj', title: '最底层项目节'}, {value: 'last', title: '最底层'}];
+    const info = {
+        show_level: { title: '请选择显示层级', ratioValue: ['2', '3', '4', '5', 'last'] },
+    };
+    const data = {};
+    let curType = '';
+    const initList = function () {
+        const ratioHtml = [];
+        const ratioValue = info[curType].ratioValue;
+        for (const r of ratio) {
+            if (ratioValue.indexOf(r.value) >= 0) {
+                ratioHtml.push(`<div class="form-check form-check-inline"><input class="form-check-input" type="radio" value="${r.value}" id="ratio_${r.value}" name="show-level"><label class="form-check-label" for="radio_${r.value}" name="show-level">${r.title}</label></div>`);
+            }
+        }
+        $('#ssl-list').html(ratioHtml.join(''));
+        $(`#ratio_${data[curType]}`)[0].checked = true;
+    };
+    const show = async function (type) {
+        curType = type;
+        document.getElementById('ssl-title').innerText = info[type].title;
+        if (!data[type]) {
+            const result = await postDataAsync(`/tender/${window.location.pathname.split('/')[2]}/load`, { filter: curType });
+            data[curType] = result[curType];
+        }
+        initList();
+        $('#select-show-level').modal('show');
+    };
+    const update = async function () {
+        const updateData = {};
+        updateData[curType] = $('[name=show-level]:checked').val();
+        if (updateData[curType].length > 0) {
+            await postData(`/tender/${window.location.pathname.split('/')[2]}/saveRela`, updateData);
+            data[curType] = updateData[curType];
+        }
+        $('#select-show-level').modal('hide');
+    };
+    return { show, update }
+})();

+ 1 - 1
app/service/stage_pay.js

@@ -381,7 +381,7 @@ module.exports = app => {
                 for (const p of stagePays) {
                     const [change, newExpr] = this._newExprAfterChangeOrder(p.expr, orderPart1, orderPart2);
                     if (change) {
-                        updateStageData.push({ condition: { where: { pid: p.pid } }, update: { expr: newExpr } });
+                        updateStageData.push({ condition: { where: { sid: this.ctx.stage.id, pid: p.pid } }, update: { expr: newExpr } });
                     }
                 }
                 await conn.updateRows(this.ctx.service.pay.tableName, updateData);

+ 1 - 1
app/service/tender.js

@@ -15,7 +15,7 @@ const fs = require('fs');
 const path = require('path');
 const commonQueryColumns = [
     'id', 'project_id', 'name', 'status', 'category', 'ledger_times', 'ledger_status', 'measure_type', 'user_id', 'valuation',
-    'total_price', 'deal_tp', 'copy_id', 's2b_gxby_check', 's2b_gxby_limit', 's2b_dagl_check', 's2b_dagl_limit', 'has_rela', 'his_id',
+    'total_price', 'deal_tp', 'copy_id', 's2b_gxby_check', 's2b_gxby_limit', 's2b_dagl_check', 's2b_dagl_limit', 'has_rela', 'his_id', 'rpt_show_level',
 ];
 
 module.exports = app => {

+ 1 - 0
app/view/report/index.ejs

@@ -31,6 +31,7 @@
                     <div class="dropdown">
                         <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">报表数据预设</button>
                         <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
+                            <a class="dropdown-item" href="javascript: void(0)" onclick="rptShowLevel.show('show_level');">显示层级</a>
                             <a class="dropdown-item" href="javascript: void(0)" onclick="rptOtherStage.showOtherStage('advance');">预付款</a>
                             <a class="dropdown-item" href="javascript: void(0)" onclick="rptChangeRela.showChangeRela('change_project');">变更立项</a>
                             <a class="dropdown-item" href="javascript: void(0)" onclick="rptChangeRela.showChangeRela('change_apply');">变更申请</a>

+ 20 - 0
app/view/report/rpt_all_popup.ejs

@@ -604,6 +604,26 @@
         </div>
     </div>
 </div>
+<div class="modal" id="select-show-level" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="ssl-title">请选择显示层级</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <div class="form-group" id="ssl-list">
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">取消</button>
+                <button class="btn btn-sm btn-primary" id="sos-ok" onclick="rptShowLevel.update();">确定</button>
+            </div>
+        </div>
+    </div>
+</div>
 <!--管理推荐报表-->
 <div class="modal fade" id="man-c" data-backdrop="static">
     <div class="modal-dialog" role="document">

+ 1 - 0
config/web.js

@@ -802,6 +802,7 @@ const JsFiles = {
                     '/public/js/stage_audit.js',
                     '/public/report/js/rpt_change_rela.js',
                     '/public/report/js/rpt_other_stage.js',
+                    '/public/report/js/rpt_show_level.js',
                 ],
                 mergeFile: 'report_main',
             },

+ 4 - 1
sql/update.sql

@@ -48,4 +48,7 @@ ADD COLUMN `deal_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合
 ADD COLUMN `c_dgn_qty1`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量1' AFTER `deal_dgn_qty2`,
 ADD COLUMN `c_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量2' AFTER `c_dgn_qty1`,
 ADD COLUMN `final_cotnract_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同金额' AFTER `final_dgn_qty2`,
-ADD COLUMN `final_qc_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更金额' AFTER `final_cotnract_tp`;
+ADD COLUMN `final_qc_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更金额' AFTER `final_cotnract_tp`;
+
+ALTER TABLE `zh_tender`
+ADD COLUMN `rpt_show_level`  varchar(50) NOT NULL DEFAULT 'last' AFTER `c_plan_list_rule`;