'未审批', 'checking' => '审批中', 'checked' => '审批通过', 'checkno' => '审批不通过');
private $changeType = array('2' => 'A.数量', '1' => 'B.位置', '3' => 'C.结构', '4' => 'D.新增', '5' => 'E.取消', '6' => 'F.纠错');
private $changeCategory = array('1' => 'A类变更', '2' => 'B类变更', '3' => 'C类变更', '4' => 'D类变更', '5' => 'E类变更');
private $changeNature = array('1' => '一般设计变更', '2' => '较大设计变更', '3' => '重大设计变更');
private $changeStatus = array('2' => 'uncheck', '3' => 'checking', '4' => 'checked', '5' => 'checkno', '6' => 'del');
private $changeUnit = array('m','km','m2','m3','kg','t','m3·km','总额','月','项','处','个','根','棵','块','每一试桩','桥长米','公路公里','株','组','座','元','工日','套','台班','艘班','m/处','m/道','m/座','m2/m','m3/m','m3/处','根/米','亩','m3/m2');
public function beforeRun($resource, $action)
{
if(isset($_POST['sessionid'])){
session_id($_POST['sessionid']);
setcookie('PHPSESSID',$_POST['sessionid']);
session_start();
}
if ($this->auth->getUid()) {
$uGroups = $this->profile->getProWithUid($this->auth->getUid());
$falg = Doo::acl()->isAllowed($uGroups['groups'], $resource, $action);
if (!$falg)
return Doo::acl()->defaultFailedRoute;
} else {
return Doo::acl()->defaultFailedRoute;
}
}
public function __construct()
{
$this->aconfig = new AConfig();
$this->auth = new Auth();
$this->attfile = new attFile();
$this->profile = new Profile();
$this->project = new Project();
$this->contractact = new Contractact();
$this->actmeasure = new actMeasure();
$this->numofperact = new NumofperAct();
$this->measureauditact = new MeasureauditAct();
$this->sign = new Signn();
$this->change = new Changes();
$this->sms = new Sms(Doo::conf()->SMS_URL, Doo::conf()->SMS_ACCOUNT, DOO::conf()->SMS_PASSWORD, DOO::conf()->SMS_EXTNO);
$this->__hashids = new Hashids\Hashids('jlzffileid', 8);
$this->data['rootUrl'] = Doo::conf()->APP_URL;
$this->data['currChannle'] = 'change';
$this->data['user'] = $this->profile->getProWithUid($this->auth->getUid());
$mpidArray = $this->measureauditact->getAuditProject2($this->auth->getUid());
$this->data['numofchecking'] = 0;
if (isset($mpidArray[0]['pid'])) {
foreach ($mpidArray as $key => $value) {
// 审批操作按照时间排序多标段
$this->data['numofchecking'] += $this->measureauditact->getCountMyChecking($value['pid'], $this->auth->getUid());
}
}
if (!isset($this->data['numofchecking']) || $this->data['numofchecking'] == 0) {
$this->data['numofchecking'] = null;
}
$this->data['signSwitch'] = $this->aconfig->getOne(array('select' => 'signswitch', 'asArray' => TRUE))['signswitch'];
//获取需要您签署的数目
if($this->data['signSwitch'] > 0)
$this->data['needSignNum'] = $this->sign->getNeedSignNumbyUid($this->auth->getUid()) != 0 ? $this->sign->getNeedSignNumbyUid($this->auth->getUid()) : '';
//获取桌面版本
$this->getsoftware();
//草图入口
$this->data['imediateSwitch'] = $this->aconfig->getOne(array('select' => 'imediateswitch', 'asArray' => TRUE))['imediateswitch'];
//获取需要你审批的变更令数目
$this->data['needChangeNum'] = $this->change->getNeedChangeNumbyUid($this->auth->getUid()) != 0 ? $this->change->getNeedChangeNumbyUid($this->auth->getUid()) : '';
}
function getsoftware(){
$StrJson = ($this->aconfig->getOne(array('select' => 'upgradeinfo', 'asArray' => TRUE))['upgradeinfo']);
$upgradeinfo = json_decode($StrJson, true);
if ($upgradeinfo) {
$this->data['version'] = $upgradeinfo['version'];
$this->data['download'] = $upgradeinfo['download'];
}
}
/**
*
* @return type
*/
public function index()
{
//获取 项目-标段类型-标段 的树结构, 包含个人对应的原报,审批和变更令审批人专属树结构
$sectionlist = array();
$hashArray = array();
//先取原报人标段
$mpidArray = $this->actmeasure->getRowUser2($this->auth->getUid());
if(!empty($mpidArray)){
foreach($mpidArray as $k => $v){
$sectionlist[] = array('pid' => $v['pid'], 'stid' => $v['stid'], 'pmid' => $v['pmid']);
$hashArray[] = md5($v['pmid']);
}
}
//再取审批表标段
// $mpidArray2 = $this->measureauditact->getPmidGroup($this->auth->getUid());
// if(!empty($mpidArray2)){
// foreach($mpidArray2 as $k2 => $v2){
// $hashstr = md5($v2['pmid']);
// if(!in_array($hashstr,$hashArray)){
// $sectionlist[] = array('pid' => $v2['pid'], 'stid' => $v2['stid'], 'pmid' => $v2['pmid']);
// $hashArray[] = md5($v2['pmid']);
// }
// }
// }
//最后取变更令审批人所属的标段
$mpidArray3 = $this->change->getPmidGroup($this->auth->getUid());
if(!empty($mpidArray3)){
foreach($mpidArray3 as $k3 => $v3){
$hashstr = md5($v3['pmid']);
if(!in_array($hashstr,$hashArray)){
$sectionlist[] = array('pid' => $v3['pid'], 'stid' => $v3['stid'], 'pmid' => $v3['pmid']);
$hashArray[] = md5($v3['pmid']);
}
}
}
//算法 ---> 把一个二维数组按内容转换成一个三维数组
$prolist = array();
$pmidlistArray = array();
if(!empty($sectionlist)){
$newlist = array();
$i = 0;
foreach($sectionlist as $key => $value){
$j = 0;
$newkey = $value['pid'];
$newst = $value['stid'];
$newpm = $value['pmid'];
array_push($pmidlistArray,$newpm);
if(!isset($newlist[$newkey])){
$newlist[$newkey]['i'] = $i;
$prolist[$i]['open'] = 0;
$prolist[$i]['pid'] = $newkey;
$prolist[$i]['pname'] = $this->project->getRowByPid($newkey)['pname'];
$prolist[$i]['stlist'] = array();
$newlist[$newkey]['st'][$newst]['j'] = $j;
$newlist[$newkey]['stnum'] = $j;
$prolist[$i]['stlist'][$j]['open'] = 0;
$prolist[$i]['stlist'][$j]['stid'] = $newst;
$prolist[$i]['stlist'][$j]['stname'] = $this->contractact->getRowByStid($newst)['stname'];
$prolist[$i]['stlist'][$j]['pmlist'] = array();
array_push($prolist[$i]['stlist'][$j]['pmlist'],array('open' => 0, 'pmid' => $newpm, 'pmname' => $this->actmeasure->getRowByPmid($newpm)['pmname']));
$i++;
}else{
$i2 = $newlist[$newkey]['i'];
if(!isset($newlist[$newkey]['st'][$newst])){
$newlist[$newkey]['st'][$newst]['j'] = $newlist[$newkey]['stnum']+1;
$j = $newlist[$newkey]['st'][$newst]['j'];
$newlist[$newkey]['stnum']++;
$prolist[$i2]['stlist'][$j]['stid'] = $newst;
$prolist[$i2]['stlist'][$j]['stname'] = $this->contractact->getRowByStid($newst)['stname'];
$prolist[$i2]['stlist'][$j]['pmlist'] = array();
array_push($prolist[$i2]['stlist'][$j]['pmlist'],array('open' => 0, 'pmid' => $newpm, 'pmname' => $this->actmeasure->getRowByPmid($newpm)['pmname']));
}else{
$j2 = $newlist[$newkey]['st'][$newst]['j'];
array_push($prolist[$i2]['stlist'][$j2]['pmlist'],array('open' => 0, 'pmid' => $newpm, 'pmname' => $this->actmeasure->getRowByPmid($newpm)['pmname']));
}
}
}
}
//获取需要您审批的签署表cid,pid,stid,pmid信息,并默认open所有节点
$cListmsg = $this->change->getNeedChangeNumbyUid($this->auth->getUid()) != 0 ? $this->change->getNeedChangeAllList($this->auth->getUid()) : '';
$pidArray = $stidArray = $pmidArray = array();
if(!empty($cListmsg)){
foreach($cListmsg as $clk => $clv){
array_push($pidArray,$clv['pid']);
array_push($stidArray,$clv['stid']);
array_push($pmidArray,$clv['pmid']);
}
}
$sql = '';
$pmid = isset($this->params['pmid']) ? $this->params['pmid'] : '';
$userchangepower = 1;
if(!empty($prolist)){
foreach($prolist as $pk => $pv){
if(in_array($pv['pid'], $pidArray)){
$prolist[$pk]['open'] = 2;
foreach($prolist[$pk]['stlist'] as $sk => $sv){
if(in_array($sv['stid'], $stidArray)){
$prolist[$pk]['stlist'][$sk]['open'] = 2;
foreach($prolist[$pk]['stlist'][$sk]['pmlist'] as $mk => $mv){
if(in_array($mv['pmid'], $pmidArray)){
$prolist[$pk]['stlist'][$sk]['pmlist'][$mk]['open'] = 2;
}
}
}
}
}
}
//存在标段则该标段加粗
if(!empty($pmid)){
$pmArray = $this->actmeasure->getRowByPmid($pmid);
foreach($prolist as $pk => $pv){
if($pmArray['pid'] == $pv['pid']){
$prolist[$pk]['open'] = 1;
foreach($prolist[$pk]['stlist'] as $sk => $sv){
if($pmArray['stid'] == $sv['stid']){
$prolist[$pk]['stlist'][$sk]['open'] = 1;
foreach($prolist[$pk]['stlist'][$sk]['pmlist'] as $mk => $mv){
if($pmArray['pmid'] == $mv['pmid']){
$prolist[$pk]['stlist'][$sk]['pmlist'][$mk]['open'] = 1;
break;
}
}
break;
}
}
break;
}
}
$userchangepower = $this->auth->getUid() == $pmArray['uid'] ? 1 : 0;
$this->data['pmArray'] = $pmArray;
}else{
$sql .= ' and pmid in ('.implode(',',$pmidlistArray).')';
}
}
//只有原报人才可以创建变更令和上报变更令
$this->data['userchangepower'] = $userchangepower;
$changelist = $this->change->getChangeListbyPmid($pmid,' 1'.$sql);
$this->data['firstuse'] = empty($changelist) ? 1 : 0;
$status = isset($this->params['status']) && is_numeric($this->params['status']) ? $this->params['status'] : 1;
$this->data['status'] = $status;
$this->data['prolist'] = $prolist;
$sql .= ' and cid in (SELECT `jl_change_audit`.cid FROM `jl_change_audit` WHERE `jl_change_audit`.uid='.$this->auth->getUid().' GROUP BY `jl_change_audit`.cid)';
$this->data['num1'] = $this->change->getNumbyMydetail($pmid,$this->auth->getUid());
$this->data['num2'] = $this->change->getNumbystatus($pmid,'uncheck','back',$sql);
$this->data['num3'] = $this->change->getNumbystatus($pmid,'checking','',$sql);
$this->data['num4'] = $this->change->getNumbystatus($pmid,'checked','',$sql);
$this->data['num5'] = $this->change->getNumbystatus($pmid,'checkno','',$sql);
$this->data['num6'] = $this->change->getNumbystatus($pmid,'del','',$sql);
//获取列表内容
Doo::loadHelper('DooPager');
$pagestr = !empty($pmid) ? '/tender/'.$pmid.'/status/'.$status : '/status/'.$status;
$totalArchive = $status != 1 ? ($status ==2 ? $this->change->getNumbystatus($pmid,'uncheck','back',$sql) : $this->change->getNumbystatus($pmid,$this->changeStatus[$status],'',$sql)) : $this->change->getNumbyMydetail($pmid,$this->auth->getUid());
$pager = new DooPager(Doo::conf()->APP_URL . 'change/index'.$pagestr.'/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 = $status != 1 ? ($status ==2 ? $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit,'back',$sql) : $this->change->getListbyStatus($pmid,$this->changeStatus[$status], $pager->limit,'',$sql)) : $this->change->getListbyMydetail($pmid,$this->auth->getUid(), $pager->limit);
if(isset($list) && !empty($list)){
foreach($list as $lk => $lv){
if($status == 3){
$checkman = $this->change->getOneAuditbystatus($lv['cid'],'checking');
$list[$lk]['checkman'] = $checkman['name'];
// $list[$lk]['checkstatus'] = $this->statusArray[$checkman['status']];
}
$list[$lk]['pmname'] = $this->actmeasure->getRowByPmid($lv['pmid'])['pmname'];
$list[$lk]['username'] = $this->auth->getRowByUid($lv['uid'])['name'];
$list[$lk]['changeCategory'] = $this->changeCategory[$lv['category']];
}
}
//uid
$this->data['uid'] = $this->auth->getUid();
$this->data['list'] = isset($list) ? $list : '';
$this->data['pmid'] = $pmid;
$this->data['pager'] = $pager->output;
$this->render('biangeng-poj', $this->data, TRUE);
}
//签约清单
public function dealBills(){
if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
$pmid = $this->params['pmid'];
$pmArray = $this->actmeasure->getRowByPmid($pmid);
if(empty($pmArray)){
exit('不存在此标段');
}
include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
$this->data['pmArray'] = $pmArray;
$list = $this->change->getChangeListbyPmid($pmid);
if(!empty($list)){
foreach($list as $k => $v){
$totalamount = floatval($v['unitprice'])*floatval($v['amount']);
$list[$k]['totalamount'] = todecimal($totalamount,2);
}
}
$this->data['list'] = $list;
$this->render('biangeng-dealbills', $this->data, TRUE);
}else{
exit('不存在此标段');
}
}
public function changeDetail(){
//获取变更令信息
if(isset($this->params['cid']) && is_numeric($this->params['cid'])) {
$cid = $this->params['cid'];
$changeArray = $this->change->getChangebyid($cid);
if(!empty($changeArray)){
$pmArray = $this->actmeasure->getRowByPmid($changeArray['pmid']);
if(empty($pmArray)){
exit('不存在此标段');
}
include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
$decimalnum = $this->getdecimal($changeArray['decimalnum']);
if(isset($_POST['table']) && $_POST['table'] == '_all'){
//获取所有清单列表数据,包括所有审批人
//获取用户审批变更清单的列表
$auditlist = $this->change->getChangeAuditbylastlist($cid,$changeArray['times']);
//获取清单,按清单编号排序
$clist = $this->change->getChangeAuditListbycid($cid);
$ototalnum = 0;
$ctotalnum = 0;
$stotalnum = 0;
$listtablehtml = '
清单编号 | 名称 | 单位 | 单价 | 原设计 | 申报变更增(+)减(-) | ';
$thhtml = '数量 |
金额 |
数量 |
金额 | ';
$utotalarr = array();
foreach ($auditlist as $ak => $av) {
$listtablehtml .= ''.$av['name'].' 审批 | ';
$thhtml .= '数量 | 金额 | ';
$utotalarr[$ak]['uid'] = $av['uid'];
$utotalarr[$ak]['status'] = $av['status'];
$utotalarr[$ak]['usum'] = 0;
}
$listtablehtml .= '
---|
'. $thhtml .'
';
if (!empty($clist)) {
foreach ($clist as $ck => $cv) {
$osum = floatval($cv['unitprice']) * floatval($cv['oamount']);
$osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
$clist[$ck]['osum'] = $osum;
$ototalnum += $osum;
$csum = todecimal(floatval($cv['unitprice']) * floatval($cv['camount']),$decimalnum['costdnum']);
$clist[$ck]['csum'] = $csum;
$ctotalnum += $csum;
$listtablehtml .= '' . $cv['lnum'] . ' | ' . $cv['lname'] . ' | ' . $cv['unit'] . ' | ' . tofloat($cv['unitprice']) . ' | ' . $cv['oamount'] . ' | ' . $osum . ' | ' . $cv['camount'] . ' | ' . $csum . ' | ';
$userjson = json_decode($cv['auditjson'], true);
$tdhtml = '';
foreach ($userjson as $uk => $uv) {
if($uv['ucamount'] != ''){
//update utotalarr value=>usum
foreach($utotalarr as $tk => $tv){
if($tv['uid'] == $uv['uid'] && $tv['status'] == 'checked'){
$usum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
$tdhtml .= ''.$uv['ucamount'].' | '.$usum.' | ';
$utotalarr[$tk]['usum'] = todecimal(floatval($utotalarr[$tk]['usum'])+$usum,$decimalnum['costdnum']);
break;
}elseif($tv['uid'] == $uv['uid']){
$tdhtml .= ' | | ';
break;
}
}
}else{
$tdhtml .= ' | | ';
}
}
$listtablehtml = $listtablehtml.$tdhtml.'
';
}
}
$listtablehtml .= '合计 | | | | | '.$ototalnum.' | | '.todecimal($ctotalnum,$decimalnum['costdnum']).' | ';
foreach($utotalarr as $tk => $tv){
$addtd = $tv['usum'] != 0 ? todecimal($tv['usum'],$decimalnum['costdnum']) : '';
$listtablehtml .= ' | '.$addtd.' | ';
}
$listtablehtml .= '
';
echo json_encode(array('code' => 200, 'html' => $listtablehtml));
die;
}
$this->data['pmArray'] = $pmArray;
$ctypelist = array();
if(!empty($changeArray['ctype'])){
$ctype = explode(',',$changeArray['ctype']);
foreach($ctype as $tk => $tv){
$ctypelist[$tk]['typename'] = $this->changeType[$tv];
}
}
$changeArray['ctypelist'] = $ctypelist;
$changeArray['categoryname'] = $this->changeCategory[$changeArray['category']];
$changeArray['naturename'] = $this->changeNature[$changeArray['cnature']];
$changeArray['companyname'] = $this->change->getCompanybyid($changeArray['companyid'])['name'];
$this->data['changeArray'] = $changeArray;
//获取清单,按清单编号排序
$clist = $this->change->getChangeAuditListbycid($cid);
$ototalnum = 0;
$ctotalnum = 0;
$stotalnum = 0;
if(!empty($clist)){
foreach($clist as $ck => $cv){
$osum = floatval($cv['unitprice'])*floatval($cv['oamount']);
$osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
$clist[$ck]['osum'] = $osum;
$ototalnum += $osum;
$csum = todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
$clist[$ck]['csum'] = $csum;
$ctotalnum += $csum;
if($cv['samount'] != ''){
$ssum = todecimal(floatval($cv['unitprice'])*floatval($cv['samount']),$decimalnum['costdnum']);
$clist[$ck]['ssum'] = $ssum;
$stotalnum += $ssum;
}else{
$clist[$ck]['ssum'] = '';
$clist[$ck]['samount'] = '';
}
}
}
$this->data['ototalnum'] = $ototalnum;
$this->data['ctotalnum'] = todecimal($ctotalnum,$decimalnum['costdnum']);
$this->data['stotalnum'] = $stotalnum != 0 ? todecimal($stotalnum,$decimalnum['costdnum']) : '';
$this->data['clist'] = $clist;
//获取附件
$attlist = $this->change->getChangeAttListbycid($cid);
$showattlist = array();
if(!empty($attlist)){
foreach($attlist as $k => $v){
//加密下载的id
$fid = $this->__hashids->encode($v['id']);
$showattlist[$k]['sort'] = $k+1;
$showattlist[$k]['downurl'] = '/change/file/download/'.$fid;
$showattlist[$k]['filename'] = $v['filename'].'.'.$v['fileext'];
$showattlist[$k]['time'] = date('Y-m-d H:i',$v['intime']);
$showattlist[$k]['size'] = $this->changefilesize($v['filesize']);
}
}
$this->data['attlist'] = $showattlist;
//获取审批流程列表
$auditlist = $this->change->getChangeAuditsbySort($cid);
if(!empty($auditlist)){
foreach($auditlist as $ak => $av){
$auditlist[$ak]['email'] = $this->auth->getEmail($av['uid']);
$auditlist[$ak]['lastusite'] = $this->change->getChangeAuditsMaxUsite($cid,$av['times'])['maxsite'];
}
}
$this->data['auditlist'] = $auditlist;
$this->render('biangeng-detail', $this->data, TRUE);
}
}
exit('参数有误');
}
public function changeNew(){
if(isset($this->params['pmid']) && is_numeric($this->params['pmid'])){
$pmid = $this->params['pmid'];
$pmArray = $this->actmeasure->getRowByPmid($pmid);
if(empty($pmArray)){
exit('不存在此标段');
}
if($this->auth->getUid() != $pmArray['uid']){
exit('不是原报人无法创建变更令');
}
//取标段位数设置
$decimalnum = $this->getdecimal($pmArray['cdecimalnum']);
$this->data['costdnum'] = $decimalnum['costdnum'];
$this->data['numberdnum'] = $decimalnum['numberdnum'];
include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
//表单提交
if(isset($_POST['pnum'])){
if(isset($_POST['checking'])){
if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
exit('参数缺失或为空');
}
if(empty($_POST['changelist']) && empty($_POST['changewhitelist'])){
exit('变更清单缺失');
}
}elseif(isset($_POST['uncheck'])){
if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname'])){
exit('参数缺失或为空');
}
}
//先添加生成变更令
$cid = $this->change->insertChangeMsg($pmArray,$this->auth->getUid(),$_POST);
if($cid){
//附件添加cid
if(!empty($_POST['changeatt'])){
Doo::loadModel('changeatt');
$attlist = explode(',', $_POST['changeatt']);
foreach($attlist as $ak => $av){
$changeAtt = new ChangeAtt();
$changeAtt->id = $av;
$changeAtt->cid = $cid;
$changeAtt->update();
}
}
//审批人添加
//先添加提交人到audit中
$site = 0;
Doo::loadModel('changeaudit');
$changeaudit2 = new ChangeAudit();
$userArray2 = $this->auth->getRowByUid($this->auth->getUid());
$changeaudit2->pid = $pmArray['pid'];
$changeaudit2->stid = $pmArray['stid'];
$changeaudit2->pmid = $pmArray['pmid'];
$changeaudit2->cid = $cid;
$changeaudit2->times = 0;
$changeaudit2->usite = $site;
$changeaudit2->usort = $site;
$changeaudit2->uid = $this->auth->getUid();
$changeaudit2->company = $userArray2['company'];
$changeaudit2->jobs = $userArray2['jobs'];
$changeaudit2->name = $userArray2['name'];
$changeaudit2->status = isset($_POST['checking']) ? 'checked' : 'checking';
$changeaudit2->sintime = isset($_POST['checking']) ? time() : '';
$changeaudit2->insert();
$site++;
$auditArr = array();
if(!empty($_POST['changeaudit'])){
$auditlist = explode(',', $_POST['changeaudit']);
foreach($auditlist as $uk => $uv){
$userArray = $this->auth->getRowByUid($uv);
$changeaudit = new ChangeAudit();
$changeaudit->pid = $pmArray['pid'];
$changeaudit->stid = $pmArray['stid'];
$changeaudit->pmid = $pmArray['pmid'];
$changeaudit->cid = $cid;
$changeaudit->times = 0;
$changeaudit->usite = $site;
$changeaudit->usort = $site;
$changeaudit->uid = $uv;
$changeaudit->company = $userArray['company'];
$changeaudit->jobs = $userArray['jobs'];
$changeaudit->name = $userArray['name'];
$changeaudit->status = (isset($_POST['checking']) && $uk == 0) ? 'checking' : 'uncheck';
$changeaudit->insert();
$site++;
array_push($auditArr,array('uid' => $uv, 'ucamount' => ''));
}
}
//清单添加,不分顺序,最终展示按清单编号排序
Doo::loadModel('changeauditlist');
$total = 0;
if(!empty($_POST['changelist'])){
$clist = explode(',',$_POST['changelist']);
foreach($clist as $ck => $cv){
$clistid = explode('->',$cv)[0];
$clistarr = explode(';',explode('->',$cv)[1]);
if(!empty($clistarr[0]) && !empty($clistarr[1]) && is_numeric($clistarr[3]) && is_numeric($clistarr[4]) && is_numeric($clistarr[5])){
$changelistArr = $this->change->getChangeListbyid($clistid);
if(!empty($changelistArr)){
$total += todecimal(floatval($changelistArr['unitprice'])*floatval($clistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = $clistid;
$cauditlist->lnum = $changelistArr['lnum'];
$cauditlist->lname = $changelistArr['lname'];
$cauditlist->unit = $changelistArr['unit'];
$cauditlist->unitprice = $changelistArr['unitprice'];
$cauditlist->oamount = $changelistArr['amount'];
$cauditlist->camount = $clistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}else{
$total += todecimal(floatval($clistarr[3])*floatval($clistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = 0;
$cauditlist->lnum = $clistarr[0];
$cauditlist->lname = $clistarr[1];
$cauditlist->unit = $clistarr[2];
$cauditlist->unitprice = $clistarr[3];
$cauditlist->oamount = $clistarr[4];
$cauditlist->camount = $clistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}
}
}
}
if(!empty($_POST['changewhitelist'])){
$wlist = explode(',',$_POST['changewhitelist']);
foreach($wlist as $wk => $wv){
$wlistarr = explode(';',explode('->',$wv)[1]);
if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
$total += todecimal(floatval($wlistarr[3])*floatval($wlistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = 0;
$cauditlist->lnum = $wlistarr[0];
$cauditlist->lname = $wlistarr[1];
$cauditlist->unit = $wlistarr[2];
$cauditlist->unitprice = $wlistarr[3];
$cauditlist->oamount = $wlistarr[4];
$cauditlist->camount = $wlistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}
}
}
//变更令添加变更总金额
$this->change->updateChangeTotalamount($cid,todecimal($total,$decimalnum['costdnum']));
$status = isset($_POST['uncheck']) ? 2 : 3;
return '/change/index/tender/'.$pmArray['pmid'].'/status/'.$status;
}else{
exit('添加到变更令失败');
}
}
$this->data['companylist'] = $this->change->getCompanyList($pmid);
$list = $this->change->getChangeListbyPmid($pmid);
if(!empty($list)){
foreach($list as $k => $v){
$totalamount = floatval($v['unitprice'])*floatval($v['amount']);
$list[$k]['totalamount'] = todecimal($totalamount,2);
$list[$k]['index'] = $k+1;
}
}
//获取标段审批人列表
$auditactlist = $this->measureauditact->getUserAuditID($this->params['pmid']);
//获取原报人
$measureArray = $this->actmeasure->getRowByPmid($this->params['pmid']);
$inside = 1;
$userlist = array();
$useridlist = array();
if(!empty($auditactlist)){
foreach($auditactlist as $k => $v){
if($measureArray['uid'] == $v['auditoruid']){
$inside = 0;
}
$usermsg = $this->auth->getRowByUid($v['auditoruid']);
$userlist[$k]['userid'] = $usermsg['userid'];
$userlist[$k]['name'] = $usermsg['name'];
$userlist[$k]['jobs'] = $usermsg['jobs'];
$userlist[$k]['avatar'] = $usermsg['avatar'];
$userlist[$k]['company'] = $usermsg['company'];
$userlist[$k]['email'] = $this->auth->getEmail($v['auditoruid']);
array_push($useridlist, $usermsg['userid']);
}
}
if($inside){
$usermsg2 = $this->auth->getRowByUid($measureArray['uid']);
$orginArray['userid'] = $measureArray['uid'];
$orginArray['avatar'] = $usermsg2['avatar'];
$orginArray['name'] = $usermsg2['name'];
$orginArray['jobs'] = $usermsg2['jobs'];
$orginArray['company'] = $usermsg2['company'];
$orginArray['email'] = $this->auth->getEmail($measureArray['uid']);
array_push($userlist,$orginArray);
array_push($useridlist, $usermsg2['userid']);
}
$this->data['pmArray'] = $pmArray;
$this->data['userlist'] = $userlist;
$this->data['useridlist'] = implode(',',$useridlist);
$userArray = $this->auth->getRowByUid($this->auth->getUid());
$userArray['email'] = $this->auth->getEmail($this->auth->getUid());
$this->data['userArray'] = $userArray;
$this->data['list'] = $list;
$this->data['year'] = date('Y',time());
//获取此标段的最新一个变更令申请编号,没有则赋值为 变更申请编号001
$lastnum = $this->change->getLastChangePnum($this->params['pmid']);
if(!empty($lastnum)){
//正则获取申请编号
$pattern = '/(?!\d{3,6})(\D|\d)|19\d{2}|20\d{2}|\d{3,6}/i';
preg_match_all($pattern, $lastnum['pnum'],$str);
$arr = $str[0];
$pnum = '';
for($i = 0; $i < count($arr); $i++){
if(mb_strlen($arr[$i],'UTF8') > 1){
if(preg_match('/19\d{2}|20\d{2}/i',$arr[$i])){
$pnum .= $arr[$i];
}else{
$pnum .= $this->makenum($arr[$i]);
}
}else{
$pnum .= $arr[$i];
}
}
$this->data['pnum'] = $pnum;
}else{
$this->data['pnum'] = '变更申请编号001';
}
$cfuhashids = new Hashids\Hashids('cfileupload', 15);
$this->data['uid'] = $this->auth->getUid();
$verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
$this->data['verification'] = $verification;
$this->render('biangeng-new', $this->data, TRUE);
}else{
exit('不存在此标段');
}
}
//生成和num相同位数的并加一 001 -》 002, 0023 -》 0024
function makenum($num){
$len = mb_strlen($num,'UTF8'); //获取原位数
$intnum = intval($num)+1; //获取int
$len2 = mb_strlen($intnum,'UTF8'); //获取int位数
if($len > $len2){
$arr = Array();
for($i = 0; $i < $len-$len2; $i++){
$arr[$i] = '0';
}
$intnum = implode('',$arr).$intnum;
}
return $intnum;
}
public function changeApproval(){
if (isset($this->params['cid']) && is_numeric($this->params['cid'])) {
$cid = $this->params['cid'];
$changeArray = $this->change->getChangebyid($cid);
if (!empty($changeArray)) {
//判断当前变更令是否处于你审批状态,否 则显示详情页
$userchange = $this->change->getOneChangeAudit($this->auth->getUid(), $cid, $changeArray['times']);
if ($changeArray['status'] != 'checking' || empty($userchange) || $userchange['status'] != 'checking') {
return '/change/detail/' . $cid;
die;
}
$pmArray = $this->actmeasure->getRowByPmid($changeArray['pmid']);
if (empty($pmArray)) {
exit('不存在此标段');
}
include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
$decimalnum = $this->getdecimal($changeArray['decimalnum']);
// $step = $this->makestep($decimalnum['numberdnum']);
//审批结果
if(isset($_POST['approval']) && is_numeric($_POST['approval'])){
$status = $_POST['status'];
Doo::loadModel('change');
Doo::loadModel('changeaudit');
Doo::loadModel('changeauditlist');
$sintime = time();
if($status == 'checked'){
//通过
$this->change->updateChangeAudit($this->auth->getUid(),$cid, $changeArray['times'], 'checked',$_POST['desc'],$sintime,$_POST['clist']);
//更新audit_list
$clist = explode(',',$_POST['clist']);
$totalamount = 0;
foreach($clist as $k => $v){
$lid = explode('_',$v)[0];
$ucamount = explode('_',$v)[1] != '' ? explode('_',$v)[1] : 0;
$oneauditlist = $this->change->getOneChangeAuditList($lid);
$totalamount += todecimal(floatval($oneauditlist['unitprice'])*floatval($ucamount),$decimalnum['costdnum']);
$auditjson = json_decode($oneauditlist['auditjson'],true);
foreach($auditjson as $ak => $av){
if($av['uid'] == $this->auth->getUid()){
$auditjson[$ak]['ucamount'] = $ucamount;
}
}
$cauditlist = new ChangeAuditList();
$cauditlist->id = $lid;
$cauditlist->samount = $ucamount;
$cauditlist->auditjson = json_encode($auditjson);
$cauditlist->update();
}
//更新change总金额
$this->change->updateChangeTotalamount($cid,todecimal($totalamount,$decimalnum['costdnum']));
//更改下一个审批状态或结束审批
$audit = new ChangeAudit();
$auditlist = $audit->getChangeAuditbylastlist($cid,$changeArray['times']);
$flag = true;
foreach($auditlist as $uk => $uv){
if($uv['status'] == 'uncheck'){
$changeaudit = new ChangeAudit();
$changeaudit->id = $uv['id'];
$changeaudit->status = 'checking';
$changeaudit->update();
$flag = false;
break;
}
}
//审批完成,更改change状态
if($flag){
$changes = new Change();
$changes->cid = $cid;
$changes->bnum = isset($_POST['bnum']) ? $_POST['bnum'] : $changeArray['pnum'];
$changes->status = 'checked';
$changes->sintime = $sintime;
$changes->update();
}
}elseif($status == 'back'){
if(isset($_POST['back']) && $_POST['back'] == 1 && !empty($_POST['lastuid'])){
//退回到上一个审批人
$lastuid = $_POST['lastuid'];
//新增本次审批人,设为未审批并排序加2;
$auditArray2 = $this->change->getOneChangeAudit($this->auth->getUid(),$cid,$changeArray['times']);
//改变当前状态
$this->change->updateChangeAudit($this->auth->getUid(),$cid, $changeArray['times'], 'back',$_POST['desc'],$sintime);
$changeaudit2 = new ChangeAudit();
$changeaudit2->insertChangeAudit($auditArray2,'uncheck',$auditArray2['usort']+2);
//新增上一个审批人,设为审批中并排序加1;
$changeaudit = new ChangeAudit();
$auditArray = $changeaudit->getOneChangeAudit($lastuid,$cid,$changeArray['times']);
$changeaudit->insertChangeAudit($auditArray,'checking',$auditArray2['usort']+1);
//把接下未审批的审批人排序都加2
$changeaudit3 = new ChangeAudit();
$auditlist = $changeaudit3->getChangeAuditsbycidtimeWithout($cid,$changeArray['times'],$lastuid,$this->auth->getUid());
if(!empty($auditlist)){
foreach($auditlist as $ak => $av){
$changeaudit4 = new ChangeAudit();
$changeaudit4->id = $av['id'];
$changeaudit4->usort = $av['usort']+2;
$changeaudit4->update();
}
}
//获取上上个审批通过人uid
if($auditArray2['usite'] > 2){
$lastlastuid = $changeaudit3->getChangeAuditbycidsitetime($cid,$changeArray['times'],$auditArray2['usite']-2)['uid'];
}else{
$lastlastuid = '';
}
//更新audit_list
$clist = $this->change->getChangeAuditListbycid($cid);
$totalamount = 0;
foreach($clist as $ck => $cv){
$auditjson = json_decode($cv['auditjson'],true);
$samount = '';
if(empty($lastlastuid)){
$totalamount += todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
}
foreach($auditjson as $jk => $jv){
if(!empty($lastlastuid) && $jv['uid'] == $lastlastuid){
$totalamount += todecimal(floatval($cv['unitprice'])*floatval($jv['ucamount']),$decimalnum['costdnum']);
$samount = $jv['ucamount'];
}
// if($jv['uid'] == $lastuid){
// $auditjson[$jk]['ucamount'] = '';
// }
}
$cauditlist = new ChangeAuditList();
$cauditlist->id = $cv['id'];
$cauditlist->samount = $samount;
// $cauditlist->auditjson = json_encode($auditjson);
$cauditlist->update();
}
//更新change总金额
$this->change->updateChangeTotalamount($cid,todecimal($totalamount,$decimalnum['costdnum']));
}elseif(isset($_POST['back']) && $_POST['back'] == 2){
//退回到提交人,重新上报
$this->change->updateChangeAudit($this->auth->getUid(),$cid, $changeArray['times'], 'backnew',$_POST['desc'],$sintime);
$changeaudit = new ChangeAudit();
//获取最后一次上报的上报人信息
$auditArray = $changeaudit->getChangeAuditLastUser($cid,0);
//获取uid最新上报人信息
$userArray = $this->auth->getRowByUid($auditArray['uid']);
$auditArray['company'] = $userArray['company'];
$auditArray['jobs'] = $userArray['jobs'];
$auditArray['name'] = $userArray['name'];
//获取最后一个审批人的usort
$auditArray2 = $changeaudit->getChangeAuditLastUser($cid);
//新建新的提交人,并把time+1
$changeaudit->insertChangeAudit($auditArray,'checking',$auditArray2['usort']+1,$auditArray['times']+1);
//更新audit_list
$clist = $this->change->getChangeAuditListbycid($cid);
$totalamount = 0;
foreach($clist as $ck => $cv){
$totalamount += todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->id = $cv['id'];
$cauditlist->samount = '';
$cauditlist->auditjson = '';
$cauditlist->update();
}
//更新change
$changes = new Change();
$changes->cid = $cid;
$changes->status = 'back';
$changes->totalamount = todecimal($totalamount,$decimalnum['costdnum']);
$changes->update();
}
}elseif($status == 'checkno'){
//不通过
$this->change->updateChangeAudit($this->auth->getUid(),$cid, $changeArray['times'], 'checkno',$_POST['desc'],$sintime);
$changes = new Change();
$changes->cid = $cid;
$changes->status = 'checkno';
$changes->sintime = time();
$changes->update();
}
return '/change/detail/'. $cid;
}
$this->data['pmArray'] = $pmArray;
$ctypelist = array();
if (!empty($changeArray['ctype'])) {
$ctype = explode(',', $changeArray['ctype']);
foreach ($ctype as $tk => $tv) {
$ctypelist[$tk]['typename'] = $this->changeType[$tv];
}
}
$changeArray['ctypelist'] = $ctypelist;
$changeArray['categoryname'] = $this->changeCategory[$changeArray['category']];
$changeArray['naturename'] = $this->changeNature[$changeArray['cnature']];
$changeArray['companyname'] = $this->change->getCompanybyid($changeArray['companyid'])['name'];
$this->data['changeArray'] = $changeArray;
//获取用户审批变更清单的列表
$auditlist = $this->change->getChangeAuditbylastlist($cid,$changeArray['times']);
//获取清单,按清单编号排序
$clist = $this->change->getChangeAuditListbycid($cid);
$ototalnum = 0;
$ctotalnum = 0;
$stotalnum = 0;
$listtablehtml = '
清单编号 | 名称 | 单位 | 单价 | 原设计 | 申报变更增(+)减(-) | ';
$thhtml = '数量 |
金额 |
数量 |
金额 | ';
$utotalarr = array();
$checkinguid = 0;
$firstcheck = 0;
$lastid = 0;
foreach ($auditlist as $ak => $av) {
$listtablehtml .= ''.$av['name'].' 审批 | ';
$thhtml .= '数量 | 金额 | ';
$utotalarr[$ak]['uid'] = $av['uid'];
$utotalarr[$ak]['status'] = $av['status'];
$utotalarr[$ak]['usum'] = 0;
if($av['status'] == 'checking'){
$checkinguid = $av['uid'];
if($ak == 0){
$firstcheck = 1;
}else{
$lastid = $auditlist[$ak-1]['uid'];
}
}
}
$this->data['lastuid'] = $lastid;
//获取上一个审批人名称和提交人名称
if($lastid != ''){
$this->data['lastusername'] = $this->auth->getRowByUid($lastid)['name'];
}
$this->data['createusername'] = $this->auth->getRowByUid($changeArray['uid'])['name'];
$this->data['firstcheck'] = $firstcheck;
$listtablehtml .= '
---|
'. $thhtml .'
';
if (!empty($clist)) {
foreach ($clist as $ck => $cv) {
$osum = floatval($cv['unitprice']) * floatval($cv['oamount']);
$osum = $cv['lid'] != 0 ? todecimal($osum,$decimalnum['costdnum']) : $osum;
$clist[$ck]['osum'] = $osum;
$ototalnum += $osum;
$csum = todecimal(floatval($cv['unitprice']) * floatval($cv['camount']),$decimalnum['costdnum']);
$clist[$ck]['csum'] = $csum;
$ctotalnum += $csum;
$listtablehtml .= '' . $cv['lnum'] . ' | ' . $cv['lname'] . ' | ' . $cv['unit'] . ' | ' . tofloat($cv['unitprice']) . ' | ' . $cv['oamount'] . ' | ' . $osum . ' | ' . $cv['camount'] . ' | ' . $csum . ' | ';
$userjson = json_decode($cv['auditjson'], true);
$tdhtml = '';
foreach ($userjson as $uk => $uv) {
if ($uv['uid'] == $checkinguid) {
if($uv['ucamount'] != '') {
$ssum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
$samount = $uv['ucamount'];
$stotalnum += $ssum;
}else if ($cv['samount'] != ''){
$ssum = todecimal(floatval($cv['unitprice'])*floatval($cv['samount']),$decimalnum['costdnum']);
$samount = $cv['samount'];
$stotalnum += $ssum;
}else{
$ssum = $csum;
$samount = $cv['camount'];
$stotalnum += $ssum;
}
$tdhtml .= ' | '.$ssum.' | ';
}else{
if($uv['ucamount'] != ''){
$usum = todecimal(floatval($cv['unitprice'])*floatval($uv['ucamount']),$decimalnum['costdnum']);
$tdhtml .= ''.$uv['ucamount'].' | '.$usum.' | ';
//update utotalarr value=>usum
foreach($utotalarr as $tk => $tv){
if($tv['uid'] == $uv['uid']){
$utotalarr[$tk]['usum'] = todecimal(floatval($utotalarr[$tk]['usum'])+$usum,$decimalnum['costdnum']);
break;
}
}
}else{
$tdhtml .= ' | | ';
}
}
}
$listtablehtml = $listtablehtml.$tdhtml.'
';
}
}
$listtablehtml .= '合计 | | | | | '.$ototalnum.' | | '.todecimal($ctotalnum,$decimalnum['costdnum']).' | ';
foreach($utotalarr as $tk => $tv){
$addtd = $tv['status'] == 'checking' ? todecimal($stotalnum,$decimalnum['costdnum']) : ($tv['usum'] != 0 ? todecimal($tv['usum'],$decimalnum['costdnum']) : '');
$checkinghtml = $tv['status'] == 'checking' ? ' class="utotalnum"': '';
$listtablehtml .= ' | '.$addtd.' | ';
}
$listtablehtml .= '
';
$this->data['listtablehtml'] = $listtablehtml;
//uid
$this->data['userid'] = $this->auth->getUid();
//cid
$this->data['cid'] = $cid;
//获取附件
$attlist = $this->change->getChangeAttListbycid($cid);
$showattlist = array();
if (!empty($attlist)) {
foreach ($attlist as $k => $v) {
//加密下载的id
$fid = $this->__hashids->encode($v['id']);
$showattlist[$k]['fid'] = $v['id'];
$showattlist[$k]['uid'] = $v['uid'];
$showattlist[$k]['sort'] = $k + 1;
$showattlist[$k]['downurl'] = '/change/file/download/' . $fid;
$showattlist[$k]['filename'] = $v['filename'] . '.' . $v['fileext'];
$showattlist[$k]['time'] = date('Y-m-d H:i', $v['intime']);
$showattlist[$k]['size'] = $this->changefilesize($v['filesize']);
}
}
$this->data['attlist'] = $showattlist;
$auditlist2 = $this->change->getChangeAuditsbySort($cid);
if(!empty($auditlist2)){
foreach($auditlist2 as $ak => $av){
$auditlist2[$ak]['email'] = $this->auth->getEmail($av['uid']);
$auditlist2[$ak]['lastusite'] = $this->change->getChangeAuditsMaxUsite($cid,$av['times'])['maxsite'];
}
}
$this->data['auditlist'] = $auditlist2;
//判断是否为本标段终审人
$auditArray = $this->change->getChangeAuditLastUser($cid);
$this->data['isenduser'] = $auditArray['uid'] == $this->auth->getUid() ? 1 : 0;
$cfuhashids = new Hashids\Hashids('cfileupload', 15);
$this->data['uid'] = $this->auth->getUid();
$verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
$this->data['verification'] = $verification;
$this->render('biangeng-approval', $this->data, TRUE);exit;
}
}
exit('参数有误');
}
//重新上报、修改变更内容
public function changeReport(){
if(isset($this->params['cid']) && is_numeric($this->params['cid'])){
$cid = $this->params['cid'];
$changeArray = $this->change->getChangebyid($cid);
//判断当前变更令是否处于上报或重新上报状态,否 则显示详情页
if (!empty($changeArray) && ($changeArray['status'] == 'back' || $changeArray['status'] == 'uncheck') && $changeArray['uid'] == $this->auth->getUid() ) {
$pmArray = $this->actmeasure->getRowByPmid($changeArray['pmid']);
if (empty($pmArray)) {
exit('不存在此标段');
}
if($this->auth->getUid() != $pmArray['uid']){
exit('不是原报人无法修改或重新上报变更令');
}
include (DOO::conf()->SITE_PATH . 'protected/plugin/TemplateTag.php');
//取标段位数设置
$decimalnum = $this->getdecimal($changeArray['decimalnum']);
$this->data['costdnum'] = $decimalnum['costdnum'];
$this->data['numberdnum'] = $decimalnum['numberdnum'];
//删除变更令
if(isset($_POST['delete']) && !empty($_POST['delete']) && $changeArray['status'] == 'uncheck'){
//需要删除变更令表,清单表,变更审批人表,附件表及附件
$this->change->delChangebyCid($cid);
$this->change->delChangeAuditListbyCid($cid);
$this->change->delChangeAuditbyCid($cid);
$changeAttList = $this->change->getChangeAttListbycid($cid);
if(!empty($changeAttList)){
Doo::loadModel('changeatt');
include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
$pathf = DOO::conf()->SITE_PATH;
foreach($changeAttList as $k => $v){
$this->IoHandler = new IoHandler();
$this->IoHandler->DeleteFile($pathf.$v['filepath']);
$changeAtt = new ChangeAtt();
$changeAtt->delChangeAttbyFid($v['id']);
}
}
return '/change/index/tender/'.$pmArray['pmid'];
}
//表单提交
if(isset($_POST['pnum'])){
if(isset($_POST['status']) && $_POST['status'] == 'checking'){
if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname']) || !isset($_POST['description']) || empty($_POST['description']) || !isset($_POST['changeaudit']) || empty($_POST['changeaudit']) || !isset($_POST['changelist']) || !isset($_POST['changewhitelist'])){
exit('参数缺失或为空');
}
if(empty($_POST['changelist']) && empty($_POST['changewhitelist'])){
exit('变更清单缺失');
}
}elseif(isset($_POST['status']) && $_POST['status'] == 'save'){
if(empty($_POST['pnum']) || !isset($_POST['pname']) || empty($_POST['pname'])){
exit('参数缺失或为空');
}
}
Doo::loadModel('change');
Doo::loadModel('changeaudit');
Doo::loadModel('changeauditlist');
//获取提交人audit表信息
$creatorArray = $this->change->getChangeAuditLastUser($cid,0);
$sort = $creatorArray['usort']+1;
//先修改成变更令
$status = isset($_POST['status']) && $_POST['status'] == 'checking' ? 'checking' : '';
$this->change->updateChangeMsg($cid,$_POST,$creatorArray['times'],$status);
if($status){
//再修改提交人上报信息
$changeaudit2 = new ChangeAudit();
$changeaudit2->id = $creatorArray['id'];
$changeaudit2->status = 'checked';
$changeaudit2->sintime = time();
$changeaudit2->update();
}
//附件添加cid
if(!empty($_POST['changeatt'])){
Doo::loadModel('changeatt');
$attlist = explode(',', $_POST['changeatt']);
foreach($attlist as $ak => $av){
$changeAtt = new ChangeAtt();
$changeAtt->id = $av;
$changeAtt->cid = $cid;
$changeAtt->update();
}
}
//先删除所有审批人列,再重新添加
$caudit = new ChangeAudit();
$caudit->deleteChangeAuditthisTime($cid,$creatorArray['times']);
//审批人添加
$auditArr = array();
if(!empty($_POST['changeaudit'])){
$auditlist = explode(',', $_POST['changeaudit']);
$site = 1;
foreach($auditlist as $uk => $uv){
$userArray = $this->auth->getRowByUid($uv);
$changeaudit = new ChangeAudit();
$changeaudit->pid = $pmArray['pid'];
$changeaudit->stid = $pmArray['stid'];
$changeaudit->pmid = $pmArray['pmid'];
$changeaudit->cid = $cid;
$changeaudit->times = $creatorArray['times'];
$changeaudit->usite = $site;
$changeaudit->usort = $sort;
$changeaudit->uid = $uv;
$changeaudit->company = $userArray['company'];
$changeaudit->jobs = $userArray['jobs'];
$changeaudit->name = $userArray['name'];
$changeaudit->status = (isset($_POST['status']) && $_POST['status'] == 'checking' && $uk == 0) ? 'checking' : 'uncheck';
$changeaudit->insert();
$sort++;
$site++;
array_push($auditArr,array('uid' => $uv, 'ucamount' => ''));
}
}
//先删除变更令所有清单列,再重新添加
$cauditlist2 = new ChangeAuditList();
$cauditlist2->delChangeAuditListbyCid($cid);
//清单添加,不分顺序,最终展示按清单编号排序
$total = 0;
if(!empty($_POST['changelist'])){
$clist = explode(',',$_POST['changelist']);
foreach($clist as $ck => $cv){
$clistid = explode('->',$cv)[0];
$clistarr = explode(';',explode('->',$cv)[1]);
if(!empty($clistarr[0]) && !empty($clistarr[1]) && is_numeric($clistarr[3]) && is_numeric($clistarr[4]) && is_numeric($clistarr[5])){
$changelistArr = $this->change->getChangeListbyid($clistid);
if(!empty($changelistArr)){
$total += todecimal(floatval($changelistArr['unitprice'])*floatval($clistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = $clistid;
$cauditlist->lnum = $changelistArr['lnum'];
$cauditlist->lname = $changelistArr['lname'];
$cauditlist->unit = $changelistArr['unit'];
$cauditlist->unitprice = $changelistArr['unitprice'];
$cauditlist->oamount = $changelistArr['amount'];
$cauditlist->camount = $clistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}else{
$total += todecimal(floatval($clistarr[3])*floatval($clistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = 0;
$cauditlist->lnum = $clistarr[0];
$cauditlist->lname = $clistarr[1];
$cauditlist->unit = $clistarr[2];
$cauditlist->unitprice = $clistarr[3];
$cauditlist->oamount = $clistarr[4];
$cauditlist->camount = $clistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}
}
}
}
if(!empty($_POST['changewhitelist'])){
$wlist = explode(',',$_POST['changewhitelist']);
foreach($wlist as $wk => $wv){
$wlistarr = explode(';',explode('->',$wv)[1]);
if(!empty($wlistarr[0]) && !empty($wlistarr[1]) && is_numeric($wlistarr[3]) && is_numeric($wlistarr[4]) && is_numeric($wlistarr[5])){
$total += todecimal(floatval($wlistarr[3])*floatval($wlistarr[5]),$decimalnum['costdnum']);
$cauditlist = new ChangeAuditList();
$cauditlist->pid = $pmArray['pid'];
$cauditlist->stid = $pmArray['stid'];
$cauditlist->pmid = $pmArray['pmid'];
$cauditlist->cid = $cid;
$cauditlist->lid = 0;
$cauditlist->lnum = $wlistarr[0];
$cauditlist->lname = $wlistarr[1];
$cauditlist->unit = $wlistarr[2];
$cauditlist->unitprice = $wlistarr[3];
$cauditlist->oamount = $wlistarr[4];
$cauditlist->camount = $wlistarr[5];
$cauditlist->auditjson = json_encode($auditArr);
$cauditlist->insert();
}
}
}
//变更令添加变更总金额
$this->change->updateChangeTotalamount($cid,todecimal($total,$decimalnum['costdnum']));
$status = isset($_POST['status']) && $_POST['status'] == 'checking' ? 3 : 2;
return '/change/index/tender/'.$pmArray['pmid'].'/status/'.$status;
}
$this->data['companylist'] = $this->change->getCompanyList($pmArray['pmid']);
$list = $this->change->getChangeListbyPmid($pmArray['pmid']);
if(!empty($list)){
foreach($list as $k => $v){
$totalamount = floatval($v['unitprice'])*floatval($v['amount']);
$list[$k]['totalamount'] = todecimal($totalamount,2);
$list[$k]['index'] = $k+1;
}
}
//获取标段审批人列表
$auditactlist = $this->measureauditact->getUserAuditID($pmArray['pmid']);
//获取原报人
$measureArray = $this->actmeasure->getRowByPmid($pmArray['pmid']);
$inside = 1;
$userlist = array();
$useridlist = array();
if(!empty($auditactlist)){
foreach($auditactlist as $k => $v){
if($measureArray['uid'] == $v['auditoruid']){
$inside = 0;
}
$usermsg = $this->auth->getRowByUid($v['auditoruid']);
$userlist[$k]['userid'] = $usermsg['userid'];
$userlist[$k]['name'] = $usermsg['name'];
$userlist[$k]['jobs'] = $usermsg['jobs'];
$userlist[$k]['avatar'] = $usermsg['avatar'];
$userlist[$k]['company'] = $usermsg['company'];
$userlist[$k]['email'] = $this->auth->getEmail($v['auditoruid']);
array_push($useridlist, $usermsg['userid']);
}
}
if($inside){
$usermsg2 = $this->auth->getRowByUid($measureArray['uid']);
$orginArray['userid'] = $measureArray['uid'];
$orginArray['avatar'] = $usermsg2['avatar'];
$orginArray['name'] = $usermsg2['name'];
$orginArray['jobs'] = $usermsg2['jobs'];
$orginArray['company'] = $usermsg2['company'];
$orginArray['email'] = $this->auth->getEmail($measureArray['uid']);
array_push($userlist,$orginArray);
array_push($useridlist, $usermsg2['userid']);
}
//获取已选审批人列表,生成changeaudit和selectauditlist,并把未在常用审批人的uid找出来
$auditlist = $this->change->getChangeAuditsbycidtime($cid,$changeArray['times']);
$changeauditList = array();
$selectauditlist = array();
foreach($auditlist as $adk => $adv){
$email = $this->auth->getEmail($adv['uid']);
$auditlist[$adk]['email'] = $email;
$auditlist[$adk]['lastusite'] = count($auditlist);
array_push($changeauditList,$adv['uid']);
$addauditlist = $adv['uid'].'_'.$adv['name'].'_'.$adv['company'].'_'.$adv['jobs'].'_'.$email;
array_push($selectauditlist,$addauditlist);
// if(!in_array($adv['uid'],$useridlist)){
// $auditlist[$adk]['email'] = $this->auth->getEmail($adv['uid']);
// array_push($useridlist,$adv['uid']);
// }
$auditlist[$adk]['islast'] = $adk+1 == count($auditlist) ? 1 : 0;
}
$this->data['changeaudit'] = implode(',',$changeauditList);
$this->data['selectauditlist'] = implode('->',$selectauditlist);
$this->data['auditlist'] = $auditlist;
//获取已选清单列表,已选清单id列表,属于签约清单的changelist,和changewhitelist
$clist = $this->change->getChangeAuditListbycid($cid);
$ototalnum = 0;
$ctotalnum = 0;
$changeidlist = array();
$changelist = array();
$changewhitelist = array();
$changeRepeatList = array();
$changeRepeatWhiteList = array();
if(!empty($clist)){
$addnum = 1;
foreach($clist as $ck => $cv){
$osum = floatval($cv['unitprice'])*floatval($cv['oamount']);
$osum = todecimal($osum,2);
$csum = todecimal(floatval($cv['unitprice'])*floatval($cv['camount']),$decimalnum['costdnum']);
$clist[$ck]['csum'] = $csum;
$ctotalnum += $csum;
//判断这条清单是否已被替换或删除,有则变成空白清单显示
$oneclist = $this->change->getChangeListbyid($cv['lid']);
if($cv['lid'] != 0 && !empty($oneclist)){
array_push($changeidlist,$cv['lid']);
array_push($changelist,$cv['lid'].'->'.$cv['lnum'].';'.$cv['lname'].';'.$cv['unit'].';'.$cv['unitprice'].';'.$cv['oamount'].';'.$cv['camount']);
$clist[$ck]['iswhite'] = 0;
array_push($changeRepeatList, $cv['lnum'].'|'.$cv['lname'].'|'.$cv['unit'].'|'.$cv['unitprice']);
}else{
$clist[$ck]['add'] = $addnum;
array_push($changewhitelist,$addnum.'->'.$cv['lnum'].';'.$cv['lname'].';'.$cv['unit'].';'.$cv['unitprice'].';'.$cv['oamount'].';'.$cv['camount']);
$addnum++;
$clist[$ck]['changeunit'] = $this->changeUnit;
$clist[$ck]['iswhite'] = 1;
array_push($changeRepeatWhiteList, $cv['lnum'].'|'.$cv['lname'].'|'.$cv['unit'].'|'.$cv['unitprice']);
}
$clist[$ck]['osum'] = $osum;
$ototalnum += $osum;
}
}
$this->data['changelist'] = implode(',',$changelist);
$this->data['changewhitelist'] = implode(',',$changewhitelist);
$this->data['changeidlist'] = implode(',',$changeidlist);
$this->data['ototalnum'] = $ototalnum;
$this->data['ctotalnum'] = todecimal($ctotalnum,$decimalnum['costdnum']);
$this->data['clist'] = $clist;
$this->data['changeRepeatList'] = implode(',',$changeRepeatList);
$this->data['changeRepeatWhiteList'] = implode(',',$changeRepeatWhiteList);
//获取已添加的附件列表
$attlist = $this->change->getChangeAttListbycid($cid);
$showattlist = array();
if (!empty($attlist)) {
foreach ($attlist as $k => $v) {
//加密下载的id
$fid = $this->__hashids->encode($v['id']);
$showattlist[$k]['fid'] = $v['id'];
$showattlist[$k]['uid'] = $v['uid'];
$showattlist[$k]['sort'] = $k + 1;
$showattlist[$k]['downurl'] = '/change/file/download/' . $fid;
$showattlist[$k]['filename'] = $v['filename'] . '.' . $v['fileext'];
$showattlist[$k]['time'] = date('Y-m-d H:i', $v['intime']);
$showattlist[$k]['size'] = $this->changefilesize($v['filesize']);
}
}
$this->data['attlist'] = $showattlist;
$this->data['changeArray'] = $changeArray;
$this->data['pmArray'] = $pmArray;
$this->data['userlist'] = $userlist;
$this->data['useridlist'] = implode(',',$useridlist);
$userArray = $this->auth->getRowByUid($this->auth->getUid());
$userArray['email'] = $this->auth->getEmail($this->auth->getUid());
$this->data['userArray'] = $userArray;
$this->data['list'] = $list;
$this->data['year'] = date('Y',time());
//输出重新上报的审批列表信息
if($changeArray['status'] == 'back'){
$creatorArray = $this->change->getChangeAuditLastUser($cid,0);
$auditlist2 = $this->change->getChangeAuditsbySort($cid,$creatorArray['times']);
if(!empty($auditlist2)){
foreach($auditlist2 as $ak => $av){
$auditlist2[$ak]['email'] = $this->auth->getEmail($av['uid']);
$auditlist2[$ak]['lastusite'] = $this->change->getChangeAuditsMaxUsite($cid,$av['times'])['maxsite'];
}
}
$this->data['auditlist2'] = $auditlist2;
}
$cfuhashids = new Hashids\Hashids('cfileupload', 15);
$this->data['uid'] = $this->auth->getUid();
$verification = $cfuhashids->encode($pmArray['pmid'],$this->auth->getUid());
$this->data['verification'] = $verification;
// $this->data['stepnumdnum'] = $this->makestep(intval($decimalnum['numberdnum']));
$this->render('biangeng-update', $this->data, TRUE);
}else{
return '/change/detail/' . $cid;
die;
}
}else{
exit('不存在此变更令');
}
}
public function editCompany(){
if(isset($_POST['uci']) && isset($_POST['uc']) && isset($_POST['ac'])){
$addhtml = '';
$selecthtml = '';
Doo::loadModel('changecompany');
if(!empty($_POST['uci'])){
$idarr = $_POST['uci'];
$namearr = $_POST['uc'];
foreach($idarr as $k => $v){
$company = new ChangeCompany();
$company->id = $v;
$company->name = $namearr[$k];
$company->update();
$selecthtml .= '';
}
}
if(!empty($_POST['ac'])){
$addarr = $_POST['ac'];
$pmArray = $this->actmeasure->getRowByPmid($_POST['pmid']);
foreach($addarr as $ak => $av){
if(!empty(trim($av))){
$company2 = new ChangeCompany();
$company2->pid = $pmArray['pid'];
$company2->stid = $pmArray['stid'];
$company2->pmid = $pmArray['pmid'];
$company2->name = $av;
$id = $company2->insert();
$selecthtml .= '';
$addhtml .= '';
}
}
}
echo json_encode(array('code' => 200, 'addhtml' => $addhtml, 'selecthtml' => $selecthtml));
die;
}else{
echo json_encode(array('code' => 500));
die;
}
}
public function searchUser(){
if(!isset($_GET['name']) || empty($_GET['name'])){
echo json_encode(array('code' => 400, 'msg' => '请输入审批人名称'));
exit;
}
$usermsg = $this->profile->checkUserName($_GET['name']);
if(!empty($usermsg)){
$useridlist = $_POST['useridlist'];
$userlist = array();
foreach($usermsg as $k => $v){
if(!in_array($v['userid'], $useridlist)){
$usermsg[$k]['email'] = $this->auth->getEmail($v['userid']);
array_push($userlist,$usermsg[$k]);
}
}
if(!empty($userlist)){
echo json_encode(array('code' => 200, 'userlist' => $userlist));
exit;
}else{
echo json_encode(array('code' => 400, 'msg' => '常用中已存在当前审批人'));
exit;
}
}else{
echo json_encode(array('code' => 400, 'msg' => '不存在此审批人名称'));
exit;
}
}
public function fileUpload(){
// session_write_close();
// if(isset($_POST['sessionid'])){
// session_id($_POST['sessionid']);
// setcookie('PHPSESSID',$_POST['sessionid']);
// session_start();
// }
if(!isset($this->params['pmid']) && !is_numeric($this->params['pmid'])){
exit(json_encode(array('success' => false, 'msg' => '参数有误')));
}
$pmArray = $this->actmeasure->getRowByPmid($this->params['pmid']);
if(empty($pmArray)){
exit(json_encode(array('success' => false, 'msg' => '不存在此标段,无法上传')));
}
Doo::loadClass('extras/Uploader');
$files = array();
$upload_dir = Doo::conf()->SITE_PATH . 'cfiles/';
$uploader = new FileUpload('uploadfile');
$intime = time();
$extPathdir = $upload_dir.date('Y/md/',$intime);
if (!$this->dir_create2($extPathdir)) {
$status = array('success' => FALSE, 'msg' => '文件夹创建失败');
echo json_encode($status, JSON_UNESCAPED_UNICODE);
die();
}
$files['filename'] = $uploader->getFileNameWithoutExt();
$files['fileext'] = $uploader->getExtension();
$files['filesize'] = $uploader->getFileSize();
$filepath = date('Ymdhis',$intime) . rand(100, 999) . '.' . $files['fileext'];
$uploader->newFileName = $filepath;
$files['filepath'] = 'cfiles/'.date('Y/md/',$intime).$filepath;
$result = $uploader->handleUpload($extPathdir);
if (!$result) {
exit(json_encode(array('success' => false, 'msg' => $uploader->getErrorMsg())));
}
$files['pid'] = $pmArray['pid'];
$files['stid'] = $pmArray['stid'];
$files['pmid'] = $pmArray['pmid'];
$files['cid'] = isset($this->params['cid']) && is_numeric($this->params['cid']) ? $this->params['cid'] : 0;
$files['uid'] = $this->auth->getUid();
$files['intime'] = $intime;
$result2 = $this->change->insertChangeAtt($files);
if(empty($result2)){
exit(json_encode(array('success' => false, 'msg' => '添加到数据库发生错误')));
}
$files2 = array();
$files2['id'] = $result2;
//加密下载的id
$fid = $this->__hashids->encode($result2);
$files2['downurl'] = '/change/file/download/'.$fid;
$files2['filename'] = $files['filename'].'.'.$files['fileext'];
$files2['time'] = date('Y-m-d H:i',$intime);
$files2['size'] = $this->changefilesize($files['filesize']);
echo json_encode(array('success' => true, 'files' => $files2));
}
public function fileDownload(){
$fid = isset($this->params['fid'])?$this->params['fid']:null;
if($fid) {
//解密下载的id
$fid = $this->__hashids->decode($fid)[0];
$fileArray = $this->change->getChangeAttbyFid($fid);
if (!empty($fileArray)) {
$pathf = DOO::conf()->SITE_PATH;
$this->file_down($pathf.$fileArray['filepath'],$fileArray['filename'].'.'.$fileArray['fileext']);
}
}
}
public function fileDelete(){
$fid = isset($_POST['fid']) && is_numeric($_POST['fid']) ? $_POST['fid'] : null;
if($fid){
$fileArray = $this->change->getChangeAttbyFid($fid);
if (!empty($fileArray) && $fileArray['uid'] == $this->auth->getUid()) {
include (DOO::conf()->SITE_PATH . 'protected/plugin/io.han.php');
$pathf = DOO::conf()->SITE_PATH;
$this->IoHandler = new IoHandler();
$this->IoHandler->DeleteFile($pathf.$fileArray['filepath']);
$this->change->delChangeAttbyFid($fid);
exit(json_encode(array('code' => 200)));
}
}
exit(json_encode(array('code' => 400)));
}
public function pnumCheck(){
if(isset($_POST['pnum']) && !empty($_POST['pnum']) && isset($_POST['status']) && !empty($_POST['status']) && isset($_POST['pmid']) && is_numeric($_POST['pmid'])){
if($_POST['status'] == 'new'){
$changeArray = $this->change->getChangebyPnumPmid($_POST['pnum'],$_POST['pmid']);
if(!empty($changeArray)){
exit(json_encode(array('code' => 400,'msg' => '当前标段变更令已存在此申请编号,请重新输入或改变自增编号值')));
}else{
exit(json_encode(array('code' => 200,'msg' => '')));
}
}elseif($_POST['status'] == 'update'){
if(isset($_POST['cid']) && is_numeric($_POST['cid'])){
$changeArray = $this->change->getChangebyPnumPmid($_POST['pnum'],$_POST['pmid'],$_POST['cid']);
if(!empty($changeArray)){
exit(json_encode(array('code' => 400,'msg' => '当前标段变更令已存在此申请编号,请重新输入或改变自增编号值')));
}else{
exit(json_encode(array('code' => 200,'msg' => '')));
}
}
}
}
exit(json_encode(array('code' => 400,'msg' => '判断参数有误')));
}
//设置小数位数
public function setDecimalnum(){
$num = array(0,1,2,3,4,5,6);
if(isset($_POST['costdnum']) && isset($_POST['numberdnum']) && in_array(intval($_POST['costdnum']), $num) && in_array(intval($_POST['numberdnum']), $num)){
$dnum = intval($_POST['costdnum']).'_'.intval($_POST['numberdnum']);
//判断更改类型
if(isset($_POST['pmid']) && is_numeric($_POST['pmid'])){
$pmArray = $this->actmeasure->getRowByPmid($_POST['pmid']);
if(!empty($pmArray)){
$this->actmeasure->updateChangeDecimalNum($_POST['pmid'],$dnum);
exit(json_encode(array('code' => 200,'msg' => '更新小数位数成功')));
}else{
exit(json_encode(array('code' => 400,'msg' => '不存在此标段')));
}
}elseif(isset($_POST['cid']) && is_numeric($_POST['cid'])){
$changeArray = $this->change->getChangebyid($_POST['cid']);
if(!empty($changeArray)){
$this->change->updateChangeDecimalNum($_POST['cid'],$dnum);
exit(json_encode(array('code' => 200,'msg' => '更新小数位数成功')));
}else{
exit(json_encode(array('code' => 400,'msg' => '不存在此变更令')));
}
}
}
exit(json_encode(array('code' => 400,'msg' => '参数或小数位数有误')));
}
//根据位数生成几位小数,0位-》1,1位-》0.1 ,5位-》0.00001
function makestep($num){
if($num >= 1 && $num <= 6){
$arr = [];
for($i=0;$i< $num;$i++){
if($i != $num-1){
$arr[$i] = 0;
}else{
$arr[$i] = 1;
}
}
return '0.'.implode('',$arr);
}else{
return 1;
}
}
//获取costdnum和numberdnum
function getdecimal($arr){
//取变更令位数设置
$decimalnum = explode('_',$arr);
$decimal = array();
$decimal['costdnum'] = $decimalnum[0];
$decimal['numberdnum'] = $decimalnum[1];
return $decimal;
}
public function substr_replace_cn($string, $repalce = '*', $start = 0, $len = 0)
{
$count = mb_strlen($string, 'UTF-8'); //此处传入编码,建议使用utf-8。此处编码要与下面mb_substr()所使用的一致
if (!$count) {
return $string;
}
if ($len == 0) {
$end = $count; //传入0则替换到最后
} else {
$end = $start + $len; //传入指定长度则为开始长度+指定长度
}
$i = 0;
$returnString = '';
while ($i < $count) { //循环该字符串
$tmpString = mb_substr($string, $i, 1, 'UTF-8'); // 与mb_strlen编码一致
if ($start <= $i && $i < $end) {
$returnString .= $repalce;
} else {
$returnString .= $tmpString;
}
$i++;
}
return $returnString;
}
function unicode_encode($name)
{//to Unicode
$name = iconv('UTF-8', 'UCS-2', $name);
$len = strlen($name);
$str = '';
for ($i = 0; $i < $len - 1; $i = $i + 2) {
$c = $name[$i];
$c2 = $name[$i + 1];
if (ord($c) > 0) {// 两个字节的字
$str .= '\\' . base_convert(ord($c), 10, 16) . base_convert(ord($c2), 10, 16);
} else {
$str .= $c2;
}
}
$str = strtoupper($str);
return $str;
}
function unicode_decode($name)
{//Unicode to
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $name, $matches);
if (!empty($matches)) {
$name = '';
for ($j = 0; $j < count($matches[0]); $j++) {
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0) {
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code) . chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$name .= $c;
} else {
$name .= $str;
}
}
}
return $name;
}
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;
}
//字节转换
function changefilesize($value){
$units = array(' B', ' KB', ' MB', ' GB', ' TB');
for ($i = 0; $value >= 1024 && $i < 4; $i++) $value /= 1024;
return round($value, 2).$units[$i];
}
/**
* 文件下载
* @param $filepath 文件路径
* @param $filename 文件名称
*/
public function file_down($filepath,$filename) {
if (ob_get_length() !== false)
@ob_end_clean();
header('Content-Description: File Download');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
@readfile($filepath);
}
}
?>