Explorar o código

中间计量表 no.2 up

likeku %!s(int64=8) %!d(string=hai) anos
pai
achega
63d3fb7542

+ 2 - 1
global/js/jl.js

@@ -1,6 +1,7 @@
 function autoFlashHeight() {
     var signSide = $(".sign-side").width();
     var viewInfo = $(".view-info").height();
+    var btnBar = $(".btn-bar").height();
     $(".body").height($(window).height());
     $(".mainContainer").height($(window).height() - 51);
     $(".adminContent").height($(window).height() - 117);
@@ -14,7 +15,7 @@ function autoFlashHeight() {
     $(".sign-content").width($(window).width() - signSide - 69);
     $(".sign-content-warp").height($(window).height() - 30);
     $(".sign-content-warp").width($(window).width());
-    $(".signed-list").height($(window).height()-viewInfo-186);
+    $(".signed-list").height($(window).height()-viewInfo-btnBar-140);
 };
 $(window).resize(autoFlashHeight);
 

+ 12 - 3
protected/class/sign.php

@@ -31,7 +31,7 @@ class Signn
     }
 
     public function getDoingSignNumbyUid($uid, $sql = ' 1'){
-        return $this->_sign->count(array('where' => $sql.' and status="checking" and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid=?)', 'param' => array($uid), 'asArray' => TRUE));
+        return $this->_sign->count(array('where' => $sql.' and (status="checking" or status="back") and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid=?)', 'param' => array($uid), 'asArray' => TRUE));
     }
 
     public function getDoneSignNumbyUid($uid, $sql = ' 1'){
@@ -74,11 +74,13 @@ class Signn
         return $this->_signaudit->getOne(array('where' => 'sid=? and audituid=?', 'param' => array($sid,$uid), 'asArray' => TRUE));
     }
 
-    public function updateSignAudit($satid,$status){
+    public function updateSignAudit($satid,$status,$time = 0){
         $this->_signaudit->satid = $satid;
         $this->_signaudit->status = $status;
         if($status == 'checked'){
             $this->_signaudit->intime = time();
+        }else{
+            $this->_signaudit->intime = $time;
         }
         return $this->_signaudit->update();
     }
@@ -111,7 +113,7 @@ class Signn
     }
 
     public function getDoingSignListbyUid($uid,$sql = ' 1', $limit){
-        return $this->_sign->find(array('where' => $sql.' and status="checking" and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid=?)', 'param' => array($uid), 'desc' => 'sid', 'limit' => $limit, 'asArray' => TRUE));
+        return $this->_sign->find(array('where' => $sql.' and (status="checking" or status="back") and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid=?)', 'param' => array($uid), 'desc' => 'sid', 'limit' => $limit, 'asArray' => TRUE));
     }
 
     public function getMySignListbyUid($uid,$sql = ' 1',$limit){
@@ -228,4 +230,11 @@ class Signn
         }
     }
 
+    public function updateSignStatusAndTime($sid,$status,$time = ''){
+        $this->_sign->sid = $sid;
+        $this->_sign->status = $status;
+        $this->_sign->sintime = $time;
+        return $this->_sign->update();
+    }
+
 }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
protected/config/sms.conf.php


+ 77 - 5
protected/controller/SignController.php

@@ -124,7 +124,7 @@ class SignController extends DooController
                                 $needlist[$k]['tlist'][$tk]['plist'][$pk]['phaseno'] = $pv['phaseno'];
                                 $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'] = array();
 
