Ver código fonte

Merge branch 'master' of http://smartcost.in.8866.org:26903/maixinrong/calculation

maixinrong 5 anos atrás
pai
commit
5e7c9a1650

+ 3 - 2
app/controller/report_controller.js

@@ -556,8 +556,9 @@ async function getMultiRptsCommon(ctx, params, outputType, baseDir) {
             Object.assign(backupData[filterTables[filterIdx]], rawDataObj[filterTables[filterIdx]]);
         }
         // 2. 一个一个模板创建数据
-        let defProperties = await ctx.service.rptPreDefineCfg.getCfgById('Administrator');
-        defProperties = JSON.parse(defProperties[0].defined_content);
+        // let defProperties = await ctx.service.rptPreDefineCfg.getCfgById('Administrator');
+        // defProperties = JSON.parse(defProperties[0].defined_content);
+        const defProperties = RPT_DEF_PROPERTIES;
         for (let tplIdx = 0; tplIdx < rptTpls.length; tplIdx++) {
             const rptTpl = (rptTpls[tplIdx]._doc) ? rptTpls[tplIdx]._doc : rptTpls[tplIdx];
             rptDataUtil.initialize(rptTpl);

+ 36 - 7
app/public/js/tender_list.js

@@ -438,28 +438,57 @@ $(document).ready(() => {
             const node = findTenderTreeNode(parseInt(cid), tenderTree);
             doTrStatus(returnItem, 'show');
         }
+    });
+    
+    // 一键展开和收起
+    $('body').on('click', '.tree-toggle', function () {
+        const item = $(this).attr('data-item');
+        for (const tree of tenderTree) {
+            if (tree && tree.sort_id !== undefined) {
+                const cid = tree.sort_id;
+                const node = findTenderTreeNode(parseInt(cid), tenderTree);
+                console.log(node);
+                console.log(returnItem);
+                if (item === 'open') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '收起');
+                    doTrStatus(returnItem, 'show', 'all');
+                } else if (item === 'hide') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '展开');
+                    doTrStatus(returnItem, 'hide', 'all')
+                }
+            }
+        }
     })
 });
 
-function doTrStatus(node, status) {
+function doTrStatus(node, status, all = '') {
     if (status === 'show') {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').show();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        }
     } else {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').hide();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
-
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
+        }
     }
     // 判断是否还有一层
-    if (node.children) {
+    if (node.children && all === '') {
         for (const [index,c] of node.children.entries()) {
             const title = $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').eq(index).attr('title');
             if (title === '收起') {
                 doTrStatus(c, status);
             }
         }
+    } else if (node.children && all === 'all') {
+        for (const c of node.children) {
+            doTrStatus(c, status, 'all');
+        }
     }
 }
 let returnItem;

+ 36 - 7
app/public/js/tender_list_info.js

@@ -470,28 +470,57 @@ $(document).ready(() => {
             const node = findTenderTreeNode(parseInt(cid), tenderTree);
             doTrStatus(returnItem, 'show');
         }
+    });
+
+    // 一键展开和收起
+    $('body').on('click', '.tree-toggle', function () {
+        const item = $(this).attr('data-item');
+        for (const tree of tenderTree) {
+            if (tree && tree.sort_id !== undefined) {
+                const cid = tree.sort_id;
+                const node = findTenderTreeNode(parseInt(cid), tenderTree);
+                console.log(node);
+                console.log(returnItem);
+                if (item === 'open') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '收起');
+                    doTrStatus(returnItem, 'show', 'all');
+                } else if (item === 'hide') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '展开');
+                    doTrStatus(returnItem, 'hide', 'all')
+                }
+            }
+        }
     })
 });
 
-function doTrStatus(node, status) {
+function doTrStatus(node, status, all = '') {
     if (status === 'show') {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').show();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        }
     } else {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').hide();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
-
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
+        }
     }
     // 判断是否还有一层
-    if (node.children) {
+    if (node.children && all === '') {
         for (const [index,c] of node.children.entries()) {
             const title = $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').eq(index).attr('title');
             if (title === '收起') {
                 doTrStatus(c, status);
             }
         }
+    } else if (node.children && all === 'all') {
+        for (const c of node.children) {
+            doTrStatus(c, status, 'all');
+        }
     }
 }
 let returnItem;

+ 36 - 7
app/public/js/tender_list_manage.js

@@ -532,28 +532,57 @@ $(document).ready(() => {
             const node = findTenderTreeNode(parseInt(cid), tenderTree);
             doTrStatus(returnItem, 'show');
         }
+    });
+
+    // 一键展开和收起
+    $('body').on('click', '.tree-toggle', function () {
+        const item = $(this).attr('data-item');
+        for (const tree of tenderTree) {
+            if (tree && tree.sort_id !== undefined) {
+                const cid = tree.sort_id;
+                const node = findTenderTreeNode(parseInt(cid), tenderTree);
+                console.log(node);
+                console.log(returnItem);
+                if (item === 'open') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '收起');
+                    doTrStatus(returnItem, 'show', 'all');
+                } else if (item === 'hide') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '展开');
+                    doTrStatus(returnItem, 'hide', 'all')
+                }
+            }
+        }
     })
 });
 
