Ver código fonte

内容更改上传1

likeku 8 anos atrás
pai
commit
e0be50ff3d

+ 26 - 3
protected/class/sign.php

@@ -27,7 +27,7 @@ class Signn
     }
 
     public function getUnSignNum($sql,$uid){
-        return $this->_sign->count(array('where' => $sql.' and status="uncheck" AND (`ownuid`='.$uid.' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$uid.' GROUP BY auditoruid) OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$uid.'))', 'asArray' => TRUE));
+        return $this->_sign->count(array('where' => $sql.' and status="uncheck" AND (`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$uid.' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$uid.' GROUP BY auditoruid) OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$uid.'))', 'asArray' => TRUE));
     }
 
     public function getDoingSignNumbyUid($uid, $sql = ' 1'){
@@ -125,14 +125,14 @@ class Signn
     }
 
     public function getUnSignList($sql, $uid, $limit){
-        return $this->_sign->find(array('where' => $sql.' and status="uncheck" AND (`ownuid`='.$uid.' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$uid.' GROUP BY auditoruid) OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$uid.'))', 'desc' => 'sid', 'limit' => $limit, 'asArray' => TRUE));
+        return $this->_sign->find(array('where' => $sql.' and status="uncheck" AND (`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$uid.' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$uid.' GROUP BY auditoruid) OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$uid.'))', 'desc' => 'sid', 'limit' => $limit, 'asArray' => TRUE));
     }
 
     public function getSignList($sql, $limit){
         return $this->_sign->find(array('where' => $sql, 'desc' => 'sid', 'limit' => $limit, 'asArray' => TRUE));
     }
 
-    public function insertSign($pid, $tid, $phaseno, $name, $ownuid,$intime,$widhei){
+    public function insertSign($pid, $tid, $phaseno, $name, $ownuid,$intime,$widhei,$isinter = 0, $internum = 0){
         $this->_sign->project = $pid;
         $this->_sign->tender = $tid;
         $this->_sign->phaseno = $phaseno;
@@ -140,6 +140,8 @@ class Signn
         $this->_sign->ownuid = $ownuid;
         $this->_sign->intime = $intime;
         $this->_sign->widhei = $widhei;
+        $this->_sign->isinter = $isinter;
+        $this->_sign->internum = $internum;
         return $this->_sign->insert();
     }
 
@@ -205,4 +207,25 @@ class Signn
         $this->_signatt->delete();
     }
 
+    public function updateInterMediateStatus($sid,$status){
+        $this->_sign->sid= $sid;
+        $this->_sign->isinter = $status;
+        return $this->_sign->update();
+    }
+
+    public function getOneSignAtt($sid,$num){
+        return  $this->_signatt->getOne(array('where' => 'sid=? and curnum=?', 'param' => array($sid,$num), 'asArray' => TRUE));
+    }
+
+    public function updateSignAtt($sid,$curnum,$path){
+        $signattmsg = $this->_signatt->getOne(array('where' => 'sid=? and curnum=?', 'param' => array($sid,$curnum), 'asArray' => TRUE));
+        if(!empty($signattmsg)){
+            $this->_signatt->said = $signattmsg['said'];
+            $this->_signatt->filepath = $path;
+            return $this->_signatt->update();
+        }else{
+            return false;
+        }
+    }
+
 }

+ 35 - 0
protected/config/routes.conf.php

@@ -341,4 +341,39 @@ $route['*']['/api/client/tender/concernaudit/del'] = array('ClientController', '
  * 软件生成报表开关
  */
 $route['*']['/api/client/sign/switch'] = array('ClientController', 'signSwitch');
+
+/**
+ * 创建中间计量表
+ */
+$route['*']['/api/client/intermediate/create'] = array('ClientController', 'getInterMediateCreate');
+/*
+ * 上传中间计量表图片,一张一张传
+ */
+$route['*']['/api/client/intermediate/upload'] = array('ClientController', 'getInterMediateUpload');
+/**
+ * 获取报表列表
+ */
+$route['*']['/api/client/intermediate/list'] = array('ClientController', 'getInterMediateList');
+
+/*
+ * 获取签名
+ */
+$route['*']['/api/app/sign/catch'] = array('AppController', 'getSignPic');
+/*
+ * 上传签名照
+ */
+$route['*']['/api/app/sign/upload'] = array('AppController', 'uploadSignPic');
+
+// S 中间计量表
+$route['*']['/sproject/:pid/section/:pmid/intermediate'] = array('SProjectController', 'proSectionInterMediate');
+$route['*']['/sproject/:pid/section/:pmid/intermediate/page/:pindex'] = array('SProjectController', 'proSectionInterMediate');
+$route['*']['/sproject/:pid/section/:pmid/phaseno/:mpid/intermediate'] = array('SProjectController', 'proSectionInterMediate');
+$route['*']['/sproject/:pid/section/:pmid/phaseno/:mpid/intermediate/page/:pindex'] = array('SProjectController', 'proSectionInterMediate');
+$route['*']['/sproject/make/intermediate/:sid'] = array('SProjectController', 'interMediateMake');
+$route['*']['/sproject/make/intermediate/:sid/page/:page'] = array('SProjectController', 'interMediateMake');
+$route['*']['/sproject/upload/intermediate/:sid'] = array('SProjectController', 'interMediateUpload');
+/**
+ * 中间计量表添加草图功能开关
+ */
+$route['*']['/api/client/intermediate/switch'] = array('ClientController', 'interMediateSwitch');
 ?>

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 1
protected/config/sms.conf.php


+ 1 - 1
protected/config/ver.conf.php

@@ -1,5 +1,5 @@
 <?php
 
 // Version
-$config['ver'] = 'v1.8.3';
+$config['ver'] = 'v1.8.4';
 

+ 59 - 0
protected/controller/AppController.php

@@ -400,6 +400,49 @@ class AppController extends DooController {
         }
     }
 