-                                $signlist = $this->sign->getSignList($searchsql.' and status="checking" and tender='.$tv['tender'].' and phaseno='.$pv['phaseno'], '0,1000');
+                                $signlist = $this->sign->getSignList($searchsql.' and (status="checking" or status="back") and tender='.$tv['tender'].' and phaseno='.$pv['phaseno'], '0,1000');
                                 if(!empty($signlist)) {
                                     foreach ($signlist as $sk => $sv) {
                                         $needlist[$k]['tlist'][$tk]['plist'][$pk]['signlist'][$sk]['sid'] = $sv['sid'];
@@ -151,6 +151,73 @@ class SignController extends DooController
             exit('不是当前签署人无法访问本页');
         }
 
+        if(isset($_POST['status'])){
+            //终止签署
+            if($_POST['status'] == 'stop'){
+                $result = $this->sign->updateSignStatusAndTime($this->params['sid'],'stop',time());
+                $signAudit = $this->sign->getOneSignAudit($this->params['sid'],$this->auth->getUid());
+                $result2 = $this->sign->updateSignAudit($signAudit['satid'],'stop',time());
+                if($result && $result2){
+                    // SMS Start
+                    $signArray = $this->sign->getOneSignbysid($this->params['sid']);
+                    $pmname = $this->actmeasure->getRowByPmid($signArray['tender']);
+                    $userProArray = $this->profile->getProWithUid($signArray['audituid']);
+                    if (isset($userProArray) && !empty($userProArray['mobile'])) {
+                        $sendarr1 = '“' .$pmname['pmname'].'”的“'. $signArray["name"] .'”';
+                        $sendarr2 = str_replace('【','',$sendarr1);
+                        $sendmsg = str_replace('】','',$sendarr2);
+                        $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . $sendmsg .Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR6"]);
+                    }
+                    // SMS End
+                    echo json_encode(array('code' => 200, 'url' => '/sign/list'));
+                    exit;
+                }
+                echo json_encode(array('code' => 400, 'msg' => '终止签署失败'));
+                exit;
+            }elseif($_POST['status'] == 'back'){
+                $signauditlist = $this->sign->getSignAuditList($this->params['sid']);
+                $change = -1;
+                foreach($signauditlist as $k => $v){
+                    if($v['status'] == 'checking' && $k != 0) {
+                        $change = $k-1;
+                        break;
+                    }
+                }
+                if($change != -1){
+                    $result = $this->sign->updateSignStatusAndTime($this->params['sid'],'back',time());
+                    $signAudit = $this->sign->getOneSignAudit($this->params['sid'],$this->auth->getUid());
+                    $result3 = $this->sign->updateSignAudit($signAudit['satid'],'uncheck',0);
+                    $result2 = $this->sign->updateSignAudit($signauditlist[$change]['satid'],'checking',0);
+                    if($result && $result2 && $result3){
+                        //删除上一个签名者的所有签名
+                        $signattlist = $this->sign->getSignAttList($this->params['sid']);
+                        foreach($signattlist as $key => $value){
+                            $sign2 = new SignAuditAtt();
+                            $sign2->audituid = $signauditlist[$change]['audituid'];
+                            $sign2->said = $value['said'];
+                            $sign2->delete();
+                        }
+
+                        // SMS Start
+                        $signArray = $this->sign->getOneSignbysid($this->params['sid']);
+                        $pmname = $this->actmeasure->getRowByPmid($signArray['tender']);
+                        $userProArray = $this->profile->getProWithUid($signauditlist[$change]['audituid']);
+                        if (isset($userProArray) && !empty($userProArray['mobile'])) {
+                            $sendarr1 = '“' .$pmname['pmname'].'”的“'. $signArray["name"] .'”';
+                            $sendarr2 = str_replace('【','',$sendarr1);
+                            $sendmsg = str_replace('】','',$sendarr2);
+                            $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . $sendmsg .Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR7"]);
+                        }
+                        // SMS End
+                        echo json_encode(array('code' => 200, 'url' => '/sign/onlist'));
+                        exit;
+                    }
+                }
+                echo json_encode(array('code' => 400, 'msg' => '退回签署失败'));
+                exit;
+            }
+        }
+
         //获取报表信息
         $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
         //获取项目名,标段名,标段期数
@@ -164,12 +231,16 @@ class SignController extends DooController
 
 
         //获取签署人列表
+        $firstsign = 0;
         $signauditlist = $this->sign->getSignAuditList($this->params['sid']);
         if(!empty($signauditlist)){
             foreach($signauditlist as $k => $v){
                 //获取签署人头像
                 $signauditlist[$k]['index'] = $k+1;
                 $signauditlist[$k]['avatar'] = $this->auth->getAvatar($v['audituid']);
+                if($this->auth->getUid() == $v['audituid'] && $k == 0){
+                    $firstsign = 1;
+                }
             }
         }
 
@@ -202,7 +273,7 @@ class SignController extends DooController
         $this->data['maxwidth'] = $maxwidth;
         $this->data['maxheight'] = $maxheight;
         $this->data['style'] = $style;
-
+        $this->data['firstsign'] = $firstsign;
         $this->render('sign-view-signer_sign',$this->data, TRUE);
     }
 
