zhanglinxin 1 年之前
父节点
当前提交
69fdc765da

+ 44 - 5
application/api/controller/Base.php

@@ -234,16 +234,15 @@ class Base extends Controller
         $params = $this->request->post();
         if ($controllername == 'evection') {
             if ($action_name == 'create') {
+                $id = $this->request->post('id');
                 $validate = new \app\common\validate\EvectionInfo();
-                if (!$validate->check($params, [], 'create')) {
+                if (!$validate->check($params, [], $id > 0 ? 'update' : 'create')) {
                     $this->error($validate->getError());
                 }
             }
-            if ($action_name == 'audit') {
+            if ($action_name == 'get_detail') {
                 $rule = [
-                    'id|报名参数' => 'require|gt:0',
-                    'audit_status|状态' => 'require|in:2,3',
-                    'audit_desc|驳回原因' => 'requireIf:audit_status,3',
+                    'id|出差参数' => 'require|gt:0',
                 ];
                 $message = [
                     'audit_status.in' => '请选择正确的状态',
@@ -253,6 +252,46 @@ class Base extends Controller
                     $this->error($validate->getError());
                 }
             }
+            if ($action_name == 'urging') {
+                $rule = [
+                    'id|出差参数' => 'require|gt:0',
+                ];
+                $message = [];
+                $validate = new Validate($rule, $message);
+                if (!$validate->check($params)) {
+                    $this->error($validate->getError());
+                }
+            }
+            if ($action_name == 'cancel') {
+                $rule = [
+                    'id|出差参数' => 'require|gt:0',
+                ];
+                $message = [];
+                $validate = new Validate($rule, $message);
+                if (!$validate->check($params)) {
+                    $this->error($validate->getError());
+                }
+            }
+            if ($action_name == 'get_info') {
+                $rule = [
+                    'id|出差参数' => 'require|gt:0',
+                ];
+                $message = [];
+                $validate = new Validate($rule, $message);
+                if (!$validate->check($params)) {
+                    $this->error($validate->getError());
+                }
+            }
+            if ($action_name == 'again') {
+                $rule = [
+                    'id|出差参数' => 'require|gt:0',
+                ];
+                $message = [];
+                $validate = new Validate($rule, $message);
+                if (!$validate->check($params)) {
+                    $this->error($validate->getError());
+                }
+            }
         }
     }
 

+ 124 - 54
application/api/controller/Evection.php

@@ -3,16 +3,10 @@
 namespace app\api\controller;
 
 use app\common\constant\CommonConstant;
-use AlibabaCloud\SDK\Dingtalk\Vyida_1_0\Models\GetFormDataByIDResponseBody\originator\name;
 use app\common\model\EvectionApprove;
-use app\common\model\LeaveApprove;
-use app\common\model\ApproveFlow;
-use app\common\model\EvectionInfo;
 use app\common\service\ApproveFlowService;
 use app\common\service\ApproveService;
 use app\common\service\EvectionInfoService;
-use think\App;
-use app\common\model\User;
 use hg\apidoc\annotation as Apidoc;
 use think\Db;
 use think\Exception;
@@ -39,7 +33,7 @@ class Evection extends Base
      *     @Apidoc\Returned("headimg", type="string", desc="头像"),
      *     @Apidoc\Returned("name", type="string", desc="姓名"),
      * )
