Browse Source

参照流程优化列表的数据权限(第一部分)

wufeng 2 years ago
parent
commit
6eb17c12ec

+ 14 - 11
app/admin/controller/Activity.php

@@ -4,6 +4,7 @@ namespace app\admin\controller;
 
 use app\admin\common\Ocr;
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use app\BaseController;
 use think\App;
@@ -49,20 +50,21 @@ class Activity extends Base
         if($company_id!==""){
             $where[]=['ga.company_id',"=",$company_id];
         }
-        $creater = isset($this->post['creater']) && $this->post['creater'] !=="" ? trim($this->post['creater'])
-            :"";
+        $creater = isset($this->post['creater']) && $this->post['creater'] !=="" ? trim($this->post['creater']) :"";
         if($creater!=""){
             $where[]=['ga.creater',"like","%$creater%"];
         }
-        $createrid = isset($this->post['createrid']) && $this->post['createrid'] !=="" ? trim($this->post['createrid'])
-            :"";
+        $createrid = isset($this->post['createrid']) && $this->post['createrid'] !=="" ? trim($this->post['createrid']) :"";
         if($createrid!==""){
             $where[]=['ga.createrid',"=",$createrid];
         }
-        $role=$this->checkRole();
-        if(!empty($role['write'])){
-            $where[]=["ga.createrid","in",$role['write']];
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write'])){
+//            $where[]=["ga.createrid","in",$role['write']];
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['ga.createrid', 'in', $role[DataGroupModel::$type_全部]];
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["ga.createrid", 'in', get_company_item_user_by_name($company_name)];
 
@@ -77,11 +79,12 @@ class Activity extends Base
             ->field('ga.*,p.platform_name,u.itemid')
             ->leftJoin("depart_user u", "u.uid=ga.createrid AND u.is_del=0")
             ->leftJoin("platform p", "p.id=ga.platform_code")
-            ->append(['company_name'])
+            ->append(['company_name','is_allow_update'])
             ->withAttr('company_name',function($val,$data){
                 return implode('/', array_column(GetPart($data['itemid']), 'name'));
-            })
-            ->where($where)
+            })->withAttr('is_allow_update',function($val,$data)use($role){
+                return (in_array($this->roleid, [1, 33]) || in_array($data['createrid'], $role[DataGroupModel::$type_可编辑])) ? 1 : 0;//是否具有编辑权限
+            })->where($where)
             ->page($page,$size)
             ->order("ga.addtime desc")
             ->select()

+ 24 - 15
app/admin/controller/After.php

@@ -3,6 +3,7 @@
 
 namespace app\admin\controller;
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use think\App;
@@ -168,18 +169,15 @@ class After extends Base
         if($orderCode!=""){
             $where[]=['a.orderCode',"like", "%{$orderCode}%"];
         }
-        $good_code = isset($this->post['good_code']) && $this->post['good_code']!="" ? trim($this->post['good_code'])
-            :"";
+        $good_code = isset($this->post['good_code']) && $this->post['good_code']!="" ? trim($this->post['good_code']) :"";
         if($good_code!=""){
             $where[]=['a.good_code',"like", "%{$good_code}%"];
         }
-        $good_name = isset($this->post['good_name']) && $this->post['good_name']!="" ? trim($this->post['good_name'])
-            :"";
+        $good_name = isset($this->post['good_name']) && $this->post['good_name']!="" ? trim($this->post['good_name']) :"";
         if($good_name!=""){
             $where[]=['a.good_name',"like", "%{$good_name}%"];
         }
-        $customer_code = isset($this->post['customer_code']) && $this->post['customer_code']!="" ? trim($this->post['customer_code'])
-            :"";
+        $customer_code = isset($this->post['customer_code']) && $this->post['customer_code']!="" ? trim($this->post['customer_code']) :"";
         if($customer_code!=""){
             $where[]=['a.customer_code',"like", "%{$customer_code}%"];
         }
