cqp 6 月之前
父節點
當前提交
c297b8d8d9

+ 5 - 0
app/Model/CustomerInfo.php

@@ -39,4 +39,9 @@ class CustomerInfo extends Model
         self::type_three,
         self::type_nine,
     ];
+
+    public static $no_edit = [
+        self::type_two,
+        self::type_nine,
+    ];
 }

+ 1 - 1
app/Model/PurchaseOrderSpecial.php

@@ -24,5 +24,5 @@ class PurchaseOrderSpecial extends UseScopeBaseModel
         self::TYPE_ZERO => '到店施工',
         self::TYPE_ONE => '仅安装',
     ];
-    const range_function = '';
+    const range_function = 'purchaseSpecialRange';
 }

+ 1 - 0
app/Model/SeeRange.php

@@ -19,6 +19,7 @@ class SeeRange extends Model
     const type_seven = 7; // 合同
     const type_eight = 8; // 活动包
     const type_nine = 9; //供应商
+    const type_ten = 10; //虚拟采购单
     public static $type = [
         self::type_one,
         self::type_two,

+ 15 - 0
app/Service/CheckService.php

@@ -444,6 +444,21 @@ class CheckService extends Service
             PurchaseOrderSpecialInfo::insert($insert);
             PurchaseOrderSpecial::where('id',$purchase_order_id)->update(['total' => $product_total]);
 
+            $company = SeeRange::where('del_time',0)
+                ->where('data_id',$order['id'])
+                ->where('data_type',SeeRange::type_seven)
+                ->where('type',SeeRange::data_three)
+                ->first();
+            if(! empty($company)) $company = $company->toArray();
+            $insert_see[] = [
+                'data_id' => $purchase_order_id, // 虚拟采购单
+                'data_type' => SeeRange::type_ten,
+                'param_id' => $company['param_id'] ?? 0, //门店id
+                'type' => SeeRange::data_three,
+                'crt_time' => time(),
+            ];
+            if(! empty($insert_see)) SeeRange::insert($insert_see);
+
             DB::commit();
         }catch (\Throwable $exception){
             DB::rollBack();

+ 1 - 1
app/Service/CustomerService.php

@@ -76,7 +76,7 @@ class CustomerService extends Service
             $old = array_column($old,'file');
             CustomerInfo::where('del_time',0)
                 ->where('customer_id',$data['id'])
-                ->where('type','<>',CustomerInfo::type_two)
+                ->whereNotIn('type',CustomerInfo::$no_edit)
                 ->update(['del_time' => $time]);
 
             if(! empty($data['customer_contact'])){

+ 37 - 1
app/Service/EmployeeService.php

@@ -343,13 +343,15 @@ class EmployeeService extends Service
             $role2[$value->employee_id][] = $value->id;
         }
 
+        $map = $this->getTopDepartSon();
+
         $res = DB::table('employee_depart_permission as a')
             ->select('a.employee_id','b.title','b.id')
             ->join('depart as b','a.depart_id','=','b.id')
             ->whereIn("a.employee_id",array_column($data['data'],'id'))
             ->orderBy('b.id')
             ->get()->toArray();
-        $depart_title = $depart_id = [];
+        $depart_title = $depart_id = $man_top_depart = [];
         foreach ($res as $value){
             if(isset($depart_title[$value->employee_id])){
                 $depart_title[$value->employee_id] .= ',' . $value->title;
@@ -357,6 +359,17 @@ class EmployeeService extends Service
                 $depart_title[$value->employee_id] = $value->title;
             }
             $depart_id[$value->employee_id][] = $value->id;
+
+            $tmp = $map[$value->id] ?? [];
+            if(empty($tmp)) continue;
+            $key = $tmp['id'] . $tmp['title'];
+            if(! isset($man_top_depart[$value->employee_id][$key])) {
+                $man_top_depart[$value->employee_id][$key] = $map[$value->id];
+            }
+        }
+
+        foreach ($man_top_depart as $key => $value){
+            $man_top_depart[$key] = array_values($value);
         }
 
         $wx = WxEmployeeOfficial::where('appid',WeixinService::APPID)
@@ -372,11 +385,34 @@ class EmployeeService extends Service
             $is_wx = "未绑定微信公众号";
             if(in_array($value['id'], $wx)) $is_wx = "已绑定微信公众号";
             $data['data'][$key]['is_wx'] = $is_wx;
+            $data['data'][$key]['my_top'] = $man_top_depart[$value['id']] ?? [];
         }
 
         return $data;
     }
 
+    //门店下所有子集
+    public function getTopDepartSon(){
+        $departList = Depart::where('del_time',0)
+            ->select('id','parent_id','title')
+            ->get()->toArray();
+
+        $map = [];
+        foreach ($departList as $value){
+            if($value['parent_id'] == 0){
+                $result = array_merge($this->getAllDescendants($departList,$value['id']),[$value['id']]);
+                foreach ($result as $val){
+                    $map[$val] = [
+                        'id' => $value['id'],
+                        'title' => $value['title'],
+                    ];
+                }
+            }
+        }
+
+        return $map;
+    }
+
     //获取当前顶级部门下人员id
     public function getEmployee($user){
         $top_depart_id = $user['depart_top'][0] ?? [];

+ 20 - 0
app/Service/RangeService.php

@@ -135,6 +135,7 @@ class RangeService extends Service
         }else{
             $string = "param_id IN({$depart_str})";
         }
+        // 人为当前用户时, 或部门在当前用户范围内
         $str = "(param_id = $user_id AND type = $type) OR ($string AND type IN ({$type2}))";
 
         // 可见部门 可见人 可以看见
@@ -380,6 +381,25 @@ class RangeService extends Service
         return $return_id;
     }
 
+    //获取特殊采购单可见数据
+    public static function purchaseSpecialRange($user,$search){
+        //可见范围id
+        $return_id = Self::getRangeDataId($user,SeeRange::type_ten);
+
+//        if(! empty($search['top_depart_id']) && ! empty($user['is_all_depart'])){
+//            $id = DB::table('purchase_order')
+//                ->where('del_time',0)
+//                ->where('top_depart_id',$search['top_depart_id'])
+//                ->select('id')->get()->toArray();
+//            $id = array_column($id,'id');
+//            foreach ($return_id as $key => $value){
+//                if(! in_array($value,$id)) unset($return_id[$key]);
+//            }
+//        }
+
+        return $return_id;
+    }
+
     //获取供应商可见数据
     public static function supplierRange($user,$search){
         //可见范围id