林海涛 пре 1 година
родитељ
комит
cfab7dde34
2 измењених фајлова са 55 додато и 4 уклоњено
  1. 50 4
      app/adminapi/lists/works/ServiceWorkLists.php
  2. 5 0
      app/common/model/works/ServiceWork.php

+ 50 - 4
app/adminapi/lists/works/ServiceWorkLists.php

@@ -16,8 +16,10 @@ namespace app\adminapi\lists\works;
 
 
 use app\adminapi\lists\BaseAdminDataLists;
+use app\common\model\goods_category\GoodsCategory;
 use app\common\model\works\ServiceWork;
 use app\common\lists\ListsSearchInterface;
+use think\db\Query;
 
 
 /**
@@ -38,12 +40,47 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
     public function setSearch(): array
     {
         return [
-            '=' => ['work_sn', 'real_name', 'mobile', 'address', 'title', 'category_type', 'goods_category_ids', 'goods_category_id', 'base_service_fee', 'service_fee', 'work_status', 'service_status', 'dispatch_time', 'receive_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'work_amount', 'create_time', 'update_time'],
+            '=' => ['work_sn', 'real_name', 'mobile', 'address', 'title', 'category_type', 'base_service_fee', 'service_fee', 'work_status', 'service_status',  'finished_images', 'master_worker_id', 'work_amount'],
 
         ];
     }
 
-
+    public function queryWhere(){
+        $where = [];
+        if(isset($this->params['dispatch_time']) && !empty($this->params['dispatch_time'])){
+            $time = [strtotime($this->params['dispatch_time'][0]), strtotime($this->params['dispatch_time'][1])];
+            $where[] = ['dispatch_time', 'between', $time];
+        }
+        if(isset($this->params['receive_time']) && !empty($this->params['receive_time'])){
+            $time = [strtotime($this->params['receive_time'][0]), strtotime($this->params['receive_time'][1])];
+            $where[] = ['receive_time', 'between', $time];
+        }
+        if(isset($this->params['appointment_time']) && !empty($this->params['appointment_time'])){
+            $time = [strtotime($this->params['appointment_time'][0]), strtotime($this->params['appointment_time'][1])];
+            $where[] = ['appointment_time', 'between', $time];
+        }
+        if(isset($this->params['finished_time']) && !empty($this->params['finished_time'])){
+            $time = [strtotime($this->params['finished_time'][0]), strtotime($this->params['finished_time'][1])];
+            $where[] = ['finished_time', 'between', $time];
+        }
+        if(isset($this->params['create_time']) && !empty($this->params['create_time'])){
+            $time = [strtotime($this->params['create_time'][0]), strtotime($this->params['create_time'][1])];
+            $where[] = ['create_time', 'between', $time];
+        }
+        if(isset($this->params['update_time']) && !empty($this->params['update_time'])){
+            $time = [strtotime($this->params['update_time'][0]), strtotime($this->params['update_time'][1])];
+            $where[] = ['update_time', 'between', $time];
+        }
+        if (isset($this->params['update_time']) && !empty($this->params['goods_category_id'])) {
+            $goodsCategoryId = end($this->params['goods_category_id']);
+            $goodsCategoryData = GoodsCategory::where(['status'=>1])->order(['pid' => 'asc','weigh' => 'desc', 'id' => 'desc'])
+                ->select()->toArray();
+            $ids =get_tree_ids($goodsCategoryData,$goodsCategoryId);
+            $ids[] = $goodsCategoryId;
+            $where[] = ['goods_category_id','in' ,$ids];
+        }
+        return $where;
+    }
     /**
      * @notes 获取列表
      * @return array
@@ -55,7 +92,16 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
      */
     public function lists(): array
     {
-        return ServiceWork::where($this->searchWhere)
+        return ServiceWork::with([
+            'worker'=>function(Query $query) {
+                $query->field("id,worker_number,real_name");
+            },
+            'goodsCategory' =>function (Query $query) {
+                $query->field('id,name');
+            }
+        ])
+            ->where($this->searchWhere)
+            ->where($this->queryWhere())
             ->field(['id', 'work_sn', 'real_name', 'mobile', 'address', 'title', 'category_type', 'goods_category_ids', 'goods_category_id', 'base_service_fee', 'service_fee', 'work_status', 'service_status', 'dispatch_time', 'receive_time', 'appointment_time', 'finished_images', 'finished_time', 'master_worker_id', 'work_amount', 'create_time', 'update_time'])
             ->limit($this->limitOffset, $this->limitLength)
             ->order(['id' => 'desc'])
@@ -72,7 +118,7 @@ class ServiceWorkLists extends BaseAdminDataLists implements ListsSearchInterfac
      */
     public function count(): int
     {
-        return ServiceWork::where($this->searchWhere)->count();
+        return ServiceWork::where($this->searchWhere)->where($this->queryWhere())->count();
     }
 
 }

+ 5 - 0
app/common/model/works/ServiceWork.php

@@ -17,6 +17,7 @@ namespace app\common\model\works;
 
 use app\api\logic\PerformanceLogic;
 use app\common\model\BaseModel;
+use app\common\model\goods_category\GoodsCategory;
 use app\common\model\master_worker\MasterWorker;
 use app\common\model\orders\RechargeOrder;
 
@@ -48,6 +49,10 @@ class ServiceWork extends BaseModel
         return $this->belongsTo(MasterWorker::class, 'master_worker_id', 'id');
     }
 
+    public function goodsCategory()
+    {
+        return $this->hasOne(GoodsCategory::class,'id','goods_category_id');
+    }
     public function getWorkStatusTextAttr($value,$data)
     {
          $status = [0=>'待派单',1=>'待领单',2=>'待联系',3=>'待上门',4=>'已上门',5=>'服务中',6=>'待结算',7=>'已完结',8=>'已评价'];