@@ -187,8 +185,7 @@ class After extends Base
         if($except_code!=""){
             $where[]=['a.except_code',"=", $except_code];
         }
-        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name']!="" ? trim($this->post['apply_name'])
-            :"";
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name']!="" ? trim($this->post['apply_name']) :"";
         if($apply_name!=""){
             $where[]=['a.apply_name',"like", "%{$apply_name}%"];
         }
@@ -200,17 +197,24 @@ class After extends Base
         if($end!==""){
             $where[]=['a.addtime',"<=", $end];
         }
-        $role=$this->checkRole();
         $condition='';
-        if(!empty($role['write']) && $this->uid!=""){
-            // $where[]=["a.apply_id","in",$role['write']];
-            $condition .="a.cgderid = {$this->uid} or a.apply_id in (".implode(',',$role['write']).")";
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write']) && $this->uid!=""){
+//            // $where[]=["a.apply_id","in",$role['write']];
+//            $condition .="a.cgderid = {$this->uid} or a.apply_id in (".implode(',',$role['write']).")";
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $condition .="a.cgderid = {$this->uid} or a.apply_id in (".implode(',',$role[DataGroupModel::$type_全部]).")";
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($company_name)];
 
-        $count=Db::name("order_return")->alias("a")->leftJoin("order_returninfo b","a.returnCode=b.returnCode")->where
-        ($where)->where($condition)->count();
+        $count=Db::name("order_return")
+            ->alias("a")
+            ->leftJoin("order_returninfo b","a.returnCode=b.returnCode")
+            ->where($where)
+            ->where($condition)
+            ->count();
         $total = ceil($count/$size);
         $page = $total>=$page ? $page :$total;
         $list =Db::name("order_return")
@@ -228,6 +232,11 @@ class After extends Base
             $customer = Db::name("customer_info")->where(["companyNo"=>$value['customer_code']])->find();
             $value['customer_name'] = isset($customer['companyName']) ?trim($customer['companyName']):'';
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",['list'=>$data,"count"=>$count]);

+ 9 - 1
app/admin/controller/Allot.php

@@ -3,6 +3,7 @@
 namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use app\BaseController;
@@ -64,7 +65,6 @@ class Allot extends Base
         }
         $in_companyNo = isset($this->post['in_companyNo']) && $this->post['in_companyNo'] !== "" ? trim($this->post['in_companyNo']) : "";
         if ($in_companyNo !== "") {
-
             $where[]=["a.in_companyNo","=",$in_companyNo];
         }
 
@@ -85,9 +85,12 @@ class Allot extends Base
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($company_name)];
 
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.apply_id', 'in', $role[DataGroupModel::$type_全部]];
 
         $count = Db::name('allot_stock')
             ->alias('a')
+            ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
             ->where($where)
             ->count();
         $total = ceil($count/$size);
@@ -128,6 +131,11 @@ class Allot extends Base
             $value['rcode'] =isset($dc['code']) ? $dc['code']:"";
             $value['in_company_name'] =isset($dc['company']) ? $dc['company']:"";
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data []=$value;
         }
         return app_show(0,"获取成功",['count'=>$count,'list'=>$data]);

+ 22 - 4
app/admin/controller/Check.php

@@ -2,6 +2,7 @@
 
 namespace app\admin\controller;
 
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use app\BaseController;
 use think\App;
@@ -216,14 +217,28 @@ public function list()
     if ($companyNo !== "") {
         $condition[]=["a.companyNo ","=",$companyNo ];
     }
-    $count = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
+
+    $role = $this->checkDataShare();
+    if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.apply_id', 'in', $role[DataGroupModel::$type_全部]];
+
+    $count = Db::name('good_check')
+        ->alias('a')
+        ->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
         ->join("supplier v","v.code=b.supplierNo","left")
-        ->where($where)->count();
+        ->where($where)
+        ->count();
     $total = ceil($count / $size);
     $page = $page <= $total ? $page : $total;
