<?php

/**
 * @author darkredz
 */
class HumanResourceController extends DooController {
	public $data;
	public function beforeRun($resource, $action) {
		$this->data ['exempt'] = false;
		
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		$detail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		
		// 拥有豁免权限
		if ($action == 'appliedEntry' || $action == 'appliedDimission' || $action == 'appliedRegular'|| $action == 'reentryApprovals' || $detail ['sid'] == superHR) {
			return '';
		}
		
		// 全员权限判定
		$accessModular = 'HR';
		if (empty ( $detail ['cldAccessArray'] )) {
			$flag = false;
		} else {
			if (in_array ( $accessModular, $detail ['cldAccessArray'] )) {
				
				if (Doo::acl ()->isAllowed ( $accessModular, $resource, $action )) {
					$flag = true;
				} else {
					$flag = false;
				}
			} else {
				$flag = false;
			}
		}
		
		
		
		
		// 个别审批人临时访问首页权限
		if (! $flag) {
			$list = $staff->getApprovalData ( $detail ['sid'] );
			// $staff->find ( array (
			// 'asc' => 'sid',
			// 'where' => "(pendStatus= '2' or pendStatus='3' or pendStatus='5') and ( pendingApprovalsLeave='" . $detail ['sid'] . "' or pendingApprovals='" . $detail ['sid'] . "') ",
			// 'asArray' => TRUE
			// ) );
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				
				if ($action == 'hrEmployee' || $action == 'position' || $action == 'employeeApprovals') {
					die ( 'illegal request1' );
				}
				
				$this->data ['exempt'] = true;
				return '';
			} else
				die ( 'illegal request2' );
		}
	}
	function __construct() {
		if (isset ( $_COOKIE ["staff"] )) {
			if (! empty ( $_COOKIE ["staff"] )) {
				Doo::loadModel ( 'staff' );
				$staff = new staff ();
				
				$this->staff = $staff->getStaffBySid ( $_COOKIE ["staff"] );
				return "/";
			}
		}
		
		Doo::loadCore ( 'uri/DooUriRouter' );
		$router = new DooUriRouter ();
		$routeRs = $router->execute ( Doo::app ()->route, Doo::conf ()->SUBFOLDER );
		if ($routeRs ['1'] != "appliedEntry") {
			if ($routeRs ['1'] != "login") {
				header ( 'Content-Type:text/html;charset=utf-8' );
				@header ( "Location: /login" );
			}
		}
	}
	
	/**
	 * 人资首页
	 */
	function hr() {
		Doo::loadModel ( 'staffManage' );
		$staffManage = new staffManage ();
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		// 获得当前账号需要审批的员工
		$staffList = $staff->getStaffByApplied ( $this->staff ['sid'] );
		$staffNew = $staff->getStaffByApprovals ();
		
		// print_r($staffList);
		$this->data ['staffList'] = $staffList;
		$this->data ['staffNew'] = $staffNew;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "hr";
		
		$this->render ( "/humanResource/hr", $this->data );
	}
	
	/**
	 * 员工入职审批
	 */
	function employeeInductionApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staffManage' );
		$staffManage = new staffManage ();
		
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		$sid = $XDeode->decode ( $sidKey );
		if (! is_numeric ( $sid ) || empty ( $sid ))
			die ( 'illegal request' );
		
		$staffDetail = $staff->getOne ( array (
				'where' => 'pendStatus=2 and sid=' . $sid . ' and pendingApprovals=' . $this->staff ['sid'],
				'asArray' => true 
		) );
		
		if (empty ( $staffDetail ))
			die ( 'illegal request' );
		
		$processApprovals = json_decode ( $staffDetail ['processApprovals'], true );
		$invoiceManage = json_decode ( $staffDetail ['staffManage'], true );
		
		$staff = new staff ();
		if (empty ( $processApprovals )) {
			$processApprovals = array (
					$this->staff ['sid'] => array (
							'date' => date ( "Y-m-d H:i:s" ) 
					) 
			);
			$nextInvoiceManage = next ( $invoiceManage );
			
			if ($nextInvoiceManage !== false)
				$staff->pendingApprovals = $nextInvoiceManage [0];
			$staff->processApprovals = json_encode ( $processApprovals );
		} else {
			$processApprovals [$this->staff ['sid']] = array (
					'date' => date ( "Y-m-d H:i:s" ) 
			);
			
			$pendingApprovals = 0;
			foreach ( $invoiceManage as $key => $value ) {
				if ($value [0] == $this->staff ['sid']) {
					if (isset ( $invoiceManage [$key + 1] ))
						$pendingApprovals = $invoiceManage [$key + 1] [0];
					break;
				}
			}
			
			if (! empty ( $pendingApprovals ))
				$staff->pendingApprovals = $pendingApprovals;
			$staff->processApprovals = json_encode ( $processApprovals );
		}
		
		if (count ( $processApprovals ) == count ( $invoiceManage )) {
			$staff->pendStatus = 0;
			$staff->pendingApprovals = 0;
			$staff->InductionDate = date ( "Y-m-d H:i:s" );
			$staff->cldAccess='["INFORMATION","DIRECTORIES","LOCK","RECEIPTS","INVOICE"]';
			
			if ($staffDetail ['nature'] == 2)
				$staff->practiceDate = date ( "Y-m-d H:i:s" );
			if ($staffDetail ['nature'] == 3)
				$staff->probationaryDate = date ( "Y-m-d H:i:s" );
				
				// 发送短信
			$passwork = mt_rand ( 100000, 999999 );
			$staff->passwork = md5 ( $passwork );
			
			if (! empty ( $staffDetail ['telephone'] ) && is_numeric ( $staffDetail ['telephone'] )) {
				Doo::loadClass ( 'Human.func' );
				$msg = $staffDetail ['username'] . ',' . $passwork;
				send_sms ( 17280, $staffDetail ['telephone'], '{"%msg%":"' . $msg . '"}' );
			}
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$nature = '';
			if ($staffDetail ['nature'] == 2) {
				$nature = '实习';
			} elseif ($staffDetail ['nature'] == 3) {
				$nature = '试用';
			}
			
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'operation' => "员工 入职审批通过",
					'status' => 3,
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			// 发送微信抄送
			$msg = '[抄送]' . $staffDetail ['category'] . '-' . $staffDetail ['username'] . '申请入职成功\n入职时间：' . $staffDetail ['hiredate'];
			
			$cidmode = $staffDetail ['cid'];
			if (! empty ( $staffDetail ['departmentID'] ))
				$cidmode = $staffDetail ['cid'] . '-' . $staffDetail ['departmentID'];
			$InductionCC = $staffManage->getStaffManageByCid ( $cidmode );
			$InductionCC = json_decode ( $InductionCC ['CC'], true );
			
			foreach ( $InductionCC as $value ) {
				$this->setWXMsg ( $value [0], $msg );
			}
		}
		
		$staff->updateDate = date ( "Y-m-d H:i:s" );
		$staff->update ( array (
				'where' => 'sid=' . $sid 
		) );
		
		// 权限跳转
		$staff = new staff ();
		$CAAdetail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		$accessModular = 'HR';
		if (in_array ( $accessModular, $CAAdetail ['cldAccessArray'] )) {
			return '/hr';
		} else {
			$list = $staff->getApprovalData ( $CAAdetail ['sid'] );
			
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				return '/hr';
			} else {
				header ( 'Content-Type:text/html;charset=utf-8' );
				echo "审批成功 <a href='/'>点击跳转首页</a>";
				die ();
			}
		}
	}
	
	/**
	 * 员工再入职审批
	 */
	function employeeReentryApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'reentryManage' );
		$staffManage = new reentryManage ();
		
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		$sid = $XDeode->decode ( $sidKey );
		if (! is_numeric ( $sid ) || empty ( $sid ))
			die ( 'illegal request' );
		
		$staffDetail = $staff->getOne ( array (
				'where' => 'pendStatus=7 and sid=' . $sid . ' and pendingApprovals=' . $this->staff ['sid'],
				'asArray' => true 
		) );
		
		if (empty ( $staffDetail ))
			die ( 'illegal request' );
		
		$processApprovals = json_decode ( $staffDetail ['processApprovals'], true );
		$invoiceManage = json_decode ( $staffDetail ['staffManage'], true );
		
		$staff = new staff ();
		if (empty ( $processApprovals )) {
			$processApprovals = array (
					$this->staff ['sid'] => array (
							'date' => date ( "Y-m-d H:i:s" ) 
					) 
			);
			$nextInvoiceManage = next ( $invoiceManage );
			
			if ($nextInvoiceManage !== false)
				$staff->pendingApprovals = $nextInvoiceManage [0];
			$staff->processApprovals = json_encode ( $processApprovals );
		} else {
			$processApprovals [$this->staff ['sid']] = array (
					'date' => date ( "Y-m-d H:i:s" ) 
			);
			
			$pendingApprovals = 0;
			foreach ( $invoiceManage as $key => $value ) {
				if ($value [0] == $this->staff ['sid']) {
					if (isset ( $invoiceManage [$key + 1] ))
						$pendingApprovals = $invoiceManage [$key + 1] [0];
					break;
				}
			}
			
			if (! empty ( $pendingApprovals ))
				$staff->pendingApprovals = $pendingApprovals;
			$staff->processApprovals = json_encode ( $processApprovals );
		}
		
		if (count ( $processApprovals ) == count ( $invoiceManage )) {
			// 确认再入职
			// Doo::loadClass ( 'XDeode' );
			// $XDeode = new XDeode ( 5 );
			// Doo::loadModel ( 'staff' );
			// $staff = new staff ();
			
			// $sid = $XDeode->decode ( $sidKey );
			
			// $detail = $staff->getStaffBySid ( $sid );
			
			$staffDetail;
			$staff2 = new staff ();
			
			// 工龄记录
			$seniorityFormula = json_decode ( $staffDetail ['seniorityFormula'] );
			array_push ( $seniorityFormula, array (
					'InductionDate' => date ( "Y-m-d H:i:s" ),
					'dimissionDate' => '' 
			) );
			
			$item = array (
					'sid' => $sid,
					'nature' => 1,
					'pendStatus' => 0,
					'seniorityFormula' => json_encode ( $seniorityFormula ),
					'hiredate' => date ( "Y-m-d" ) ,
					'cldAccess'=>'["INFORMATION","DIRECTORIES","LOCK","RECEIPTS","INVOICE"]',
			);
			$staff2->setStaffByCondition ( $item );
			// 更新假期相关信息
			Doo::loadModel ( 'holidaystaff' );
			$holidaystaff = new HStaff ();
			$holidaystaff->delete ( array (
					'where' => 'uid=' . $sid 
			) );
			$holidaystaff = new HStaff ();
			$holidaystaff->uid = $sid;
			$holidaystaff->insert ();
			$staff = new staff ();
			$staffmsg = $staff->getUserById ( $sid );
			$this->updateAnnualLeave ( $staffmsg [0] );
			
			// 发送短信
			$passwork = mt_rand ( 100000, 999999 );
			$staff->passwork = md5 ( $passwork );
			
			if (! empty ( $staffDetail ['telephone'] ) && is_numeric ( $staffDetail ['telephone'] )) {
				Doo::loadClass ( 'Human.func' );
				$msg = $staffDetail ['username'] . ',' . $passwork;
				send_sms ( 17280, $staffDetail ['telephone'], '{"%msg%":"' . $msg . '"}' );
			}
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'operation' => "员工 再入职审批通过",
					'status' => 3,
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			// 发送微信抄送
			$msg = '[抄送]' . $staffDetail ['category'] . '-' . $staffDetail ['username'] . '申请 再入职成功\n入职时间：' . date ( "Y-m-d" );
			
			$cidmode = $staffDetail ['cid'];
			if (! empty ( $staffDetail ['departmentID'] ))
				$cidmode = $staffDetail ['cid'] . '-' . $staffDetail ['departmentID'];
			$InductionCC = $staffManage->getStaffManageByCid ( $cidmode );
			$InductionCC = json_decode ( $InductionCC ['CC'], true );
			
			foreach ( $InductionCC as $value ) {
				$this->setWXMsg ( $value [0], $msg );
			}
		}
		
		$staff->updateDate = date ( "Y-m-d H:i:s" );
		$staff->update ( array (
				'where' => 'sid=' . $sid 
		) );
		
		// 权限跳转
		$staff = new staff ();
		$CAAdetail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		$accessModular = 'HR';
		if (in_array ( $accessModular, $CAAdetail ['cldAccessArray'] )) {
			return '/hr';
		} else {
			$list = $staff->getApprovalData ( $CAAdetail ['sid'] );
			
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				return '/hr';
			} else {
				header ( 'Content-Type:text/html;charset=utf-8' );
				echo "审批成功 <a href='/'>点击跳转首页</a>";
				die ();
			}
		}
	}
	
	/**
	 * 离职人员审批
	 */
	function employeeDimissionApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staffLeaveManage' );
		$staffLeaveManage = new staffLeaveManage ();
		
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		$sid = $XDeode->decode ( $sidKey );
		if (! is_numeric ( $sid ) || empty ( $sid ))
			die ( 'illegal request' );
		
		$staffDetail = $staff->getOne ( array (
				'where' => 'pendStatus=3 and sid=' . $sid . ' and pendingApprovalsLeave=' . $this->staff ['sid'],
				'asArray' => true 
		) );
		
		if (empty ( $staffDetail ))
			die ( 'illegal request' );
		
		$processApprovals = json_decode ( $staffDetail ['processApprovalsLeave'], true );
		$invoiceManage = json_decode ( $staffDetail ['staffManageLeave'], true );
		
		$staff = new staff ();
		if (empty ( $processApprovals )) {
			$processApprovals = array (
					$this->staff ['sid'] => array (
							'date' => date ( "Y-m-d H:i:s" ) 
					) 
			);
			$nextInvoiceManage = next ( $invoiceManage );
			
			if ($nextInvoiceManage !== false)
				$staff->pendingApprovalsLeave = $nextInvoiceManage [0];
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		} else {
			$processApprovals [$this->staff ['sid']] = array (
					'date' => date ( "Y-m-d H:i:s" ) 
			);
			
			$pendingApprovals = 0;
			foreach ( $invoiceManage as $key => $value ) {
				if ($value [0] == $this->staff ['sid']) {
					if (isset ( $invoiceManage [$key + 1] ))
						$pendingApprovals = $invoiceManage [$key + 1] [0];
					break;
				}
			}
			
			if (! empty ( $pendingApprovals ))
				$staff->pendingApprovalsLeave = $pendingApprovals;
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		}
		
		if (count ( $processApprovals ) == count ( $invoiceManage )) {
			$staff->pendStatus = 4;
			// $staff->nature=4;//离职后需要在人员页面确认离职不用在这改状态
			// $staff->dimissionDate = date ( "Y-m-d" );
			$staff->pendingApprovalsLeave = 0;
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'operation' => "员工 离职审批通过",
					'status' => 2,
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
		}
		
		$staff->updateDate = date ( "Y-m-d H:i:s" );
		$staff->update ( array (
				'where' => 'sid=' . $sid 
		) );
		
		// 权限跳转
		$staff = new staff ();
		$CAAdetail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		$accessModular = 'HR';
		if (in_array ( $accessModular, $CAAdetail ['cldAccessArray'] )) {
			return '/hr';
		} else {
			$list = $staff->getApprovalData ( $CAAdetail ['sid'] );
			
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				return '/hr';
			} else {
				header ( 'Content-Type:text/html;charset=utf-8' );
				echo "审批成功 <a href='/'>点击跳转首页</a>";
				die ();
			}
		}
	}
	
	/**
	 * 转正审批
	 */
	function employeeRegularApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staffRegularManage' );
		$staffLeaveManage = new staffRegularManage ();
		
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		$sid = $XDeode->decode ( $sidKey );
		if (! is_numeric ( $sid ) || empty ( $sid ))
			die ( 'illegal request' );
		
		$staffDetail = $staff->getOne ( array (
				'where' => 'pendStatus=5 and sid=' . $sid . ' and pendingApprovalsLeave=' . $this->staff ['sid'],
				'asArray' => true 
		) );
		
		if (empty ( $staffDetail ))
			die ( 'illegal request' );
		
		$processApprovals = json_decode ( $staffDetail ['processApprovalsLeave'], true );
		$invoiceManage = json_decode ( $staffDetail ['staffManageLeave'], true );
		
		$staff = new staff ();
		if (empty ( $processApprovals )) {
			$processApprovals = array (
					$this->staff ['sid'] => array (
							'date' => date ( "Y-m-d H:i:s" ) 
					) 
			);
			$nextInvoiceManage = next ( $invoiceManage );
			
			if ($nextInvoiceManage !== false)
				$staff->pendingApprovalsLeave = $nextInvoiceManage [0];
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		} else {
			$processApprovals [$this->staff ['sid']] = array (
					'date' => date ( "Y-m-d H:i:s" ) 
			);
			
			$pendingApprovals = 0;
			foreach ( $invoiceManage as $key => $value ) {
				if ($value [0] == $this->staff ['sid']) {
					if (isset ( $invoiceManage [$key + 1] ))
						$pendingApprovals = $invoiceManage [$key + 1] [0];
					break;
				}
			}
			
			if (! empty ( $pendingApprovals ))
				$staff->pendingApprovalsLeave = $pendingApprovals;
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		}
		
		if (count ( $processApprovals ) == count ( $invoiceManage )) {
			$staff->pendStatus = 0;
			$staff->nature = 1;
			// 工号
			// 生成工号
			$jobNumber = $this->createJobNumber ();
			$staff->jobNumber = $jobNumber ['regularStaff'];
			// $staff->dimissionDate = date ( "Y-m-d" );
			$staff->pendingApprovalsLeave = 0;
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'operation' => "员工 转正审批通过",
					'status' => 2,
					
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
		}
		
		$staff->updateDate = date ( "Y-m-d H:i:s" );
		$staff->update ( array (
				'where' => 'sid=' . $sid 
		) );
		
		// 权限跳转
		$staff = new staff ();
		$CAAdetail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		$accessModular = 'HR';
		if (in_array ( $accessModular, $CAAdetail ['cldAccessArray'] )) {
			return '/hr';
		} else {
			$list = $staff->getApprovalData ( $CAAdetail ['sid'] );
			
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				return '/hr';
			} else {
				header ( 'Content-Type:text/html;charset=utf-8' );
				echo "审批成功 <a href='/'>点击跳转首页</a>";
				die ();
			}
		}
	}
	
	/**
	 * 员工晋升审批
	 */
	function employeePromoteApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staffManage' );
		$staffManage = new staffManage ();
		
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		$sid = $XDeode->decode ( $sidKey );
		if (! is_numeric ( $sid ) || empty ( $sid ))
			die ( 'illegal request' );
		
		$staffDetail = $staff->getOne ( array (
				'where' => 'pendStatus=6 and sid=' . $sid . ' and pendingApprovalsLeave=' . $this->staff ['sid'],
				'asArray' => true 
		) );
		
		if (empty ( $staffDetail ))
			die ( 'illegal request' );
		
		$processApprovals = json_decode ( $staffDetail ['processApprovalsLeave'], true );
		$invoiceManage = json_decode ( $staffDetail ['staffManageLeave'], true );
		
		// 审批过程
		$staff = new staff ();
		if (empty ( $processApprovals )) {
			$processApprovals = array (
					$this->staff ['sid'] => array (
							'date' => date ( "Y-m-d H:i:s" ) 
					) 
			);
			$nextInvoiceManage = next ( $invoiceManage );
			
			if ($nextInvoiceManage !== false)
				$staff->pendingApprovalsLeave = $nextInvoiceManage [0];
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		} else {
			$processApprovals [$this->staff ['sid']] = array (
					'date' => date ( "Y-m-d H:i:s" ) 
			);
			
			$pendingApprovals = 0;
			foreach ( $invoiceManage as $key => $value ) {
				if ($value [0] == $this->staff ['sid']) {
					if (isset ( $invoiceManage [$key + 1] ))
						$pendingApprovals = $invoiceManage [$key + 1] [0];
					break;
				}
			}
			
			if (! empty ( $pendingApprovals ))
				$staff->pendingApprovalsLeave = $pendingApprovals;
			$staff->processApprovalsLeave = json_encode ( $processApprovals );
		}
		
		$appliedPromote = $staffDetail ['appliedPromote'];
		$appliedPromote = explode ( '_', $appliedPromote );
		if (count ( $processApprovals ) == count ( $invoiceManage )) {
			$staff->pendStatus = 0;
			$staff->pendingApprovalsLeave = 0;
			// 岗位薪资调整
			
			$appliedPromote [4];
			
			$staff->baseWage = $appliedPromote [2];
			$staff->postWage = $appliedPromote [3];
			$staff->achievementBonus = $appliedPromote [4];
			$staff->positionId = $XDeode->decode ( $appliedPromote [0] );
			
			// 发送微信抄送
			
			$msg = '[抄送]' . $staffDetail ['category'] . '-' . $staffDetail ['username'] . '申请晋升成功\n晋升时间：' . date ( "Y-m-d" );
			
			$cidmode = $staffDetail ['cid'];
			if (! empty ( $staffDetail ['departmentID'] ))
				$cidmode = $staffDetail ['cid'] . '-' . $staffDetail ['departmentID'];
			$InductionCC = $staffManage->getStaffManageByCid ( $cidmode );
			$InductionCC = json_decode ( $InductionCC ['CC'], true );
			
			foreach ( $InductionCC as $value ) {
				$this->setWXMsg ( $value [0], $msg );
			}
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$nature = $appliedPromote [1];
			
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'operation' => "员工 晋升审批通过",
					'status' => 3,
					
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			
			$staffOperationLog->setInvoiceOperationLog ( $item );
		}
		
		$staff->updateDate = date ( "Y-m-d H:i:s" );
		$staff->update ( array (
				'where' => 'sid=' . $sid 
		) );
		
		// 权限跳转
		$staff = new staff ();
		$CAAdetail = $staff->getStaffBySid ( $_COOKIE ["staff"] );
		$accessModular = 'HR';
		if (in_array ( $accessModular, $CAAdetail ['cldAccessArray'] )) {
			return '/hr';
		} else {
			$list = $staff->getApprovalData ( $CAAdetail ['sid'] );
			
			$isVisit = count ( $list );
			if ($isVisit > 0) { // 未做强制不能访问
				return '/hr';
			} else {
				header ( 'Content-Type:text/html;charset=utf-8' );
				echo "审批成功 <a href='/'>点击跳转首页</a>";
				die ();
			}
		}
	}
	
	/**
	 * 员工信息
	 */
	function hrEmployee() {
		
		// $passwork=mt_rand(100000, 999999);
		// //$staff->passwork = md5 ( $passwork );
		// $staffDetail['telephone']='13750039378';
		// $staffDetail['username']='欧桃珍';
		
		// if (!empty($staffDetail['telephone'])&&is_numeric($staffDetail['telephone'])){
		// Doo::loadClass ( 'Human.func' );
		// $msg=$staffDetail['username'].','.$passwork;
		// send_sms(17280,$staffDetail['telephone'],'{"%msg%":"'.$msg.'"}');
		// }
		$pendStatus = $this->get_args ( 'pendStatus' ) ? $this->get_args ( 'pendStatus' ) : "ALL";
		$nature = $this->get_args ( 'nature' ) ? $this->get_args ( 'nature' ) : 'ALL';
		$cid_did = $this->get_args ( 'cid_did' ) ? $this->get_args ( 'cid_did' ) : 'ALL';
		$MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : '';
		// $this->send_sms();
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$con = '  username != "admin" ';
		if ($pendStatus == 'ALL')
			$con .= '  ';
		elseif ($pendStatus == 'OTJOB')
			$con .= ' and pendStatus=0 ';
		elseif ($pendStatus == 'LVJOB')
			$con .= ' and pendStatus=4 ';
		
		if ($nature == 'ALL')
			$con .= ' and (nature=1 or nature=2 or nature=3 or nature=4) ';
		elseif ($nature == 'FORMAL')
			$con .= ' and  nature=1';
		elseif ($nature == 'TRIAL')
			$con .= ' and  nature=3';
		elseif ($nature == 'PRACTICE')
			$con .= ' and  nature=2';
		
		if ($cid_did != 'ALL') {
			$department = explode ( '_', $cid_did );
			$cid = $XDeode->decode ( $department [0] );
			$departmentID = false;
			if (! empty ( $department [1] )) {
				$departmentID = $XDeode->decode ( $department [1] );
			}
			if (is_numeric ( $cid ) && is_numeric ( $departmentID ))
				$con .= ' and  cid=' . $cid . ' and departmentID=' . $departmentID;
			elseif (is_numeric ( $cid ) && ! is_numeric ( $departmentID ))
				$con .= ' and  cid=' . $cid;
		}
		
		if (! empty ( $MebSea ))
			$con .= ' and ( username like "%' . $MebSea . '%" or jobNumber like "%' . $MebSea . '%" )';
			// echo $con;
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'position' );
		$position = new position ();
		
		$stafflist = $staff->getStaffByCondition ( $con );
		
		// print_r($stafflist);
		
		/*
		 * foreach ($stafflist as $key=>$value){ $staff = new staff (); $staff->sid=$value['sid']; $seniorityFormula = array (); array_push ( $seniorityFormula, array ( 'InductionDate' =>$value['hiredate'] , 'dimissionDate' => '' ) ); if (empty($value['seniorityFormula'])){ $staff->seniorityFormula = json_encode ( $seniorityFormula ); //$staff->update(); } }
		 */
		$monthstart = date ( 'Y-m-d 00:00:00', mktime ( 0, 0, 0, date ( 'm' ), 1, date ( 'Y' ) ) );
		$monthend = date ( 'Y-m-d 23:59:59', mktime ( 0, 0, 0, date ( 'm' ) + 1, 0, date ( 'Y' ) ) );
		
		// 本月在职 入职 离职人员数量
		$onJobCount = $staff->count ( array (
				'where' => 'pendStatus=0 and username!="admin"' 
		) );
		$inJobCount = $staff->count ( array (
				'where' => 'pendStatus=0 and username!="admin" and (InductionDate>="' . $monthstart . '" and InductionDate<="' . $monthend . '" )' 
		) );
		$leaveJobCount = $staff->count ( array (
				'where' => 'pendStatus=4 and username!="admin" and (dimissionDate>="' . $monthstart . '" and dimissionDate<="' . $monthend . '" )' 
		) );
		
		// 生成工号
		$jobNumber = $this->createJobNumber ();
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		// 获得岗位
		$listPosition = $position->getPositionByAll ();
		
		$monthstart = date ( 'm.d', mktime ( 0, 0, 0, date ( 'm' ), 1, date ( 'Y' ) ) );
		$monthend = date ( 'm.d', mktime ( 0, 0, 0, date ( 'm' ) + 1, 0, date ( 'Y' ) ) );
		
		$this->data ['listPosition'] = $listPosition;
		$this->data ['onJobCount'] = $onJobCount;
		$this->data ['inJobCount'] = $inJobCount;
		$this->data ['leaveJobCount'] = $leaveJobCount;
		
		$this->data ['monthstart'] = $monthstart;
		$this->data ['monthend'] = $monthend;
		
		$this->data ['pendStatus'] = $pendStatus;
		$this->data ['nature'] = $nature;
		$this->data ['MebSea'] = $MebSea;
		$this->data ['cid_did'] = $cid_did;
		// print_r($stafflist[43]);
		$this->data ['categoryList'] = $categoryList;
		$this->data ['jobNumber'] = $jobNumber;
		$this->data ['stafflist'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "hrEmployeeInfo";
		
		$this->render ( "/humanResource/hrEmployee", $this->data );
	}
	function staffAdd() {
		$username = $this->get_args ( 'username' ) ? $this->get_args ( 'username' ) : "";
		$nature = is_numeric ( $this->get_args ( 'nature' ) ) ? $this->get_args ( 'nature' ) : 0;
		$cid_did = $this->get_args ( 'cid_did' ) ? $this->get_args ( 'cid_did' ) : '';
		$position = $this->get_args ( 'position' ) ? $this->get_args ( 'position' ) : '';
		$hiredate = $this->get_args ( 'hiredate' ) ? $this->get_args ( 'hiredate' ) : '';
		$telephone = $this->get_args ( 'telephone' ) ? $this->get_args ( 'telephone' ) : '';
		$baseWage = is_numeric ( $this->get_args ( 'baseWage' ) ) ? $this->get_args ( 'baseWage' ) : 0;
		$postWage = is_numeric ( $this->get_args ( 'postWage' ) ) ? $this->get_args ( 'postWage' ) : 0;
		$achievementBonus = is_numeric ( $this->get_args ( 'achievementBonus' ) ) ? $this->get_args ( 'achievementBonus' ) : 0;
		$gender = $this->get_args ( 'gender' ) ? $this->get_args ( 'gender' ) : '';
		
		if (! empty ( $username ) && ! empty ( $nature ) && ! empty ( $cid_did ) && ! empty ( $position ) && ! empty ( $hiredate ) && ! empty ( $baseWage )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			Doo::loadModel ( 'L_category' );
			$L_category = new L_category ();
			Doo::loadModel ( 'tag' );
			Doo::loadModel ( 'holidaystaff' );
			Doo::loadModel ( 'staffManage' );
			$staffManage = new staffManage ();
			
			// 用户名检测
			$detailStaff = $staff->getStaffByName ( $username );
			// print_r($detailStaff);
			if (! empty ( $detailStaff )){header ( 'Content-Type:text/html;charset=utf-8' );
				die ( 'illegal request-username-用户名重复' );
			}
			
			$staff->username = $username;
			$staff->hiredate = $hiredate;
			$staff->nature = $nature;
			
			$position = explode ( '_', $position );
			
			$staff->position = $position [1];
			$staff->positionId = $XDeode->decode ( $position [0] );
			
			$department = explode ( '_', $cid_did );
			
			$cid = $XDeode->decode ( $department [0] );
			// 加入默认总部分类
			if (! is_numeric ( $cid ))
				die ( 'illegal request1' );
			$cagegory = $L_category->getCategoryById ( $cid );
			// 部门
			if (! empty ( $department [1] )) {
				$did = $XDeode->decode ( $department [1] );
				if (! is_numeric ( $did ))
					die ( 'illegal request' );
				$staff->departmentID = $did;
			}
			
			// 生成工号
			$jobNumber = $this->createJobNumber ();
			if ($nature == 1)
				$staff->jobNumber = $jobNumber ['regularStaff'];
			else {
				$staff->jobNumber = $jobNumber ['internStaff'];
				$staff->pendStatus = 1;
			}
			
			$staff->cid = $cagegory [0] ['cid'];
			$staff->category = $cagegory [0] ['title'];
			
			$staff->telephone = $telephone;
			$staff->baseWage = $baseWage;
			$staff->postWage = $postWage;
			$staff->achievementBonus = $achievementBonus;
			$staff->gender = $gender;
			// 审批组
			// 获得该办事处的审批组
			$approvalKey = explode ( '_', $cid_did );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				if (! empty ( $value )) {
					$cid = $XDeode->decode ( $value );
					array_push ( $cidMode, $cid );
				}
			}
			$cidMode = implode ( '_', $cidMode );
			$staffManageDetail = $staffManage->getStaffManageByCid ( $cidMode );
			if (empty ( $staffManageDetail ))
				die ( 'illegal request2' );
			
			$pendingApprovalsSid = current ( $staffManageDetail ['staffList'] ) [0];
			$staff->pendingApprovals = $pendingApprovalsSid;
			$staff->staffManage = $staffManageDetail ['staff'];
			
			// 抄送组
			$staff->processCC = $staffManageDetail ['CC'];
			// 工龄记录
			$seniorityFormula = array ();
			array_push ( $seniorityFormula, array (
					'InductionDate' => $hiredate,
					'dimissionDate' => '' 
			) );
			$staff->seniorityFormula = json_encode ( $seniorityFormula );
			
			$id = $staff->insert ();
			
			// 更新假期相关信息
			Doo::loadModel ( 'holidaystaff' );
			$holidaystaff = new HStaff ();
			$holidaystaff->uid = $id;
			$holidaystaff->insert ();
			$staff = new staff ();
			
			$staffmsg = $staff->getUserById ( $id );
			$this->updateAnnualLeave ( $staffmsg [0] );
			
			// 标签更新
			for($i = 1; $i <= 7; $i ++) {
				$tag = new tag ();
				$tag->name = "个人标签";
				$tag->sid = $id;
				$tag->colorid = $i;
				$tag->insert ();
			}
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'status' => 1,
					'img' => '/global/img/avtra',
					'username' => $this->staff ['username'],
					'uid' => $id,
					'sid' => $this->staff ['sid'],
					'operation' => "添加新员工",
					'category' => $this->staff ['category'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			if (! empty ( $telephone ) && is_numeric ( $telephone )) {
				Doo::loadClass ( 'Human.func' );
				send_sms ( 17279, $telephone, '{"%name%":"' . $username . '"}' );
			}
		}
		return '/hrEmployee';
	}
	
	/**
	 * 员工转职
	 */
	function staffTransfer() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		$nature = $this->get_args ( 'nature' ) ? $this->get_args ( 'nature' ) : '';
		
		if (! empty ( $sidKey ) && ! empty ( $nature )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$sid = $XDeode->decode ( $sidKey );
			$staffDetail = $staff->getStaffBySid ( $sid );
			
			$item = array (
					'sid' => $sid 
			);
			if ($nature == 'TRIAL')
				$item += array (
						// 试用
						'nature' => 3,
						'probationaryDate' => date ( "Y-m-d H:i:s" ) 
				);
			if ($nature == 'REGULARS') {
				// 生成工号
				$jobNumber = $this->createJobNumber ();
				$item += array (
						// 正式
						'nature' => 1,
						'jobNumber' => $jobNumber ['regularStaff'],
						'regularsDate' => date ( "Y-m-d H:i:s" ) 
				);
				
				// 发送微信抄送
				Doo::loadModel ( 'staffRegularManage' );
				$staffLeaveManage = new staffRegularManage ();
				$msg = '[抄送]' . $staffDetail ['category'] . '-' . $staffDetail ['username'] . '申请转正成功\n转正时间：' . date ( "Y-m-d" );
				
				$cidmode = $staffDetail ['cid'];
				if (! empty ( $staffDetail ['departmentID'] ))
					$cidmode = $staffDetail ['cid'] . '-' . $staffDetail ['departmentID'];
				$InductionCC = $staffLeaveManage->getStaffManageByCid ( $cidmode );
				$InductionCC = json_decode ( $InductionCC ['CC'], true );
				
				foreach ( $InductionCC as $value ) {
					$this->setWXMsg ( $value [0], $msg );
				}
			}
			$staff->setStaffByCondition ( $item );
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'status' => 1,
					'img' => $this->staff ['avatar'],
					'username' => $this->staff ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $this->staff ['category'],
					'sid' => $this->staff ['sid'] 
			);
			if ($nature == 'TRIAL')
				$item += array (
						// 试用
						'operation' => "员工  实习转试用" 
				);
			if ($nature == 'REGULARS')
				$item += array (
						// 正式
						'operation' => "员工  试用转正式" 
				);
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			return '/hrEmployee';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 申请入职
	 */
	function appliedEntry() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		$telephone = $this->get_args ( 'telephone' ) ? $this->get_args ( 'telephone' ) : '';
		$qq = $this->get_args ( 'qq' ) ? $this->get_args ( 'qq' ) : '';
		
		$wecat = $this->get_args ( 'wecat' ) ? $this->get_args ( 'wecat' ) : '';
		$email = $this->get_args ( 'email' ) ? $this->get_args ( 'email' ) : '';
		
		$phone = $this->get_args ( 'phone' ) ? $this->get_args ( 'phone' ) : '';
		$gender = $this->get_args ( 'gender' ) ? $this->get_args ( 'gender' ) : '';
		
		$birthday = $this->get_args ( 'birthday' ) ? $this->get_args ( 'birthday' ) : '';
		$qualifications = $this->get_args ( 'qualifications' ) ? $this->get_args ( 'qualifications' ) : '';
		$marriage = $this->get_args ( 'marriage' ) ? $this->get_args ( 'marriage' ) : '0';
		$nativePlace = $this->get_args ( 'nativePlace' ) ? $this->get_args ( 'nativePlace' ) : '';
		
		$emergencyContacts = $this->get_args ( 'emergencyContacts' ) ? $this->get_args ( 'emergencyContacts' ) : '';
		$living = $this->get_args ( 'living' ) ? $this->get_args ( 'living' ) : '';
		
		$nation = $this->get_args ( 'nation' ) ? $this->get_args ( 'nation' ) : '';
		$graduateInstitutions = $this->get_args ( 'graduateInstitutions' ) ? $this->get_args ( 'graduateInstitutions' ) : '';
		$major = $this->get_args ( 'major' ) ? $this->get_args ( 'major' ) : '';
		$education = $this->get_args ( 'education' ) ? $this->get_args ( 'education' ) : '';
		$graduationTime = $this->get_args ( 'graduationTime' ) ? $this->get_args ( 'graduationTime' ) : '';
		$registeredResidence = $this->get_args ( 'registeredResidence' ) ? $this->get_args ( 'registeredResidence' ) : '';
		$householdRegistrationType = $this->get_args ( 'householdRegistrationType' ) ? $this->get_args ( 'householdRegistrationType' ) : '';
		$IDcardsValidity = $this->get_args ( 'IDcardsValidity' ) ? $this->get_args ( 'IDcardsValidity' ) : '';
		$IDcards = $this->get_args ( 'IDcards' ) ? $this->get_args ( 'IDcards' ) : '';
		
		// && ! empty ( $wecat ) && ! empty ( $email )
		if (! empty ( $sidKey ) && ! empty ( $telephone ) && ! empty ( $qq ) && ! empty ( $phone ) && ! empty ( $gender ) && ! empty ( $birthday ) && ! empty ( $qualifications ) && ! empty ( $nativePlace ) && ! empty ( $emergencyContacts ) && ! empty ( $living )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$sid = $XDeode->decode ( $sidKey );
			
			$item = array (
					'sid' => $sid,
					'qq' => $qq,
					'wecat' => $wecat,
					'phone' => $phone,
					'email' => $email,
					
					'gender' => $gender,
					'birthday' => $birthday,
					'qualifications' => $qualifications,
					'marriage' => $marriage,
					
					'nativePlace' => $nativePlace,
					'emergencyContacts' => $emergencyContacts,
					'living' => $living,
					
					'nation' => $nation,
					'graduateInstitutions' => $graduateInstitutions,
					'major' => $major,
					'education' => $education,
					'graduationTime' => $graduationTime,
					'registeredResidence' => $registeredResidence,
					'householdRegistrationType' => $householdRegistrationType,
					'IDcardsValidity' => $IDcardsValidity,
					'IDcards' => $IDcards,
					
					// 状态改成入职申请
					'pendStatus' => 2 
			);
			$staff->setStaffByCondition ( $item );
			// 操作日志
			$staffDetail = $staff->getStaffBySid ( $sid );
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'status' => 2,
					
					'operation' => "申请入职",
					
					'img' => $staffDetail ['avatar'],
					'username' => $staffDetail ['username'],
					'uid' => $staffDetail ['sid'],
					'category' => $staffDetail ['category'],
					'sid' => $staffDetail ['sid'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			return '/login';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 申请离职
	 */
	function appliedDimission() {
		$dimissionReason = $this->get_args ( 'dimissionReason' ) ? $this->get_args ( 'dimissionReason' ) : '';
		$applyLeaveDate = $this->get_args ( 'applyLeaveDate' ) ? $this->get_args ( 'applyLeaveDate' ) : '';
		
		
		if (empty ( $dimissionReason )||empty($applyLeaveDate))
			die ( 'illegal request' );
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'staffLeaveManage' );
		$staffLeaveManage = new staffLeaveManage ();
		
		$item = array (
				'sid' => $this->staff ['sid'],
				'dimissionReason' => $dimissionReason,
				// 状态改成离职申请
				'pendStatus' => 3 
		);
		$staff->setStaffByCondition ( $item );
		
		// 离职审批组
		// 获得审批组KEY
		$staff = new staff ();
		$cidMode = $this->staff ['cid'];
		if (! empty ( $this->staff ['departmentID'] ))
			$cidMode = $this->staff ['cid'] . '_' . $this->staff ['departmentID'];
		
		$staffManageDetail = $staffLeaveManage->getStaffManageByCid ( $cidMode );
		if (empty ( $staffManageDetail ))
			die ( 'illegal request ' );
		
		$pendingApprovalsSid = current ( $staffManageDetail ['staffList'] ) [0];
		if (empty ( $pendingApprovalsSid ))
			die ( 'illegal request ' );
		$staff->pendingApprovalsLeave = $pendingApprovalsSid;
		$staff->staffManageLeave = $staffManageDetail ['staff'];
		$staff->processApprovalsLeave = '';
		$staff->sid = $this->staff ['sid'];
		$staff->applyLeaveDate=$applyLeaveDate;
		// 抄送组
		$staff->processLeaveCC = $staffManageDetail ['CC'];
		$staff->update ();
		
		// 操作日志
		Doo::loadModel ( 'staffOperationLog' );
		$staffOperationLog = new staffOperationLog ();
		$item = array (
				'date' => date ( "Y-m-d H:i:s" ),
				'status' => 3,
				'img' => $this->staff ['avatar'],
				'username' => $this->staff ['username'],
				'operation' => "申请离职",
				'uid' => $this->staff ['sid'],
				'category' => $this->staff ['category'],
				
				'sid' => $this->staff ['sid'] 
		);
		$staffOperationLog->setInvoiceOperationLog ( $item );
		
		return '/settingEmployeeInfo';
	}
	
	/**
	 * 确认离职
	 */
	function employeeDismiss() {
		
		//include Doo::conf ()->BASE_PATH . 'diagnostic/debug.php';
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		$applyLeaveDate = $this->get_args ( 'applyLeaveDate' ) ? $this->get_args ( 'applyLeaveDate' ) : "";
		
		
		if (! empty ( $sidKey )&&!empty($applyLeaveDate)) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$sid = $XDeode->decode ( $sidKey );
			
			$detail = $staff->getStaffBySid ( $sid );
			if (empty ( $detail ))
				die ( 'illegal request' );
				
				// 工龄记录
			$seniorityFormula = json_decode ( $detail ['seniorityFormula'], true );
			$arr = array_keys ( $seniorityFormula );
			$key = end ( $arr );
			
			if (isset ( $seniorityFormula [$key] ['dimissionDate'] ) || empty ( $seniorityFormula [$key] ['dimissionDate'] ))
				$seniorityFormula [$key] ['dimissionDate'] = $applyLeaveDate;//date ( "Y-m-d" );
			else
				die ( 'illegal request' );
				
				// $staff->seniorityFormula = json_encode ( $seniorityFormula );
				// 计算工龄天数
				// echo $staff->seniorityFormula;
			$day = $this->getSeniority ( $seniorityFormula );
			$dimissionDate = $applyLeaveDate;//date ( "Y-m-d " );
			$item = array (
					'sid' => $sid,
					'nature' => 4,
					'pendStatus' => 4,
					'seniorityFormula' => json_encode ( $seniorityFormula ),
					'hireBiasDate' => $day,
					'applyLeaveDate'=>$dimissionDate,
					'dimissionDate' => $dimissionDate 
			);
			$staff->setStaffByCondition ( $item );
			
			// 发送微信抄送
			Doo::loadModel ( 'staffLeaveManage' );
			$staffLeaveManage = new staffLeaveManage ();
			$msg = '[抄送]' . $detail ['category'] . '-' . $detail ['username'] . '申请离职成功\n离职时间：' . $dimissionDate;
			
			$cidmode = $detail ['cid'];
			if (! empty ( $detail ['departmentID'] ))
				$cidmode = $detail ['cid'] . '-' . $detail ['departmentID'];
			$InductionCC = $staffLeaveManage->getStaffManageByCid ( $cidmode );
			$InductionCC = json_decode ( $InductionCC ['CC'], true );
			
			foreach ( $InductionCC as $value ) {
				$this->setWXMsg ( $value [0], $msg );
			}
			
			return '/hrEmployee';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 申请转正
	 */
	function appliedRegular() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'staffRegularManage' );
		$staffLeaveManage = new staffRegularManage ();
		
		$item = array (
				'sid' => $this->staff ['sid'],
				// 状态改成离职申请
				'pendStatus' => 5 
		);
		$staff->setStaffByCondition ( $item );
		
		// 离职审批组
		// 获得审批组KEY
		$staff = new staff ();
		$cidMode = $this->staff ['cid'];
		if (! empty ( $this->staff ['departmentID'] ))
			$cidMode = $this->staff ['cid'] . '_' . $this->staff ['departmentID'];
		
		$staffManageDetail = $staffLeaveManage->getStaffManageByCid ( $cidMode );
		if (empty ( $staffManageDetail ))
			die ( 'illegal request ' );
		
		$pendingApprovalsSid = current ( $staffManageDetail ['staffList'] ) [0];
		if (empty ( $pendingApprovalsSid ))
			die ( 'illegal request ' );
		
		$staff->pendingApprovalsLeave = $pendingApprovalsSid;
		$staff->staffManageLeave = $staffManageDetail ['staff'];
		$staff->processApprovalsLeave = '';
		$staff->sid = $this->staff ['sid'];
		
		// 抄送组
		$staff->processLeaveCC = $staffManageDetail ['CC'];
		$staff->update ();
		
		// 操作日志
		Doo::loadModel ( 'staffOperationLog' );
		$staffOperationLog = new staffOperationLog ();
		$item = array (
				'date' => date ( "Y-m-d H:i:s" ),
				'status' => 3,
				'img' => $this->staff ['avatar'],
				'username' => $this->staff ['username'],
				'operation' => "申请转正",
				'uid' => $this->staff ['sid'],
				'category' => $this->staff ['category'],
				
				'sid' => $this->staff ['sid'] 
		);
		$staffOperationLog->setInvoiceOperationLog ( $item );
		
		return '/settingEmployeeInfo';
	}
	
	/**
	 * 申请晋升
	 */
	function appliedPromote() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		$position = $this->get_args ( 'position' ) ? $this->get_args ( 'position' ) : '';
		
		$baseWage = is_numeric ( $this->get_args ( 'baseWage' ) ) ? $this->get_args ( 'baseWage' ) : 0;
		$postWage = is_numeric ( $this->get_args ( 'postWage' ) ) ? $this->get_args ( 'postWage' ) : 0;
		$achievementBonus = is_numeric ( $this->get_args ( 'achievementBonus' ) ) ? $this->get_args ( 'achievementBonus' ) : 0;
		
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'promoteManage' );
		$staffLeaveManage = new promoteManage ();
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$sid = $XDeode->decode ( $sidKey );
		
		$detail = $staff->getStaffBySid ( $sid );
		
		// 离职审批组
		// 获得审批组KEY
		
		$cidMode = $detail ['cid'];
		if (! empty ( $detail ['departmentID'] ))
			$cidMode = $detail ['cid'] . '_' . $detail ['departmentID'];
		
		$staffManageDetail = $staffLeaveManage->getStaffManageByCid ( $cidMode );
		if (empty ( $staffManageDetail ['staffList'] ))
			die ( 'illegal request ' );
		
		$pendingApprovalsSid = current ( $staffManageDetail ['staffList'] ) [0];
		if (empty ( $pendingApprovalsSid ))
			die ( 'illegal request ' );
		
		$item = array (
				'sid' => $sid,
				'appliedPromote' => $position . '_' . $baseWage . '_' . $postWage . '_' . $achievementBonus,
				// 状态改成申请晋升
				'pendStatus' => 6 
		);
		$staff->setStaffByCondition ( $item );
		
		$staff = new staff ();
		$staff->pendingApprovalsLeave = $pendingApprovalsSid;
		$staff->staffManageLeave = $staffManageDetail ['staff'];
		$staff->processApprovalsLeave = '';
		$staff->sid = $sid;
		
		// 抄送组
		$staff->processLeaveCC = $staffManageDetail ['CC'];
		$staff->update ();
		
		$pDetail = explode ( '_', $position );
		
		// 操作日志
		Doo::loadModel ( 'staffOperationLog' );
		$staffOperationLog = new staffOperationLog ();
		$item = array (
				'date' => date ( "Y-m-d H:i:s" ),
				'status' => 3,
				
				'operation' => "申请晋升" . $pDetail [1],
				
				'img' => $this->staff ['avatar'],
				'username' => $this->staff ['username'],
				'uid' => $detail ['sid'],
				'category' => $this->staff ['category'],
				'sid' => $this->staff ['sid'] 
		);
		$staffOperationLog->setInvoiceOperationLog ( $item );
		
		return '/hrEmployee';
	}
	
	/**
	 * 再入职申请
	 */
	function employeeReentryApply() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		if (! empty ( $sidKey )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			Doo::loadModel ( 'reentryManage' );
			$reentryManage = new reentryManage ();
			
			$sid = $XDeode->decode ( $sidKey );
			
			$detail = $staff->getStaffBySid ( $sid );
			if (empty ( $detail ))
				die ( 'illegal request' );
				
			$item = array (
					'sid' => $sid,
					'pendStatus' => 7 
			);
			$staff->setStaffByCondition ( $item );
			
			// 离职审批组
			// 获得审批组KEY
			$staff = new staff ();
			$cidMode = $detail ['cid'];
			if (! empty ( $detail ['departmentID'] ))
				$cidMode = $detail ['cid'] . '_' . $detail ['departmentID'];
			
			$staffManageDetail = $reentryManage->getStaffManageByCid ( $cidMode );
			if (empty ( $staffManageDetail ))
				die ( 'illegal request ' );
			
			$pendingApprovalsSid = current ( $staffManageDetail ['staffList'] ) [0];
			if (empty ( $pendingApprovalsSid ))
				die ( 'illegal request ' );
			$staff->pendingApprovals = $pendingApprovalsSid;
			$staff->staffManage = $staffManageDetail ['staff'];
			$staff->processApprovals = '';
			$staff->sid = $detail ['sid'];
			
			// 抄送组
			$staff->processCC = $staffManageDetail ['CC'];
			$staff->update ();
			
			// 操作日志
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			$item = array (
					'date' => date ( "Y-m-d H:i:s" ),
					'status' => 3,
					'img' => $detail ['avatar'],
					'username' => $detail ['username'],
					'operation' => "申请再入职",
					'uid' => $detail ['sid'],
					'category' => $detail ['category'],
					
					'sid' => $detail ['sid'] 
			);
			$staffOperationLog->setInvoiceOperationLog ( $item );
			
			return '/hrEmployee';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 确认在入职
	 */
	function employeeReentry() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : "";
		
		if (! empty ( $sidKey )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$sid = $XDeode->decode ( $sidKey );
			
			$detail = $staff->getStaffBySid ( $sid );
			if (empty ( $detail ))
				die ( 'illegal request' );
				// 工龄记录
			$seniorityFormula = json_decode ( $detail ['seniorityFormula'] );
			
			array_push ( $seniorityFormula, array (
					'InductionDate' => date ( "Y-m-d H:i:s" ),
					'dimissionDate' => '' 
			) );
			
			$item = array (
					'sid' => $sid,
					'nature' => 1,
					'pendStatus' => 0,
					'seniorityFormula' => json_encode ( $seniorityFormula ),
					'hiredate' => date ( "Y-m-d" ) 
			);
			$staff->setStaffByCondition ( $item );
			// 更新假期相关信息
			Doo::loadModel ( 'holidaystaff' );
			$holidaystaff = new HStaff ();
			$holidaystaff->delete ( array (
					'where' => 'uid=' . $sid 
			) );
			$holidaystaff = new HStaff ();
			$holidaystaff->uid = $sid;
			$holidaystaff->insert ();
			$staff = new staff ();
			$staffmsg = $staff->getUserById ( $sid );
			$this->updateAnnualLeave ( $staffmsg [0] );
			
			return '/hrEmployee';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 员工再入职审批流程
	 */
	function reentryApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'reentryManage' );
		$staffManage = new reentryManage ();
		
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$staffManageList = $staffManage->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffManageList as $key => $value ) {
			// 审批人员
			$name = json_decode ( $value ['staff'] );
			$employeeApprovals = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					@array_push ( $employeeApprovals, $ve [1] );
				}
			}
			$employeeApprovals = implode ( '->', $employeeApprovals );
			
			// 抄送人员
			$name = json_decode ( $value ['CC'] );
			$CC = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $CC, $ve [1] );
				}
			}
			$CC = implode ( ' ', $CC );
			
			foreach ( $categoryList as $k => $v ) {
				$cid = $v ['cid'];
				if (isset ( $v ['did'] ))
					$cid .= '_' . $v ['did'];
				if ($cid == $value ['cid']) { // echo $cid.'//';echo $value['cid'].'<br/>';
					$categoryList [$k] ['employeeApprovals'] = $employeeApprovals;
					$categoryList [$k] ['CC'] = $CC;
					break;
				}
			}
		}
		foreach ( $categoryList as $key => $value ) {
			if (! isset ( $value ['employeeApprovals'] ))
				$categoryList [$key] ['employeeApprovals'] = '';
			if (! isset ( $value ['CC'] ))
				$categoryList [$key] ['CC'] = '';
		}
		
		// print_r($categoryList);
		$stafflist = $staff->getStaff ( true );
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['staffList'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "employeeApprovals";
		
		$this->render ( "/humanResource/reentryApprovals", $this->data );
	}
	
	/**
	 * 添加员工审批人员
	 */
	function reentryApprovalsAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$uidlist = $this->get_args ( 'uidlist' ) ? $this->get_args ( 'uidlist' ) : "";
		$uidlist = explode ( ",", $uidlist );
		
		if (! empty ( $cidKey ) && ! empty ( $uidlist )) {
			Doo::loadModel ( "reentryManage" );
			$staffManage = new reentryManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			// echo $cidMode;die;
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			// 审批人员
			$list = array ();
			foreach ( $uidlist as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new reentryManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->staff = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new reentryManage ();
				
				$staffManage->staff = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/reentryApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 添加抄送员工，微信通知
	 */
	function reentryCCAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$staff = $this->get_args ( 'staff' ) ? $this->get_args ( 'staff' ) : "";
		// && ! empty ( $staff )
		if (! empty ( $cidKey )) {
			Doo::loadModel ( "reentryManage" );
			$staffManage = new reentryManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			$list = array ();
			foreach ( $staff as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new reentryManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->CC = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new reentryManage ();
				
				$staffManage->CC = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/reentryApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 员工审批流程
	 */
	function employeeApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'staffManage' );
		$staffManage = new staffManage ();
		
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$staffManageList = $staffManage->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffManageList as $key => $value ) {
			// 审批人员
			$name = json_decode ( $value ['staff'] );
			$employeeApprovals = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $employeeApprovals, $ve [1] );
				}
			}
			$employeeApprovals = implode ( '->', $employeeApprovals );
			
			// 抄送人员
			$name = json_decode ( $value ['CC'] );
			$CC = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $CC, $ve [1] );
				}
			}
			$CC = implode ( ' ', $CC );
			
			foreach ( $categoryList as $k => $v ) {
				$cid = $v ['cid'];
				if (isset ( $v ['did'] ))
					$cid .= '_' . $v ['did'];
				if ($cid == $value ['cid']) { // echo $cid.'//';echo $value['cid'].'<br/>';
					$categoryList [$k] ['employeeApprovals'] = $employeeApprovals;
					$categoryList [$k] ['CC'] = $CC;
					break;
				}
			}
		}
		foreach ( $categoryList as $key => $value ) {
			if (! isset ( $value ['employeeApprovals'] ))
				$categoryList [$key] ['employeeApprovals'] = '';
			if (! isset ( $value ['CC'] ))
				$categoryList [$key] ['CC'] = '';
		}
		
		// print_r($categoryList);
		$stafflist = $staff->getStaff ( true );
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['staffList'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "employeeApprovals";
		
		$this->render ( "/humanResource/employeeApprovals", $this->data );
	}
	
	/**
	 * 添加员工审批人员
	 */
	function employeeApprovalsAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$uidlist = $this->get_args ( 'uidlist' ) ? $this->get_args ( 'uidlist' ) : "";
		$uidlist = explode ( ",", $uidlist );
		
		if (! empty ( $cidKey ) && ! empty ( $uidlist )) {
			Doo::loadModel ( "staffManage" );
			$staffManage = new staffManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			// echo $cidMode;die;
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			// 审批人员
			$list = array ();
			foreach ( $uidlist as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->staff = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffManage ();
				
				$staffManage->staff = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/employeeApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 添加抄送员工，微信通知
	 */
	function employeeCCAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$staff = $this->get_args ( 'staff' ) ? $this->get_args ( 'staff' ) : "";
		// && ! empty ( $staff )
		if (! empty ( $cidKey )) {
			Doo::loadModel ( "staffManage" );
			$staffManage = new staffManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			$list = array ();
			foreach ( $staff as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->CC = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffManage ();
				
				$staffManage->CC = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/employeeApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 离职审批流程设置
	 */
	function leaveOfficeApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'staffLeaveManage' );
		$staffManage = new staffLeaveManage ();
		
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$staffManageList = $staffManage->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffManageList as $key => $value ) {
			// 审批人员
			$name = json_decode ( $value ['staff'] );
			$employeeApprovals = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $employeeApprovals, $ve [1] );
				}
			}
			$employeeApprovals = implode ( '->', $employeeApprovals );
			
			// 抄送人员
			$name = json_decode ( $value ['CC'] );
			$CC = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $CC, $ve [1] );
				}
			}
			$CC = implode ( ' ', $CC );
			
			foreach ( $categoryList as $k => $v ) {
				$cid = $v ['cid'];
				if (isset ( $v ['did'] ))
					$cid .= '_' . $v ['did'];
				if ($cid == $value ['cid']) { // echo $cid.'//';echo $value['cid'].'<br/>';
					$categoryList [$k] ['employeeApprovals'] = $employeeApprovals;
					$categoryList [$k] ['CC'] = $CC;
					break;
				}
			}
		}
		foreach ( $categoryList as $key => $value ) {
			if (! isset ( $value ['employeeApprovals'] ))
				$categoryList [$key] ['employeeApprovals'] = '';
			if (! isset ( $value ['CC'] ))
				$categoryList [$key] ['CC'] = '';
		}
		
		// print_r($categoryList);
		$stafflist = $staff->getStaff ( true );
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['staffList'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "employeeApprovals";
		
		$this->render ( "/humanResource/leaveOfficeApprovals", $this->data );
	}
	
	/**
	 * 添加员工审批人员
	 */
	function employeeleaveApprovalsAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$uidlist = $this->get_args ( 'uidlist' ) ? $this->get_args ( 'uidlist' ) : "";
		$uidlist = explode ( ",", $uidlist );
		
		if (! empty ( $cidKey ) && ! empty ( $uidlist )) {
			Doo::loadModel ( "staffLeaveManage" );
			$staffManage = new staffLeaveManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			// echo $cidMode;die;
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			// 审批人员
			$list = array ();
			foreach ( $uidlist as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffLeaveManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->staff = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffLeaveManage ();
				
				$staffManage->staff = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/leaveOfficeApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 添加抄送员工，微信通知
	 */
	function employeeleaveCCAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$staff = $this->get_args ( 'staff' ) ? $this->get_args ( 'staff' ) : "";
		
		if (! empty ( $cidKey ) && ! empty ( $staff )) {
			Doo::loadModel ( "staffLeaveManage" );
			$staffManage = new staffLeaveManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			$list = array ();
			foreach ( $staff as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffLeaveManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->CC = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffLeaveManage ();
				
				$staffManage->CC = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/leaveOfficeApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 转正审批流程设置
	 */
	function regularApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'staffRegularManage' );
		$staffManage = new staffRegularManage ();
		
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$staffManageList = $staffManage->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffManageList as $key => $value ) {
			// 审批人员
			$name = json_decode ( $value ['staff'] );
			$employeeApprovals = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $employeeApprovals, $ve [1] );
				}
			}
			$employeeApprovals = implode ( '->', $employeeApprovals );
			
			// 抄送人员
			$name = json_decode ( $value ['CC'] );
			$CC = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $CC, $ve [1] );
				}
			}
			$CC = implode ( ' ', $CC );
			
			foreach ( $categoryList as $k => $v ) {
				$cid = $v ['cid'];
				if (isset ( $v ['did'] ))
					$cid .= '_' . $v ['did'];
				if ($cid == $value ['cid']) { // echo $cid.'//';echo $value['cid'].'<br/>';
					$categoryList [$k] ['employeeApprovals'] = $employeeApprovals;
					$categoryList [$k] ['CC'] = $CC;
					break;
				}
			}
		}
		foreach ( $categoryList as $key => $value ) {
			if (! isset ( $value ['employeeApprovals'] ))
				$categoryList [$key] ['employeeApprovals'] = '';
			if (! isset ( $value ['CC'] ))
				$categoryList [$key] ['CC'] = '';
		}
		
		// print_r($categoryList);
		$stafflist = $staff->getStaff ( true );
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['staffList'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "employeeApprovals";
		
		$this->render ( "/humanResource/regularApprovals", $this->data );
	}
	
	/**
	 * 添加转正审批人员
	 */
	function employeRegularApprovalsAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$uidlist = $this->get_args ( 'uidlist' ) ? $this->get_args ( 'uidlist' ) : "";
		$uidlist = explode ( ",", $uidlist );
		
		if (! empty ( $cidKey ) && ! empty ( $uidlist )) {
			Doo::loadModel ( "staffRegularManage" );
			$staffManage = new staffRegularManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			// echo $cidMode;die;
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			// 审批人员
			$list = array ();
			foreach ( $uidlist as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffRegularManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->staff = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffRegularManage ();
				
				$staffManage->staff = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/regularApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 添加抄送员工，微信通知
	 */
	function employeRegularCCAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$staff = $this->get_args ( 'staff' ) ? $this->get_args ( 'staff' ) : "";
		
		if (! empty ( $cidKey ) && ! empty ( $staff )) {
			Doo::loadModel ( "staffRegularManage" );
			$staffManage = new staffRegularManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			$list = array ();
			foreach ( $staff as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new staffRegularManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->CC = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new staffRegularManage ();
				
				$staffManage->CC = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/regularApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 晋升流程设置
	 */
	function promoteApprovals() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		Doo::loadModel ( 'promoteManage' );
		$staffManage = new promoteManage ();
		
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$staffManageList = $staffManage->find ( array (
				'asArray' => true 
		) );
		
		foreach ( $staffManageList as $key => $value ) {
			// 审批人员
			$name = json_decode ( $value ['staff'] );
			$employeeApprovals = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $employeeApprovals, $ve [1] );
				}
			}
			$employeeApprovals = implode ( '->', $employeeApprovals );
			
			// 抄送人员
			$name = json_decode ( $value ['CC'] );
			$CC = array ();
			if (count ( $name ) != 0) {
				foreach ( $name as $ve ) {
					array_push ( $CC, $ve [1] );
				}
			}
			$CC = implode ( ' ', $CC );
			
			foreach ( $categoryList as $k => $v ) {
				$cid = $v ['cid'];
				if (isset ( $v ['did'] ))
					$cid .= '_' . $v ['did'];
				if ($cid == $value ['cid']) { // echo $cid.'//';echo $value['cid'].'<br/>';
					$categoryList [$k] ['employeeApprovals'] = $employeeApprovals;
					$categoryList [$k] ['CC'] = $CC;
					break;
				}
			}
		}
		foreach ( $categoryList as $key => $value ) {
			if (! isset ( $value ['employeeApprovals'] ))
				$categoryList [$key] ['employeeApprovals'] = '';
			if (! isset ( $value ['CC'] ))
				$categoryList [$key] ['CC'] = '';
		}
		
		// print_r($categoryList);
		$stafflist = $staff->getStaff ( true );
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['staffList'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "employeeApprovals";
		
		$this->render ( "/humanResource/promoteApprovals", $this->data );
	}
	
	/**
	 * 添加晋升审批人员
	 */
	function promoteApprovalsAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$uidlist = $this->get_args ( 'uidlist' ) ? $this->get_args ( 'uidlist' ) : "";
		$uidlist = explode ( ",", $uidlist );
		
		if (! empty ( $cidKey ) && ! empty ( $uidlist )) {
			Doo::loadModel ( "promoteManage" );
			$staffManage = new promoteManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			// echo $cidMode;die;
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			// 审批人员
			$list = array ();
			foreach ( $uidlist as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new promoteManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->staff = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new promoteManage ();
				
				$staffManage->staff = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/promoteApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 添加抄送员工，微信通知
	 */
	function promoteApprovalsCCAdd() {
		$cidKey = $this->get_args ( 'cidKey' ) ? $this->get_args ( 'cidKey' ) : "";
		$staff = $this->get_args ( 'staff' ) ? $this->get_args ( 'staff' ) : "";
		
		if (! empty ( $cidKey ) && ! empty ( $staff )) {
			Doo::loadModel ( "promoteManage" );
			$staffManage = new promoteManage ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			// 获得抄送内容
			$approvalKey = explode ( '_', $cidKey );
			$cidMode = array ();
			foreach ( $approvalKey as $value ) {
				$cid = $XDeode->decode ( $value );
				array_push ( $cidMode, $cid );
			}
			
			$cidMode = implode ( '_', $cidMode );
			$staffManageInfo = $staffManage->getOne ( array (
					'where' => 'cid ="' . $cidMode . '" ',
					'asArray' => true 
			) );
			
			$list = array ();
			foreach ( $staff as $key => $value ) {
				$info = explode ( ":", $value );
				array_push ( $list, $info );
			}
			
			if (empty ( $staffManageInfo )) {
				$staffManage = new promoteManage ();
				
				$staffManage->cid = $cidMode;
				$staffManage->CC = json_encode ( $list );
				
				$staffManage->insert ();
			} else {
				$staffManage = new promoteManage ();
				
				$staffManage->CC = json_encode ( $list );
				$staffManage->update ( array (
						'where' => 'icid = ' . $staffManageInfo ['icid'] 
				) );
			}
			return '/promoteApprovals';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 员工权限管理
	 */
	function hrEmployeeApprovalsSetting() {
		$pendStatus = $this->get_args ( 'pendStatus' ) ? $this->get_args ( 'pendStatus' ) : "ALL";
		$nature = $this->get_args ( 'nature' ) ? $this->get_args ( 'nature' ) : 'ALL';
		$cid_did = $this->get_args ( 'cid_did' ) ? $this->get_args ( 'cid_did' ) : 'ALL';
		$MebSea = $this->get_args ( 'MebSea' ) ? $this->get_args ( 'MebSea' ) : '';
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		$con = '  username != "admin" ';
		if ($pendStatus == 'ALL')
			$con .= '  ';
		elseif ($pendStatus == 'OTJOB')
			$con .= ' and pendStatus=0 ';
		elseif ($pendStatus == 'LVJOB')
			$con .= ' and pendStatus=4 ';
		
		if ($nature == 'ALL')
			$con .= ' and (nature=1 or nature=2 or nature=3 or nature=4) ';
		elseif ($nature == 'FORMAL')
			$con .= ' and  nature=1';
		elseif ($nature == 'TRIAL')
			$con .= ' and  nature=2';
		elseif ($nature == 'PRACTICE')
			$con .= ' and  nature=3';
		
		if ($cid_did != 'ALL') {
			$department = explode ( '_', $cid_did );
			$cid = $XDeode->decode ( $department [0] );
			$departmentID = false;
			if (! empty ( $department [1] )) {
				$departmentID = $XDeode->decode ( $department [1] );
			}
			if (is_numeric ( $cid ) && is_numeric ( $departmentID ))
				$con .= ' and  cid=' . $cid . ' and departmentID=' . $departmentID;
			elseif (is_numeric ( $cid ) && ! is_numeric ( $departmentID ))
				$con .= ' and  cid=' . $cid;
		}
		
		if (! empty ( $MebSea ))
			$con .= ' and ( username like "%' . $MebSea . '%" or jobNumber like "%' . $MebSea . '%" )';
		
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'L_category' );
		$L_category = new L_category ();
		
		$stafflist = $staff->getStaffByCondition ( $con );
		
		//print_r($stafflist);
		
		$monthstart = date ( 'Y-m-d 00:00:00', mktime ( 0, 0, 0, date ( 'm' ), 1, date ( 'Y' ) ) );
		$monthend = date ( 'Y-m-d 23:59:59', mktime ( 0, 0, 0, date ( 'm' ) + 1, 0, date ( 'Y' ) ) );
		
		// 本月在职 入职 离职人员数量
		$onJobCount = $staff->count ( array (
				'where' => 'pendStatus=0 and username!="admin"' 
		) );
		$inJobCount = $staff->count ( array (
				'where' => 'pendStatus=0 and username!="admin" and (InductionDate>="' . $monthstart . '" and InductionDate<="' . $monthend . '" )' 
		) );
		$leaveJobCount = $staff->count ( array (
				'where' => 'pendStatus=4 and username!="admin" and (dimissionDate>="' . $monthstart . '" and dimissionDate<="' . $monthend . '" )' 
		) );
		
		// 生成工号
		$jobNumber = $this->createJobNumber ();
		// 获得办事和部门
		$categoryList = $L_category->getCategoryDepartment ();
		
		$monthstart = date ( 'm.d', mktime ( 0, 0, 0, date ( 'm' ), 1, date ( 'Y' ) ) );
		$monthend = date ( 'm.d', mktime ( 0, 0, 0, date ( 'm' ) + 1, 0, date ( 'Y' ) ) );
		
		// 员工可选的
		Doo::loadModel ( 'district' );
		$district = new district ();
		$this->data ['districtList'] = $district->get_lv ( 1 );
		
		$this->data ['onJobCount'] = $onJobCount;
		$this->data ['inJobCount'] = $inJobCount;
		$this->data ['leaveJobCount'] = $leaveJobCount;
		
		$this->data ['monthstart'] = $monthstart;
		$this->data ['monthend'] = $monthend;
		
		$this->data ['pendStatus'] = $pendStatus;
		$this->data ['nature'] = $nature;
		$this->data ['MebSea'] = $MebSea;
		$this->data ['cid_did'] = $cid_did;
		
		$this->data ['categoryList'] = $categoryList;
		$this->data ['jobNumber'] = $jobNumber;
		$this->data ['stafflist'] = $stafflist;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "hrEmployeeInfo";
		
		$this->render ( "/humanResource/hrEmployeeApprovalsSetting", $this->data );
	}
	
	/**
	 * 设置员工访问CLD权限
	 */
	function hrEmployeeAccess() {
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : '';
		$access = $this->get_args ( 'access' ) ? $this->get_args ( 'access' ) : "";
		
		if (! empty ( $sidKey )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$sid = $XDeode->decode ( $sidKey );
			$detail = $staff->getStaffBySid ( $sid );
			
			$access = json_encode ( $access );
			
			$staff->cldAccess = $access;
			$staff->update ( array (
					'where' => 'sid=' . $sid 
			) );
			
			return '/hrEmployeeApprovalsSetting';
		}
		
		die ( 'illegal request' );
	}
	
	/**
	 * 添加浏览省份的权限
	 */
	function addUserDistrictAuthor() {
		$didKey = $this->get_args ( 'didKey' ) ? $this->get_args ( 'didKey' ) : array ();
		$sidKey = $this->get_args ( 'sidKey' ) ? $this->get_args ( 'sidKey' ) : array ();
		
		if (! empty ( $didKey ) && ! empty ( $sidKey )) {
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			
			$sid = $XDeode->decode ( $sidKey );
			$sDetail = $staff->getStaffBySid ( $sid );
			
			$sDidList = explode ( ',', $sDetail ['did'] );
			
			$staff->did = implode ( ',', $didKey );
			$staff->sid = $sid;
			$staff->update ();
			return '/hrEmployeeApprovalsSetting';
		}
		die ( 'illegal request' );
	}
	
	/**
	 * 岗位设置
	 */
	function position() {
		Doo::loadModel ( 'position' );
		$position = new position ();
		
		$listPosition = $position->getPositionByAll ();
		
		$this->data ['listPosition'] = $listPosition;
		
		$this->data ['memu'] = "HumanResource";
		$this->data ['hrMemu'] = "position";
		
		$this->render ( "/humanResource/position", $this->data );
	}
	
	/**
	 * 添加岗位设置
	 * @return string
	 */
	function positionAdd() {
		$positionName = $this->get_args ( 'positionName' ) ? $this->get_args ( 'positionName' ) : "";
		$positionDescribe = $this->get_args ( 'positionDescribe' ) ? $this->get_args ( 'positionDescribe' ) : "";
		$baseWage = is_numeric ( $this->get_args ( 'baseWage' ) ) ? $this->get_args ( 'baseWage' ) : 0;
		$postWage = is_numeric ( $this->get_args ( 'postWage' ) ) ? $this->get_args ( 'postWage' ) : 0;
		$achievementBonus = is_numeric ( $this->get_args ( 'achievementBonus' ) ) ? $this->get_args ( 'achievementBonus' ) : 0;
		// && ! empty ( $postWage ) && ! empty ( $achievementBonus )
		if (! empty ( $positionName ) && ! empty ( $positionDescribe ) && ! empty ( $baseWage )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'position' );
			$position = new position ();
			
			$position->positionName = $positionName;
			$position->positionDescribe = $positionDescribe;
			$position->baseWage = $baseWage;
			$position->postWage = $postWage;
			$position->achievementBonus = $achievementBonus;
			
			$position->insert ();
		}
		return '/position';
	}
	
	/**
	 * 添加岗位设置
	 * @return string
	 */
	function positionUpdate() {
		$pidkey = $this->get_args ( 'pidkey' ) ? $this->get_args ( 'pidkey' ) : "";
		
		$positionName = $this->get_args ( 'positionName' ) ? $this->get_args ( 'positionName' ) : "";
		$positionDescribe = $this->get_args ( 'positionDescribe' ) ? $this->get_args ( 'positionDescribe' ) : "";
		$baseWage = is_numeric ( $this->get_args ( 'baseWage' ) ) ? $this->get_args ( 'baseWage' ) : 0;
		$postWage = is_numeric ( $this->get_args ( 'postWage' ) ) ? $this->get_args ( 'postWage' ) : 0;
		$achievementBonus = is_numeric ( $this->get_args ( 'achievementBonus' ) ) ? $this->get_args ( 'achievementBonus' ) : 0;
		// && ! empty ( $postWage ) && ! empty ( $achievementBonus )
		if (! empty ( $pidkey ) && ! empty ( $positionName ) && ! empty ( $positionDescribe ) && ! empty ( $baseWage )) {
			
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'position' );
			$position = new position ();
			
			$pid = $XDeode->decode ( $pidkey );
			
			$position->positionName = $positionName;
			$position->positionDescribe = $positionDescribe;
			$position->baseWage = $baseWage;
			$position->postWage = $postWage;
			$position->achievementBonus = $achievementBonus;
			
			$position->update ( array (
					'where' => ' pid=' . $pid 
			) );
			// 更新用户岗位信息
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$staff->position = $positionName;
			$staff->update ( array (
					'where' => ' positionId=' . $pid 
			) );
		}
		return '/position';
	}
	
	/**
	 * 删除单位
	 */
	function positionDelete() {
		$pidkey = $this->get_args ( 'pidkey' ) ? $this->get_args ( 'pidkey' ) : "";
		
		if (! empty ( $pidkey )) {
			Doo::loadClass ( 'XDeode' );
			$XDeode = new XDeode ( 5 );
			Doo::loadModel ( 'position' );
			$position = new position ();
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			
			$pid = $XDeode->decode ( $pidkey );
			
			$staffCount = $staff->count ( array (
					'where' => 'positionId = "' . $pid . '"' 
			) );
			if ($staffCount != 0)
				die ( 'illegal request' );
			$position->delete ( array (
					'where' => ' pid=' . $pid 
			) );
		}
		return '/position';
	}
	
	/**
	 * 获得岗位下所有的用户
	 */
	function ajaxGetStaffByPid() {
		$pidkey = $this->get_args ( 'pidkey' ) ? $this->get_args ( 'pidkey' ) : "";
		if (empty ( $pidkey )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		Doo::loadModel ( 'position' );
		$position = new position ();
		
		$detail = $position->getPositionByPid ( $pidkey );
		
		$list = $staff->getStaffByPositionId ( $pidkey );
		$html = '<tr><th class="taC">办事处</th><th class="taC">姓名</th><th class="taC">入职时间</th></tr>';
		foreach ( $list as $key => $value ) {
			
			// seniorityFormula
			$seniorityFormula = json_decode ( $value ['seniorityFormula'], true );
			if (! isset ( $seniorityFormula [0] ))
				$seniorityFormula [0] ['InductionDate'] = 0;
			$html .= '<tr>
				<td>' . $value ['category'] . '</td><td>' . $value ['username'] . '</td><td>' . $seniorityFormula [0] ['InductionDate'] . '</td>
			</tr>';
		}
		echo json_encode ( array (
				'status' => 1,
				'positionName' => $detail ['positionName'],
				'html' => $html 
		) );
		die ();
	}
	
	/**
	 * 获取岗位信息
	 */
	function ajaxGetPositionByPid() {
		$pidkey = $this->get_args ( 'pidkey' ) ? $this->get_args ( 'pidkey' ) : "";
		if (empty ( $pidkey )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		
		Doo::loadModel ( 'position' );
		$position = new position ();
		
		$detail = $position->getPositionByPid ( $pidkey );
		
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail 
		) );
		die ();
	}
	
	/**
	 * 获得员工信息(未编写html)
	 */
	function ajaxGetStaffInfoBySid() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		if (empty ( $serial )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$sid = $XDeode->decode ( $serial );
		$detail = $staff->getStaffBySid ( $sid );
		
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail 
		) );
		die ();
	}
	
	/**
	 * 获得员工信息
	 */
	function ajaxGetStaffInfoByType() {
		$type = $this->get_args ( 'type' ) ? $this->get_args ( 'type' ) : "";
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		// $loss = $this->get_args ( 'loss' ) ? $this->get_args ( 'loss' ) : false;
		
		if (empty ( $serial )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		
		if ($type == 'STAFF') {
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			
			$sid = $XDeode->decode ( $serial );
			$detail = $staff->getStaffBySid ( $sid );
			
			// 获得操作日志
			$SOPL = $staffOperationLog->getInvoiceOperationLogByUid ( $sid, 'desc' );
			if (empty ( $detail ))
				$html = '';
			else {
				$html = '
				<div class="modal-body saeaList">
					<div class="fL staff-detail-con">
						<table class="table table-bordered table-condensed">
						<tbody>
							<tr>
								<th class="taC" width="150">工号</th><td width="210">' . $detail ['jobNumber'] . '</td>
								<th class="taC" width="150">姓名</th><td width="210">' . $detail ['username'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">办事处/部门</th><td>' . $detail ['category'] . '/' . $detail ['department'] ['departmentName'] . '</td>
								<th class="taC" width="150">岗位</th><td>' . $detail ['position'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">入职日期</th><td>' . $detail ['hiredate'] . '</td>
								<th class="taC" width="150">手机</th><td>' . $detail ['telephone'] . '</td>
							</tr>
							<tr>
								<th class="taC">QQ</th><td>' . $detail ['qq'] . '</td>
								<th class="taC">微信</th><td>' . $detail ['wecat'] . '</td>
							</tr>
							<tr>
								<th class="taC">电话</th><td>' . $detail ['phone'] . '</td>
								<th class="taC">邮箱</th><td>' . $detail ['email'] . '</td>
							</tr>
						</tbody>
					</table>';
							
				if($detail ['pendStatus']!=3){
					$html .= '<table class="table table-bordered table-condensed">
							<tbody><tr>
								<th class="taC" width="150">性别</th><td width="210">' . $detail ['gender'] . '</td>
								<th class="taC" width="150">出生日期</th><td>' . $detail ['birthday'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">最高学历</th><td>' . $detail ['qualifications'] . '</td>
								<th class="taC" width="150">婚姻状况</th><td>
					
										';
					
					if ($detail ['marriage'] == 0)
						$html .= '未婚';
						elseif ($detail ['marriage'] == 1)
						$html .= '已婚';
					
						$html .= '
												</td>
							</tr>
							<tr>
								<th class="taC" width="150">籍贯</th><td colspan="3">' . $detail ['nativePlace'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">现居住地址</th><td colspan="3">' . $detail ['living'] . '</td>
							</tr>
						</tbody>
					</table>
					<table class="table table-bordered table-condensed">
							<tbody><tr>
								<th class="taC" width="150">基本工资</th><td width="210">' . $detail ['baseWage'] . '</td>
								<th class="taC" width="150">岗位工资</th><td>' . $detail ['postWage'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">绩效奖金</th><td>' . $detail ['achievementBonus'] . '</td>
								<th class="taC" width="150"></th><td></td>
							</tr>
						</tbody>
					</table>';
					
				}
										
					
						
										
						if($detail ['pendStatus']==3){
							$html .= '<table class="table table-bordered table-condensed">
							<tbody>
							<tr>
								<th class="taC" width="150">离职原因</th><td>'.$detail ['dimissionReason'].'</td>
							</tr>
							<tr>
								<th class="taC" width="150">离职时间</th><td>'.$detail ['applyLeaveDate'].'</td>
							</tr>
						</tbody>
					</table>	';
						}				
								
										
										
					$html .= '</div>
												
					<div class="fL staff-detail-side">
						<!--入职试用 & 离职后再入职试用-->
						';
				
				foreach ( $SOPL as $key => $value ) {
					$html .= '<div class="infoFlowList">
						 <div class="dateTitle">
				<em class="month"><span class="num">' . date ( 'm', strtotime ( $value ['date'] ) ) . '</span><span class="text">-' . date ( 'd', strtotime ( $value ['date'] ) ) . '</span></em>
							 <span class="year">' . date ( 'Y', strtotime ( $value ['date'] ) ) . '</span>
						 </div>
						 <ul class="flowList">
							 <li class="item colGray">' . $value ['category'] . '-' . $value ['username'] . '</li>
							 <li class="item">' . $value ['operation'] . '</li>
						 </ul>
						</div>';
				}
				
				$html .= '
						
					</div>
										
										
				</div>
				
						';
			}
			echo json_encode ( array (
					'status' => 1,
					'sidKey' => $serial,
					'html' => $html 
			) );
			die ();
		} elseif ($type == 'EMPLOYEE') {
			
			Doo::loadModel ( 'staff' );
			$staff = new staff ();
			Doo::loadModel ( 'L_category' );
			$L_category = new L_category ();
			Doo::loadModel ( 'staffOperationLog' );
			$staffOperationLog = new staffOperationLog ();
			
			Doo::loadModel ( 'position' );
			$position = new position ();
			
			// 获得办事和部门
			$categoryList = $L_category->getCategoryDepartment ();
			// 获得岗位
			$listPosition = $position->getPositionByAll ();
			
			$sid = $XDeode->decode ( $serial );
			$detail = $staff->getStaffBySid ( $sid );
			// 获得操作日志
			$SOPL = $staffOperationLog->getInvoiceOperationLogByUid ( $sid, 'desc' );
			
			if (empty ( $detail ))
				$html = '';
			else {
				$html = '
						
						<div class="modal-header">
					<h3>员工详情</h3>
				</div>
				<div class="modal-body saeaList" style="overflow:hidden;margin:0">
					<div class="fL staff-detail-con">
						<table class="table table-bordered table-condensed">
						<tbody>
						<tr>
							<th class="taC" width="150">工号</th><td width="210">' . $detail ['jobNumber'] . '</td>
							<th class="taC" width="150">姓名</th><td>' . $detail ['username'] . '</td>
						</tr>
						<tr>
							<th class="taC" width="150">办事处/部门</th><td>
									
								<select name="cid_did" id="cid_did">
									';
				
				foreach ( $categoryList as $key => $value ) {
					$html .= '<option value="' . $value ['cidKey'];
					if (! empty ( $value ['did'] ))
						$html .= '_' . $value ['didKey'];
					$html .= '" ';
					
					if (isset ( $value ['did'] )) {
						if ($detail ['cid'] == $value ['cid'] && $detail ['departmentID'] == $value ['did'])
							$html .= 'selected';
					} else {
						if ($detail ['cid'] == $value ['cid'])
							$html .= 'selected';
					}
					
					$html .= '>' . $value ['title'];
					if (! empty ( $value ['did'] ))
						$html .= '/' . $value ['departmentName'] . '</option>';
				}
				
				$html .= '	</select>	
						</td>
							<th class="taC  " width="150">岗位</th><td >
						<select name="position_disabled" disabled id="position">
						';
				
				foreach ( $listPosition as $key => $value ) {
					
					$positionPid = $XDeode->decode ( $value ['pidKey'] );
					if ($detail ['positionId'] == $positionPid) {
						$html .= '<option selected value="' . $value ['pidKey'] . '_' . $value ['positionName'] . '">' . $value ['positionName'] . '</option>';
					} else {
						$html .= '<option value="' . $value ['pidKey'] . '_' . $value ['positionName'] . '">' . $value ['positionName'] . '</option>';
					}
				}
				
				$html .= '
								</select>
								</td>
						</tr>
						<tr>
							<th class="taC" width="150">入职日期</th><td><input type="date"  name="hiredate" id="hiredate" value="' . $detail ['hiredate'] . '"></td>
							<th class="taC" width="150">手机</th><td><input type="text"  name="telephone" id="telephone" value="' . $detail ['telephone'] . '"></td>
						</tr>
						<tr>
							<th class="taC">QQ</th><td><input type="text"  name="qq" id="qq" value="' . $detail ['qq'] . '"></td>
							<th class="taC">微信</th><td><input type="text"  name="wecat" id="wecat" value="' . $detail ['wecat'] . '"></td>
						</tr>
						<tr>
							<th class="taC">电话</th><td><input type="text"  name="phone" id="phone" value="' . $detail ['phone'] . '"></td>
							<th class="taC">邮箱</th><td><input type="text"  name="email" id="email" value="' . $detail ['email'] . '"></td>
						</tr>
						</tbody>
					</table>
						<table class="table table-bordered table-condensed">
							<tr>
								<th class="taC" width="150">性别</th><td width="210">
									<label class="radio inline"><input type="radio" name="gender" ';
				if ($detail ['gender'] == '男')
					$html .= 'checked';
				$html .= ' value="男" data-rule="checked" >男</label> 
									<label class="radio inline"><input type="radio" name="gender"  ';
				if ($detail ['gender'] == '女')
					$html .= 'checked';
				$html .= '  value="女" >女</label>
									</td>
								<th class="taC" width="150">出生日期</th><td><input type="date"  name="birthday" id="birthday" value="' . $detail ['birthday'] . '"></td>
							</tr>
							<tr>
								
										
							<th class="taC" width="150">民族</th><td><input type="text" name="nation" id="nation" value="' . $detail ['nation'] . '"></td>			
										
											
						<th class="taC" width="150">婚姻状况</th>
						<td>
							<select name="marriage" id="marriage">
							<option ';
				if ($detail ['marriage'] == '')
					$html .= 'selected';
				$html .= ' value="">请选择</option>
							<option ';
				if ($detail ['marriage'] == '1')
					$html .= 'selected';
				$html .= ' value="1">已婚</option>
							<option ';
				if ($detail ['marriage'] == '0')
					$html .= 'selected';
				$html .= ' value="0">未婚</option>
							</select>
						</td>
							</tr>
											
											
							<tr>
								<th class="taC" width="150">身份证</th>
								<td><input type="text"  name="IDcards" id="IDcards" value="' . $detail ['IDcards'] . '"></td>
										
					<th class="taC" width="150">身份证有效期</th><td colspan="3">
										<input type="date"  name="IDcardsValidity" id="IDcardsValidity" value="' . $detail ['IDcardsValidity'] . '"></td>		
							</tr>
								
						<tr>
								
<th class="taC" width="150">身份证扫描件</th>
								<td>
								<a href="' . $detail ['IDcardsImgA'] . '" 

target="_blank">正面（国徽）</a>
								<a href="' . $detail ['IDcardsImgB'] . '" 

target="_blank">反面（照片）</a>
								</td>
										
								<th class="taC" width="150">籍贯</th>
								<td width="210"><input type="text"  name="nativePlace" id="nativePlace" value="' . $detail ['nativePlace'] . '"></td>
							</tr>						
								
							<tr>
								<th class="taC" width="150">户口所在地</th><td><input type="text" name="registeredResidence" id="registeredResidence" value="' . $detail ['registeredResidence'] . '" ></td>
								<th class="taC" width="150">户籍类型</th><td>
										<select name="householdRegistrationType" id="householdRegistrationType">
										
										<option ';
				if ($detail ['householdRegistrationType'] == '')
					$html .= 'selected';
				$html .= ' value="">请选择</option>
							<option ';
				if ($detail ['householdRegistrationType'] == '城镇户口')
					$html .= 'selected';
				$html .= ' value="城镇户口">城镇户口</option>
							<option ';
				if ($detail ['householdRegistrationType'] == '农业户口')
					$html .= 'selected';
				$html .= ' value="农业户口">农业户口</option>
										
										</select></td>
							</tr>			
								
							<tr>
								<th class="taC" width="150">现居住地</th>
										<td colspan="3"><input type="text"  name="living" id="living" value="' . $detail ['living'] . '" style="width:500px"></td>
							</tr>			
								
							<tr>
								
								<th class="taC" width="150">紧急联系人</th>
								<td><input type="text"  name="emergencyContacts" id="emergencyContacts" value="' . $detail ['emergencyContacts'] . '"></td>
							</tr>					
												
												
						</table>
						<table class="table table-bordered table-condensed">
										
							<tr>
								<th class="taC" width="150">毕业院校</th><td width="210">
										<input type="text" name="graduateInstitutions" id="graduateInstitutions" value="' . $detail ['graduateInstitutions'] . '"></td>
								<th class="taC" width="150">所学专业</th><td>
										<input type="text" name="major" id="major" value="' . $detail ['major'] . '"></td>
							</tr>			
								
							<tr><th class="taC" width="150">毕业学历</th>
							<td><select name="education" id="education">
												
								<option ';
				if ($detail ['education'] == '')
					$html .= 'selected';
				$html .= ' value="">请选择</option>
							<option ';
				if ($detail ['education'] == '初中')
					$html .= 'selected';
				$html .= ' value="初中">初中</option>
							<option ';
				if ($detail ['education'] == '高中')
					$html .= 'selected';
				$html .= ' value="高中">高中</option>				
							<option ';
				if ($detail ['education'] == '中专')
					$html .= 'selected';
				$html .= ' value="中专">中专</option>
						<option ';
				if ($detail ['education'] == '大专')
					$html .= 'selected';
				$html .= ' value="大专">大专</option>
						<option ';
				if ($detail ['education'] == '本科')
					$html .= 'selected';
				$html .= ' value="本科">本科</option>
						<option ';
				if ($detail ['education'] == '硕士')
					$html .= 'selected';
				$html .= ' value="硕士">硕士</option>
						
												
												
												
												</select>
												</td>
								<th class="taC" width="150">毕业时间</th>
								<td><input type="date" name="graduationTime" id="graduationTime" value="' . $detail ['graduationTime'] . '"></td>
							</tr>					
												
							<tr>
								<th class="taC" width="150">毕业证书</th>
								<td width="210">';
				
				foreach ( $detail ['certificateArray'] as $key => $value ) {
					$html .= '<a href="' . $detail ['webSite'] . $value . '" target="_blank">毕业证书</a>&nbsp;';
				}
				
				$html .= '</td>
								<th class="taC" width="150">学位证书</th>
								<td>';
				foreach ( $detail ['diplomaArray'] as $key => $value ) {
					$html .= '<a href="' . $detail ['webSite'] . $value . '" target="_blank">学位证书</a>&nbsp;';
				}
				
				$html .= '	</td>
							</tr>
							<tr>
								<th class="taC" width="150">职称</th>
								<td >';
				foreach ( $detail ['professionalTitleArray'] as $key => $value ) {
					$html .= '<a href="' . $detail ['webSite'] . $value . '" target="_blank">证书</a>&nbsp;';
				}
				$html .= '</td>
						<th class="taC" width="150">最高学历</th><td>
							<select name="qualifications" id="qualifications">
							<option ';
				if ($detail ['qualifications'] == '初中')
					$html .= 'selected';
				$html .= ' value="初中">初中</option>
							<option ';
				if ($detail ['qualifications'] == '高中')
					$html .= 'selected';
				$html .= ' value="高中">高中</option>
							<option ';
				if ($detail ['qualifications'] == '中专')
					$html .= 'selected';
				$html .= ' value="中专">中专</option>
							<option ';
				if ($detail ['qualifications'] == '大专')
					$html .= 'selected';
				$html .= ' value="大专">大专</option>
							<option ';
				if ($detail ['qualifications'] == '本科')
					$html .= 'selected';
				$html .= ' value="本科">本科</option>
							<option ';
				if ($detail ['qualifications'] == '硕士')
					$html .= 'selected';
				$html .= ' value="硕士">硕士</option>
							</select>
										</td>
							</tr>
						</table>
											
						
						<table class="table table-bordered table-condensed">
						<tr><th class="taC" colspan="4">报销收款帐号</th></tr>
							<tr>
								<th class="taC" width="150">收款人户名</th>
								<td width="210"><input type="text"  name="remittanceName" id="remittanceName" value="' . $detail ['remittanceName'] . '"></td>
								<th class="taC" width="150">联行号</th>
								<td colspan="3"><input type="text"  name="coupletNumber" id="coupletNumber" value="' . $detail ['coupletNumber'] . '"></td>
							</tr>
							<tr>
								<th class="taC" width="150">收款开户银行名称</th>
								<td width="210">
									<input type="text"  name="bankName" id="bankName" value="' . $detail ['bankName'] . '">
								</td>
								<th class="taC" width="150">收款帐号</th>
								<td><input type="text"  name="bankNumber" id="bankNumber" value="' . $detail ['bankNumber'] . '"></td>
							</tr>
							
						</table>
										
						<table class="table table-bordered table-condensed">
							<tr><th class="taC" colspan="4">工资卡</th></tr>
							<tr>
								<th class="taC" width="150">银行卡号</th>
								<td width="210"><input name="salaryCard" id="salaryCard" value="' . $detail ['salaryCard'] . '" type="text"></td>
								<th class="taC" width="150">开户行</th>
								<td><input name="salaryBank" id="salaryBank" value="' . $detail ['salaryBank'] . '" type="text"></td>
							</tr>
						</table>				
										
										
										
					</div>
										
										
										
					<div class="fL staff-detail-side">
						<!--入职试用 & 离职后再入职试用-->
						';
				
				foreach ( $SOPL as $key => $value ) {
					$html .= '<div class="infoFlowList">
						 <div class="dateTitle">
				<em class="month"><span class="num">' . date ( 'm', strtotime ( $value ['date'] ) ) . '</span><span class="text">-' . date ( 'd', strtotime ( $value ['date'] ) ) . '</span></em>
							 <span class="year">' . date ( 'Y', strtotime ( $value ['date'] ) ) . '</span>
						 </div>
						 <ul class="flowList">
							 <li class="item colGray">' . $value ['category'] . '-' . $value ['username'] . '</li>
							 <li class="item">' . $value ['operation'] . '</li>
						 </ul>
						</div>';
				}
				
				$html .= '
						
					</div>
				</div>
						
						';
			}
			
			echo json_encode ( array (
					'status' => 1,
					'sidKey' => $serial,
					'html' => $html 
			) );
			die ();
		} elseif ($type == 'IRTC') {
			
			Doo::loadModel ( 'invoice' );
			$invoice = new invoice ();
			Doo::loadModel ( 'invoiceOperationLog' );
			$invoiceOperationLog = new invoiceOperationLog ();
			Doo::loadModel ( 'invoiceReceivables' );
			$invoiceReceivables = new invoiceReceivables ();
			
			$detail = $invoice->getInvoiceByIsid ( $serial, $this->staff [0] ['sid'] );
			$invoiceOperationLogList = $invoiceOperationLog->getInvoiceOperationLogByIid ( $detail ['iid'] );
			
			if (empty ( $detail ))
				$html = '';
			else {
				
				$receivablesPriceedHtml = '';
				$receivablesPrice = $detail ['invoicePrice'];
				if (! empty ( $detail ['irid'] )) {
					
					$irList = $invoiceReceivables->getInvoiceReceivablesInIridString ( $detail ['irid'] );
					
					if (empty ( $irList ))
						$irList [0] ['sumPrice'] = 0;
					
					$balance = $detail ['invoicePrice'] - $irList [0] ['sumPrice'];
					
					$receivablesPriceedHtml = '<table class="table table-bordered table-condensed"><tbody><tr>
		
						<th class="taC">已入账金额</th><td><b class="colGreen" style="font-size:18px">￥' . $irList [0] ['sumPrice'] . '</b></td>
						<th class="taC">剩余入账金额</th><td><b class="colRed" style="font-size:18px">￥' . $balance . '</b></td>
		
					</tr></tbody></table>';
					$receivablesPrice = $balance;
				}
				
				if ($loss)
					$detail ['invoicePrice'] = - $detail ['invoicePrice'];
				$html = $receivablesPriceedHtml . '
						<table class="table table-bordered table-condensed"><tbody>
						<tr>
							<th class="taC" width="150">开票流水号</th><td>' . $detail ['invoiceSerial'] . '</td>
							<th class="taC" width="150">提交时间</th><td>' . $detail ['date'] . '</td>
						</tr>
						<tr>
							<th class="taC" width="150">所在办事处</th><td>' . $detail ['categoryName'] . '（' . $detail ['userName'] . '）</td>
							<th class="taC" width="150">开票内容</th><td>' . $detail ['invoiceElement'] . '</td>
						</tr>
		
						<tr>
							<th class="taC" width="150">发票备注</th><td colspan="3">' . $detail ['remark'] . '</td>
						</tr>
		
						<tr>
							<th class="taC" width="150">数量</th><td><b>' . $detail ['invoiceQuantity'] . '</b></td>
							<th class="taC">单价</th><td><b>￥' . $detail ['invoiceUnitPrice'] . '</b></td>
						</tr>
					
						<tr>
							<th class="taC">开票金额</th><td  colspan="3"><b class="colOrange" style="font-size:18px">￥' . $detail ['invoicePrice'] . '</b></td>
				
						</tr></tbody></table>';
				
				if ($detail ['invoiceType'] == 0) {
					$html .= '<table class="table table-bordered table-condensed"><tbody>
							<tr><th colspan="4" class="taC">增值税普通发票</th></tr><tr>
							<th class="taC" width="150">发票抬头</th><td >' . $detail ['invoiceTitle'] . '</td>
							<th class="taC" width="150">纳税人识别码</th><td>' . $detail ['TIN'] . '</td>
									</tr>';
					$receivablesMessage = $detail ['invoiceTitle'];
				} else {
					$html .= '<table class="table table-bordered table-condensed"><tbody>
							<tr><th colspan="4" class="taC">增值税专用发票</th></tr><tr>
							<th class="taC" width="150">单位名称</th><td>' . $detail ['invoiceCompany'] . '</td>
							<th class="taC" width="150">纳税人识别码</th><td>' . $detail ['TIN'] . '</td></tr>
		
									';
					$receivablesMessage = $detail ['invoiceCompany'];
				}
				$html .= '<tr>
							<th class="taC">注册地址</th><td>' . $detail ['address'] . '</td>
							<th class="taC">注册电话</th><td>' . $detail ['phone'] . '</td>
						</tr>
						<tr>
							<th class="taC">开户银行</th><td>' . $detail ['bankAccount'] . '</td>
							<th class="taC">银行账号</th><td>' . $detail ['bank'] . '</td>
						</tr></tbody></table>';
				
				if ($detail ['doPost'] == 1)
					$html .= '<table class="table table-bordered table-condensed"><tbody><tr><th colspan="4" class="taC">邮寄信息</th></tr><tr>
							<th class="taC" width="150">收件人</th><td>' . $detail ['recipients'] . '</td>
							<th class="taC" width="150">收件人手机/电话</th><td>' . $detail ['recipientsPhone'] . '</td>
						</tr><tr>
							<th class="taC" width="150">收件地址</th><td colspan="3">' . $detail ['recipientsAddress'] . '</td>
						</tr><tr>
							<th class="taC" width="150">邮寄物品</th><td colspan="3">' . $detail ['mailItems'] . '</td>
						</tr></tbody></table>';
				if (! empty ( $invoiceOperationLogList )) {
					$html .= '<table class="table table-bordered table-condensed"><tbody><tr><th width="60%" class="taC">审批流程</th></tr><tr><td>';
					foreach ( $invoiceOperationLogList as $key => $value ) {
						if ($value ['status'] == 1 || $value ['status'] == 2 || $value ['status'] == 3 || $value ['status'] == 4) {
							$html .= '<blockquote><p><span class="colGray">' . $value ['date'] . '</span>&nbsp;
							' . $value ['category'] . '-' . $value ['username'] . '&nbsp;';
							if ($value ['status'] == 2) {
								$html .= '<span class="colGreen">同意</span>';
							} elseif ($value ['status'] == 3) {
								$html .= '<span class="colOrange">退回</span>';
							} elseif ($value ['status'] == 5) {
								$html .= '<span class="colGreen">打印</span>';
							}
							$html .= $value ['operation'] . '</p></blockquote>';
						}
					}
					$html .= '</td></tr></tbody></table>';
				}
			}
			
			echo json_encode ( array (
					'status' => 1,
					'html' => $html,
					'receivablesPrice' => $receivablesPrice,
					'receivablesMessage' => $receivablesMessage,
					'receivablesDate' => date ( "Y-m-d" ),
					'iidKey' => $serial 
			) );
			die ();
		}
	}
	
	/**
	 * 获得客户地区
	 */
	function ajaxGetDistrictByLv1() {
		$serial = $this->get_args ( 'serial' ) ? $this->get_args ( 'serial' ) : "";
		
		if (empty ( $serial )) {
			echo json_encode ( array (
					'status' => 2,
					'msg' => 'illegal request' 
			) );
			die ();
		}
		
		Doo::loadClass ( 'XDeode' );
		$XDeode = new XDeode ( 5 );
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$sid = $XDeode->decode ( $serial );
		$detail = $staff->getStaffBySid ( $sid );
		
		// 员工可选的
		Doo::loadModel ( 'district' );
		$district = new district ();
		$districtList = $district->get_lv ( 1 );
		
		$did = explode ( ',', $detail ['did'] );
		
		$html = '<label class="checkbox inline"> <input type="checkbox" id="clickALL" >全选</label>';
		foreach ( $districtList as $key => $value ) {
			$falg = true;
			foreach ( $did as $k => $v ) {
				if ($value ['didKey'] == $v) {
					$html .= '<label class="checkbox inline">
					  <input type="checkbox" name="didKey[]" checked value="' . $value ['didKey'] . '">' . $value ['name'] . '
					</label>';
					unset ( $did [$k] );
					$falg = false;
					break;
				}
			}
			
			if ($falg)
				$html .= '<label class="checkbox inline">
					  <input type="checkbox" name="didKey[]"  value="' . $value ['didKey'] . '">' . $value ['name'] . '
					</label>';
		}
		$html .='
				<script type="text/javascript">
				$(function() {
				$(\'input[id="clickALL"]\').click(function(){
				
        		//console.log(this.checked);
        		if(this.checked){
	        			$(\'input[name="didKey[]"]\').each(function(){
		        				//此处如果用attr，会出现第三次失效的情况
					    			$(this).prop("checked",true);
								});
            }else{
	            	$(\'input[name="didKey[]"]\').each(function(){
					    			$(this).removeAttr("checked",false);
								});
            }
	    			
        });
})
				</script>
				';
		
		
		echo json_encode ( array (
				'status' => 1,
				'html' => $html 
		) );
	}
	
	/**
	 */
	function ajaxGetPromotionStaffByPid() {
		$sidkey = $this->get_args ( 'sidkey' ) ? $this->get_args ( 'sidkey' ) : "";
		
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		Doo::loadModel ( 'position' );
		$position = new position ();
		
		$listPosition = $position->getPositionByAll ();
		$detail = $staff->getStaffBySid ( $sidkey );
		
		// print_r($deta);
		$html = '<table class="table table-bordered table-condensed">
						<tr>
							<th class="taC" width="150">工号</th><td width="210">' . $detail ['jobNumber'] . '</td>
							<th class="taC" width="150">姓名</th><td width="210">' . $detail ['username'] . '</td>
						</tr>
						<tr>
							<th class="taC" width="150">办事处/部门</th><td>' . $detail ['category'];
		
		if (! empty ( $detail ['department'] ))
			$html .= '/' . $detail ['department'] ['departmentName'];
		
		$html .= '						</td>
							<th class="taC" width="150">岗位</th><td>' . $detail ['positionDetail'] ['positionName'] . '</td>
						</tr>
						<tr>
							<th class="taC" width="150">入职日期</th><td>' . $detail ['hiredate'] . ' <span class="colGray">已入职' . $detail ['workforce'] . '天</span></td>
							<th class="taC" width="150">试用日期</th><td>2013-07-01</td>
						</tr>
						<tr>
								<th class="taC" width="150">基本工资</th><td>' . $detail ['baseWage'] . '</td>
								<th class="taC" width="150">岗位工资</th><td>' . $detail ['postWage'] . '</td>
							</tr>
							<tr>
								<th class="taC" width="150">绩效奖金</th><td>' . $detail ['achievementBonus'] . '</td>
								<th class="taC" width="150"></th><td></td>
							</tr>
						</tbody>
					</table>';
		echo json_encode ( array (
				'status' => 1,
				'detail' => $detail,
				'html' => $html 
		) );
	}
	
	/**
	 * 生成工号
	 */
	function createJobNumber() {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$regularStaff = $staff->getStaffJobNumberByNature ( 1 );
		$internStaff = $staff->getStaffJobNumberByInformal ();
		
		if (empty ( $regularStaff ['jobNumber'] ))
			$regularStaffJobNumber = 'Z0001';
		else {
			$jobNumber = preg_replace ( '/[^\.0123456789]/s', '', $regularStaff ['jobNumber'] );
			$regularStaffJobNumber = 'Z' . sprintf ( "%04d", $jobNumber + 1 );
		}
		
		$internStaffJobNumber = $internStaff ['jobNumber'];
		if (empty ( $internStaff ['jobNumber'] ))
			$internStaffJobNumber = 'C0001';
		else {
			$jobNumber = preg_replace ( '/[^\.0123456789]/s', '', $internStaff ['jobNumber'] );
			$internStaffJobNumber = 'C' . sprintf ( "%04d", $jobNumber + 1 );
		}
		$list = array (
				'regularStaff' => $regularStaffJobNumber,
				'internStaff' => $internStaffJobNumber 
		);
		return $list;
	}
	
	/**
	 * 微信抄送功能
	 * @param unknown $rid
	 * @param string $typeMsg
	 */
	function setWXMsg($sid, $msg = '', $msgtype = 'text') {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		$staffmsg = $staff->getOne ( array (
				'where' => "sid='" . $sid . "'",
				'asArray' => TRUE 
		) );
		
		if (! empty ( $staffmsg ['wxid'] )) {
			require_once (SITE_PATH . '/protected/class/client.php');
			$client = new client ( 'http://m.cld.smartcost.com.cn/' );
			$user = $staffmsg ['wxid'];
			
			$result = $client->SendMsg ( $user, $msg, $msgtype );
		}
	}
	
	/**
	 * 获取get或者POST值
	 *
	 * @param string $name 属性名称
	 * @return fixed 值
	 */
	function get_args($name) {
		if (isset ( $_GET [$name] )) {
			if (is_array ( $_GET [$name] ))
				return $_GET [$name];
			else
				return addslashes ( $_GET [$name] );
		} elseif (isset ( $_POST [$name] )) {
			if (is_array ( $_POST [$name] ))
				return $_POST [$name];
			else
				return addslashes ( $_POST [$name] );
		} else
			return false;
	}
	
	// 检查年假是否过期并更新年假
	private function updateAnnualLeave($staff) {
		Doo::loadModel ( 'holidaystaff' );
		$hstaff = new HStaff ();
		$hstaffmsg = $hstaff->getOne ( array (
				'where' => 'uid=' . $staff ['sid'],
				'asArray' => TRUE 
		) );
		
		$hiredate = $staff ['hiredate'];
		$hadyear = intval ( (time () - strtotime ( $hiredate )) / (86400 * 365) );
		if ($hadyear != $hstaffmsg ['hadyear']) {
			$hstaff->uid = $staff ['sid'];
			$hstaff->hadyear = $hadyear;
			$hstaff->yearnum = $hadyear == 0 ? 0 : (($hadyear < 10 && $hadyear >= 1) ? 5 : (($hadyear >= 10 && $hadyear < 20) ? 10 : 15));
			$hstaff->update ();
		}
	}
	
	/**
	 * 计算工龄
	 * @param string $seniorityFormula
	 */
	function getSeniority($seniorityFormula = '') {
		if (! empty ( $seniorityFormula )) {
			$Days = 0;
			foreach ( $seniorityFormula as $key => $value ) {
				$Date_1 = $value ['InductionDate'];
				$Date_2 = $value ['dimissionDate'];
				$d1 = strtotime ( $Date_1 );
				$d2 = strtotime ( $Date_2 );
				$D = round ( ($d2 - $d1) / 3600 / 24 );
				$Days += $D;
			}
			return $Days;
		}
		return 0;
	}
	
	/**
	 * 员工主访问权限
	 */
	function isEmployeeVisit($employee = array()) {
		Doo::loadModel ( 'staff' );
		$staff = new staff ();
		
		$staff->getStaffBySid ( $this->staff ['sid'] );
		
		$access = explode ( ',', $employee ['access'] );
	}
}

?>