-     * @Apidoc\Returned("copy_user", type="array", desc="审批人列表",
+     * @Apidoc\Returned("copy_user", type="array", desc="抄送人列表",
      *     @Apidoc\Returned("userid", type="string", desc="用户userid"),
      *     @Apidoc\Returned("headimg", type="string", desc="头像"),
      *     @Apidoc\Returned("name", type="string", desc="姓名"),
@@ -52,9 +46,10 @@ class Evection extends Base
     }
 
     /**
-     * 出差申请
+     * 申请出差/重新发起
      *
      * @Apidoc\Method("POST")
+     * @Apidoc\Param("id", type="integer", require=false, desc="出差ID 重新发起必传")
      * @Apidoc\Param("reason", type="string", require=true, desc="出差事由")
      * @Apidoc\Param("start_time", type="string", require=true, desc="开始时间")
      * @Apidoc\Param("end_time", type="string", require=true, desc="结束时间")
@@ -74,6 +69,7 @@ class Evection extends Base
      */
     public function create()
     {
+        $id = input('id');
         $reason = input('reason');
         $start_time = input('start_time');
         $end_time = input('end_time');
@@ -85,10 +81,10 @@ class Evection extends Base
         $peer_user = input('peer_user');
         $approve_user = input('approve_user');
         $copy_user = input('copy_user');
-        $params = compact("reason", "start_time", "end_time", "document", "images", "type", "is_who", "remark", "peer_user", "approve_user", "copy_user");
+        $params = compact("id","reason", "start_time", "end_time", "document", "images", "type", "is_who", "remark", "peer_user", "approve_user", "copy_user");
         Db::startTrans();
         try {
-            EvectionInfoService::create($params, $this->user);
+            EvectionInfoService::create($id,$params, $this->user);
             Db::commit();
         } catch (Exception $e) {
             Db::rollback();
@@ -97,7 +93,6 @@ class Evection extends Base
         $this->success('申请已提交,请等待审核');
     }
 
-
     /**
      * 我的出差记录
      *
@@ -121,7 +116,7 @@ class Evection extends Base
      * @Apidoc\Returned("approve_info", type="object", desc="审批信息",
      *     @Apidoc\Returned("id", type="integer", desc="审批ID"),
      *     @Apidoc\Returned("info_id", type="integer", desc="出差ID"),
-     *     @Apidoc\Returned("approve_user", type="string", desc="用户userid"),
+     *     @Apidoc\Returned("approve_user", type="string", desc="审批人userid"),
      *     @Apidoc\Returned("user", type="object", desc="审批人信息",
      *          @Apidoc\Returned("userid", type="string", desc="用户userid"),
      *          @Apidoc\Returned("name", type="string", desc="姓名"),
@@ -139,39 +134,134 @@ class Evection extends Base
     }
 
     /**
-     * 我的出差详情
+     * 详情
      *
      * @Apidoc\Method("POST")
      * @Apidoc\Param("id", type="integer",require=true, desc="出差ID")
-     * @Apidoc\Returned("start_time", type="string", desc="开始时间")
-     * @Apidoc\Returned("end_time", type="string", desc="结束时间")
-     * @Apidoc\Returned("reason", type="string", desc="出差事由")
-     * @Apidoc\Returned("document", type="string", desc="附件(文件路径)")
-     * @Apidoc\Returned("images", type="string", desc="图片(多张|隔开)")
+     * @Apidoc\Returned("id", type="integer", desc="出差ID")
+     * @Apidoc\Returned("status", type="integer", desc="审核状态:1=审批中,2=审批通过,3=审批驳回,4=审批撤销")
+     * @Apidoc\Returned("create_at", type="string", desc="创建时间")
+     * @Apidoc\Returned("order_no", type="string", desc="审批编号")
+     * @Apidoc\Returned("apply_date", type="string", desc="申请日期")
      * @Apidoc\Returned("reason", type="string", desc="出差事由")
-     * @Apidoc\Returned("type", type="string", desc="出差类型(1市内2市外)")
-     * @Apidoc\Returned("status", type="int", desc="状态:1审批中,2审批通过,3审批拒绝,9取消")
-     * @Apidoc\Returned("user_id", type="int", desc="出差会员id")
-     * @Apidoc\Returned("approve_list", type="array", desc="审批记录")
-     * @Apidoc\Returned("approve_list.status", type="int", desc="审批状态:0待审批(未到该审批人审批),1审批中(已到该审批人审批,还未审批)2审批通过3审批拒绝")
-     * @Apidoc\Returned("approve_list.approve_time", type="string", desc="审批时间")
-     * @Apidoc\Returned("approve_list.remark", type="string", desc="审批备注")
-     * @Apidoc\Returned("approve_list.user_name", type="string", desc="审批人")
-     * @Apidoc\Returned("approve_list.headimg", type="string", desc="审批人头像")
-     * @Apidoc\Returned("approve_list.time", type="string", desc="审批用时(上一次审批完成到本次审批的时间,单位秒)")
-     * @Apidoc\Returned("peer_list", type="array", desc="同行员工")
-     * @Apidoc\Returned("peer_list.name", type="string", desc="同行员工名")
-     * @Apidoc\Returned("peer_list.headimg", type="string", desc="同行员工头像")
+     * @Apidoc\Returned("start_time", type="string", desc="出差开始时间")
+     * @Apidoc\Returned("end_time", type="string", desc="出差结束时间")
+     * @Apidoc\Returned("type", type="integer", desc="出差类型:1=市内,2=市外")
+     * @Apidoc\Returned("is_who", type="integer", desc="是否跨关内关外:0=否,1=是")
+     * @Apidoc\Returned("remark", type="string", desc="备注")
+     * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表",
+     *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="出差ID"),
+     *     @Apidoc\Returned("name", type="string", desc="姓名"),
+     * )
+     * @Apidoc\Returned("approve_info", type="object", desc="审批信息",
+     *     @Apidoc\Returned("id", type="integer", desc="审批ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="出差ID"),
+     *     @Apidoc\Returned("status", type="integer", desc="审核状态:0=待审批,1=审批中,2=审批通过,3=审批拒绝"),
+     *     @Apidoc\Returned("create_at", type="string", desc="创建时间"),
+     *     @Apidoc\Returned("approve_flow", type="integer", desc="流程批次"),
+     *     @Apidoc\Returned("approve_type", type="integer", desc="流程类型:1=审批,2=抄送"),
+     *     @Apidoc\Returned("approve_user", type="string", desc="审批人userid"),
+     *     @Apidoc\Returned("approve_time", type="string", desc="审批时间"),
+     *     @Apidoc\Returned("remark", type="string", desc="审批备注"),
+     *     @Apidoc\Returned("time", type="string", desc="审批时长(上一次审批完成到本次审批的时间,单位秒)"),
+     *     @Apidoc\Returned("time_text", type="string", desc="审批时长文本"),
+     *     @Apidoc\Returned("user", type="object", desc="审批人信息",
+     *          @Apidoc\Returned("userid", type="string", desc="用户userid"),
+     *          @Apidoc\Returned("name", type="string", desc="姓名"),
+     *      ),
+     * )
+     * @Apidoc\Returned("department", type="array", desc="所在部门列表",
+     *     @Apidoc\Returned("dept_id", type="string", desc="部门ID"),
+     *     @Apidoc\Returned("name", type="string", desc="部门名称"),
+     * )
+     * @Apidoc\Returned("document_text", type="array", desc="附件列表")
+     * @Apidoc\Returned("images_text", type="array", desc="图片列表")
      */
     public function get_detail()
     {
         $id = input('id');
-        $info = EvectionInfoService::get_detail($id,$this->user);
-        $this->success('我的出差详情', $info);
+        $info = EvectionInfoService::get_detail($id,$this->user,'detail');
+        $this->success('详情', $info);
     }
 
     /**
-     * @Apidoc\Title("需要我审批的")
+     * 信息
+     *
+     * @Apidoc\Method("POST")
+     * @Apidoc\Desc("重新发起信息/修改信息")
+     * @Apidoc\Param("id", type="integer",require=true, desc="出差ID")
+     * @Apidoc\Param("id", type="integer",require=true, desc="出差ID")
+     * @Apidoc\Returned("id", type="integer", desc="出差ID")
+     * @Apidoc\Returned("status", type="integer", desc="审核状态:1=审批中,2=审批通过,3=审批驳回,4=审批撤销")
+     * @Apidoc\Returned("create_at", type="string", desc="创建时间")
+     * @Apidoc\Returned("order_no", type="string", desc="审批编号")
+     * @Apidoc\Returned("apply_date", type="string", desc="申请日期")
+     * @Apidoc\Returned("reason", type="string", desc="出差事由")
+     * @Apidoc\Returned("start_time", type="string", desc="出差开始时间")
+     * @Apidoc\Returned("end_time", type="string", desc="出差结束时间")
+     * @Apidoc\Returned("type", type="integer", desc="出差类型:1=市内,2=市外")
+     * @Apidoc\Returned("is_who", type="integer", desc="是否跨关内关外:0=否,1=是")
+     * @Apidoc\Returned("remark", type="string", desc="备注")
+     * @Apidoc\Returned("peer_user", type="array", desc="同行人员列表",
+     *     @Apidoc\Returned("id", type="integer", desc="同行人员ID"),
+     *     @Apidoc\Returned("info_id", type="integer", desc="出差ID"),
+     *     @Apidoc\Returned("is_who", type="integer", desc="是否外部人员:0=否,1=是"),
+     *     @Apidoc\Returned("user_id", type="string", desc="用户userid"),
+     *     @Apidoc\Returned("name", type="string", desc="姓名"),
+     *     @Apidoc\Returned("desc", type="string", desc="备注"),
+     * )
+     * @Apidoc\Returned("document_text", type="array", desc="附件列表")
+     * @Apidoc\Returned("images_text", type="array", desc="图片列表")
+     **/
+    public function get_info(){
+        $id = input('id');
+        $info = EvectionInfoService::get_detail($id,$this->user,'info');
+        $this->success('信息', $info);
+    }
+
+    /**
+     * 催办
+     *
+     * @Apidoc\Method("POST")
+     * @Apidoc\Param("id", type="integer",require=true, desc="出差ID")
+     */
+    public function urging()
+    {
+        $id = input('id');
+        Db::startTrans();
+        try{
+            EvectionInfoService::make($id,$this->user,'urging');
+            Db::commit();
+        } catch (Exception $e){
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        $this->success('催办成功');
+    }
+
+    /**
+     * 撤销
+     *
+     * @Apidoc\Method("POST")
+     * @Apidoc\Param("id", type="integer",require=true, desc="出差ID")
+     */
+    public function cancel()
+    {
+        $id = input('id');
+        Db::startTrans();
+        try{
+            EvectionInfoService::make($id,$this->user,'cancel');
+            Db::commit();
+        } catch (Exception $e){
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        $this->success('撤销成功');
+    }
+
+    /**
+     * @Apidoc\Title("我审批的")
      * @Apidoc\Desc("需要我审批的")
      * @Apidoc\Method("GET")
      * @Apidoc\Author("HG")
@@ -228,25 +318,5 @@ class Evection extends Base
         $this->success('审批完成');
     }
 
-    /**
-     * @Apidoc\Title("撤销出差申请")
-     * @Apidoc\Desc("撤销出差申请")
-     * @Apidoc\Method("POST")
-     * @Apidoc\Author("HG")
-     * @Apidoc\Tag("")
-     * @Apidoc\Query("id", type="int",require=true, desc="出差记录id")
-     */
-    public function cancelApply()
-    {
-        $id = input('post.id');
-        $apply_info = EvectionInfo::where('id', $id)->where('user_id', $this->user_id)->find();
-        if (!$apply_info) $this->error('出差记录有误');
-        $apply_info->status = 9;
-        $apply_info->save();
-        $this->success('撤销成功');
-    }
-
 
 }
-
-

+ 15 - 0
application/common/model/Department.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+/**
+ * 部门模型
+ */
+class Department extends Model
+{
+    // 表名
+    protected $name = 'department';
+
+}

+ 19 - 0
application/common/model/EvectionInfo.php

@@ -13,6 +13,25 @@ class EvectionInfo extends Model
     // 表名
     protected $name = 'evection_info';
 
+    // 追加属性
+    protected $append = [
+        'document_text',
+        'images_text',
+    ];
+
+
+    public function getDocumentTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['document']) ? $data['document'] : '');
+        return $value ? explode(',', $value) : [];
+    }
+
+    public function getImagesTextAttr($value, $data)
+    {
+        $value = $value ? $value : (isset($data['images']) ? $data['images'] : '');
+        return $value ? explode(',', $value) : [];
+    }
+
 
     // 关联出差同行人员
     public function peerUser()