+    public function getSignPic(){
+        if(isset($_POST['uid']) && is_numeric($_POST['uid'])){
+            $userArray = $this->profile->getProWithUid($_POST['uid']);
+            if(!empty($userArray)){
+                $signPic = $userArray['signpath'];
+                $status = array('status' => TRUE, 'msg' => '', 'signpic' => Doo::conf()->APP_URL . $signPic);
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+        }
+        $status = array('status' => FALSE, 'msg' => '参数有误');
+        echo json_encode($status, JSON_UNESCAPED_UNICODE);
+        die();
+    }
+
+    public function uploadSignPic(){
+        if(isset($_POST['uid']) && is_numeric($_POST['uid']) && isset($_POST['signbase64'])){
+            $userArray = $this->profile->getProWithUid($_POST['uid']);
+            if(!empty($userArray)){
+                $img = base64_decode($_POST['signbase64']);
+                $dir = 'global/signpath';
+                $fileName = date("YmdHis") . '_' . floor(microtime() * 1000) . '_' . self::createRandomCode(8);
+                $virtualPath = "$dir/php_sign_$fileName.jpg";
+                $a = file_put_contents(Doo::conf()->SITE_PATH .$virtualPath,$img);
+//                move_uploaded_file($_FILES['sign']["tmp_name"], Doo::conf()->SITE_PATH .$virtualPath);
+                if($a){
+                    $this->profile->setSignPath($this->params['uid'], $virtualPath);
+                    $status = array('status' => TRUE, 'msg' => '');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }else{
+                    $status = array('status' => FALSE, 'msg' => '上传签名照失败');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }
+
+            }
+        }
+        $status = array('status' => FALSE, 'msg' => '参数有误');
+        echo json_encode($status, JSON_UNESCAPED_UNICODE);
+        die();
+    }
+
 //二维数组去掉重复值 并保留键值
     function array_unique_fb($array2D)
     {
@@ -580,6 +623,22 @@ class AppController extends DooController {
         }
     }
 
+    /*     * ************************************************************
+     *  生成指定长度的随机码。
+     *  @param int $length 随机码的长度。
+     *  @access public
+     * ************************************************************ */
+
+    function createRandomCode($length)
+    {
+        $randomCode = "";
+        $randomChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+        for ($i = 0; $i < $length; $i++) {
+            $randomCode .= $randomChars{mt_rand(0, 35)};
+        }
+        return $randomCode;
+    }
+
 //    function checkVersion($version)
 //    {
 //        preg_match();

+ 132 - 4
protected/controller/ClientController.php

@@ -1588,10 +1588,20 @@ class ClientController extends DooController
         }
         $signlist = $this->sign->getSignListbyClient($wheresql);
         if(!empty($signlist)){
-//            foreach($signlist as $k => $v){
-//                $signlist[$k]['pdfpath'] = 'signs/'.$v['sid'].'/'.$v['intime'].'.pdf';
-//            }
-            echo json_encode(array('status' => TRUE, 'msg' => '', 'info' => $signlist), JSON_UNESCAPED_UNICODE);
+            $interMediatelist = array();
+            foreach($signlist as $k => $v){
+                $interMediatelist[$k]['signid'] = $v['sid'];
+                $interMediatelist[$k]['md5_sign'] = md5(Doo::conf()->SITE_PATH . 'signs/' . $v['sid']);
+                $interMediatelist[$k]['project'] = $v['project'];
+                $interMediatelist[$k]['tender'] = $v['tender'];
+                $interMediatelist[$k]['phaseno'] = $v['phaseno'];
+                $interMediatelist[$k]['name'] = $v['name'];
+                $interMediatelist[$k]['ownuid'] = $v['ownuid'];
+                $interMediatelist[$k]['status'] = $v['isinter'];
+                $interMediatelist[$k]['currnum'] = $v['pagenum'];
+                $interMediatelist[$k]['totalnum'] = $v['internum'];
+            }
+            echo json_encode(array('status' => TRUE, 'msg' => '', 'info' => $interMediatelist), JSON_UNESCAPED_UNICODE);
             die();
         }else{
             $status = array('status' => TRUE, 'msg' => '当前没有签署报表','info' => '');
@@ -1600,6 +1610,115 @@ class ClientController extends DooController
         }
     }
 