-    $list = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
+    $list = Db::name('good_check')
+        ->alias('a')
+        ->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
         ->join("supplier v","v.code=b.supplierNo","left")
-        ->field("a.status,a.apply_id,a.apply_name,a.type,a.addtime,a.wsm_code,a.check_code,b.name,a.id,v.name as 'caname',v.code")->where($where)->page($page,$size)->order("a.id desc")->select();
+        ->field("a.status,a.apply_id,a.apply_name,a.type,a.addtime,a.wsm_code,a.check_code,b.name,a.id,v.name as 'caname',v.code")
+        ->where($where)
+        ->page($page,$size)
+        ->order("a.id desc")
+        ->select()
+        ->toArray();
     $data=[];
     foreach ($list as $key=>$value){
         $value['rename'] ='';
@@ -233,6 +248,9 @@ public function list()
            // var_dump(Db::name("depart_user")->getLastSql());
             $value['rename'] =implode(",",$depart);
         }
+        //是否具有编辑权限
+        $value['is_allow_update'] = 0;
+        if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
         $data[] = $value;
     }
     return app_show(0,"获取成功",['count'=>$count,'list'=>$data]);

+ 19 - 7
app/admin/controller/Consult.php

@@ -3,6 +3,7 @@
 namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use think\App;
 use think\facade\Db;
@@ -2062,8 +2063,7 @@ class Consult extends Base
 
         $projectNo = isset($this->post['projectNo']) && $this->post['projectNo'] !== "" ? trim($this->post['projectNo']) : "";
         if ($projectNo !== "") {
-            $zxlist = Db::name("consult_order")->where(["projectNo"=>$projectNo,"is_del"=>0,"is_project"=>1])->column
-            ("zxNo");
+            $zxlist = Db::name("consult_order")->where(["projectNo"=>$projectNo,"is_del"=>0,"is_project"=>1])->column("zxNo");
             $where[] = ['bo.zxNo','in',$zxlist];
         }
         $pgNo = isset($this->post['pgNo']) && $this->post['pgNo'] !== "" ? trim($this->post['pgNo']) : "";
@@ -2082,12 +2082,19 @@ class Consult extends Base
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["bo.createrid", 'in', get_company_item_user_by_name($company_name)];
 