+ 18 - 14
application/common/service/ApproveFlowService.php

@@ -43,24 +43,28 @@ class ApproveFlowService
         }
         $approve_user = self::get_user_list($approve_user_ids);
         // 抄送
-        $copy = ApproveFlow::where('module', $module)
-            ->where('type', CommonConstant::TYPE_2)
-            ->where('is_special', CommonConstant::IS_SPECIAL_1)
-            ->where('special_user_id', $userid)
-            ->field($field)
-            ->find();
-        if ($copy) {
-            $copy_user_ids = $copy['user_ids'];
-        } else {
-            $copy_info = ApproveFlow::where('module', $module)
+        $is_copy = sysconf('is_copy_3'); // 是否允许用户自己添加抄送人
+        if($is_copy == 1){
+            $copy = ApproveFlow::where('module', $module)
                 ->where('type', CommonConstant::TYPE_2)
-                ->where('is_special', CommonConstant::IS_SPECIAL_0)
+                ->where('is_special', CommonConstant::IS_SPECIAL_1)
+                ->where('special_user_id', $userid)
                 ->field($field)
                 ->find();
-            $copy_user_ids = $copy_info['user_ids'];
+            if ($copy) {
+                $copy_user_ids = $copy['user_ids'];
+            } else {
+                $copy_info = ApproveFlow::where('module', $module)
+                    ->where('type', CommonConstant::TYPE_2)
+                    ->where('is_special', CommonConstant::IS_SPECIAL_0)
+                    ->field($field)
+                    ->find();
+                $copy_user_ids = $copy_info['user_ids'];
+            }
+            $copy_user = self::get_user_list($copy_user_ids);
+        } else{
+            $copy_user = [];
         }
-        $copy_user = self::get_user_list($copy_user_ids);
-
         return compact('approve_user', 'copy_user');
     }
 

