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 ();
		
		$staffProcessing = $staff->getStaffByProcessing ($this->staff ['sid'] );
		
		
		
		// print_r($staffList);
		$this->data ['staffProcessing'] = $staffProcessing;
		$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 "审批成功 点击跳转首页";
				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 "审批成功 点击跳转首页";
				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 "审批成功 点击跳转首页";
				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 "审批成功 点击跳转首页";
				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 "审批成功 点击跳转首页";
				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'].'
';
					$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'].'
';
					$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'].'
';
					$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'].'
';
					$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'].'
';
					$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 = '
| 办事处 | 姓名 | 入职时间 | 
|---|
';
		foreach ( $list as $key => $value ) {
			
			// seniorityFormula
			$seniorityFormula = json_decode ( $value ['seniorityFormula'], true );
			if (! isset ( $seniorityFormula [0] ))
				$seniorityFormula [0] ['InductionDate'] = 0;
			$html .= '
				| ' . $value ['category'] . ' | ' . $value ['username'] . ' | ' . $seniorityFormula [0] ['InductionDate'] . ' | 
';
		}
		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 = '
				
					
						
						
							
								| 工号 | ' . $detail ['jobNumber'] . ' | 姓名 | ' . $detail ['username'] . ' | 
							
								| 办事处/部门 | ' . $detail ['category'] . '/' . $detail ['department'] ['departmentName'] . ' | 岗位 | ' . $detail ['position'] . ' | 
							
								| 入职日期 | ' . $detail ['hiredate'] . ' | 手机 | ' . $detail ['telephone'] . ' | 
							
								| QQ | ' . $detail ['qq'] . ' | 微信 | ' . $detail ['wecat'] . ' | 
							
								| 电话 | ' . $detail ['phone'] . ' | 邮箱 | ' . $detail ['email'] . ' | 
						
					
';
							
				if($detail ['pendStatus']!=3){
					$html .= '
							
								| 性别 | ' . $detail ['gender'] . ' | 出生日期 | ' . $detail ['birthday'] . ' | 
							
								| 最高学历 | ' . $detail ['qualifications'] . ' | 婚姻状况 | ';
					
					if ($detail ['marriage'] == 0)
						$html .= '未婚';
						elseif ($detail ['marriage'] == 1)
						$html .= '已婚';
					
						$html .= ' | 
							
								| 籍贯 | ' . $detail ['nativePlace'] . ' | 
							
								| 现居住地址 | ' . $detail ['living'] . ' | 
						
					
					
							
								| 基本工资 | ' . $detail ['baseWage'] . ' | 岗位工资 | ' . $detail ['postWage'] . ' | 
							
								| 绩效奖金 | ' . $detail ['achievementBonus'] . ' |  |  | 
						
					
';
					
				}
										
					
						
										
						if($detail ['pendStatus']==3){
							$html .= '
							
							
								| 离职原因 | '.$detail ['dimissionReason'].' | 
							
								| 离职时间 | '.$detail ['applyLeaveDate'].' | 
						
					
	';
						}				
								
										
										
					$html .= '
 
												
					
						
						';
				
				foreach ( $SOPL as $key => $value ) {
					$html .= '
						 
				' . date ( 'm', strtotime ( $value ['date'] ) ) . '-' . date ( 'd', strtotime ( $value ['date'] ) ) . '
							 ' . date ( 'Y', strtotime ( $value ['date'] ) ) . '
						 
						 
							 - ' . $value ['category'] . '-' . $value ['username'] . '
- ' . $value ['operation'] . '
 ';
				}
				
				$html .= '
						
					
 
				
						';
			}
			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 = '
						
						
				
					
										
										
										
					
						
						';
				
				foreach ( $SOPL as $key => $value ) {
					$html .= '
						 
				' . date ( 'm', strtotime ( $value ['date'] ) ) . '-' . date ( 'd', strtotime ( $value ['date'] ) ) . '
							 ' . date ( 'Y', strtotime ( $value ['date'] ) ) . '
						 
						 
							 - ' . $value ['category'] . '-' . $value ['username'] . '
- ' . $value ['operation'] . '
 ';
				}
				
				$html .= '
						
					
 
						
						';
			}
			
			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 = '
		
						| 已入账金额 | ¥' . $irList [0] ['sumPrice'] . ' | 剩余入账金额 | ¥' . $balance . ' | 
