浏览代码

报表选择个人章相关功能

lishihao 2 年之前
父节点
当前提交
4f1275059f
共有 3 个文件被更改,包括 91 次插入9 次删除
  1. 68 8
      app/public/report/js/rpt_signature.js
  2. 2 1
      app/view/report/index.ejs
  3. 21 0
      app/view/report/rpt_all_popup.ejs

+ 68 - 8
app/public/report/js/rpt_signature.js

@@ -137,6 +137,9 @@ let rptSignatureHelper = {
             }
             let roleRel = null;
             if (directAcc) {
+
+              
+
                 rptSignatureHelper.pushDomElementByUser(elementsStrArr, userAcc.name, userAcc.role);
                 // 还有ROLE_REL_LIST
                 let roleRelObj = {};
@@ -150,7 +153,7 @@ let rptSignatureHelper = {
                 roleRelObj.type = '用户';
                 roleRelObj.sign_output = [NORMAL_SIGN_STR]; // 默认是签字(还有:COMPANY_SIGN_STR:单位章, PRIVATE_SIGN_STR:个人章)
                 roleRelObj.company_stamp_path = rptSignatureHelper._getCompanySign(directAcc.company);
-                roleRelObj.private_stamp_path = (userAcc.stamp_path && userAcc.stamp_path !== '') ? userAcc.stamp_path : '';
+                roleRelObj.private_stamp_path = rptSignatureHelper._get_newPrivate_stamp_path(roleRelObj,userAcc);
                 roleRelObj.role = (userAcc.role === '')?DFT_ROLE_NAME:userAcc.role;
                 ROLE_REL_LIST.push(roleRelObj);
                 roleRel = roleRelObj;
@@ -168,7 +171,7 @@ let rptSignatureHelper = {
                 roleRelObj.acc_id = userAcc.id;
                 roleRelObj.sign_output = [NORMAL_SIGN_STR]; // 默认是签字(还有:COMPANY_SIGN_STR:单位章, PRIVATE_SIGN_STR:个人章)
                 roleRelObj.company_stamp_path = rptSignatureHelper._getCompanySign(userAcc.company);
-                roleRelObj.private_stamp_path = (userAcc.stamp_path && userAcc.stamp_path !== '') ? userAcc.stamp_path : null;
+                roleRelObj.private_stamp_path = rptSignatureHelper._get_newPrivate_stamp_path(roleRelObj,userAcc);
                 roleRelObj.type = '角色';
                 roleRelObj.role = (userAcc.role === '')?DFT_ROLE_NAME:userAcc.role;
                 roleRelObj.role_name = roleAcc.name;
@@ -253,7 +256,7 @@ let rptSignatureHelper = {
                             }
                             const userAcc = rptSignatureHelper.getUserAccount(role_rel.acc_id);
                             if (userAcc) {
-                                role_rel.private_stamp_path = (userAcc.stamp_path && userAcc.stamp_path !== '') ? userAcc.stamp_path : '';
+                                role_rel.private_stamp_path = rptSignatureHelper._get_newPrivate_stamp_path(role_rel,userAcc);
                                 role_rel.company_stamp_path = rptSignatureHelper._getCompanySign(userAcc.company);
                             }
                     
@@ -280,7 +283,8 @@ let rptSignatureHelper = {
             }
         }
     },
-    checkAndShowCrossTendersESignature: function () {
+    checkAndShowCrossTendersESignature: function (fujianOssPath) {
+        rptSignatureHelper.fujianOssPath=fujianOssPath;
         let btnDom = $('#btn_cross_tender')[0];
         if (zTreeOprObj.currentNode) {
             if (btnDom) btnDom.style.display = '';
@@ -312,7 +316,7 @@ let rptSignatureHelper = {
         const companySignChkStr = (role_rel.sign_output.indexOf(COMPANY_SIGN_STR) >= 0) ? 'checked' : '';
         const privateSignChkStr = (role_rel.sign_output.indexOf(PRIVATE_SIGN_STR) >= 0) ? 'checked' : '';
         // 1. 签章类型:签字 单位章 个人章....
-        elementsStrArr.push('<div class="col-6">');
+        elementsStrArr.push('<div class="col-8">');
         elementsStrArr.push('   <div class="form-control form-control-sm d-inline pt-2">');
         elementsStrArr.push('       <div class="form-check form-check-inline px-2">');
         elementsStrArr.push(`           <input class="form-check-input" type="checkbox" id="${idSuffixStr}_sign1" value="option1" ${normalSignChkStr} onchange="rptSignatureHelper._changeSignType(this, '${role_rel.signature_name}', '${NORMAL_SIGN_STR}')" >`);
@@ -322,6 +326,9 @@ let rptSignatureHelper = {
         // let chkType = hasIndividualStamp ? `radio` : 'checkbox';
         const chkType = 'checkbox';
         let rdoNameStr = `dtp_${role_rel.signature_name}_${rptSignatureHelper.currentSelectedESignParentDivId}`;
+        // 个人章列表
+        const stampPathList=userAcc.stamp_path?userAcc.stamp_path.split('!;!'):[];
+
         if (hasIndividualStamp) {
             elementsStrArr.push('       <div class="form-check form-check-inline mx-1">');
             elementsStrArr.push('           <div class="form-group">');
@@ -330,8 +337,11 @@ let rptSignatureHelper = {
             elementsStrArr.push(`                   <label class="form-check-label" for="${idSuffixStr}_sign2">单位章</label>`);
             elementsStrArr.push('               </div>');
             elementsStrArr.push('               <div class="form-check form-check-inline">');
-            elementsStrArr.push(`                   <input class="form-check-input" type="${chkType}" id="${idSuffixStr}_sign3" value="individualStamp" name="${rdoNameStr}" onchange="rptSignatureHelper._changeSignType(this, '${role_rel.signature_name}', '${PRIVATE_SIGN_STR}')" ${privateSignChkStr}>`);
+            elementsStrArr.push(`                   <input class="form-check-input" type="${chkType}" id="${idSuffixStr}_sign3" value="individualStamp" name="${rdoNameStr}" onchange="rptSignatureHelper._changeSignType(this, '${role_rel.signature_name}', '${PRIVATE_SIGN_STR}','${userAcc.stamp_path}')" ${privateSignChkStr}>`);
             elementsStrArr.push(`                   <label class="form-check-label" for="${idSuffixStr}_sign3">个人章</label>`);
+            if(stampPathList.length>1){
+            elementsStrArr.push(`                   <a class="pl-2" href="#chose-private-stamp-path" data-toggle="modal" data-target="#chose-private-stamp-path" onclick="rptSignatureHelper.currentSelectedESignAccDom = this.parentNode;rptSignatureHelper.initChosePrivateStampPath('${userAcc.stamp_path}','${role_rel.signature_name}') ">选择个人章</a>`);
+            } 
             elementsStrArr.push('               </div>');
             elementsStrArr.push('           </div>');
             elementsStrArr.push('       </div>');
@@ -344,7 +354,7 @@ let rptSignatureHelper = {
         elementsStrArr.push('   </div>');
         elementsStrArr.push('</div>');
         // 2. 日期
-        elementsStrArr.push('<div class="col-6">');
+        elementsStrArr.push('<div class="col-4">');
         let dftDate = '';
         if (role_rel.sign_date !== '' && role_rel.sign_date.length > 20) {
             dftDate = (new Date(role_rel.sign_date)).Format('yyyy-MM-dd');
@@ -861,13 +871,17 @@ let rptSignatureHelper = {
             }
         }
     },
-    _changeSignType: function(dom, signature_name, chkStr) {
+    _changeSignType: function(dom, signature_name, chkStr, userStamp) {
         for (const roleRel of ROLE_REL_LIST) {
             if (roleRel.signature_name === signature_name) {
                 if (dom.checked) {
                     if (roleRel.sign_output.indexOf(chkStr) < 0) {
                         roleRel.sign_output.push(chkStr);
                     }
+                    if(chkStr==='private_stamp'&&!roleRel.private_stamp_path && userStamp){
+                        roleRel.private_stamp_path = userStamp.split('!;!')[0] ;
+                        console.log(roleRel.private_stamp_path);
+                    }
                 } else {
                     let idx = roleRel.sign_output.indexOf(chkStr);
                     if (idx >= 0) {
@@ -908,6 +922,50 @@ let rptSignatureHelper = {
         targetCell.area.Right = pLeft + STD_STAMP_SIZE_WIDTH;
         targetCell.area.Bottom = pTop + STD_STAMP_SIZE_HEIGHT;
     },
+    initChosePrivateStampPath:function(stampPathList,signature_name){
+        let currentStamp='';
+        const targetNode= ROLE_REL_LIST.find(item=>item.signature_name===signature_name);
+        if(targetNode) currentStamp=targetNode.private_stamp_path
+        let content=''
+        stampPathList.split('!;!').forEach(item=>{
+            content+=`<div class="card col-3 p-2 m-3 d-inline-block ${currentStamp===item?'card-gk-active':''} stampImg">
+                        <div class="card-body p-0">
+                            <div class="sel-width pull-right ${currentStamp===item?'sel-blue':''} "></div>
+                            <a href="#" class="thumbnail">
+                                <img src="${rptSignatureHelper.fujianOssPath}${item}" data-src='${item}' class="img-fluid" alt="...">
+                            </a>
+                            </div>
+                        </div>`;
+        })
+        content+=`<div class='privateStampRoleName' data-name='${signature_name}'></div>`;
+
+        $('#chose-private-stamp-path .modal-body').empty().append(content);
+        $('.stampImg').on('click',(e)=>{
+            $('.stampImg').removeClass('card-gk-active');
+            $('.stampImg').find('.pull-right').removeClass('sel-blue');
+            $(e.currentTarget).addClass('card-gk-active');
+            $(e.currentTarget).find('.pull-right').addClass('sel-blue');
+        })
+    },
+    setPrivateStamp(e){
+        const imgSrc= $('.stampImg.card-gk-active').find('.img-fluid').data('src');
+        const privateStampRoleName=$('.privateStampRoleName').data('name');
+        const targetNode= ROLE_REL_LIST.find(item=>item.signature_name==privateStampRoleName);
+        targetNode.private_stamp_path=imgSrc;
+        $('#chose-private-stamp-path').modal('hide');
+    },
+    _get_newPrivate_stamp_path(roleRelObj,userAcc){
+        if(!roleRelObj.private_stamp_path){
+            if(!userAcc.stamp_path) return '';
+            if(userAcc.stamp_path.split('!;!').length===1){
+                return userAcc.stamp_path;
+            }else{
+                return userAcc.stamp_path.split('!;!')[0];
+            }
+        }
+        return roleRelObj.private_stamp_path;
+
+    }
 }
 
 function _getSignDateByAllScenarios(userAccId) {
@@ -1176,3 +1234,5 @@ function getHttpBlobText(url) {
         xhr.send();
     });
 }
+
+

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

@@ -165,7 +165,7 @@
                             <% if (!pageShow.openNetCaSign) { %>
                             <div class="panel" id="pnl_eSignature">
                                 <div class="panel-body">
-                                    <button class="btn btn-outline-primary btn-sm" type="button" data-toggle="modal" data-target="#eSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'eSignatureBodyDiv'); rptSignatureHelper.checkAndShowCrossTendersESignature();">
+                                    <button class="btn btn-outline-primary btn-sm" type="button" data-toggle="modal" data-target="#eSignature" onclick="rptSignatureHelper.resetESignature(zTreeOprObj.currentRptPageRst, 'eSignatureBodyDiv'); rptSignatureHelper.checkAndShowCrossTendersESignature(fujianOssPath);">
                                         <i class="fa fa-pencil"></i><br>
                                         签字
                                     </button>
@@ -400,6 +400,7 @@
     const CONSTRUCT_UNIT_LIST = <%- unitList %>;
     const ROLE_LIST = <%- role_list %>;
     const CUST_NAME = '<%- ctx.session.sessionUser.name %>';
+    const fujianOssPath = '<%- ctx.app.config.fujianOssPath %>';
     const PRE_PAY = <%- prePay %>;
     if (localStorage[CUST_NAME + '_custCfg']) {
         CUST_CFG = JSON.parse(localStorage[CUST_NAME + '_custCfg']);

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

@@ -314,6 +314,27 @@
         </div>
     </div>
 </div>
+<!--选择个人章-->
+<div class="modal fade" id="chose-private-stamp-path" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="audit-select-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>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">关闭</button>
+                <button id="audit-select-ok" class="btn btn-primary btn-sm" onclick="rptSignatureHelper.setPrivateStamp(this)">确定</button>
+            </div>
+        </div>
+    </div>
+</div>
+
 <!--选择审批人-->
 <div class="modal fade" id="audit-select" data-backdrop="static">
     <div class="modal-dialog" role="document">