dongxiaoqin пре 11 месеци
родитељ
комит
3a70b5780f

+ 35 - 0
app/adminapi/logic/works/ServiceWorkLogic.php

@@ -52,6 +52,7 @@ use app\common\model\master_worker\MasterWorkerRetentionMoneyLog;
 use app\common\model\master_commission\MasterWorkerCommissionRatio;
 use app\common\model\master_commission\MasterWorkerCommissionConfig;
 use app\common\model\service_area\ServiceArea;
+use app\common\model\works\ServiceWorkSpareAudit;
 
 /**
  * ServiceWork逻辑
@@ -408,6 +409,40 @@ class ServiceWorkLogic extends BaseLogic
         }
     }
 
+    /**
+     * 工程师修改自选配件的图片
+     * @param $params
+     * @return false|void
+     */
+    public static function selfSparePart($params)
+    {
+        Db::startTrans();
+        try {
+            $work = ServiceWork::where(['master_worker_id'=>$params['user_id'],'work_sn'=>$params['work_sn']])->findOrEmpty();
+            if($work->isEmpty()){
+                throw new Exception('工单不存在');
+            }
+            $audit = ServiceWorkSpareAudit::where(['service_work_id'=>$work['id']])->findOrEmpty();
+            if($audit->isEmpty()){
+                throw new Exception('当前工单不存在配件审核信息');
+            }
+            if($audit['status']!=2){
+                throw new Exception('当前工单配件不允许修改');
+            }
+            
+            foreach ($params['self_spare_parts'] as $item){
+                //修改
+                ServiceWorkSpare::where("id",$item['id'])->where('service_worker_id', $work['id'])->update(['spare_image' => $item['spare_image']]);
+            }
+            Db::commit();
+            return true;
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
     /**
      * 工程师确认服务完成
      * @param $params

+ 5 - 0
app/api/logic/ServiceOrderLogic.php

@@ -33,6 +33,7 @@ use app\common\model\works\ServiceWork;
 use app\common\model\works\ServiceWorkAppointmentLog;
 use app\common\model\works\ServiceWorkDeterminedPrice;
 use app\common\model\works\ServiceWorkSpare;
+use app\common\model\works\ServiceWorkSpareAudit;
 use app\workerapi\logic\ServiceWorkLogLogic;
 use think\Exception;
 use think\facade\Db;
@@ -530,9 +531,13 @@ class ServiceOrderLogic extends BaseLogic
             $order_info['spare_total'] = $order_info['service_work']['spare_total']??0;
             $order_info['spare_parts'] = [];
             $order_info['self_spare_parts'] = [];
+            $result['spare_parts_audit_status'] = 0;//自选配件审核状态
             if($order_info['service_work']['spare_total']){
                 $order_info['spare_parts'] = ServiceWorkSpare::getLists($order_info['work_id'], 1);
                 $order_info['self_spare_parts'] = ServiceWorkSpare::getLists($order_info['work_id'], 2);
+                if ($result['self_spare_parts']) {
+                    $result['spare_parts_audit_status'] = (int)ServiceWorkSpareAudit::where(['service_work_id' => $result['id']])->value('status');
+                }
             }
 
             //获取所有的改约记录

+ 6 - 0
app/common/model/fault_code/FaultCode.php

@@ -34,5 +34,11 @@ class FaultCode extends BaseModel
         return $this->hasOne(FaultType::class, 'id', 'type_id')
             ->field('*');
     }
+
+    public function firstType()
+    {
+        return $this->hasOne(FaultType::class, 'id', 'pid')
+            ->field('id,name,pid,goods_category_id');
+    }
     
 }

+ 12 - 0
app/workerapi/controller/FaultCodeController.php

@@ -2,6 +2,7 @@
 
 namespace app\workerapi\controller;
 
+use app\workerapi\lists\FaultSearchLists;
 use app\adminapi\logic\fault_code\FaultCodeLogic;
 use app\adminapi\logic\fault_type\FaultTypeLogic;
 use app\adminapi\validate\fault_code\FaultCodeValidate;
@@ -27,6 +28,17 @@ class FaultCodeController extends BaseApiController
         $result = FaultCodeLogic::lists($params);
         return $this->data($result);
     }
+
+    /**
+     * @notes 故障搜索
+     * @return \think\response\Json
+     * @author likeadmin
+     * @date 2024/10/18 09:58
+     */
+    public function search()
+    {        
+        return $this->dataLists(new FaultSearchLists());
+    }
 }
 
 

+ 94 - 0
app/workerapi/lists/FaultSearchLists.php

@@ -0,0 +1,94 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\workerapi\lists;
+
+use app\common\model\fault_code\FaultCode;
+use app\common\lists\ListsSearchInterface;
+
+
+/**
+ * FaultCode列表
+ * Class FaultSearchLists
+ */
+class FaultSearchLists extends BaseWorkerDataLists implements ListsSearchInterface
+{
+    /**
+     * @notes 设置搜索条件
+     * @return \string[][]
+     * @author likeadmin
+     * @date 2024/10/18 09:58
+     */
+    public function setSearch(): array
+    {
+        return [
+        ];
+    }
+
+    /*
+     * 查询条件
+     * @return array
+     */
+    public function queryWhere(){
+        
+        $where[] = ['a.status', '=', 1];
+        if (!empty($this->params['keyword'])) {
+            $where[] = ['a.name', 'like', '%'.$this->params['keyword'].'%'];
+        }
+        if (!empty($this->params['goods_category_id'])) {
+            $where[] = ['b.goods_category_id', '=', $this->params['goods_category_id']];
+        } else {
+            $where[] = ['b.goods_category_id', '=', 0];
+        }
+        return $where;
+    }
+
+    /**
+     * @notes 获取列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author likeadmin
+     * @date 2024/10/18 09:58
+     */
+    public function lists(): array
+    {
+        $lists = FaultCode::alias("a")
+            ->with(['firstType'])
+            ->leftJoin('fault_type b', 'a.type_id = b.id')
+            ->where($this->queryWhere())
+            ->field('a.id,a.name,a.price,b.id as pre_id ,b.name as pre_name, b.pid')
+            ->limit($this->limitOffset, $this->limitLength)
+            ->select()
+            ->toArray();
+        return $lists;
+    }
+
+
+    /**
+     * @notes 获取数量
+     * @return int
+     * @author likeadmin
+     * @date 2024/10/18 09:58
+     */
+    public function count(): int
+    {
+        return FaultCode::alias("a")
+            ->leftJoin('fault_type b', 'a.type_id = b.id')
+            ->where($this->queryWhere())
+            ->count();
+    }
+
+}