You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
216 lines
7.1 KiB
216 lines
7.1 KiB
<?php
|
|
|
|
namespace addons\qingdong\controller;
|
|
|
|
|
|
use addons\qingdong\model\Approval as ApprovalModel;
|
|
use addons\qingdong\model\ExamineRecord;
|
|
use addons\qingdong\model\File;
|
|
use addons\qingdong\model\FormApproval;
|
|
use addons\qingdong\model\Message;
|
|
use addons\qingdong\model\Staff;
|
|
use addons\qingdong\model\Form;
|
|
use think\Db;
|
|
use think\Exception;
|
|
|
|
/**
|
|
* 工作审批
|
|
*/
|
|
class Approval extends StaffApi {
|
|
protected $noNeedLogin = [];
|
|
protected $noNeedRight = [];
|
|
|
|
|
|
/**
|
|
* 审核审核记录
|
|
*/
|
|
public function examineApprovalList(){
|
|
$check_status=input('check_status');//1审核中、2审核通过、3审核未通过
|
|
$formapproval_id=input('formapproval_id');//
|
|
$times=input('times');//
|
|
$where=[];
|
|
if($formapproval_id){
|
|
$where['formapproval_id']=$formapproval_id;
|
|
}
|
|
if($times){
|
|
$times = explode(',', $times);
|
|
$where['createtime']=['between',[strtotime($times[0]),strtotime($times[1])+86400-1]];
|
|
}
|
|
if ($check_status) {
|
|
//0待审核、1审核中、2审核通过、3审核未通过、4撤销
|
|
if ($check_status == 1) {
|
|
$where['check_status'] = ['in', [0, 1]];
|
|
} elseif ($check_status == 2) {
|
|
$where['check_status'] = 2;
|
|
} elseif ($check_status == 3) {
|
|
$where['check_status'] = 3;
|
|
} elseif ($check_status == 4) {
|
|
$where['check_status'] = 4;
|
|
} elseif ($check_status == 9) {
|
|
$where['check_status'] = 9;
|
|
}
|
|
}
|
|
$type = input('type', 0);// 0 全部 1 我创建 2 下属创建
|
|
if ($type == 1) {//我的客户
|
|
$where['create_staff_id'] = $this->auth->id;
|
|
} elseif ($type == 2) {//下属负责的客户
|
|
$where['create_staff_id'] = ['in', Staff::getLowerStaffId()];
|
|
}else{
|
|
$where['create_staff_id'] = ['in', Staff::getMyStaffIds()];
|
|
}
|
|
|
|
$staff_id=$this->auth->id;
|
|
$approvals= ApprovalModel::where($where)->where(function ($query) use ($staff_id){
|
|
$query->where('create_staff_id',$staff_id)
|
|
->whereOr('','exp', Db::raw('FIND_IN_SET(' . $staff_id. ',flow_staff_ids)'));
|
|
})->with(['createStaff','formapproval'])->order('id desc')->paginate();
|
|
|
|
$this->success('请求成功',$approvals);
|
|
}
|
|
|
|
/**
|
|
* 获取工作列表
|
|
*/
|
|
public function getList() {
|
|
$list = FormApproval::where([])->field('id,name,img')->select();
|
|
|
|
$this->success('请求成功', $list);
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取form表单
|
|
*/
|
|
public function getFormapproval() {
|
|
$id = input('id');
|
|
$form = FormApproval::where(['id' => $id])->find();
|
|
$staff = Staff::where(['id' => ['in',explode(',', $form['flow_staff_ids'])]])->field('id,name,img')->select();
|
|
$forminfo = Form::where(array('id'=>$form['form_id']))->find();
|
|
$data=json_decode($forminfo['data'], true)['data']??[];
|
|
$this->success('请求成功',['data'=>$data,'staff'=>$staff] );
|
|
}
|
|
|
|
|
|
/**
|
|
* 添加审批
|
|
*/
|
|
public function addApproval() {
|
|
$params = $this->request->post();
|
|
if(empty( $params['data'])){
|
|
$this->error('数据不能为空');
|
|
}
|
|
if(empty( $params['formapproval_id'])){
|
|
$this->error('表单id不能为空');
|
|
}
|
|
|
|
$result = ApprovalModel::createApproval($params);
|
|
|
|
$this->success('保存成功');
|
|
}
|
|
|
|
/**
|
|
* 获取审批详情
|
|
*/
|
|
public function getDetail(){
|
|
$id = input('id');
|
|
if(empty($id)){
|
|
$this->error('参数不能为空');
|
|
}
|
|
$approval=ApprovalModel::where(['id'=>$id])->with(['formapproval'])->find()->toArray();
|
|
$type = Form::where(array('id'=>$approval['formapproval']['form_id']))->value('type');
|
|
|
|
$form = Form::getDataValue($type,$approval['content']);
|
|
foreach($form as $k=>$v){
|
|
if($v['component'] == 'uploadImage' || $v['component'] == 'uploadFile'){
|
|
if(key_exists($v['id'],$approval['content'])){
|
|
if(isset($approval['content'][$v['id']]) && $approval['content'][$v['id']]){
|
|
$whereT['id'] = array('in',$approval['content'][$v['id']]);
|
|
$fileinfo = File::where($whereT)->field('id,name,file_path')->select();
|
|
if($fileinfo){
|
|
$approval['content'][$v['id']] = $fileinfo;
|
|
}
|
|
}
|
|
}
|
|
}elseif($v['component'] == 'select'){
|
|
if(isset($v['config']['multiple']) && $v['config']['multiple'] == true){
|
|
if(key_exists($v['id'],$approval['content'])){
|
|
if(is_array($approval['content'][$v['id']]) && $approval['content'][$v['id']]){
|
|
$approval['content'][$v['id']] = implode(',',$approval['content'][$v['id']]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ($approval['check_status'] == 0 || $approval['check_status'] == 1) {
|
|
$approval['is_examine'] = ExamineRecord::isExaminse(ExamineRecord::APPROVAL_TYPE, $id);
|
|
} else {
|
|
$approval['is_examine'] = 0;
|
|
}
|
|
$approval['is_operation']=0;
|
|
if($approval['create_staff_id'] == $this->auth->id){
|
|
//是否可以操作
|
|
$approval['is_operation']=1;
|
|
}
|
|
Message::setRead(Message::APPROVAL_TYPE,$id,$this->auth->id);
|
|
$this->success('请求成功',$approval);
|
|
}
|
|
|
|
/**
|
|
* 修改审批
|
|
*/
|
|
public function editApproval(){
|
|
$id = input('id');
|
|
$params = $this->request->post();
|
|
$row = ApprovalModel::where(['id' => $id, 'check_status' => ['in', [3, 4]]])->find();
|
|
if (empty($row)) {
|
|
$this->error('审批信息不存在');
|
|
}
|
|
if(empty( $params['data'])){
|
|
$this->error('数据不能为空');
|
|
}
|
|
if(empty( $params['formapproval_id'])){
|
|
$this->error('表单id不能为空');
|
|
}
|
|
if(empty( $params['relation_type'])){
|
|
$this->error('关联类型不能为空');
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
$result = ApprovalModel::updateApproval($params);
|
|
Db::commit();
|
|
} catch (Exception $e) {
|
|
Db::rollback();
|
|
$this->error($e->getMessage());
|
|
}
|
|
$this->success('修改信息成功');
|
|
}
|
|
|
|
/**
|
|
* 撤回审批
|
|
*/
|
|
public function cancel(){
|
|
$id = input('id');
|
|
$customer = ApprovalModel::where(['id' => $id, 'check_status' => ['in', [0, 1]]])->find();
|
|
if (empty($customer)) {
|
|
$this->error('信息不存在');
|
|
}
|
|
|
|
Db::startTrans();
|
|
try {
|
|
|
|
ApprovalModel::where(['id' => $id])->update(['check_status' => 4]);
|
|
|
|
ExamineRecord::cancelExaminse(ExamineRecord::APPROVAL_TYPE,$id);
|
|
Db::commit();
|
|
} catch (Exception $e) {
|
|
Db::rollback();;
|
|
$this->error($e->getMessage());
|
|
}
|
|
|
|
|
|
$this->success('撤回成功');
|
|
}
|
|
|
|
|
|
}
|
|
|