-function doTrStatus(node, status) {
+function doTrStatus(node, status, all = '') {
     if (status === 'show') {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').show();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        }
     } else {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').hide();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
-
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
+        }
     }
     // 判断是否还有一层
-    if (node.children) {
+    if (node.children && all === '') {
         for (const [index,c] of node.children.entries()) {
             const title = $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').eq(index).attr('title');
             if (title === '收起') {
                 doTrStatus(c, status);
             }
         }
+    } else if (node.children && all === 'all') {
+        for (const c of node.children) {
+            doTrStatus(c, status, 'all');
+        }
     }
 }
 let returnItem;

+ 36 - 7
app/public/js/tender_list_progress.js

@@ -446,28 +446,57 @@ $(document).ready(() => {
             const node = findTenderTreeNode(parseInt(cid), tenderTree);
             doTrStatus(returnItem, 'show');
         }
+    });
+
+    // 一键展开和收起
+    $('body').on('click', '.tree-toggle', function () {
+        const item = $(this).attr('data-item');
+        for (const tree of tenderTree) {
+            if (tree && tree.sort_id !== undefined) {
+                const cid = tree.sort_id;
+                const node = findTenderTreeNode(parseInt(cid), tenderTree);
+                console.log(node);
+                console.log(returnItem);
+                if (item === 'open') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-plus-square-o').addClass('fa-minus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '收起');
+                    doTrStatus(returnItem, 'show', 'all');
+                } else if (item === 'hide') {
+                    $('.c-body tr td span[cid="' + cid + '"]').children('i').removeClass('fa-minus-square-o').addClass('fa-plus-square-o');
+                    $('.c-body tr td span[cid="' + cid + '"]').attr('title', '展开');
+                    doTrStatus(returnItem, 'hide', 'all')
+                }
+            }
+        }
     })
 });
 
-function doTrStatus(node, status) {
+function doTrStatus(node, status, all = '') {
     if (status === 'show') {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').show();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '收起');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-plus-square-o').removeClass('fa-minus-square-o').addClass('fa-minus-square-o');
+        }
     } else {
         $('.c-body').find('tr[pid="'+ node.sort_id +'"]').hide();
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
-        // $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
-
+        if (all === 'all') {
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').attr('title', '展开');
+            $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch i').removeClass('fa-minus-square-o').removeClass('fa-plus-square-o').addClass('fa-plus-square-o');
+        }
     }
     // 判断是否还有一层
-    if (node.children) {
+    if (node.children && all === '') {
         for (const [index,c] of node.children.entries()) {
             const title = $('.c-body').find('tr[pid="'+ node.sort_id +'"] .fold-switch').eq(index).attr('title');
             if (title === '收起') {
                 doTrStatus(c, status);
             }
         }
+    } else if (node.children && all === 'all') {
+        for (const c of node.children) {
+            doTrStatus(c, status, 'all');
+        }
     }
 }
 let returnItem;

+ 11 - 7
app/public/report/js/rpt_signature.js

