cqp 1 bulan lalu
induk
melakukan
1e80d0e2be
3 mengubah file dengan 69 tambahan dan 4 penghapusan
  1. 0 1
      app/Model/DataScopeBaseModel.php
  2. 12 0
      app/Model/ItemEmployee.php
  3. 57 3
      app/Service/ItemService.php

+ 0 - 1
app/Model/DataScopeBaseModel.php

@@ -56,7 +56,6 @@ class DataScopeBaseModel extends Model
         $this->makeModel($query, $auth_type, $user, $depart_range,$column);
     }
 
-    //最高权限
     private function makeModel(&$query, $auth_type, $user, $depart_range, $column){
         $query->where('top_depart_id', $user['top_depart_id']);
 

+ 12 - 0
app/Model/ItemEmployee.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Model;
+
+class ItemEmployee extends DataScopeBaseModel
+{
+    protected $guarded = [];
+    protected $table = "item_employee"; //指定表
+    const CREATED_AT = 'crt_time';
+    const UPDATED_AT = 'upd_time';
+    protected $dateFormat = 'U';
+}

+ 57 - 3
app/Service/ItemService.php

@@ -6,6 +6,7 @@ use App\Model\Device;
 use App\Model\Employee;
 use App\Model\Item;
 use App\Model\ItemDetails;
+use App\Model\ItemEmployee;
 use App\Model\ItemNode;
 use App\Model\ItemNodeDetails;
 use App\Model\Tag;
@@ -22,6 +23,7 @@ class ItemService extends Service
             DB::beginTransaction();
 
             $model = Item::where('id', $data['id'])->first();
+            $old_employee_id = $model->charge_id;
             $tableName = $model->getTable();
             $model->code = $data['code'] ?? '';
             $model->title = $data['title'] ?? '';
@@ -44,6 +46,10 @@ class ItemService extends Service
             $model->save();
 
             $time = time();
+
+            // 人员项目表
+            $this->saveEmployee($data['id'], $time, $data, $user, $old_employee_id);
+
             ItemDetails::where('del_time',0)
                 ->where('item_id', $model->id)
                 ->update(['del_time' => $time]);
@@ -90,7 +96,11 @@ class ItemService extends Service
             $model->top_depart_id = $data['top_depart_id'];
             $model->save();
 
-            $this->saveDetail($model->id, time(), $data);
+            $time = time();
+            $this->saveDetail($model->id, $time, $data);
+
+            // 人员项目表
+            $this->saveEmployee($model->id, $time, $data, $user);
 
             list($status, $msg) = CustomFieldSettingService::syncCustomFieldData($model->id, $tableName, $data, $user);
             if (!$status) {
@@ -137,6 +147,22 @@ class ItemService extends Service
         }
     }
 
+    private function saveEmployee($id, $time, $data, $user, $old_employee_id = 0){
+        if($old_employee_id != $data['charge_id']){
+            ItemEmployee::where('del_time',0)
+                ->where('item_id', $id)
+                ->where('data_id', $old_employee_id)
+                ->update(['del_time' => $time]);
+
+            ItemEmployee::insert([
+                'item_id' => $id,
+                'data_id' => $data['charge_id'],
+                'top_depart_id' => $user['top_depart_id'],
+                'crt_time' => $time
+            ]);
+        }
+    }
+
     private function getDetail($id){
         $data = ItemDetails::where('del_time',0)
             ->where('item_id', $id)
@@ -246,7 +272,27 @@ class ItemService extends Service
 
         $model = Item::TopClear($user,$data);
         $model = $model->where('del_time',0)
-//            ->withCustomData($user)
+            ->select($field)
+            ->orderby('id', 'desc');
+
+        if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
+        if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
+        if(! empty($data['id'])) $model->whereIn('id', $data['id']);
+        if(! empty($data['state'])) $model->where('state', $data['state']);
+        if(! empty($data['crt_time'][0]) && ! empty($data['crt_time'][1])) {
+            $return = $this->changeDateToTimeStampAboutRange($data['crt_time']);
+            $model->where('crt_time','>=',$return[0]);
+            $model->where('crt_time','<=',$return[1]);
+        }
+
+        return $model;
+    }
+
+    public function itemCommon2($data,$user, $field = []){
+        if(empty($field)) $field = Item::$field;
+
+        $model = Item::TopClear($user,$data);
+        $model = $model->where('del_time',0)
             ->select($field)
             ->orderby('id', 'desc');
 
@@ -264,7 +310,15 @@ class ItemService extends Service
     }
 
     public function itemList($data,$user){
-        $model = $this->itemCommon($data, $user);
+        $select_tree_type = $user['select_tree_type'];
+        if(empty($select_tree_type)){
+            //工时
+            $model = $this->itemCommon($data, $user);
+        }else{
+            //项目管理
+            $model = $this->itemCommon2($data, $user);
+        }
+
         $list = $this->limit($model,'',$data);
         $list = $this->fillData($list);