|
@@ -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();
|
|
|
+ }
|
|
|
|
|
|
}
|