Browse Source

决策大屏选择展示页面逻辑更改

laiguoran 3 years ago
parent
commit
1da18aca19

+ 2 - 0
app/controller/datacollect_controller.js

@@ -53,6 +53,7 @@ module.exports = app => {
                 const categoryData = await this.ctx.service.category.getListByCategoryLevel(ctx.session.sessionProject.id);
                 // 默认坐标,否则则取办事处坐标
                 const projectData = await ctx.service.project.getDataById(ctx.session.sessionProject.id);
+                projectData.data_collect_pages = projectData.data_collect_pages ? projectData.data_collect_pages.split(',') : [];
                 let map_json = {
                     province: mapConst.map[0].province,
                     lng: mapConst.map[0].lng,
@@ -70,6 +71,7 @@ module.exports = app => {
                     }
                 }
                 const renderData = {
+                    projectData,
                     noticeList,
                     categoryData,
                     map_json,

+ 2 - 1
app/controller/setting_controller.js

@@ -859,6 +859,7 @@ module.exports = app => {
                 await this._checkMenu(projectId);
                 const projectData = await ctx.service.project.getDataById(projectId);
                 if (projectData === null) throw '没有对应的项目数据';
+                projectData.data_collect_pages = projectData.data_collect_pages ? projectData.data_collect_pages.split(',') : [];
                 if (ctx.session.sessionUser.is_admin === 0) throw '没有访问权限';
                 const dataCollectAudits = await ctx.service.datacollectAudit.getList(projectId);
                 // 获取所有项目参与者
@@ -902,7 +903,7 @@ module.exports = app => {
                 }
                 switch (data.type) {
                     case 'show':
-                        responseData.data = await ctx.service.project.update({ data_collect: data.data_collect }, { id: projectId });
+                        responseData.data = await ctx.service.project.update({ data_collect: data.data_collect, data_collect_pages: data.data_collect_pages.join(',') }, { id: projectId });
                         ctx.session.sessionProject.dataCollect = data.data_collect;
                         ctx.session.sessionProject.showDataCollect = data.data_collect ? 1 : 0;
                         break;

+ 0 - 1
app/public/js/setting_datacollect_tender.js

@@ -134,7 +134,6 @@ function getTenderTreeHtml () {
 }
 $(document).ready(function () {
     initTenderTree();
-    console.log(tenderTree);
     const html = getTenderTreeHtml();
     $('#copyModalContent').html(html);
 

+ 4 - 5
app/view/datacollect/index.ejs

@@ -42,10 +42,9 @@
                 <div class="btn-group">
                     <button type="button" class="btn btn-sm btn-outline-dark text-white dropdown-toggle" data-toggle="dropdown" id="zhankai">决策大屏<span><%- ctx.session.sessionProject.dataCollect %></span></button>
                     <div class="dropdown-menu" aria-labelledby="zhankai">
-                        <a class="dropdown-item change-collect" href="javascript:void(0)" data-collect="1">决策大屏1</a>
-                        <a class="dropdown-item change-collect" href="javascript:void(0)" data-collect="2">决策大屏2</a>
-                        <a class="dropdown-item change-collect" href="javascript:void(0)" data-collect="3">决策大屏3</a>
-                        <a class="dropdown-item change-collect" href="javascript:void(0)" data-collect="4">决策大屏4</a>
+                        <% for (const i of projectData.data_collect_pages) { %>
+                        <a class="dropdown-item change-collect" href="javascript:void(0)" data-collect="<%- i %>">决策大屏<%- i %></a>
+                        <% } %>
                     </div>
                 </div>
             </div>
@@ -1269,7 +1268,7 @@
                     chart_category_data.push({
                         cid: category[categoryIndex].id,
                         value: c.id,
-                    })
+                    });
                     chart_option1_data.push({
                         value: 0,
                         name: c.value,

+ 91 - 21
app/view/setting/datacollect.ejs

@@ -12,22 +12,33 @@
         <div class="c-body">
             <div class="sjs-height-0">
                 <nav class="nav nav-tabs m-3" id="tablist" role="tablist">
-                    <a class="nav-item nav-link<% if (ctx.session.sessionProject.dataCollect === 0 || ctx.session.sessionProject.dataCollect === 1) { %> active<% } %>" data-datacollect="1" data-toggle="tab" href="#shujudaping-one" role="tab">决策大屏一</a>
-                    <a class="nav-item nav-link<% if (ctx.session.sessionProject.dataCollect === 2) { %> active<% } %>" data-datacollect="2" data-toggle="tab" href="#shujudaping-two" role="tab">决策大屏二</a>
-                    <a class="nav-item nav-link<% if (ctx.session.sessionProject.dataCollect === 3) { %> active<% } %>" data-datacollect="3" data-toggle="tab" href="#shujudaping-three" role="tab">决策大屏三</a>
-                    <a class="nav-item nav-link<% if (ctx.session.sessionProject.dataCollect === 4) { %> active<% } %>" data-datacollect="4" data-toggle="tab" href="#shujudaping-four" role="tab">决策大屏四</a>
+                    <% for (let i = 1; i <= 4; i++) { %>
+                        <a class="nav-item nav-link<% if ((ctx.session.sessionProject.dataCollect === 0 && i === 1) || ctx.session.sessionProject.dataCollect === i) { %> active<% } %>" data-datacollect="<%- i %>" data-toggle="tab" href="#shujudaping-<%- i %>" role="tab">
+                            决策大屏<%- ctx.helper.transFormToChinese(i) %><% if (ctx.helper._.indexOf(projectData.data_collect_pages, i.toString()) !== -1) { %>(已开启<% if (i === ctx.session.sessionProject.dataCollect) { %>、默认<% } %>)<% } %></a>
+                    <% } %>
                     <div class="ml-auto">
-                        <div class="form-check form-check-inline">
-                            <input class="form-check-input" type="checkbox" id="show-datacollect" value="option1" <% if (ctx.session.sessionProject.dataCollect) { %>checked<% } %>>
-                            <label class="form-check-label" for="show-datacollect">数据大屏显示</label>
+                        <!--<div class="form-check form-check-inline">-->
+                            <!--<input class="form-check-input" type="checkbox" id="show-datacollect" value="option1" <% if (ctx.session.sessionProject.dataCollect) { %>checked<% } %>>-->
+                            <!--<label class="form-check-label" for="show-datacollect">数据大屏显示</label>-->
+                        <!--</div>-->
+                        <div class="d-inline-block form-group form-check mt-2">
+                            <div class="custom-control custom-switch">
+                                <input type="checkbox" class="custom-control-input" id="show_datacollect" <% if (ctx.session.sessionProject.dataCollect !== 0) { %>checked<% } %>>
+                                <label class="custom-control-label" for="show_datacollect">开启<i class="fa fa-question-circle text-primary" data-placement="bottom" data-toggle="tooltip" data-original-title="开启后,在决策大屏模块显示"></i></label>
+                            </div>
+                        </div>
+                        <div class="d-inline-block form-group form-check mt-2">
+                            <div class="custom-control custom-switch">
+                                <input type="checkbox" class="custom-control-input" id="default_datacollect" <% if (ctx.session.sessionProject.dataCollect !== 0) { %>checked<% } %>>
+                                <label class="custom-control-label" for="default_datacollect">默认<i class="fa fa-question-circle text-primary" data-placement="bottom" data-toggle="tooltip" data-original-title="决策大屏第一个显示"></i></label>
+                            </div>
                         </div>
                     </div>
                 </nav>
                 <div class="tab-content m-3">
-                    <div id="shujudaping-one" class="tab-pane<% if (ctx.session.sessionProject.dataCollect === 0 || ctx.session.sessionProject.dataCollect === 1) { %> active<% } %>"><img src="/public/images/juecedaping01.png" width="100%"></div>
-                    <div id="shujudaping-two" class="tab-pane<% if (ctx.session.sessionProject.dataCollect === 2) { %> active<% } %>"><img src="/public/images/juecedaping02.png" width="100%"></div>
-                    <div id="shujudaping-three" class="tab-pane<% if (ctx.session.sessionProject.dataCollect === 3) { %> active<% } %>"><img src="/public/images/juecedaping03.png" width="100%"></div>
-                    <div id="shujudaping-four" class="tab-pane<% if (ctx.session.sessionProject.dataCollect === 4) { %> active<% } %>"><img src="/public/images/juecedaping04.png" width="100%"></div>
+                    <% for (let i = 1; i <= 4; i++) { %>
+                        <div id="shujudaping-<%- i %>" class="tab-pane<% if ((ctx.session.sessionProject.dataCollect === 0 && i === 1) || ctx.session.sessionProject.dataCollect === i) { %> active<% } %>"><img src="/public/images/juecedaping0<%- i %>.png" width="100%"></div>
+                    <% } %>
                 </div>
             </div>
         </div>
@@ -35,27 +46,86 @@
 </div>
 <script src="/public/js/setting_datacollect_tender.js"></script>
 <script>
+    let dataCollectPages = JSON.parse(unescape('<%- escape(JSON.stringify(projectData.data_collect_pages)) %>'));
+    let dataCollect = parseInt('<%- ctx.session.sessionProject.dataCollect %>');
     const tenders = JSON.parse(unescape('<%- escape(JSON.stringify(tenders)) %>'));
     const category = JSON.parse(unescape('<%- escape(JSON.stringify(categoryData)) %>'));
     let dcTenders = JSON.parse(unescape('<%- escape(JSON.stringify(dcTenders)) %>'));
     let addDataCollect = JSON.parse(unescape('<%- escape(JSON.stringify(ctx.session.sessionProject.page_show.addDataCollect)) %>'));
     $(function () {
         autoFlashHeight();
-        $('#show-datacollect').click(function () {
-            let data_collect = 0;
+        // 开启及关闭展示
+        $('#show_datacollect').change(function () {
+            const activePage = $('#tablist').find('.active').data('datacollect').toString();
             if ($(this).is(':checked')) {
-                data_collect = $('#tablist').find('.active').data('datacollect');
+                dataCollectPages.push(activePage);
+                dataCollectPages.sort();
+                if (dataCollect === 0) {
+                    dataCollect = parseInt(activePage);
+                    $('#default_datacollect').prop('checked', true);
+                }
+            } else {
+                dataCollectPages.map((val, i) => {
+                    if (val === activePage) {
+                        dataCollectPages.splice(i, 1);
+                    }
+                });
+                if (dataCollectPages.length === 0) {
+                    dataCollect = 0;
+                } else if (dataCollectPages.length !== 0 && dataCollect === parseInt(activePage)){
+                    dataCollect = parseInt(dataCollectPages[0]);
+                }
+                $('#default_datacollect').prop('checked', false);
             }
-            postData('/setting/datacollect/save', { type: 'show', data_collect }, function (result) {
-
+            postData('/setting/datacollect/save', { type: 'show', data_collect_pages: dataCollectPages, data_collect: dataCollect }, function (result) {
+                updateTab();
             })
         });
-        $('#tablist a').click(function () {
-            if ($('#show-datacollect').is(':checked')) {
-                const data_collect = $(this).data('datacollect');
-                postData('/setting/datacollect/save', { type: 'show', data_collect }, function (result) {
 
-                })
+        $('#default_datacollect').change(function () {
+            const activePage = $('#tablist').find('.active').data('datacollect').toString();
+            if ($(this).is(':checked')) {
+                dataCollect = parseInt(activePage);
+                $('#show_datacollect').prop('checked', true);
+                if (_.indexOf(dataCollectPages, activePage) === -1) {
+                    dataCollectPages.push(activePage);
+                    dataCollectPages.sort();
+                }
+            } else {
+                if (dataCollectPages.length === 1) {
+                    dataCollect = 0;
+                    dataCollectPages = [];
+                    $('#show_datacollect').prop('checked', false);
+                } else {
+                    dataCollect = parseInt(dataCollectPages[0]) === dataCollect ? parseInt(dataCollectPages[1]) : parseInt(dataCollectPages[0]);
+                }
+            }
+            updateTab();
+            postData('/setting/datacollect/save', { type: 'show', data_collect_pages: dataCollectPages, data_collect: dataCollect }, function (result) {
+                updateTab();
+            })
+        })
+
+        function updateTab() {
+            for (let i = 1; i <= 4; i++) {
+                let msg = '';
+                if (_.indexOf(dataCollectPages, i.toString()) !== -1) {
+                    msg = '(已开启' + (i=== dataCollect ? '、默认' : '') + ')' ;
+                }
+                $('#tablist a').eq(i-1).text('决策大屏' + transFormToChinese(i) + msg);
+            }
+        }
+        $('#tablist a').click(function () {
+            const page = parseInt($(this).data('datacollect'));
+            if (_.indexOf(dataCollectPages, page.toString()) !== -1) {
+                $('#show_datacollect').prop('checked', true);
+            } else {
+                $('#show_datacollect').prop('checked', false);
+            }
+            if (page === dataCollect) {
+                $('#default_datacollect').prop('checked', true);
+            } else {
+                $('#default_datacollect').prop('checked', false);
             }
         });
     })

+ 8 - 9
sql/update.sql

@@ -1,11 +1,8 @@
-UPDATE `zh_advance_file` SET `filepath` = CONCAT('app/',`filepath`);
-UPDATE `zh_material_file` SET `filepath` = CONCAT('app/',`filepath`);
-ALTER TABLE `zh_material` ADD `material_tax` TINYINT NOT NULL DEFAULT '0' COMMENT '是否已使用材料税,默认为0' AFTER `rate`;
-ALTER TABLE `zh_material` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '材料含税金额' AFTER `material_tax`;
-ALTER TABLE `zh_material` ADD `m_tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期材料含税金额' AFTER `m_tax_tp`;
-ALTER TABLE `zh_material_bills` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '调差金额(材料税)' AFTER `pre_tp`, ADD `tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期调差金额(材料税)' AFTER `m_tax_tp`;
-ALTER TABLE `zh_material_bills` ADD `m_tax` SMALLINT(3) NOT NULL DEFAULT NULL COMMENT '材料税税率' AFTER `is_summary`;
-ALTER TABLE `zh_material_bills_history` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '调差金额(材料税)' AFTER `pre_tp`, ADD `tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期调差金额(材料税)' AFTER `m_tax_tp`;
-ALTER TABLE `zh_material_bills_history` ADD `m_tax` SMALLINT(3) NOT NULL DEFAULT NULL COMMENT '材料税税率' AFTER `is_summary`;
+CREATE TABLE `zh_datacollect_tender`  (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `pid` int(11) NOT NULL,
+  `tid` int(11) NOT NULL COMMENT '不展示的标段id',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT= = '决策大屏标段不选中表';
+
+ALTER TABLE `zh_project` ADD `data_collect_pages` VARCHAR(255) NULL DEFAULT NULL COMMENT '需要展示的大屏字符串,以,分隔' AFTER `data_collect`;

+ 11 - 0
sql/update20211208.sql

@@ -0,0 +1,11 @@
+-- 附件文件地址更新
+UPDATE `zh_advance_file` SET `filepath` = CONCAT('app/',`filepath`);
+UPDATE `zh_material_file` SET `filepath` = CONCAT('app/',`filepath`);
+-- 调差材料税计算
+ALTER TABLE `zh_material` ADD `material_tax` TINYINT NOT NULL DEFAULT '0' COMMENT '是否已使用材料税,默认为0' AFTER `rate`;
+ALTER TABLE `zh_material` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '材料含税金额' AFTER `material_tax`;
+ALTER TABLE `zh_material` ADD `m_tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期材料含税金额' AFTER `m_tax_tp`;
+ALTER TABLE `zh_material_bills` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '调差金额(材料税)' AFTER `pre_tp`, ADD `tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期调差金额(材料税)' AFTER `m_tax_tp`;
+ALTER TABLE `zh_material_bills` ADD `m_tax` SMALLINT(3) NOT NULL DEFAULT NULL COMMENT '材料税税率' AFTER `is_summary`;
+ALTER TABLE `zh_material_bills_history` ADD `m_tax_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '调差金额(材料税)' AFTER `pre_tp`, ADD `tax_pre_tp` DECIMAL(30,8) NULL DEFAULT NULL COMMENT '截止上期调差金额(材料税)' AFTER `m_tax_tp`;
+ALTER TABLE `zh_material_bills_history` ADD `m_tax` SMALLINT(3) NOT NULL DEFAULT NULL COMMENT '材料税税率' AFTER `is_summary`;