+    //中间计量表的接口
+    public function getInterMediateCreate(){
+        // TODO:上报数据
+        if (isset($_POST['project']) && isset($_POST['tender']) && isset($_POST['phaseno']) && isset($_POST['name']) && isset($_POST['ownuid']) && isset($_POST['widhei']) && isset($_POST['totalnum'])) {
+            //解压压缩包并把图片存到文件夹中
+            @$_POST['name'] = iconv('GBK', 'UTF-8', $_POST['name']);
+            $samesignname = $this->sign->getSignbyName($_POST['tender'], $_POST['phaseno'], $_POST['name']);
+            if(!empty($samesignname)){
+                $status = array('status' => 'FALSE', 'msg' => '存在同名中间计量表');
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+
+            //添加到签署报表中
+            $intime = time();
+            $signid = $this->sign->insertSign($_POST['project'], $_POST['tender'], $_POST['phaseno'], $_POST['name'], $_POST['ownuid'],$intime,$_POST['widhei'],1,$_POST['totalnum']);
+
+            $extPathdir = Doo::conf()->SITE_PATH . 'signs/' . $signid;
+            if (!$this->dir_create2($extPathdir)) {
+                $status = array('status' => 'FALSE', 'msg' => '文件夹创建失败');
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+            $status = array('status' => 'TRUE','msg' => '', 'info' => array('signid' => $signid, 'md5_sign' => md5($extPathdir)));
+            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+            die();
+        } else {
+            $status = array('status' => 'FALSE', 'msg' => '上传参数错误');
+            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+            die();
+        }
+    }
+
+    public function getInterMediateUpload(){
+        if(isset($_POST['signid']) && isset($_POST['md5_sign']) && !empty($_FILES['imediate']['name'])){
+            $extPathdir = Doo::conf()->SITE_PATH . 'signs/' . $_POST['signid'];
+            if($_POST['md5_sign'] != md5($extPathdir)){
+                $status = array('status' => 'FALSE', 'msg' => '上传的图表不对应');
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+
+            $path = $extPathdir .'/' . $_FILES['imediate']['name'];
+            @chmod(Doo::conf()->SITE_PATH.$path,0777);
+            $k = move_uploaded_file($_FILES['imediate']["tmp_name"], $path);
+            if($k){
+                $signatt = new signn();
+                $result = $signatt->insertSignAtt($_POST['signid'],basename($_FILES['imediate']['name'],".jpg"),'signs/' . $_POST['signid'].'/'.$_FILES['imediate']['name']);
+                if(!empty($result)){
+                    $sign2 = new signn();
+                    $signArray = $sign2->getOneSignbysid($_POST['signid']);
+
+                    $sign2->updateSignPageNum($_POST['signid'],$signArray['pagenum']+1);
+                    if($signArray['pagenum']+1 == $signArray['internum']){
+                        $sign2->updateInterMediateStatus($_POST['signid'],2);
+                    }
+                    $status = array('status' => 'TRUE');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }else{
+                    $status = array('status' => 'FALSE', 'msg' => '图片保存出错');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }
+            }else{
+                $status = array('status' => 'FALSE', 'msg' => '上传图片失败');
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+        }else{
+            $status = array('status' => 'FALSE', 'msg' => '上传参数错误');
+            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+            die();
+        }
+    }
+
+    public function getInterMediateList(){
+        $wheresql = 'isinter!=0';
+        if(isset($_POST['project']) && is_numeric($_POST['project'])){
+            $wheresql .= ' and project='.$_POST['project'];
+        }
+        if(isset($_POST['tender']) && is_numeric($_POST['tender'])) {
+            $wheresql .= ' and tender='.$_POST['tender'];
+        }
+        if(isset($_POST['phaseno']) && is_numeric($_POST['phaseno'])){
+            $wheresql .= ' and phaseno='.$_POST['phaseno'];
+        }
+        $signlist = $this->sign->getSignListbyClient($wheresql);
+        if(!empty($signlist)){
+            $interMediatelist = array();
+            foreach($signlist as $k => $v){
+                $interMediatelist[$k]['signid'] = $v['sid'];
+                $interMediatelist[$k]['md5_sign'] = md5(Doo::conf()->SITE_PATH . 'signs/' . $v['sid']);
+                $interMediatelist[$k]['phaseno'] = $v['phaseno'];
+                $interMediatelist[$k]['name'] = $v['name'];
+                $interMediatelist[$k]['ownuid'] = $v['ownuid'];
+                $interMediatelist[$k]['status'] = $v['isinter'];
+                $interMediatelist[$k]['currnum'] = $v['pagenum'];
+                $interMediatelist[$k]['totalnum'] = $v['internum'];
+            }
+            echo json_encode(array('status' => TRUE, 'msg' => '', 'info' => $interMediatelist), JSON_UNESCAPED_UNICODE);
+            die();
+        }else{
+            $status = array('status' => TRUE, 'msg' => '当前没有中间计量表','info' => '');
+            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+            die();
+        }
+    }
+
     // public function testzip(){
     //     $this->render('testzip', $this->data);
     // }
@@ -1871,6 +1990,15 @@ class ClientController extends DooController
         echo json_encode(array('status' => TRUE, 'msg' => '', 'info' => $reportSwitch), JSON_UNESCAPED_UNICODE);
         die();
     }
+
+    /**
+     * 中间计量表添加草图功能开关
+     */
+    public function interMediateSwitch(){
+        $imediateswitch = $this->aconfig->getOne(array('select' => 'imediateswitch', 'asArray' => TRUE))['imediateswitch'];
+        echo json_encode(array('status' => TRUE, 'msg' => '', 'info' => $imediateswitch), JSON_UNESCAPED_UNICODE);
+        die();
+    }
 }
 
 ?>

+ 10 - 12
protected/controller/LoginController.php

@@ -41,18 +41,16 @@ class LoginController extends DooController
     public function Signin()
     {
         $this->data['tips'] = '';
-        if ($_GET['username']) {
-            if (isset($_GET['username'])) {
-                $retval = $this->auth->checkLoginWithUserName($_GET['username']);
-                if (isset($retval['uid'])) {
-                    $this->auth->setUid($retval['uid']);
-                    $this->auth->setUemail($retval['uemail']);
-                    $_SESSION['token'] = sha1($this->create_randomstr() . $_SESSION['uid']);
-                    setcookie('token', $_SESSION['token'], 0, '/', Doo::conf()->APP_URL, FALSE, TRUE);
-                    return Doo::conf()->APP_URL . 'project/index';
-                } else {
-                    $this->data['tips'] = '<div class="alert alert-error"><span data-icon="t" aria-hidden="true"></span> 帐号不存在或者密码错误</div>';
-                }
+        if (isset($_GET['username'])) {
+            $retval = $this->auth->checkLoginWithUserName($_GET['username']);
+            if (isset($retval['uid'])) {
+                $this->auth->setUid($retval['uid']);
+                $this->auth->setUemail($retval['uemail']);
+                $_SESSION['token'] = sha1($this->create_randomstr() . $_SESSION['uid']);
+                setcookie('token', $_SESSION['token'], 0, '/', Doo::conf()->APP_URL, FALSE, TRUE);
+                return Doo::conf()->APP_URL . 'project/index';
+            } else {
+                $this->data['tips'] = '<div class="alert alert-error"><span data-icon="t" aria-hidden="true"></span> 帐号不存在或者密码错误</div>';
             }
         } else {
             if (isset($_POST['uemail']) && isset($_POST['upasswd'])) {

+ 1 - 0
protected/controller/ProjectController.php

@@ -58,6 +58,7 @@ class ProjectController extends DooController
         $this->data['user'] = $this->profile->getProWithUid($this->auth->getUid());
         $mpidArray = $this->measureauditact->getAuditProject2($this->auth->getUid());
         if (isset($mpidArray[0]['pid'])) {
+            $this->data['numofchecking'] = 0;
             foreach ($mpidArray as $key => $value) {
                 // 审批操作按照时间排序多标段
                 $this->data['numofchecking'] += $this->measureauditact->getCountMyChecking($value['pid'], $this->auth->getUid());

+ 272 - 0
protected/controller/SProjectController.php

@@ -61,6 +61,7 @@ class SProjectController extends DooController
         $this->data['user'] = $this->profile->getProWithUid($this->auth->getUid());
         $mpidArray = $this->measureauditact->getAuditProject2($this->auth->getUid());
         if (isset($mpidArray[0]['pid'])) {
+            $this->data['numofchecking'] = 0;
             foreach ($mpidArray as $key => $value) {
                 // 审批操作按照时间排序多标段
                 $this->data['numofchecking'] += $this->measureauditact->getCountMyChecking($value['pid'], $this->auth->getUid());
@@ -610,6 +611,254 @@ class SProjectController extends DooController
         return;
     }
 
+    public function proSectionInterMediate(){
+
+        if(isset($_POST['delid']) && is_numeric($_POST['delid'])){
+            //删除未签署报表数据和文件
+            $signmsg = $this->sign->getOneSignbysid($_POST['delid']);
+            if(empty($signmsg) && $signmsg['status'] == "checked" && $signmsg['ownuid'] != $this->auth->getUid()){
+                exit(json_encode(array('code' => 400),JSON_UNESCAPED_UNICODE));
+            }
+            $this->sign->delSignbysid($_POST['delid'],$signmsg['status']);
+
+            include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
+            $this->IoHandler = new IoHandler();
+            $path = DOO::conf()->SITE_PATH."signs/".$_POST['delid'];
+            $this->IoHandler->RemoveDir($path);
+
+            exit(json_encode(array('code' => 200),JSON_UNESCAPED_UNICODE));
+        }
+
+        $this->data['currproArray'] = $this->data['allproArray'] = NULL;
+        $proArray = $this->actmeasure->getGroupProject($this->auth->getUid());
+        foreach ($proArray as $v) {
+            $pidArray[] = $v['pid'];
+        }
+        $pidstr = implode(',', $pidArray);
+        // 项目名称
+        $allproArray = $this->project->getFewRow($pidstr);
+        // 面包屑导航项目
+        foreach ($allproArray as $kk => $vv) {
+            if ($vv['pid'] == $this->params['pid']) {
+                $this->data['currproArray'] = $vv;
+            } else {
+                $this->data['allproArray'][] = $vv;
+            }
+        }
+        // 面包屑导航合同
+        $conArray = $this->contractact->getAll();
+        $measureArray = $this->actmeasure->getRowByPmid($this->params['pmid']);
+        if (isset($measureArray['stid'])) {
+            foreach ($conArray as $kkk => $vvv) {
+                if ($vvv['stid'] == $measureArray['stid']) {
+                    $this->data['currconArray'] = $vvv;
+                } else {
+                    if ($vvv['pid'] == $this->params['pid'])
+                        $this->data['allconArray'][] = $vvv;
+                }
+            }
+        } else {
+            $this->data['currconArray'] = $this->data['allconArray'] = NULL;
+        }
+        // 面包屑导航标段
+        $this->data['curractmeasureArray'] = NULL;
+        $this->data['allactmeasureArray'] = [];
+        $actmeasureArray = $this->actmeasure->getAll();
+        foreach ($actmeasureArray as $kkkk => $vvvv) {
+            if ($vvvv['stid'] == $measureArray['stid']) {
+                if (($vvvv['pmid'] == $this->params['pmid'])) {
+                    $this->data['curractmeasureArray'] = $vvvv;
+                } else {
+                    $this->data['allactmeasureArray'][] = $vvvv;
+                }
+            }
+        }
+
+        Doo::loadHelper('DooPager');
+        $pagestr = '';
+        $sqlstr = ' 1';
+//        $this->data['project'] = '';
+//        $this->data['tender'] = '';
+        $this->data['phaseno'] = '';
+        $this->data['nosign'] = '';
+
+        //获取项目信息
+        $searchsql = 'isinter!=0 and (`ownuid`='.$this->auth->getUid().' OR `audituid`='.$this->auth->getUid().' OR sid IN (SELECT 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){
+//                $itemmsg = $this->project->getRowByPid($iv['project']);
+//                $itemlist[$ik]['pname'] = $itemmsg['pname'];
+//            }
+//        }
+
+        if(isset($this->params['pid']) && is_numeric($this->params['pid'])){
+            $pagestr .= '/'.$this->params['pid'];
+            $sqlstr .= ' and project='.$this->params['pid'];
+            //获取标段信息
+//            $tenderlist = $this->sign->getSignGroupByTender($this->params['pid'],$searchsql);
+//            if(!empty($tenderlist)){
+//                foreach($tenderlist as $tk => $tv){
+//                    $tendermsg = $this->actmeasure->getRowByPmid($tv['tender']);
+//                    $tenderlist[$tk]['pmname'] = $tendermsg['pmname'];
+//                }
+//            }
+
+            if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
+                $pagestr .= '/section/'.$this->params['pmid'];
+                $sqlstr .= ' and tender='.$this->params['pmid'];
+                //获取期数信息
+                $phasenolist = $this->sign->getSignGroupByPhaseno($this->params['pmid'],$searchsql);
+                if(!empty($phasenolist)){
+                    foreach($phasenolist as $pk => $pv){
+                        $phasenolist[$pk]['numpname'] = $pv['phaseno'];
+                    }
+                }
+
+                if(isset($this->params['mpid']) && is_numeric($this->params['mpid'])){
+                    $this->data['phaseno'] = $this->params['mpid'];
+                    $pagestr .= '/phaseno/'.$this->params['mpid'];
+                    $sqlstr .= ' and phaseno='.$this->params['mpid'];
+                }
+            }
+        }
+
+        $totalArchive = $this->sign->getSignNum($sqlstr.' and '.$searchsql);
+        $pager = new DooPager(Doo::conf()->APP_URL . 'sproject'.$pagestr.'/intermediate/page', $totalArchive, 10, 100);
+        $pager->setCss('', 'disabled', 'active');
+        if (isset($this->params['pindex']))
+            $pager->paginate(intval($this->params['pindex']));
+        else
+            $pager->paginate(1);
+        if ($pager->limit != ' -10,10')
+            $list = $this->sign->getSignList($sqlstr.' and '.$searchsql,$pager->limit);
+        if(isset($list) && !empty($list)){
+            foreach($list as $k => $v){
+                //获取项目名,标段名,标段期数
+                $project = $this->project->getRowByPid($v['project']);
+                $tender = $this->actmeasure->getRowByPmid($v['tender']);
+//                $phaseno = $this->numofperact->getCurrStatus($v['phaseno']);
+
+                $list[$k]['project'] = $project['pname'];
+                $list[$k]['tender'] = $tender['pmname'];
+//                $list[$k]['phaseno'] = $phaseno['numpname'];
+                $list[$k]['ownname'] = $this->auth->getName($v['ownuid']);
+                $list[$k]['auditname'] = $this->auth->getName($v['audituid']);
+                $list[$k]['delstatus'] = $this->auth->getUid() == $v['ownuid'] && $v['status'] != 'checked' ? 1 : 0;
+            }
+        }
+
+        $this->data['list'] = isset($list) ? $list : '';
+//        $this->data['itemlist'] = $itemlist;
+//        $this->data['tenderlist'] = isset($tenderlist) ? $tenderlist : '';
+        $this->data['phasenolist'] = isset($phasenolist) ? $phasenolist : '';
+        $this->data['pager'] = $pager->output;
+
+
+        $this->data['pid'] = $this->params['pid'];
+        $this->data['pmid'] = $this->params['pmid'];
+        $this->render('s-project-section-intermediate', $this->data, TRUE);
+    }
+
+    public function interMediateMake(){
+        if(isset($this->params['sid']) && is_numeric($this->params['sid'])){
+            //获取报表信息
+            $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
+            if(!empty($signmsg) && ($signmsg['isinter'] == 1 || $signmsg['isinter'] == 2)){
+                if($signmsg['pagenum'] == 0){
+                    exit('当前中间计量表还没上传图片~');die;
+                }
+                $this->data['sid'] = $signmsg['sid'];
+                $this->data['pid'] = $signmsg['project'];
+                $this->data['pmid'] = $signmsg['tender'];
+                $this->data['name'] = $signmsg['name'];
+                $this->data['totalnum'] = $signmsg['pagenum'];
+                if(isset($this->params['page']) && is_numeric($this->params['page'])){
+                    $this->data['currnum'] = $this->params['page'];
+                    $this->data['lastnum'] = $this->params['page'] - 1 > 0 ? ($this->params['page'] - 1) : '';
+                    $this->data['nextnum'] = $this->params['page'] + 1 > $signmsg['pagenum'] ? '' : ($this->params['page'] + 1);
+                    $signattmsg = $this->sign->getOneSignAtt($this->params['sid'],$this->params['page']);
+                }else{
+                    $this->data['currnum'] = 1;
+                    $this->data['lastnum'] = '';
+                    $this->data['nextnum'] = 1 + 1 > $signmsg['pagenum'] ? '' : 2;
+                    $signattmsg = $this->sign->getOneSignAtt($this->params['sid'],1);
+                }
+
+                //获取报表图片
+                $maxwidth = 794; //默认图片最大宽度   a4
+                $maxheight = 1123; //默认图片最大高度  a4
+
+                $imgmsg = getimagesize(Doo::conf()->APP_URL.$signattmsg['filepath']);
+                $maxwidth = $imgmsg[0];
+                $maxheight = $imgmsg[1];
+
+                $this->data['maxwidth'] = $maxwidth;
+                $this->data['maxheight'] = $maxheight;
+
+                if($this->is_pjax()){
+                    echo '<div class="page" style="width:'.$maxwidth.'px" id="intermediatePage'.$this->data['currnum'].'"><img src="'.Doo::conf()->APP_URL.$signattmsg['filepath'].'"></div>';exit;
+                }
+
+                $this->data['attmsg'] = $signattmsg;
+
+                $this->render('s-project-section-intermediate-detail', $this->data, TRUE);die;
+            }
+        }
+        exit('没有中间计量表参数');
+    }
+
+    public function interMediateUpload(){
+        if(isset($this->params['sid']) && is_numeric($this->params['sid']) && isset($_POST['num']) && isset($_POST['data'])){
+            $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
+            if(!empty($signmsg) && ($signmsg['isinter'] == 1 || $signmsg['isinter'] == 2)){
+                if(empty($_POST['data']) && $_POST['num'] == $signmsg['pagenum']){
+                    $this->sign->updateInterMediateStatus($this->params['sid'],3);
+                    $status = array('code' => 202, 'msg' => '最后一张已上传完毕');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }
+                preg_match('/^(data:\s*image\/(\w+);base64,)/', $_POST['data'], $result);
+                $img = base64_decode(str_replace($result[1], '', $_POST['data']));
+                //path
+                $dir = 'signs/'.$this->params['sid'].'/intermediate';
+                if (!$this->dir_create2(Doo::conf()->SITE_PATH . $dir)) {
+                    $status = array('status' => 400, 'msg' => '文件夹创建失败');
+                    echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                    die();
+                }
+                $virtualPath = $dir.'/'.$_POST['num'].'.jpg';
+                $a = file_put_contents(Doo::conf()->SITE_PATH .$virtualPath,$img);
+                if($a){
+                    //更新signatt表信息
+                    $result = $this->sign->updateSignAtt($this->params['sid'],$_POST['num'],$virtualPath);
+                    if($result){
+                        if($_POST['num'] == $signmsg['pagenum']){
+                            $this->sign->updateInterMediateStatus($this->params['sid'],3);
+                            $status = array('code' => 202, 'msg' => '最后一张已上传完毕');
+                            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                            die();
+                        }else{
+                            $status = array('code' => 200, 'msg' => '');
+                            echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                            die();
+                        }
+                    }
+                }
+                $status = array('code' => 400, 'msg' => '上传中间计量表失败');
+                echo json_encode($status, JSON_UNESCAPED_UNICODE);
+                die();
+            }
+        }
+        $status = array('code' => 400, 'msg' => '参数有误,不存在此中间计量表或此中间计量表已合成');
+        echo json_encode($status, JSON_UNESCAPED_UNICODE);
+        die();
+    }
+
+    function is_pjax(){
+        return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true';
+    }
+
     /**
      * 文件下载
      * @param $filepath 文件路径
@@ -662,6 +911,29 @@ class SProjectController extends DooController
         return strtolower(trim(substr(strrchr($filename, '.'), 1, 10)));
     }
 
+    function dir_create2($path, $mode = 0777)
+    {
+        if (is_dir($path))
+            return TRUE;
+        $path = $this->dir_path($path);
+        $parent = dirname($path);
+        if (!is_dir($parent)){
+            @mkdir($parent, 0777);
+            @chmod($parent, 0777);
+        }
+        @mkdir($path, 0777);
+        @chmod($path, 0777);
+        return is_dir($path);
+    }
+
+    function dir_path($path)
+    {
+        $path = str_replace('\\', '/', $path);
+        if (substr($path, -1) != '/')
+            $path = $path . '/';
+        return $path;
+    }
+
 
 }
 

+ 29 - 3
protected/controller/SignController.php

@@ -231,6 +231,14 @@ class SignController extends DooController
                 if($v['status'] == 'uncheck'){
                     $sign2->updateSignAudit($v['satid'],'checking');
                     $flag = false;
+                    //发送签署短信
+                    // SMS Start
+                    $signArray = $this->sign->getOneSignbysid($_POST['sid']);
+                    $userProArray = $this->profile->getProWithUid($v['audituid']);
+                    if (isset($userProArray) && !empty($userProArray['mobile'])) {
+                        $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . '您好,' . $signArray["name"] . Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
+                    }
+                    // SMS End
                     break;
                 }
             }
@@ -528,7 +536,7 @@ class SignController extends DooController
         $this->data['phaseno'] = '';
 
         //获取项目信息
-        $searchsql = 'status="uncheck" AND (`ownuid`='.$this->auth->getUid().' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$this->auth->getUid().') OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$this->auth->getUid().'))';
+        $searchsql = 'status="uncheck" AND (`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' OR tender IN (SELECT pmid FROM jl_measure_audit WHERE auditoruid='.$this->auth->getUid().') OR project IN (SELECT pid FROM jl_project_measure WHERE uid='.$this->auth->getUid().'))';
         $itemlist = $this->sign->getSignGroupByProject($searchsql);
         if(!empty($itemlist)){
             foreach($itemlist as $ik => $iv){
@@ -631,7 +639,7 @@ class SignController extends DooController
         $this->data['nosign'] = '';
 
         //获取项目信息
-        $searchsql = '(`ownuid`='.$this->auth->getUid().' OR `audituid`='.$this->auth->getUid().' OR sid IN (SELECT sid FROM jl_sign_audit WHERE jl_sign_audit.audituid='.$this->auth->getUid().'))';
+        $searchsql = '(`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' OR `audituid`='.$this->auth->getUid().' OR sid IN (SELECT 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){
@@ -677,7 +685,7 @@ class SignController extends DooController
         if((isset($this->params['nosign']) && ($this->params['nosign'] == 'nosign')) || isset($_GET['nosign'])){
             $this->data['nosign'] = 1;
             $pagestr .= '/nosign';
-            $searchsql = '(`ownuid`='.$this->auth->getUid().' AND `status`="uncheck")';
+            $searchsql = '(`isinter`=0 OR `isinter`=3) AND (`ownuid`='.$this->auth->getUid().' AND `status`="uncheck")';
         }
 
         $totalArchive = $this->sign->getSignNum($sqlstr.' and '.$searchsql);
@@ -827,6 +835,16 @@ class SignController extends DooController
                 echo json_encode(array('code' => 400, 'msg' => '添加签署人出错'));
                 exit;
             }
+            //发送签署短信
+            if($k == 0){
+                // SMS Start
+                $signArray = $this->sign->getOneSignbysid($_POST['sid']);
+                $userProArray = $this->profile->getProWithUid($v);
+                if (isset($userProArray) && !empty($userProArray['mobile'])) {
+                    $retval = $this->__auditNotice($userProArray['mobile'], Doo::conf()->SMS_TIPS_PRE . '您好,' . $signArray["name"] . Doo::conf()->SMS_TIPS["AUDIT_NOTICE_AUDITOR5"]);
+                }
+                // SMS End
+            }
         }
         //更新报表信息
         $result2 = $this->sign->updateSignMsg($_POST['sid'],$this->auth->getUid());
@@ -981,6 +999,14 @@ class SignController extends DooController
         return $name;
     }
 
+    private function __auditNotice($mobile, $text)
+    {
+        $smsSwitch = $this->aconfig->getOne(array('select' => 'smsSwitch', 'asArray' => TRUE))['smsSwitch'];
+        if ($smsSwitch > 0)
+            return $this->sms->sendSms($mobile, $text);
+
+    }
+
 }
 
 ?>

+ 3 - 1
protected/model/sign.php

@@ -21,9 +21,11 @@ class Sign extends DooModel {
     public $status;
     public $sintime;
     public $ishare;
+    public $isinter;
+    public $internum;
     public $_table = 'jl_sign';
     public $_primarykey = 'sid';
-    public $_fields = array('sid', 'project', 'tender', 'phaseno', 'name', 'ownuid', 'intime', 'pagenum', 'widhei', 'audituid', 'aintime', 'status', 'sintime', 'ishare');
+    public $_fields = array('sid', 'project', 'tender', 'phaseno', 'name', 'ownuid', 'intime', 'pagenum', 'widhei', 'audituid', 'aintime', 'status', 'sintime', 'ishare', 'isinter', 'internum');
 
     public function __construct() {
         parent::setupModel(__CLASS__);

+ 16 - 0
protected/module/admin/controller/AdminController.php

@@ -209,4 +209,20 @@ class AdminController extends DooController
         $this->render('admin-userlist', $this->data, TRUE);
     }
 
+    /*     * ************************************************************
+     *  生成指定长度的随机码。
+     *  @param int $length 随机码的长度。
+     *  @access public
+     * ************************************************************ */
+
+    function createRandomCode($length)
+    {
+        $randomCode = "";
+        $randomChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+        for ($i = 0; $i < $length; $i++) {
+            $randomCode .= $randomChars{mt_rand(0, 35)};
+        }
+        return $randomCode;
+    }
+
 }

+ 2 - 1
protected/module/admin/model/aconfig.php

@@ -16,9 +16,10 @@ class AConfig extends DooModel
     public $reportswitch;
     public $signswitch;
     public $launchsignswitch;
+    public $imediateswitch;
     public $_table = 'jl_config';
     public $_primarykey = 'conid';
-    public $_fields = array('conid', 'proname', 'onoff', 'upgradeinfo', 'smsswitch', 'reportswitch', 'signswitch', 'launchsignswitch');
+    public $_fields = array('conid', 'proname', 'onoff', 'upgradeinfo', 'smsswitch', 'reportswitch', 'signswitch', 'launchsignswitch', 'imediateswitch');
 
     public function __construct()
     {

+ 4 - 0
protected/module/admin/view/admin-editUser.html

@@ -105,6 +105,10 @@
                                     </div>
                                 </div>
                                 <div class="control-group">
+                                    <label class="control-label"></label>
+                                    <div class="controls text-error">为保证效果,请上传600x300,png格式透明背景签名图</div>
+                                </div>
+                                <div class="control-group">
                                     <label class="control-label">生成签名图</label>
                                     <div class="controls">
                                         <a href="http://sign.6jlzf.cn" target="_blank" class="btn">打开 HWPenSign</a>

+ 1 - 0
protected/view/s-project-section-detail.html

@@ -63,6 +63,7 @@
 					<a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/detail">标段概况</a>
 				</li>
 				<li><a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/files">附件</a></li>
+				<li><a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/intermediate">中间计量草图</a></li>
 			</ul>
 			<div class="project">
 				<div class="proSection clearfix">

+ 1 - 0
protected/view/s-project-section-files-recover.html

@@ -60,6 +60,7 @@
                     <a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/detail">标段概况</a>
                 </li>
                 <li class="active"><a href="{{rootUrl}}project/{{pid}}/section/{{pmid}}/files">附件</a></li>
+                <li><a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/intermediate">中间计量草图</a></li>
             </ul>
             <!--导航-->
 

+ 1 - 0
protected/view/s-project-section-files.html

@@ -60,6 +60,7 @@
                     <a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/detail">标段概况</a>
                 </li>
                 <li class="active"><a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/files">附件</a></li>
+                <li><a href="{{rootUrl}}sproject/{{pid}}/section/{{pmid}}/intermediate">中间计量草图</a></li>
             </ul>
             <!--导航-->
             <!--筛选工具-->

Diferenças do arquivo suprimidas por serem muito extensas
+ 391 - 0
protected/view/s-project-section-intermediate-detail.html


Diferenças do arquivo suprimidas por serem muito extensas
+ 166 - 0
protected/view/s-project-section-intermediate.html