@@ -146,9 +146,11 @@ let rptSignatureHelper = {
         for (const page of pageRst.items) {
             if (page.signature_cells) {
                 for (const sCell of page.signature_cells) {
-                    if (singatureNameArr.indexOf(sCell.signature_name) < 0) {
-                        signature_cells.push(sCell);
-                        singatureNameArr.push(sCell.signature_name);
+                    if (sCell.signature_name !== null && sCell.signature_name !== undefined && sCell.signature_name !== 'dummy_pic') {
+                        if (singatureNameArr.indexOf(sCell.signature_name) < 0) {
+                            signature_cells.push(sCell);
+                            singatureNameArr.push(sCell.signature_name);
+                        }
                     }
                 }
             }
@@ -178,11 +180,13 @@ let rptSignatureHelper = {
                         elementsStrArr.push('<div class="">');
                         if (role_rel.sign_date !== '') {
                             const dt = new Date(role_rel.sign_date);
-                            const dtVal = dt.Format('yyyy-M-dd');
+                            const dtVal = dt.Format('yyyy-MM-dd');
                             //elementsStrArr.push('<input class="datepicker-here form-control form-control-sm mt-0" placeholder="选择签名日期" data-language="zh" type="text" value="' + (new Date(role_rel.sign_date)).Format('yyyy-M-d') + '">');
-                            elementsStrArr.push('<input id="' + idSuffixStr + '" class="datepicker-here form-control form-control-sm mt-0" placeholder="选择签名日期" data-language="zh" type="text" readonly="true" value="' + dtVal + '"');
+                            // elementsStrArr.push('<input id="' + idSuffixStr + '" class="datepicker-here form-control form-control-sm mt-0" placeholder="选择签名日期" data-language="zh" type="text" readonly="true" value="' + dtVal + '"');
+                            elementsStrArr.push('<input id="' + idSuffixStr + '" class="form-control form-control-sm mt-0" placeholder="选择签名日期" type="date" value="' + dtVal + '"');
                         } else {
-                            elementsStrArr.push('<input id="' + idSuffixStr + '" class="datepicker-here form-control form-control-sm mt-0" placeholder="选择签名日期" data-language="zh" type="text" readonly="true"');
+                            // elementsStrArr.push('<input id="' + idSuffixStr + '" class="datepicker-here form-control form-control-sm mt-0" placeholder="选择签名日期" data-language="zh" type="text" readonly="true"');
+                            elementsStrArr.push('<input id="' + idSuffixStr + '" class="form-control form-control-sm mt-0" placeholder="选择签名日期" type="date"');
                         }
                         elementsStrArr.push('</div>');
 
@@ -493,4 +497,4 @@ let rptSignatureHelper = {
 
 function _getSignDateDftName() {
     return '    年  月  日';
-}
+}

+ 4 - 1
app/view/dashboard/index.ejs

@@ -1,10 +1,13 @@
 <div class="panel-content">
     <div class="panel-title fluid">
-        <div class="title-main"><h2><%= ctx.session.sessionProject.name %> 待办事项</h2></div>
+        <div class="title-main"><h2>待办事项</h2></div>
     </div>
     <div class="content-wrap">
         <div class="sjs-height-0">
             <div class="row m-4">
+                <div class="col-12">
+                    <h3 class="mb-2"><%= ctx.session.sessionProject.name %></h3>
+                </div>
                 <% if (!authMobile) { %>
                 <div class="col-12">
                     <div class="alert alert-danger" role="alert">

+ 6 - 1
app/view/tender/manage_modal.ejs

@@ -11,7 +11,12 @@
                     <input class="form-control form-control-sm"  placeholder="输入标段名称" type="text" name="name">
                 </div>
                 <div class="form-group">
-                    <label ><b class="text-danger">*</b>计价规范</label>
+                    <style>
+                        .tooltip-inner {
+                            max-width: initial;
+                        }
+                    </style>
+                    <label ><b class="text-danger">*</b>计价标准<a style="" href="javascript:void(0)" data-toggle="tooltip" data-placement="right" title="" data-original-title="用于初始化新建模板、项目节、标准清单" class="ml-2"><i class="fa fa-info-circle"></i></a></label>
                     <div>
                         <% for (const v of valuations) { %>
                             <div class="form-check form-check-inline mt-2">

+ 6 - 1
app/view/tender/modal.ejs

@@ -11,7 +11,12 @@
                     <input class="form-control form-control-sm"  placeholder="输入标段名称" type="text" name="name">
                 </div>
                 <div class="form-group">
-                    <label ><b class="text-danger">*</b>计价规范</label>
+                    <style>
+                        .tooltip-inner {
+                            max-width: initial;
+                        }
+                    </style>
+                    <label ><b class="text-danger">*</b>计价标准<a style="" href="javascript:void(0)" data-toggle="tooltip" data-placement="right" title="" data-original-title="用于初始化新建模板、项目节、标准清单" class="ml-2"><i class="fa fa-info-circle"></i></a></label>
                     <div>
                         <% for (const v of valuations) { %>
                         <div class="form-check form-check-inline mt-2">

+ 5 - 0
app/view/tender/sub_menu.ejs

@@ -3,6 +3,11 @@
         <div>
             <div class="d-inline-block mr-2">
                 <button href="#cate-set" class="btn btn-sm btn-light" data-toggle="modal" data-target="#cate-set"><i class="fa fa-sitemap fa-rotate-270"></i> 分类</button>
+                <button type="button" class="btn btn-sm btn-light dropdown-toggle" data-toggle="dropdown">展开/收起</button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item tree-toggle" href="javascript:void(0);" data-item="open">展开所有</a>
+                    <a class="dropdown-item tree-toggle" href="javascript:void(0);" data-item="hide">收起所有</a>
+                </div>
             </div>
             <div class="d-inline-block">
                 <div class="btn-group btn-group-toggle" data-toggle="buttons">