';
					$receivablesPrice = $balance;
				}
				
				if ($loss)
					$detail ['invoicePrice'] = - $detail ['invoicePrice'];
				$html = $receivablesPriceedHtml . '
						
						
							| 开票流水号 | ' . $detail ['invoiceSerial'] . ' | 提交时间 | ' . $detail ['date'] . ' | 
						
							| 所在办事处 | ' . $detail ['categoryName'] . '(' . $detail ['userName'] . ') | 开票内容 | ' . $detail ['invoiceElement'] . ' | 
		
						
							| 发票备注 | ' . $detail ['remark'] . ' | 
		
						
							| 数量 | ' . $detail ['invoiceQuantity'] . ' | 单价 | ¥' . $detail ['invoiceUnitPrice'] . ' | 
					
						
							| 开票金额 | ¥' . $detail ['invoicePrice'] . ' | 
';
				
				if ($detail ['invoiceType'] == 0) {
					$html .= '
							| 增值税普通发票 | 
|---|
							| 发票抬头 | ' . $detail ['invoiceTitle'] . ' | 纳税人识别码 | ' . $detail ['TIN'] . ' | 
';
					$receivablesMessage = $detail ['invoiceTitle'];
				} else {
					$html .= '
							| 增值税专用发票 | 
|---|
							| 单位名称 | ' . $detail ['invoiceCompany'] . ' | 纳税人识别码 | ' . $detail ['TIN'] . ' | 
		
									';
					$receivablesMessage = $detail ['invoiceCompany'];
				}
				$html .= '
							| 注册地址 | ' . $detail ['address'] . ' | 注册电话 | ' . $detail ['phone'] . ' | 
						
							| 开户银行 | ' . $detail ['bankAccount'] . ' | 银行账号 | ' . $detail ['bank'] . ' | 
';
				
				if ($detail ['doPost'] == 1)
					$html .= '| 邮寄信息 | 
|---|
							| 收件人 | ' . $detail ['recipients'] . ' | 收件人手机/电话 | ' . $detail ['recipientsPhone'] . ' | 
							| 收件地址 | ' . $detail ['recipientsAddress'] . ' | 
							| 邮寄物品 | ' . $detail ['mailItems'] . ' | 
';
				if (! empty ( $invoiceOperationLogList )) {
					$html .= '| 审批流程 | 
|---|
| ';
					foreach ( $invoiceOperationLogList as $key => $value ) {
						if ($value ['status'] == 1 || $value ['status'] == 2 || $value ['status'] == 3 || $value ['status'] == 4) {
							$html .= ' ';
						}
					}
					$html .= '' . $value ['date'] . ' 
							' . $value ['category'] . '-' . $value ['username'] . ' ';
							if ($value ['status'] == 2) {
								$html .= '同意';
							} elseif ($value ['status'] == 3) {
								$html .= '退回';
							} elseif ($value ['status'] == 5) {
								$html .= '打印';
							}
							$html .= $value ['operation'] . '
 | 
';
				}
			}
			
			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 = '';
		foreach ( $districtList as $key => $value ) {
			$falg = true;
			foreach ( $did as $k => $v ) {
				if ($value ['didKey'] == $v) {
					$html .= '';
					unset ( $did [$k] );
					$falg = false;
					break;
				}
			}
			
			if ($falg)
				$html .= '';
		}
		$html .='
				
				';
		
		
		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 = '
						
							| 工号 | ' . $detail ['jobNumber'] . ' | 姓名 | ' . $detail ['username'] . ' | 
						
							| 办事处/部门 | ' . $detail ['category'];
		
		if (! empty ( $detail ['department'] ))
			$html .= '/' . $detail ['department'] ['departmentName'];
		
		$html .= ' | 岗位 | ' . $detail ['positionDetail'] ['positionName'] . ' | 
						
							| 入职日期 | ' . $detail ['hiredate'] . ' 已入职' . $detail ['workforce'] . '天 | 试用日期 | 2013-07-01 | 
						
								| 基本工资 | ' . $detail ['baseWage'] . ' | 岗位工资 | ' . $detail ['postWage'] . ' | 
							
								| 绩效奖金 | ' . $detail ['achievementBonus'] . ' |  |  | 
						
					
';
		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'] );
	}
}
?>