|
@@ -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());
|
|
@@ -78,6 +79,9 @@ class SProjectController extends DooController
|
|
|
|
|
|
//获取桌面版本
|
|
|
$this->getsoftware();
|
|
|
+
|
|
|
+ //草图入口
|
|
|
+ $this->data['imediateSwitch'] = $this->aconfig->getOne(array('select' => 'imediateswitch', 'asArray' => TRUE))['imediateswitch'];
|
|
|
}
|
|
|
|
|
|
function getsoftware(){
|
|
@@ -622,6 +626,338 @@ class SProjectController extends DooController
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ public function proSectionInterMediate(){
|
|
|
+
|
|
|
+ //草图功能开关控制
|
|
|
+ if($this->data['imediateSwitch'] == 0){
|
|
|
+ exit('中间计量表草图添加功能未启用...');
|
|
|
+ }
|
|
|
+
|
|
|
+ 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();
|
|
|
+ $actmeasureArray = $this->actmeasure->getRowUser($this->auth->getUid());
|
|
|
+ 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($this->data['imediateSwitch'] == 0){
|
|
|
+ exit('中间计量表草图添加功能未启用...');die;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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'].'"><input type="hidden" value="'.$this->data['currnum'].'" id="pagecurrnum"><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();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @return type
|
|
|
+ */
|
|
|
+ public function signView()
|
|
|
+ {
|
|
|
+ //草图功能开关控制
|
|
|
+ if($this->data['imediateSwitch'] == 0){
|
|
|
+ exit('中间计量表草图添加功能未启用...');die;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!isset($this->params['sid']) || !is_numeric($this->params['sid'])){
|
|
|
+ exit('没有报表参数');
|
|
|
+ }
|
|
|
+ //获取报表信息
|
|
|
+ $signmsg = $this->sign->getOneSignbysid($this->params['sid']);
|
|
|
+ if(empty($signmsg) || $signmsg['isinter'] != 3){
|
|
|
+ exit('不存在此中间计量表');
|
|
|
+ }
|
|
|
+
|
|
|
+ $backurl = '/sproject/'.$signmsg['project'].'/section/'.$signmsg['tender'].'/intermediate';
|
|
|
+ //获取项目名,标段名,标段期数
|
|
|
+ $project = $this->project->getRowByPid($signmsg['project']);
|
|
|
+ $tender = $this->actmeasure->getRowByPmid($signmsg['tender']);
|
|
|
+// $phaseno = $this->numofperact->getCurrStatus($signmsg['phaseno']);
|
|
|
+
|
|
|
+ $signmsg['project'] = $project['pname'];
|
|
|
+ $signmsg['tender'] = $tender['pmname'];
|
|
|
+// $signmsg['phaseno'] = $phaseno['numpname'];
|
|
|
+
|
|
|
+ //获取签署人列表
|
|
|
+ $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']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取报表图片
|
|
|
+ $maxwidth = 794; //默认图片最大宽度 a4
|
|
|
+ $maxheight = 1123; //默认图片最大高度 a4
|
|
|
+ if(!empty($signmsg['widhei'])){
|
|
|
+ $widhei = explode('_', $signmsg['widhei']);
|
|
|
+ $style = $widhei[0].'mm '.$widhei[1].'mm';
|
|
|
+ }else{
|
|
|
+ $style = '210mm 297mm';
|
|
|
+ }
|
|
|
+ $signattlist = $this->sign->getSignAttList($this->params['sid']);
|
|
|
+ if(!empty($signattlist)){
|
|
|
+ foreach($signattlist as $sak => $sav){
|
|
|
+ $signattlist[$sak]['auditatt'] = $this->sign->getSignAuditAttList($sav['said']);
|
|
|
+ if($sak == 0){
|
|
|
+ $imgmsg = getimagesize(Doo::conf()->APP_URL.$sav['filepath']);
|
|
|
+ $maxwidth = $imgmsg[0];
|
|
|
+ $maxheight = $imgmsg[1];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $this->data['signmsg'] = $signmsg;
|
|
|
+ $this->data['auditlist'] = $signauditlist;
|
|
|
+ $this->data['attlist'] = $signattlist;
|
|
|
+ $this->data['backurl'] = $backurl;
|
|
|
+ $this->data['maxwidth'] = $maxwidth;
|
|
|
+ $this->data['maxheight'] = $maxheight;
|
|
|
+ $this->data['style'] = $style;
|
|
|
+
|
|
|
+ $this->render('sign-view-page', $this->data, TRUE);
|
|
|
+ }
|
|
|
+
|
|
|
+ function is_pjax(){
|
|
|
+ return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true';
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 文件下载
|
|
|
* @param $filepath 文件路径
|
|
@@ -674,6 +1010,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;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|