+ 117 - 24
application/common/service/EvectionInfoService.php

@@ -3,10 +3,12 @@
 namespace app\common\service;
 
 use app\common\constant\CommonConstant;
+use app\common\model\Department;
 use app\common\model\EvectionApprove;
 use app\common\model\EvectionInfo;
 use app\common\model\EvectionPeerUser;
 use app\common\model\User;
+use think\Exception;
 
 /**
  * 出差申请服务类
@@ -15,19 +17,33 @@ class EvectionInfoService
 {
 
     /**
-     * 申请
+     * 申请出差/重新发起
      *
+     * @param $id
      * @param $params
      * @param $user
      **/
-    public static function create($params, $user)
+    public static function create($id,$params, $user)
     {
         $userid = $user['userid'];
+        // 编辑
+        if ($id > 0) {
+            $info = EvectionInfo::field('user_id,is_deleted', true)
+                ->where('user_id', $userid)
+                ->where('is_deleted', CommonConstant::IS_DELETED_0)
+                ->find($id);
+            if (!$info) {
+                throw new Exception('出差记录不存在或已删除');
+            }
+            if($info->status != CommonConstant::STATUS_3){
+                throw new Exception('非审批驳回状态无法操作');
+            }
+        }
+
         $order_no = get_order_sn($user->id);
         $approve_user = explode(',', $params['approve_user']);
         $copy_user = explode(',', $params['copy_user']);
         $approve_num = count($approve_user);
-
         $data = [
             'user_id' => $userid,
             'order_no' => $order_no,
@@ -41,23 +57,44 @@ class EvectionInfoService
             'is_who' => $params['is_who'],
             'remark' => $params['remark'],
             'approve_num' => $approve_num,
+            'cur_num' => 0,
         ];
-        // 添加出差申请
-        $info = EvectionInfo::create($data);
+        if ($id > 0) {
+            // 编辑出差申请
+            $save_data = [
+                'status' => CommonConstant::STATUS_1,
+                'create_at' => date('Y-m-d H:i:s'),
+            ];
+            $data = array_merge($data, $save_data);
+            $info->save($data);
 
-        // 添加同行人员
-        self::create_peer_user($info->id, $params['peer_user']);
+            // 编辑同行人员
+            self::create_peer_user($id, $params['peer_user'],'update');
 
-        // 添加出差审批
-        self::create_evection_approve($info->id, $approve_user, $copy_user);
+            // 编辑出差审批
+            self::create_evection_approve($id, $approve_user, $copy_user,'create');
+        } else {
+            // 添加出差申请
+            $info = EvectionInfo::create($data);
+
+            // 添加同行人员
+            self::create_peer_user($info->id, $params['peer_user']);
+
+            // 添加出差审批
+            self::create_evection_approve($info->id, $approve_user, $copy_user);
+        }
     }
 