-        $role=$this->checkRole();
-        if(!empty($role['write'])){
-            $where[]=["bo.createrid","in",$role['write']];
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write'])){
+//            $where[]=["bo.createrid","in",$role['write']];
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['bo.createrid', 'in', $role[DataGroupModel::$type_全部]];
+
+        $count=Db::name("bargain_order")
+            ->alias('bo')
+            ->leftJoin("depart_user u", "u.uid=bo.createrid AND u.is_del=0")
+            ->where($where)
+            ->count();
 
-        $count=Db::name("bargain_order")->alias('bo')->leftJoin("depart_user u", "u.uid=bo.createrid AND u.is_del=0")->where($where)->count();
         $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('bargain_order')
@@ -2144,6 +2151,11 @@ class Consult extends Base
 
             $value['specinfo'] = isset($bidinfos['specinfo'])&&$bidinfos['specinfo']!=""?json_decode($bidinfos['specinfo'],true):[];
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['createrid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
 

+ 31 - 22
app/admin/controller/Good.php

@@ -3,6 +3,7 @@
 
 namespace app\admin\controller;
 
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use think\App;
 use think\db\Raw;
@@ -51,18 +52,15 @@ class Good extends Base
         if($end!==""){
             $where[]=['b.addtime',"<",date('Y-m-d H:i:s',strtotime($end)+24*3600)];
         }
-        $is_stock = isset($this->post['is_stock']) && $this->post['is_stock'] !=="" ? intval($this->post['is_stock'])
-            :"";
+        $is_stock = isset($this->post['is_stock']) && $this->post['is_stock'] !=="" ? intval($this->post['is_stock']) :"";
         if($is_stock!==""){
             $where[]=['a.is_stock',"=",$is_stock];
         }
-        $good_type = isset($this->post['good_type']) && $this->post['good_type'] !=="" ? intval($this->post['good_type'])
-            :"";
+        $good_type = isset($this->post['good_type']) && $this->post['good_type'] !=="" ? intval($this->post['good_type']) :"";
         if($good_type!==""){
             $where[]=['a.good_type',"=",$good_type];
         }
-        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] !=="" ? trim($this->post['supplierNo'])
-            :"";
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']) :"";
         if($supplierNo!==""){
             $where[]=['a.supplierNo',"=",$supplierNo];
         }
@@ -78,37 +76,35 @@ class Good extends Base
         if($createrid!==""){
             $where[]=['a.createrid',"=",$createrid];
         }
-        $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status'])
-            :"";
+        $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
         if($status!==""){
             $where[]=['a.status',"=",$status];
         }
-        $platform_code = isset($this->post['platform_code']) && $this->post['platform_code'] !=="" ? trim($this->post['platform_code'])
-            :"";
+        $platform_code = isset($this->post['platform_code']) && $this->post['platform_code'] !=="" ? trim($this->post['platform_code']) :"";
         if($platform_code!==""){
             //$platform = Db::name("good_platform")->where(["platform_code"=>$platform_code,"is_del"=>0])->column
             //("spuCode");
             $where[]=["b.platform_code","=",$platform_code];
         }
-        $plat_code = isset($this->post['plat_code']) && $this->post['plat_code'] !=="" ? trim($this->post['plat_code'])
-            :"";
+        $plat_code = isset($this->post['plat_code']) && $this->post['plat_code'] !=="" ? trim($this->post['plat_code']) :"";
         if($plat_code!==""){
             $where[]=["b.plat_code","like","%$plat_code%"];
         }
-        $exam_status = isset($this->post['exam_status']) && $this->post['exam_status'] !=="" ? intval($this->post['exam_status'])
-            :"";
+        $exam_status = isset($this->post['exam_status']) && $this->post['exam_status'] !=="" ? intval($this->post['exam_status']) :"";
         if($exam_status!==""){
             $where[]=['b.exam_status',"=",$exam_status];
         }
-        $brand_id = isset($this->post['brand_id']) && $this->post['brand_id'] !=="" ? intval($this->post['brand_id'])
-            :"";
+        $brand_id = isset($this->post['brand_id']) && $this->post['brand_id'] !=="" ? intval($this->post['brand_id']) :"";
         if($brand_id!==""){
             $where[]=['a.brand_id',"=",$brand_id];
         }
-        $role=$this->checkRole();
-        if(!empty($role['write']) ){
-            $where[]=["a.createrid","in",$role['write']];
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write']) ){
+//            $where[]=["a.createrid","in",$role['write']];
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.createrid', 'in', $role[DataGroupModel::$type_全部]];
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.createrid", 'in', get_company_item_user_by_name($company_name)];
 
@@ -176,6 +172,11 @@ class Good extends Base
             $value['specinfo']=$speclist;
             $value['noble_name']=isset($value['noble_metal'])&&$value['noble_metal']!=0?$this->noble[$value['noble_metal']] :"";
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['purchase_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
@@ -224,8 +225,11 @@ class Good extends Base
         if ($param['plat_code'] !== '') $where[] = ["b.plat_code", "like", '%' . $param['plat_code'] . '%'];
         if ($param['exam_status'] !== '') $where[] = ['b.exam_status', "=", $param['exam_status']];
         if ($param['brand_id'] !== "") $where[] = ['a.brand_id', "=", $param['brand_id']];
-        $role = $this->checkRole();
-        if (!empty($role['write'])) $where[] = ["a.createrid", "in", $role['write']];
+//        $role = $this->checkRole();
+//        if (!empty($role['write'])) $where[] = ["a.createrid", "in", $role['write']];
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.createrid', 'in', $role[DataGroupModel::$type_全部]];
+
         if ($param['company_name'] !== '') $where[] = ["a.createrid", 'in', get_company_item_user_by_name($param['company_name'])];
 
         $count = Db::name('platform_youzan')
@@ -282,6 +286,11 @@ class Good extends Base
             $value['specinfo'] = $speclist;
             $value['noble_name'] = isset($value['noble_metal']) && $value['noble_metal'] != 0 ? $this->noble[$value['noble_metal']] : "";
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['createrid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[] = $value;
         }
         return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);

+ 14 - 6
app/admin/controller/Orderback.php

@@ -4,6 +4,7 @@
 namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use think\App;
@@ -64,19 +65,21 @@ class Orderback extends Base
         if($end!==""){
             $where[]=['addtime',"<=", $end];
         }
-        $role=$this->checkRole();
         $condition='';
-        if(!empty($role['write']) && $this->uid!=""){
-            // $where[]=["a.apply_id","in",$role['write']];
-            $condition .="cgderid = {$this->uid} or apply_id in (".implode(',',$role['write']).")";
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write']) && $this->uid!=""){
+//            // $where[]=["a.apply_id","in",$role['write']];
+//            $condition .="cgderid = {$this->uid} or apply_id in (".implode(',',$role['write']).")";
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $condition .= "cgderid = {$this->uid} or apply_id in (" . implode(',', $role[DataGroupModel::$type_全部]) . ")";
 //        if(!empty($role['platform']) ){
 //            $where[]=["platform_id","in",$role['platform']];
 //        }
         $count=Db::name("order_back")->where($where)->where($condition)->count();
         $total = ceil($count/$size);
         $page = $page >= $total ? $total : $page;
-        $list = Db::name("order_back")->where($where)->where($condition)->page($page,$size)->order("addtime desc")->select();
+        $list = Db::name("order_back")->where($where)->where($condition)->page($page,$size)->order("addtime desc")->select()->toArray();
         $data=[];
         foreach ($list as $value){
             $value['wsm_name']="";
@@ -96,6 +99,11 @@ class Orderback extends Base
             }
             $inorder= Db::name("order_backinfo")->where(['thNo'=>$value['thNo'],"is_del"=>0])->select();
             $value['child']=empty($inorder)? [] : $inorder;
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",["list"=>$data ,"count"=>$count]);

+ 13 - 4
app/admin/controller/Project.php

@@ -3,6 +3,7 @@
 
 namespace app\admin\controller;
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use think\App;
 use think\facade\Db;
@@ -359,10 +360,13 @@ class Project extends Base
         $company_name = isset($this->post['company_name'])&&$this->post['company_name']!=="" ? trim($this->post['company_name']):"";
         if($company_name!=='') $where[] = ["p.createrid", 'in', get_company_item_user_by_name($company_name)];
 
-        $role=$this->checkRole();
-        if(!empty($role['write'])){
-            $where[]=["p.createrid","in",$role['write']];
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write'])){
+//            $where[]=["p.createrid","in",$role['write']];
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['p.createrid', 'in', $role[DataGroupModel::$type_全部]];
+
 //        if(!empty($role['platform'])){
 //            $where[]=["p.platform_id","in",$role['platform']];
 //        }
@@ -387,6 +391,11 @@ class Project extends Base
             $company = Db::name("business")->where(["companyNo"=>$value['companyNo']])->find();
             $value['company'] = isset($company['company'])?$company['company']:"";
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['createrid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);

+ 28 - 7
app/admin/controller/Purch.php

@@ -5,6 +5,7 @@ namespace app\admin\controller;
 
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\ProcessOrder;
 use think\App;
 use think\Exception;
@@ -25,7 +26,7 @@ class Purch extends Base
     public function  list(){
         $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
         $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']):"10";
-        $where = [['po.is_del', "=", 0]];//不显示类型为5即订单导入生成的采购单
+        $where = [['po.is_del', "=", 0]];
         $bkcode = isset($this->post['bk_code']) && $this->post['bk_code']!="" ? trim($this->post['bk_code']):"";
         if($bkcode!=""){
             $where[]=['po.bkcode',"like", "%{$bkcode}%"];
@@ -108,16 +109,20 @@ class Purch extends Base
             //$where['lasttime'] = Db::raw(" <= '{$last_end}'");
             $where[]=['on.orderCode',"like", '%'.$orderCode.'%'];
         }
-        $role=$this->checkRole();
-        if(!empty($role['write'])){
-            $where[]=["po.cgder_id","in",$role['write']];
-        }
+//        $role=$this->checkRole();
+//        if(!empty($role['write'])){
+//            $where[]=["po.cgder_id","in",$role['write']];
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ["po.cgder_id", "in", $role[DataGroupModel::$type_全部]];
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["po.cgder_id", 'in', get_company_item_user_by_name($company_name)];
 
 //        if(!empty($role['platform']) ){
 //            $where[]=["po.platform_id","in",$role['platform']];
 //        }
+
         $count = Db::name("purchease_order")
             ->alias('po')
             ->leftJoin('order_num on', 'on.cgdNo=po.cgdNo')
@@ -191,6 +196,11 @@ class Purch extends Base
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
 
             $value['has_account'] = (int)isset($account[$value['supplierNo']]);
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['chargerid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",["list"=>$data ,"count"=>$count]);
@@ -835,8 +845,14 @@ class Purch extends Base
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($company_name)];
 
-        $count = Db::name('purchease_diff')->alias('a')->join("good b","b.spuCode=a.good_code","left")
-            ->where($where)->count();
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.apply_id', 'in', $role[DataGroupModel::$type_全部]];
+
+        $count = Db::name('purchease_diff')
+            ->alias('a')
+            ->join("good b","b.spuCode=a.good_code","left")
+            ->where($where)
+            ->count();
         $total = ceil($count/$size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('purchease_diff')
@@ -852,6 +868,11 @@ class Purch extends Base
         foreach ($list as $value){
             $value['can']= isset($value['cat_id']) && $value['cat_id'] !=0 ? made($value['cat_id']):[];
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);

+ 21 - 8
app/admin/controller/Purchin.php

@@ -2,6 +2,7 @@
 namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use app\BaseController;
@@ -80,19 +81,26 @@ class Purchin extends Base
                 "is_del"=>0,"supplierNo"=>$supplierNo])->column("wsm_code");
             $where[]=['a.wsm_code',"in",$wsmcode];
         }
-        $role=$this->checkRole();
+//        $role=$this->checkRole();
         $condition="";
-        if(!empty($role['write'])&& $this->uid!=''){
-//            $condition.=["apply_id","in",$role['write']];
-            $condition.="a.apply_id in (".implode(",",$role['write']).") or c.contactor = {$this->uid}";
-        }
+//        if(!empty($role['write'])&& $this->uid!=''){
+////            $condition.=["apply_id","in",$role['write']];
+//            $condition.="a.apply_id in (".implode(",",$role['write']).") or c.contactor = {$this->uid}";
+//        }
+
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $condition.="a.apply_id in (".implode(",",$role[DataGroupModel::$type_全部]).") or c.contactor = {$this->uid}";
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($company_name)];
 
-
-        $count = Db::name('purchease_in')->alias('a')->join("purchease_order b","b.cgdNo=a.cgdNo","left")
+        $count = Db::name('purchease_in')
+            ->alias('a')
+            ->join("purchease_order b","b.cgdNo=a.cgdNo","left")
             ->leftJoin("warehouse_info c","a.wsm_code=c.wsm_code")
-            ->where($where)->where($condition)->count();
+            ->where($where)
+            ->where($condition)
+            ->count();
         $total = ceil($count/$size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('purchease_in')
@@ -156,6 +164,11 @@ class Purchin extends Base
             $value['wsm_supplierNo'] = $wsmcode['code'];
 
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);

+ 19 - 6
app/admin/controller/Resign.php

@@ -6,6 +6,7 @@
 namespace app\admin\controller;
 
 use app\admin\model\ActionLog;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use think\facade\Db;
@@ -70,12 +71,14 @@ class Resign extends Base
            // $where['p.addtime'] = Db::Raw("<= '{$end}'");
             $where[]=['p.addtime',"<=",$end];
         }
-        $role=$this->checkRole();
+//        $role=$this->checkRole();
         $condition='';
-        if(!empty($role['write']) && $this->uid!=""){
-            // $where[]=["a.apply_id","in",$role['write']];
-            $condition .="p.cgderid = {$this->uid} or p.apply_id in (".implode(',',$role['write']).")";
-        }
+//        if(!empty($role['write']) && $this->uid!=""){
+//            // $where[]=["a.apply_id","in",$role['write']];
+//            $condition .="p.cgderid = {$this->uid} or p.apply_id in (".implode(',',$role['write']).")";
+//        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $condition .="p.cgderid = {$this->uid} or p.apply_id in (".implode(',',$role[DataGroupModel::$type_全部]).")";
 
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["p.apply_id", 'in', get_company_item_user_by_name($company_name)];
@@ -83,7 +86,12 @@ class Resign extends Base
 //        if(!empty($role['platform']) ){
 //            $where[]=["p.platform_id","in",$role['platform']];
 //        }
-        $count=Db::name("purchease")->alias('p')->leftJoin("depart_user u", "u.uid=p.apply_id AND u.is_del=0")->where($where)->where($condition)->count();
+        $count=Db::name("purchease")
+            ->alias('p')
+            ->leftJoin("depart_user u", "u.uid=p.apply_id AND u.is_del=0")
+            ->where($where)
+            ->where($condition)
+            ->count();
         $total = ceil($count/$size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name("purchease")
@@ -113,6 +121,11 @@ class Resign extends Base
                 $value['file_name'] =substr($file,0,strripos($file,"_"));
             }
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[]=$value;
         }
         return app_show(0,"获取成功",["list"=>$data,"count"=>$count]);

+ 52 - 15
app/admin/controller/Sale.php

@@ -4,6 +4,7 @@ namespace app\admin\controller;
 
 use app\abutment\model\SupplierRelationUser;
 use app\abutment\model\SupplierUser;
+use app\admin\model\DataGroup as DataGroupModel;
 use app\admin\model\GoodLog;
 use app\admin\model\ProcessOrder;
 use Exception;
@@ -2066,16 +2067,24 @@ class Sale extends Base
             $end .= " 23:59:59";
             $where[] = ["s.addtime", '<=', $end];
         }
