瀏覽代碼

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

Tony Kang 1 年之前
父節點
當前提交
9f3099370c

+ 1 - 1
app/controller/change_controller.js

@@ -268,7 +268,7 @@ module.exports = app => {
                         default: break;
                     }
                 }
-                responseData.data = code.join(cConnector !== null && cConnector !== 3 ? codeRuleConst.measure.connectorString[cConnector] : '');
+                responseData.data = code.join(cConnector !== null && parseInt(cConnector) !== 3 ? codeRuleConst.measure.connectorString[cConnector] : '');
             } catch (err) {
                 responseData.err = 1;
                 responseData.msg = err;

File diff suppressed because it is too large
+ 2 - 0
app/public/css/bootstrap/select2-bootstrap4.min.css


File diff suppressed because it is too large
+ 1 - 0
app/public/css/bootstrap/select2.min.css


File diff suppressed because it is too large
+ 2 - 0
app/public/js/bootstrap/select2.min.js


+ 4 - 4
app/public/report/js/rpt_archive.js

@@ -468,7 +468,7 @@ let rptArchiveObj = {
             const width = (srcArea[JV.IDX_RIGHT] - srcArea[JV.IDX_LEFT]);
             const height = (srcArea[JV.IDX_BOTTOM] - srcArea[JV.IDX_TOP]);
             let rst = {
-                Left: srcArea[JV.IDX_LEFT] + offsetX, Top: srcArea[JV.IDX_TOP] + offsetY, width, height, 
+                Left: srcArea[JV.IDX_LEFT] + offsetX, Top: srcArea[JV.IDX_TOP] + offsetY, width, height,
                 PtCenterX: +((srcArea[JV.IDX_LEFT] + offsetX + width / 2) * PDF_SCALE).toFixed(2),
                 PtCenterY: +((ptChkHeight - (srcArea[JV.IDX_TOP] + offsetX + height / 2)) * PDF_SCALE).toFixed(2),
                 PtWidth: +(width * PDF_SCALE).toFixed(2), PtHeight: +(height * PDF_SCALE).toFixed(2),
@@ -670,7 +670,7 @@ let rptArchiveObj = {
         let rst = '-1';
         switch (current_stage_id) {
             case -300: // 变更令
-                rst = encodeURIComponent(CHNAGE_ID);
+                rst = encodeURIComponent(CHANGE_ID);
                 break;
             case -301: // 变更方案
             case -302: // 变更立项
@@ -678,7 +678,7 @@ let rptArchiveObj = {
                 rst = BUSINESS_ID;
                 break;
             default:
-                break;                            
+                break;
         }
         return rst;
     },
@@ -746,7 +746,7 @@ let rptArchiveObj = {
                                 // 这个跟上面的判断属性不同,是orgArea(签章的)
                                 for (let cIdx = pageItem.cells.length - 1; cIdx >= 0; cIdx--) {
                                     const cCell = pageItem.cells[cIdx];
-                                    if (cCell.area.Left === sCell.orgArea.Left && cCell.area.Right === sCell.orgArea.Right && 
+                                    if (cCell.area.Left === sCell.orgArea.Left && cCell.area.Right === sCell.orgArea.Right &&
                                         cCell.area.Top === sCell.orgArea.Top && cCell.area.Bottom === sCell.orgArea.Bottom &&
                                         cCell.Value !== '') {
                                         txtSignCells.push({bkCell: cCell, bkValue: cCell.Value});

+ 15 - 15
app/public/report/js/rpt_main.js

@@ -326,7 +326,7 @@ let zTreeOprObj = {
             params.isTextSignature = getTxtSignature();
             params.custCfg = CUST_CFG;
             params.detail_id = DETAIL_ID;
-            params.change_id = CHNAGE_ID;
+            params.change_id = CHANGE_ID;
             params.business_id = BUSINESS_ID;
             params.change_plan_id = CHNAGE_PLAN_ID;
             params.change_project_id = CHNAGE_PROJECT_ID;
@@ -336,7 +336,7 @@ let zTreeOprObj = {
             params.change_project_times = CHNAGE_PROJECT_TIMES;
             params.change_apply_times = CHNAGE_APPLY_TIMES;
             _getSplitAmendmentParam(params, treeNode);
-        
+
             rptArchiveObj.toggleBtn(false);
             if (customSelects) {
                 const gather_select = customSelects.gather_select.find(function (x) {
@@ -346,7 +346,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(gather_select.custom_define, customSelects.stageFlow, gather_select);
                     return;
                 }
-    
+
                 const stage_select = customSelects.stage_select.find(function (x) {
                     return x.id === treeNode.refId;
                 });
@@ -354,7 +354,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(stage_select.custom_define, customSelects.stageFlow, stage_select);
                     return;
                 }
-    
+
                 const material_sum_select = customSelects.material_sum_select.find(function (x) {
                     return x.id === treeNode.refId;
                 });
@@ -362,7 +362,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(material_sum_select.custom_define, customSelects.stageFlow, material_sum_select);
                     return;
                 }
-                
+
                 const change_select = customSelects.change_select.find(function (x) {
                     return x.id === treeNode.refId;
                 });
@@ -420,7 +420,7 @@ let zTreeOprObj = {
             params.closeWatermark = getCloseWatermark();
             params.isTextSignature = getTxtSignature();
             params.detail_id = DETAIL_ID;
-            params.change_id = CHNAGE_ID;
+            params.change_id = CHANGE_ID;
             params.business_id = BUSINESS_ID;
             params.change_plan_id = CHNAGE_PLAN_ID;
             params.change_project_id = CHNAGE_PROJECT_ID;
@@ -441,7 +441,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(gather_select.custom_define, customSelects.stageFlow, gather_select);
                     return;
                 }
-    
+
                 const stage_select = customSelects.stage_select.find(function (x) {
                     return x.id === me.currentNode.refId;
                 });
@@ -449,7 +449,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(stage_select.custom_define, customSelects.stageFlow, stage_select);
                     return;
                 }
-    
+
                 const material_sum_select = customSelects.material_sum_select.find(function (x) {
                     return x.id === me.currentNode.refId;
                 });
@@ -457,7 +457,7 @@ let zTreeOprObj = {
                     rptCustomObj.init(material_sum_select.custom_define, customSelects.stageFlow, material_sum_select);
                     return;
                 }
-    
+
                 const change_select = customSelects.change_select.find(function (x) {
                     return x.id === me.currentNode.refId;
                 });
@@ -754,7 +754,7 @@ let rptControlObj = {
         rst.closeWatermark = getCloseWatermark();
         rst.isTextSignature = getTxtSignature();
         rst.detail_id = DETAIL_ID;
-        rst.change_id = CHNAGE_ID;
+        rst.change_id = CHANGE_ID;
         rst.business_id = BUSINESS_ID;
         rst.change_plan_id = CHNAGE_PLAN_ID;
         rst.change_project_id = CHNAGE_PROJECT_ID;
@@ -764,7 +764,7 @@ let rptControlObj = {
         rst.change_project_times = CHNAGE_PROJECT_TIMES;
         rst.change_apply_times = CHNAGE_APPLY_TIMES;
 
-    // rst.amendmentType = 
+    // rst.amendmentType =
         return rst;
     },
     getAllInOneBook: async function () {
@@ -940,7 +940,7 @@ let rptControlObj = {
             let roleRel = signatureRelArr[idx];
             ttlRoleAmt += roleRel.length;
             pageDataArr[idx][JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = rpt_names[idx];
-            
+
             // 这里要做些电子签名的signature_name转换,以防重名
             if (roleRel.length > 0) {
                 reAssignSignatureName(pageDataArr[idx], roleRel, rpt_names[idx]);
@@ -958,7 +958,7 @@ let rptControlObj = {
         }
         excelExportUtil.exportExcelInOneBook(pageDataArr, pageSize, TENDER_NAME, rptRoleRelArr, null, getStageStatus() !== 3);
     },
-    
+
     getExcel_New: async function (isOneBook) {
         let me = rptControlObj;
         if (zTreeOprObj.checkedRptTplNodes && zTreeOprObj.checkedRptTplNodes.length > 0 && PAGE_SHOW['closeExportExcel'] !== 1) {
@@ -1087,7 +1087,7 @@ let rptControlObj = {
         // dynamicLoadJs('/public/jspdf/SmartSimsun-normal.js', 'normal', me.getPdfFontCallbackLight);
         // dynamicLoadJs('/public/jspdf/SmartSimsun-normal2.js', 'normal', me.getPdfFontCallbackLight);
         // dynamicLoadJs('/public/jspdf/SmartSimsun-bold.js', 'bold', me.getPdfFontCallbackLight);
-        
+
         // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallbackLight);
         dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal2.js', 'normal', me.getPdfFontCallbackLight);
         dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallbackLight);
@@ -1107,7 +1107,7 @@ let rptControlObj = {
                 // dynamicLoadJs('/public/jspdf/SmartSimsun-normal.js',"normal", me.getPdfFontCallback);
                 // dynamicLoadJs('/public/jspdf/SmartSimsun-normal2.js',"normal", me.getPdfFontCallback);
                 // dynamicLoadJs('/public/jspdf/SmartSimsun-bold.js',"bold", me.getPdfFontCallback);
-                
+
                 // dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal.js', 'normal', me.getPdfFontCallback);
                 dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-normal2.js', 'normal', me.getPdfFontCallback);
                 dynamicLoadJs('https://d2.smartcost.com.cn/cach/SmartSimsun-bold.js', 'bold', me.getPdfFontCallback);

+ 18 - 2
app/schedule/shenpi_again.js

@@ -15,7 +15,7 @@ class ShenpiAgain extends Subscription {
     static get schedule() {
         return {
             interval: '1m',
-            type: 'all',
+            type: 'worker',
         };
     }
 
@@ -38,6 +38,7 @@ class ShenpiAgain extends Subscription {
         const tenderInfoList = await ctx.service.tenderInfo.getAllDataByCondition({ columns: ['id', 'tid', 'deal_info'], where: { tid: tidList } });
         const updateData = [];
         const deleteData = [];
+        const sendData = [];
         for (const i of list) {
             if (i.times > 10) continue;// 发超过10次就不发了吧
             const uinfo = ctx.helper._.find(usersNoticeSetting, { id: i.uid });
@@ -78,16 +79,31 @@ class ShenpiAgain extends Subscription {
                     data: t,
                     info: newTenderInfo,
                 };
-                await ctx.helper.sendWechat(i.uid, i.sms_type, smsTypeConst.judge.approval.toString(), i.template, JSON.parse(i.wx_data), tender, { protocol: i.origin_url.protocol, host: i.origin_url.host });
+                // 可能会重复发送,未知原因
+                // await ctx.helper.sendWechat(i.uid, i.sms_type, smsTypeConst.judge.approval.toString(), i.template, JSON.parse(i.wx_data), tender, { protocol: i.origin_url.protocol, host: i.origin_url.host });
                 updateData.push({
                     id: i.id,
                     times: i.times + 1,
                     last_time: ctx.helper.dateTran(new Date(), 'YYYY-MM-DD HH:mm'),
                 });
+                sendData.push({
+                    uid: i.uid,
+                    sms_type: i.sms_type,
+                    sp_type: smsTypeConst.judge.approval.toString(),
+                    template: i.template,
+                    wx_data: JSON.parse(i.wx_data),
+                    tender,
+                    origin_url: i.origin_url,
+                });
             }
         }
         if (updateData.length > 0) await ctx.service.noticeAgain.defaultUpdateRows(updateData);
         if (deleteData.length > 0) await ctx.service.noticeAgain.deleteById(deleteData);
+        if (sendData.length > 0) {
+            for (const s of sendData) {
+                await ctx.helper.sendWechat(s.uid, s.sms_type, s.sp_type, s.template, s.wx_data, s.tender, { protocol: s.origin_url.protocol, host: s.origin_url.host });
+            }
+        }
     }
 }
 

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

@@ -402,7 +402,7 @@
     const SOURCE_TYPE = <%- source_type %>;
     const ALL_CHANGES = <%- changes %>;
     const BGL_OBJ = <%- bglObj %>;
-    const CHNAGE_ID = BGL_OBJ?.change?.cid || '-1';
+    const CHANGE_ID = BGL_OBJ?.change?.cid || '-1';
     const CHANGE_TIMES = BGL_OBJ?.change?.times || 1;
     const BUSINESS_ID = BGL_OBJ?.BUSINESS_ID || '-1';
     const CHNAGE_PLAN_ID = BGL_OBJ?.change_plan?.id || '-1';

+ 98 - 26
app/view/report/index_archive.ejs

@@ -1,3 +1,6 @@
+<link href="/public/css/bootstrap/select2.min.css" rel="stylesheet" />
+<link rel="stylesheet" href="/public/css/bootstrap/select2-bootstrap4.min.css">
+<script src="/public/js/bootstrap/select2.min.js"></script>
 <% if (stg_id === -1) {%>
 <% include ../tender/tender_sub_menu.ejs %>
 <% } else { %>
@@ -33,10 +36,48 @@
                     </div>
                 </div>
                 <div class="d-inline-block">
-                    <div class="dropdown" id="divSelectableChanges" style="display: none">
-                        <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="btnCurrentChange" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
-                        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton" id="optionSelectableChanges"></div>
+                    <style>
+                        .select2-container {
+                            display: inline-block!important;
+                            height: 27px;
+                        }
+                        .select2-container--bootstrap4 .select2-selection--single {
+                            height: calc(.84em + .75rem + 2px) !important;
+                        }
+                        .select2-container--bootstrap4 .select2-selection {
+                            background-color: #f8f9fa;
+                            /*border-color: #f8f9fa;*/
+                            border: 1px solid #f8f9fa;
+                        }
+                        .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered:focus{
+                            box-shadow: 0 0 0 0.2rem rgba(216,217,219,.5);
+                        }
+                        .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered:hover {
+                            background-color: #e2e6ea;
+                            border-color: #dae0e5;
+                        }
+                        .select2-container--bootstrap4 .select2-selection--single .select2-selection__rendered {
+                            line-height: calc(.84em + .75rem);
+                            color: #007bff!important;
+                            border-radius: 0.2rem;
+                            /*background-color: #f8f9fa;*/
+                            /*border-color: #f8f9fa;*/
+                        }
+                        .select2-container--bootstrap4 .select2-selection--single .select2-selection__arrow b {
+                            border-color: #007bff transparent transparent transparent;
+                            border-width: 4px 3.7px 0;
+                        }
+                        .select2-search--dropdown .select2-search__field {
+                            padding: 0.175rem 0.5rem;
+                        }
+                    </style>
+                    <div id="divSelectableChanges" class="" style="display: none;">
+                        <select id="optionSelectableChanges" class="form-control form-control-sm"></select>
                     </div>
+<!--                    <div class="dropdown" id="divSelectableChanges" style="display: none">-->
+<!--                        <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="btnCurrentChange" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>-->
+<!--                        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton" id="optionSelectableChanges"></div>-->
+<!--                    </div>-->
                 </div>
                 <% if (ctx.session.sessionUser.accountId === ctx.tender.data.user_id) { %>
                 <div class="d-inline-block">
@@ -315,24 +356,42 @@
         }
     }
 
+    // $('#divSelectableChanges').select2();
+
     function buildChangeSelection() {
         if (CHANGE_LIST.length === 0) {
-            $("#optionSelectableChanges")[0].style.display = 'none';
-            $("#btnCurrentChange")[0].innerText = '';
+            $('#optionSelectableChanges').html('');
         } else {
-            $("#optionSelectableChanges")[0].style.display = '';
-            $("#btnCurrentChange")[0].innerText = current_change_code;
-
-            $("#optionSelectableChanges").empty();
-            if (CHANGE_LIST.length > 0) {
-                for (let i = 0; i < CHANGE_LIST.length; i++) {
-                    if (parseInt(CHANGE_LIST[i].status) === 3 && CHANGE_LIST[i].code !== current_change_code) {
-                        const str = '<a class="dropdown-item" style="cursor:pointer" onclick="changeCurrentChange(this)" change_id = "' + CHANGE_LIST[i].id + '" change_code = "' + CHANGE_LIST[i].code + '">' + CHANGE_LIST[i].code + '</a>';
-                        $("#optionSelectableChanges").append(str);
-                    }
-                }
+            let html = '';
+            for (let i = 0; i < CHANGE_LIST.length; i++) {
+                html += '<option value = "' + CHANGE_LIST[i].id + '">'+ CHANGE_LIST[i].code +'</option>';
             }
+            $('#optionSelectableChanges').html(html);
         }
+        $('#optionSelectableChanges').select2({
+            language: 'zh-CN',
+            theme: 'bootstrap4',
+            selectOnClose: true,
+            // width: '150',
+        });
+        $('#optionSelectableChanges').val(current_change_id ? current_change_id : '').trigger("change");
+        // if (CHANGE_LIST.length === 0) {
+        //     $("#optionSelectableChanges")[0].style.display = 'none';
+        //     $("#btnCurrentChange")[0].innerText = '';
+        // } else {
+        //     $("#optionSelectableChanges")[0].style.display = '';
+        //     $("#btnCurrentChange")[0].innerText = current_change_code;
+        //
+        //     $("#optionSelectableChanges").empty();
+        //     if (CHANGE_LIST.length > 0) {
+        //         for (let i = 0; i < CHANGE_LIST.length; i++) {
+        //             if (parseInt(CHANGE_LIST[i].status) === 3 && CHANGE_LIST[i].code !== current_change_code) {
+        //                 const str = '<a class="dropdown-item" style="cursor:pointer" onclick="changeCurrentChange(this)" change_id = "' + CHANGE_LIST[i].id + '" change_code = "' + CHANGE_LIST[i].code + '">' + CHANGE_LIST[i].code + '</a>';
+        //                 $("#optionSelectableChanges").append(str);
+        //             }
+        //         }
+        //     }
+        // }
         // if (CHANGE_ID > 0) {
         //     $("#divSelectableChanges")[0].style.display = 'none';
         // }
@@ -369,12 +428,18 @@
         );
     }
 
-    function changeCurrentChange(ele) {
+    $('body').on('select2:select', '#optionSelectableChanges', function (e) {
+        const change_id = $(this).val();
+        const change_code = e.params.data.text;
+        changeCurrentChange(change_id, change_code);
+    });
+
+    function changeCurrentChange(change_id, change_code) {
         // alert('you are selecting: ' + ele.innerText);
-        current_change_id = ele.attributes.change_id.value;
-        current_change_code = ele.attributes.change_code.value;
-        CHANGE_ID = ele.attributes.change_id.value;
-        BUSINESS_ID = ele.attributes.change_id.value;
+        current_change_id = change_id;
+        current_change_code = change_code;
+        CHANGE_ID = change_id;
+        BUSINESS_ID = change_id;
         buildChangeSelection();
         //还有必要触发归档报表刷新!
         //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
@@ -484,10 +549,16 @@
            if (type === 'stage') {
                $('#divSelectableStages').show();
                $('#divSelectableChanges').hide();
-               current_stage_order = STAGE_LIST[i - 1].order;
-               const info = _.find(STAGE_LIST, { order: current_stage_order });
-               current_stage_id = info ? info.id : STAGE_LIST[i -1].id;
-               current_stage_order = info ? info.order : STAGE_LIST[i - 1].order;
+               // const info = _.find(STAGE_LIST, { order: current_stage_order });
+               for (let i = STAGE_LIST.length; i > 0; i--) {
+                   if (parseInt(STAGE_LIST[i - 1].status) === 3) {
+                       current_stage_order = STAGE_LIST[i - 1].order;
+                       current_stage_id = STAGE_LIST[i - 1].id;
+                       break;
+                   }
+               }
+               // current_stage_id = info ? info.id : STAGE_LIST[i -1].id;
+               // current_stage_order = info ? info.order : STAGE_LIST[i - 1].order;
                // 下列树结构重新加载
                //还有必要触发归档报表刷新!
                //rptArchiveObj.onClick(null, null, rptArchiveObj.currentNode);
@@ -500,6 +571,7 @@
                        ARCHIVE_LIST = result.data;
                        ARCHIVE_ENCRYPTION_LIST = result.encryptionData;
                        TOP_TREE_NODES = JSON.parse(JSON.stringify(ORG_TOP_TREE_NODES));
+                       buildStageSelection();
                        buildTplTree();
                        rptArchiveObj.iniPage();
                    }, function(err){
@@ -531,9 +603,9 @@
                        TOP_TREE_NODES = JSON.parse(JSON.stringify(result.rpt_tpl_data));
                        CHANGE_ID = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].id : -1;
                        BUSINESS_ID = CHANGE_LIST.length > 0 ? CHANGE_LIST[0].id : -1;
+                       buildChangeSelection();
                        buildTplTree();
                        rptArchiveObj.iniPage();
-                       buildChangeSelection();
                        current_stage_id = result.stgId;
                    }, function(err){
                        $.bootstrapLoading.end();

+ 1 - 1
config/config.default.js

@@ -261,7 +261,7 @@ module.exports = appInfo => {
 
     config.url3f = '/3f';
     config.table_depart = {
-        heavy: 1000,
+        heavy: 100,
         light: 10,
     };
     return config;

+ 12 - 2
db_script/depart_table.js

@@ -63,11 +63,21 @@ BaseUtil.saveBufferFile(sqlArr.join('\n'), BaseUtil.getFileName('depart_table_qa
 // zh_revise_bills: 230s(386041条)
 // zh_stage_bills: 90s(80435条)
 // zh_stage_bills_final: 90s(108374条)
-// zh_settle_bills: 40s(360条)
 // zh_pos: 480s(3122249条)
 // zh_pos_extra: 50s(77条)
 // zh_revise_pos: 350s(1173963条)
 // zh_stage_pos: 110s(380576条)
 // zh_stage_pos_final: 130s(658929条)
-// zh_settle_pos: 50s(266条)
+
+// uat执行时间(分表100)
+// zh_ledger: 100s(600219条)
+// zh_ledger_extra: 10s(10386条)
+// zh_revise_bills: 20s(51352条)
+// zh_stage_bills: 10s(33862条)
+// zh_stage_bills_final: 20s(135090条)
+// zh_pos: 180s(2088342条)
+// zh_pos_extra: 10s(102845条)
+// zh_revise_pos: 30s(162054条)
+// zh_stage_pos: 30s(148945条)
+// zh_stage_pos_final: 130s(658929条)