-    protected static function create_peer_user($info_id, $params)
+    protected static function create_peer_user($info_id, $params,$type = 'create')
     {
         if (!$params) {
             return true;
         }
 
+        if($type == 'update'){
+            EvectionPeerUser::where('info_id', $info_id)->delete();
+        }
+
         $data = [];
         foreach ($params as $value) {
             $data[] = [
@@ -71,8 +108,12 @@ class EvectionInfoService
         EvectionPeerUser::insertAll($data);
     }
 
-    protected static function create_evection_approve($info_id, $approve_user, $copy_user)
+    protected static function create_evection_approve($info_id, $approve_user, $copy_user,$type = 'create')
     {
+        if($type == 'update'){
+            EvectionApprove::where('info_id', $info_id)->delete();
+        }
+
         $data = [];
         $flow_num = 0;
         $create_at = date('Y-m-d H:i:s');
@@ -84,6 +125,7 @@ class EvectionInfoService
                 'approve_flow' => $flow_num,
                 'approve_type' => CommonConstant::TYPE_1,
                 'approve_user' => $value,
+                'approve_time' => $create_at,
                 'create_at' => $create_at,
                 'status' => $flow_num == 1 ? CommonConstant::STATUS_1 : CommonConstant::STATUS_0,
             ];
@@ -95,6 +137,7 @@ class EvectionInfoService
                 'approve_flow' => 0,
                 'approve_type' => CommonConstant::TYPE_2,
                 'approve_user' => $value,
+                'approve_time' => $create_at,
                 'create_at' => $create_at,
                 'status' => CommonConstant::STATUS_0,
             ];
@@ -125,7 +168,7 @@ class EvectionInfoService
             })
             ->with(['peer_user' => function ($query) {
                 $query->field('id,info_id,name');
-            },'approve_info' => function ($query) use ($status) {
+            }, 'approve_info' => function ($query) use ($status) {
                 $query->field('id,info_id,status,approve_user')
                     ->where('status', $status)
                     ->with(['user' => function ($query) {
@@ -139,25 +182,75 @@ class EvectionInfoService
     }
 
     /**
-     * 详情
+     * 详情/信息
      *
      * @param $id
      * @param $user
+     * @param $type
      **/
-    public static function get_detail($id,$user){
+    public static function get_detail($id, $user,$type)
+    {
         $userid = $user['userid'];
-        $info = EvectionInfo::field('user_id,is_deleted',true)
+        if($type == 'detail'){
+            $info = EvectionInfo::field('user_id,is_deleted', true)
+                ->where('user_id', $userid)
+                ->where('is_deleted', CommonConstant::IS_DELETED_0)
+                ->with(['peer_user' => function ($query) {
+                    $query->field('id,info_id,name');
+                }, 'approve' => function ($query) {
+                    $query->field('is_deleted,create_at', true)
+                        ->with(['user' => function ($query) {
+                            $query->field('userid,headimg,name');
+                        }]);
+                }])
+                ->find($id);
+            if ($info) {
+                $info['department'] = Department::where('dept_id', 'in', $user['department'])->field('dept_id,name')->select();
+            }
+        } else{
+            $info = EvectionInfo::field('user_id,is_deleted', true)
+                ->where('user_id', $userid)
+                ->where('is_deleted', CommonConstant::IS_DELETED_0)
+                ->with(['peer_user'])
+                ->find($id);
+        }
+        return $info;
+    }
+
+    /**
+     * 操作方法
+     *
+     * @param $id
+     * @param $user
+     * @param $type
+     */
+    public static function make($id, $user,$type)
+    {
+        $userid = $user['userid'];
+        $info = EvectionInfo::field('id,status')
             ->where('user_id', $userid)
             ->where('is_deleted', CommonConstant::IS_DELETED_0)
-            ->with(['peer_user' => function ($query) {
-                $query->field('id,info_id,name');
-            },'approve' => function ($query) {
-                $query->field('id,info_id,status,approve_user')
-                    ->with(['user' => function ($query) {
-                        $query->field('userid,headimg,name');
-                    }]);
-            }])
             ->find($id);
-        return $info;
+        if(!$info) {
+            throw new Exception('出差记录不存在或已删除');
+        }
+        switch ($type){
+            case 'urging':
+                if($info->status != CommonConstant::STATUS_1){
+                    throw new Exception('其他人已操作');
+                }
+
+                // 钉钉接口 TODO
+                break;
+            case 'cancel':
+                if($info->status != CommonConstant::STATUS_3){
+                    throw new Exception('非审批驳回状态无法操作');
+                }
+
+                $info->status = CommonConstant::STATUS_4;
+                $info->save();
+                break;
+        }
     }
+
 }

+ 2 - 1
application/common/validate/EvectionInfo.php

@@ -27,7 +27,8 @@ class EvectionInfo extends Validate
      * 验证场景
      */
     protected $scene = [
-        'create' => ['reason', 'start_time','end_time','type','is_who', 'remark'],
+        'create' => ['reason', 'start_time','end_time','type','is_who', 'remark','approve_user'],
+        'update' => ['reason', 'start_time','end_time','type','is_who', 'remark','approve_user'],
     ];
 
     /**