-        $role = $this->checkRole();
-        if (!empty($role['write'])) {
-            $where[] = ["s.apply_id", "in", $role['write']];
-        }
+//        $role = $this->checkRole();
+//        if (!empty($role['write'])) {
+//            $where[] = ["s.apply_id", "in", $role['write']];
+//        }
+
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['s.apply_id', 'in', $role[DataGroupModel::$type_全部]];
+
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["s.apply_id", 'in', get_company_item_user_by_name($company_name)];
 //        if(!empty($role['platform']) ){
 //            $where[]=["s.platform_id","in",$role['platform']];
 //        }
-        $count = Db::name('sale')->alias('s')->where($where)->count();
+        $count = Db::name('sale')
+            ->alias('s')
+            ->leftJoin("depart_user u", "u.uid=s.apply_id AND u.is_del=0")->where($where)
+            ->where($where)
+            ->count();
         $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('sale')
@@ -2134,6 +2143,11 @@ class Sale extends Base
             $value['send_num'] -= $value['th_num'];
             $value['total_price'] = round($value['total_price'] - $value['th_fee'], 2);
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[] = $value;
         }
         return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);
@@ -3015,20 +3029,29 @@ class Sale extends Base
 //        if(!empty($role['write'])){
 //            $where[]=["apply_id","in",$role['write']];
 //        }
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['c.apply_id', 'in', $role[DataGroupModel::$type_全部]];
+
 //        if(!empty($role['platform']) ){
 //            $where[]=["c.platform_id","in",$role['platform']];
 //        }