@@ -237,12 +308,12 @@ class SignController extends DooController
                     // SMS Start
                     $signArray = $this->sign->getOneSignbysid($_POST['sid']);
                     $pmname = $this->actmeasure->getRowByPmid($signArray['tender']);
-                    $userProArray = $this->profile->getProWithUid($v);
+                    $userProArray = $this->profile->getProWithUid($v['audituid']);
                     if (isset($userProArray) && !empty($userProArray['mobile'])) {
                         $sendarr1 = '“' .$pmname['pmname'].'”的“'. $signArray["name"] .'”';
                         $sendarr2 = str_replace('【','',$sendarr1);
                         $sendmsg = str_replace('】','',$sendarr2);
-                        $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . '您好,有一份' .$pmname['pmname'].'的'. $signArray["name"] . Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
+                        $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . $sendmsg .Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
                     }
                     // SMS End
                     break;
@@ -253,6 +324,7 @@ class SignController extends DooController
                 echo json_encode(array('code' => 200, 'url' => '/sign/view/'.$_POST['sid'].'?status=done'));
                 exit;
             }else{
+                $this->sign->updateSignStatusAndTime($_POST['sid'],'checking',0);
                 echo json_encode(array('code' => 200, 'url' => '/sign/view/'.$_POST['sid'].'?status=doing'));
                 exit;
             }
@@ -370,7 +442,7 @@ class SignController extends DooController
         $this->data['phaseno'] = '';
 
         //获取项目信息
