Browse Source

pc端,维保流程

lizhen_gitee 7 months ago
parent
commit
4085eec9ae
2 changed files with 215 additions and 22 deletions
  1. 6 3
      application/common/model/Maintain.php
  2. 209 19
      application/company/controller/Maintain.php

+ 6 - 3
application/common/model/Maintain.php

@@ -24,14 +24,14 @@ class Maintain extends Model
 
 
     //状态枚举
-    public function status_data($status){
+    public function status_data($status = false){
         $data = [
             0  => '待报价',  //等待初次报价 或 直接给指派师傅
             2  => '已取消',
 
-
             20 => '报价待审',      //通过就去30,驳回就到22
             22 => '报价审核驳回',   //等待再次报价
+
             30 => '用户待确认',   //通过就去40,没有驳回
             40 => '待指派',        //报价都审核过了,可派师傅了
             50 => '已选师傅',
@@ -44,7 +44,10 @@ class Maintain extends Model
 
             100 => '验收通过已完成',
         ];
-        return $data[$status];
+        if($status === false){
+            return $data;
+        }
+        return isset($data[$status]) ? $data[$status] : $status;
     }
 
 

+ 209 - 19
application/company/controller/Maintain.php

@@ -4,6 +4,7 @@ namespace app\company\controller;
 
 use app\common\controller\Apic;
 use think\Db;
+use app\common\model\Maintain as Maintainmodel;
 /**
  * 维保流程
  */
@@ -101,61 +102,250 @@ class Maintain extends Apic
             ->field($field)
             ->where($map)->order('mt.id desc')
             ->autopage()->select();
+        if(!empty($list)){
+            $maintain_model = new Maintainmodel();
+            foreach($list as $key => $val){
+                $list[$key]['status_text'] = $maintain_model->status_data($val['status']);
+            }
+        }
 
         $this->success(1,$list);
     }
 