-        $count = Db::name('sale_diff')->alias('a')
+        $count = Db::name('sale_diff')
+            ->alias('a')
             ->join("sale c", "c.orderCode=a.orderCode", "left")
             ->join("customer_info v", "v.companyNo=c.customer_code", "left")
             ->where($where)->count();
         $total = ceil($count / $size);
         $page = $page >= $total ? intval($total) : $page;
-        $list = Db::name('sale_diff')->alias('a')
+        $list = Db::name('sale_diff')
+            ->alias('a')
+            ->field("a.*,c.customer_code,v.companyName,c.skuCode,c.order_type,c.supplierNo,c.apply_id")
             ->join("sale c", "c.orderCode=a.orderCode", "left")
             ->join("customer_info v", "v.companyNo=c.customer_code", "left")
-            ->where($where)->page($page, $size)->field("a.*,c.customer_code,v.companyName,c.skuCode,c.order_type,c.supplierNo")
-            ->order("a.addtime desc")->select();
+            ->where($where)
+            ->page($page, $size)
+            ->order("a.addtime desc")
+            ->select()
+            ->toArray();
 
         $data = [];
         foreach ($list as $value) {
@@ -3042,6 +3065,11 @@ class Sale extends Base
             $wsm = Db::name("business")->where(['companyNo' => $value['supplierNo']])->find();
             $value['supplierNo'] = isset($wsm['companyNo']) ? $wsm['companyNo'] : "";
             $value['supplierName'] = isset($wsm['company']) ? $wsm['company'] : "";
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[] = $value;
         }
         return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);