-        $searchsql = 'status="checking" and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid='.$this->auth->getUid().')';
+        $searchsql = '(status="checking" or status="back") and sid in(select `jl_sign_audit`.sid from `jl_sign_audit` where `jl_sign_audit`.audituid='.$this->auth->getUid().')';
         $itemlist = $this->sign->getSignGroupByProject($searchsql);
         if(!empty($itemlist)){
             foreach($itemlist as $ik => $iv){

+ 1 - 1
protected/controller/UpgradeController.php

@@ -69,7 +69,7 @@ class UpgradeController extends DooController
 //                        error_log(var_dump($_POST, TRUE), 3, '/opt/html/dev/data/sss.txt');
 //        if (in_array($this->params['onoff'], $this->onoff)) {
 //            if ($this->params['onoff'] == 'on') {
-        $this->modelconfig->upgradeinfo = json_encode($_POST['json']);
+        $this->modelconfig->upgradeinfo = $_POST['json'];
         $stronoff = $this->modelconfig->update(array('where' => 'conid=1'));
 //            }
 //        }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
protected/view/s-project-section-intermediate.html


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
protected/view/sign-list-all.html


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 1
protected/view/sign-view-page.html


+ 80 - 14
protected/view/sign-view-signer_sign.html

@@ -49,8 +49,12 @@
                             <!-- endloop -->
                             <!-- endif -->
                         </ul>
-                        <div class="btn-bar">
-                            <a href="javascript:void(0);" onclick="judagedonesign();" class="btn btn-success btn-large btn-block">完成签署</a>
+                    </div>
+                    <div class="btn-bar">
+                        <a href="javascript:void(0);" onclick="judagedonesign();" class="btn btn-success btn-large btn-block">完成签署</a>
+                        <div class="clearfix" style="margin-top:15px">
+                            <!-- if {{firstsign}} == 0 --><a href="#backsign" data-toggle="modal" class="btn btn-warning fL">退回签署</a><!-- endif -->
+                            <a href="#stopsign" data-toggle="modal" class="btn btn-danger<!-- if {{firstsign}} == 1 --> btn-large btn-block<!-- else --> fR<!-- endif -->">终止签署</a>
                         </div>
                     </div>
                 </div>
@@ -62,6 +66,15 @@
                         <!-- loop attlist -->
                         <div class="page" id="pageContainer{{attlist' value.curnum}}" style="background: url('{{rootUrl}}{{attlist' value.filepath}}') no-repeat 0 0;background-size:cover;padding:10px">
                             <img src="{{rootUrl}}{{attlist' value.filepath}}" style="display: none" style="max-width: 100%">
+                            <!-- if !empty({{attlist' value.auditatt}}) -->
+                            <!-- loop attlist' value.auditatt -->
+                            <div class="user-sign" style="z-index:10;{{attlist' auditatt' value.position}}">
+                                <div class="">
+                                    <img src="{{attlist' auditatt' value.picpath}}">
+                                </div>
+                            </div>
+                            <!-- endloop -->
+                            <!-- endif -->
                             <div class="user-sign draggable" data-num="{{attlist' value.sid}}_{{attlist' value.said}}" style="position: absolute;top: 10%;left: 10%;z-index: 999;width: 300px;height: 150px;">
                                 <div class="img-bar">
                                     <a href="javascript:void(0);" onclick="setallqm({{attlist' value.curnum}})" title="批量签名" class="allqm" style="display: none"><span data-icon="v" aria-hidden="true" ></span></a>
@@ -72,15 +85,6 @@
                                     <img src="{{picpath}}">
                                 </div>
                             </div>
-                            <!-- if !empty({{attlist' value.auditatt}}) -->
-                            <!-- loop attlist' value.auditatt -->
-                            <div class="user-sign" style="z-index:10;{{attlist' auditatt' value.position}}">
-                                <div class="">
-                                    <img src="{{attlist' auditatt' value.picpath}}">
-                                </div>
-                            </div>
-                            <!-- endloop -->
-                            <!-- endif -->
                         </div>
                         <!-- endloop -->
                         <!-- endif -->
@@ -95,14 +99,44 @@
 <div id="donesign" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true">
 
     <div class="modal-body">
-        <h4>完成后不可更改,确认完成签署?</h4>
+        <h4>完成后不可更改,由下一位签署人继续签署,确认完成签署?</h4>
     </div>
     <div class="modal-footer">
         <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
-        <button type="button" class="btn btn-success" onclick="donesign();">确认</button>
+        <button type="button" class="btn btn-success" onclick="donesign();">确认完成</button>
+    </div>
+</div>
+<!-- 退回签署人弹出 -->
+<!-- if {{firstsign}} == 0 -->
+<div id="backsign" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h4>退回上一签署人重新签署?</h4>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+                <button type="button" onclick="backsign();" class="btn btn-warning">确认退回</button>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- endif -->
+<!-- 终止签署人弹出 -->
+<div id="stopsign" class="modal hide fade" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-body">
+                <h4>终止该报表签署?</h4>
+                <h4>终止后,如需要重新发起签署,请在软件重新生成新一份签署报表。</h4>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+                <button type="button" onclick="stopsign();" class="btn btn-danger">确认终止</button>
+            </div>
+        </div>
     </div>
 </div>
-<!-- 添加签署人弹出 -->
 <script type="text/javascript">autoFlashHeight();</script>
 <script>
     $( function() {
@@ -310,5 +344,37 @@
             }
         })
     }
+
+    function stopsign() {
+        $.ajax({
+            type:'post',
+            url:'/sign/needview/{{signsid}}',
+            data:{status:'stop'},
+            dataType: 'json',
+            success: function(result){
+                if(result.code == 200){
+                    window.location.href = result.url;
+                }else{
+                    alert(result.msg);
+                }
+            }
+        })
+    }
+
+    function backsign() {
+        $.ajax({
+            type:'post',
+            url:'/sign/needview/{{signsid}}',
+            data:{status:'back'},
+            dataType: 'json',
+            success: function(result){
+                if(result.code == 200){
+                    window.location.href = result.url;
+                }else{
+                    alert(result.msg);
+                }
+            }
+        })
+    }
 </script>
 </body>