+    //整合过的状态
+    private function status_data($status){
+        $data = [
+            0  => '待报价',  //等待初次报价 或 直接给指派师傅
+            2  => '已取消',
+
+            20 => '报价待审',      //通过就去30,驳回就到22
+            22 => '报价审核驳回',   //等待再次报价
+
+            30 => '报价审核',   //通过就去40,没有驳回
+            40 => '待指派',        //报价都审核过了,可派师傅了
+            50 => '待处理',
+            60 => '待处理',
+            70 => '待处理', //待上门
+
+            80 => '待处理',
+            90 => '待处理',
+            92 => '待处理',//待二次上门
+
+            100 => '已完成',
+        ];
+
+        return isset($data[$status]) ? $data[$status] : $status;
+    }
+
     //详情
     public function info(){
         $id = input('id',0);
 
         $info = Db::name($this->table)->alias('mt')
             ->join('user_company uc','mt.uc_id = uc.id','LEFT')
-            ->field('mt.*,uc.projectname,uc.header,uc,projectaddress')
-            ->where('id',$id)->where('company_id',$this->auth->company_id)
+            ->join('user','mt.user_id = user.id','LEFT')
+            ->field('mt.*,uc.projectname,uc.header,uc.projectaddress,user.username as user_username,user.nickname as user_nickname')
+            ->where('mt.id',$id)->where('mt.company_id',$this->auth->company_id)
             ->find();
 
+        $maintain_model = new Maintainmodel();
+        $info['status_text'] = $maintain_model->status_data($info['status']);
+
+        //追加报价历史
+        $baojia = Db::name('maintain_baojia')->alias('bj')
+            ->field('bj.*,admin.nickname as baojia_nickname,audit.nickname as baojia_audit_nickname')
+            ->join('pc_admin admin','bj.baojia_staffid = admin.id','LEFT')
+            ->join('pc_admin audit','bj.baojia_audit_staffid = audit.id','LEFT')
+            ->where('order_id',$id)->order('id desc')->select();
+        $info['baojia_list'] = $baojia;
+        //追加材料列表
+        //追加多次维修+对应进度历史
+
         $this->success(1,$info);
     }
 
     //提交报价
     public function baojia(){
+        $id              = input('id',0);
+        $baojia_file     = input('baojia_file','');
+        $baojia_filename = input('baojia_filename','');
+
+        if(empty($baojia_file) || empty($baojia_filename)){
+            $this->error();
+        }
 
+        Db::startTrans();
+        $info = Db::name($this->table)->where('id',$id)->lock(true)->find();
+        if(empty($info)){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
+        if($info['company_id'] != $this->auth->company_id){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
+        if($info['status'] == 20){
+            Db::rollback();
+            $this->error('当前订单报价正在审核中');
+        }
+        if($info['status'] != 22 && $info['status'] != 0){
+            Db::rollback();
+            $this->error('当前订单不能报价');
+        }
+
+        //报价
+        $nowtime = time();
+        $baojia_data = [
+            'order_id' => $info['id'],
+            'company_id' => $info['company_id'],
+            'user_id' => $info['user_id'],
+            'baojia_staffid' => $this->auth->id,
+            'baojia_time' => $nowtime,
+            'baojia_filename' => $baojia_filename,
+            'baojia_file' => $baojia_file,
+            'status' => 20,
+
+            'updatetime' => $nowtime,
+        ];
+        $baojia_id = Db::name('maintain_baojia')->insertGetId($baojia_data);
+        if(!$baojia_id){
+            Db::rollback();
+            $this->error('报价失败,请重试');
+        }
+
+        //
+        $update = [
+            'status'     => 20,
+            'updatetime' => $nowtime,
+        ];
+        $rs_update = Db::name($this->table)->where('id',$id)->update($update);
+        if($rs_update === false){
+            Db::rollback();
+            $this->error('报价失败,请重试');
+        }
+
+        //
+        Db::commit();
+        $this->success();
     }
     //审核报价
     public function baojia_audit(){
+        $baojia_id = input('baojia_id',0);
+        $status = input('status',2);
+        $reason = input('reason','');
 
-    }
-    //指派师傅
-    public function zhipai(){
+        Db::startTrans();
+        $nowtime = time();
 
-    }
+        $baojia_info = Db::name('maintain_baojia')->where('id',$baojia_id)->lock(true)->find();
+        if(empty($baojia_info)){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
+        $info = Db::name($this->table)->where('id',$baojia_info['order_id'])->lock(true)->find();
+        if(empty($info)){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
 
+        if($baojia_info['status'] != 20){
+            Db::rollback();
+            $this->error('状态错误不能审核,请刷新重试');
+        }
+        if($info['status'] != 20){
+            Db::rollback();
+            $this->error('状态错误不能审核,请刷新重试');
+        }
 
+        if($status == 1){
+            //通过
+            $baojia_update = [
+                'status'               => 30,
+                'baojia_audit_staffid' => $this->auth->id,
+                'baojia_audit_time'    => $nowtime,
+                'updatetime'           => $nowtime,
+            ];
+
+        }else{
+            //驳回
+            $baojia_update = [
+                'status'               => 22,
+                'baojia_audit_staffid' => $this->auth->id,
+                'baojia_audit_time'    => $nowtime,
+                'baojia_audit_reason'  => $reason,
+                'updatetime'           => $nowtime,
+            ];
+        }
 
-    public function edit(){
-        $id = input('id',0);
-        $info = Db::name($this->table)->where('id',$id)->where('company_id',$this->auth->company_id)->find();
-        if(empty($info)){
-            $this->error('没找到该信息,请刷新重试');
+        $rs_audit = Db::name('maintain_baojia')->where('id',$baojia_id)->update($baojia_update);
+        if($rs_audit === false){
+            Db::rollback();
+            $this->error('审核失败,请重试');
         }
 
-        $data = [
-            'brand'      => input('brand',''),
-            'logo_image' => input('logo_image',''),
-            'typename'   => input('typename',''),
-            'name'       => input('name',''),
-            'password'   => input('password',''),
+        //订单
+        $update = [
+            'status'     => $baojia_update['status'],
+            'updatetime' => $nowtime,
         ];
+        $rs_update = Db::name($this->table)->where('id',$baojia_info['order_id'])->update($update);
+        if($rs_update === false){
+            Db::rollback();
+            $this->error('审核失败,请重试');
+        }
 
-        Db::name($this->table)->where('id',$id)->update($data);
-
+        //
+        Db::commit();
         $this->success();
     }
 
+    //指派师傅
+    public function zhipai(){
+        //检查师傅
+        $worker_id   = input('worker_id',0);
+
+        $worker = Db::name('worker')->where('id',$worker_id)->where('status',1)->where('company_id',$this->auth->company_id)->find();
+        if(empty($worker)){
+            $this->error('没找到该师傅');
+        }
 
+        //检查订单
+        $id   = input('id',0);
+
+        Db::startTrans();
+        $info = Db::name($this->table)->where('id',$id)->lock(true)->find();
+        if(empty($info)){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
+        if($info['company_id'] != $this->auth->company_id){
+            Db::rollback();
+            $this->error('没找到该信息,请刷新重试');
+        }
 
+        if(in_array($info['status'],[20,22,30])){
+            Db::rollback();
+            $this->error('报价未确认,还不能指派师傅');
+        }
+        if($info['status'] != 0 && $info['status'] != 40 ){
+            Db::rollback();
+            $this->error('当前订单状态,不能指派师傅');
+        }
 
+        //
+        $update = [
+            'status'     => 50,
+            'updatetime' => time(),
+        ];
+        $rs_update = Db::name($this->table)->where('id',$id)->update($update);
+        if($rs_update === false){
+            Db::rollback();
+            $this->error('指派失败,请重试');
+        }
 
+        //
+        Db::commit();
+        $this->success();
+    }
 
 }