@@ -3300,13 +3328,17 @@ class Sale extends Base
         if ($cgdNo != "") {
             $where[] = ["os.cgdNo", 'like', '%' . $cgdNo . '%'];
         }
-        $role = $this->checkRole();
+//        $role = $this->checkRole();
         $condition = '';
-        if (!empty($role['write']) && $this->uid != "") {
-            // $where[]=["a.apply_id","in",$role['write']];
-            $condition .= " (b.is_stock=1 and n.contactor = {$this->uid}) or (b.is_stock=0 and wpo.cgder_id = {$this->uid}) or a.apply_id in (" . implode(',',
-                    $role['write']) . ")";
-        }
+//        if (!empty($role['write']) && $this->uid != "") {
+//            // $where[]=["a.apply_id","in",$role['write']];
+//            $condition .= " (b.is_stock=1 and n.contactor = {$this->uid}) or (b.is_stock=0 and wpo.cgder_id = {$this->uid}) or a.apply_id in (" . implode(',',
+//                    $role['write']) . ")";
+//        }
+
+        $role = $this->checkDataShare();
+        if (!empty($role[DataGroupModel::$type_全部])) $condition .= " (b.is_stock=1 and n.contactor = {$this->uid}) or (b.is_stock=0 and wpo.cgder_id = {$this->uid}) or a.apply_id in (" . implode(',', $role[DataGroupModel::$type_全部]) . ")";
+
 //        if(!empty($role['platform']) ){
 //            $where[]=["b.platform_id","in",$role['platform']];
 //        }
@@ -3378,6 +3410,11 @@ class Sale extends Base
             $value['can'] = isset($goon['cat_id']) && $goon['cat_id'] != 0 ? made($goon['cat_id']) : [];
             $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
             $value['sendtime'] = $value['status'] < 2 ? '' : $value['sendtime'];
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
             $data[] = $value;
         }
         return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);