diff --git a/application/admin/controller/Ajax.php b/application/admin/controller/Ajax.php index 921ed07..918f744 100755 --- a/application/admin/controller/Ajax.php +++ b/application/admin/controller/Ajax.php @@ -371,4 +371,9 @@ class Ajax extends Backend return json_encode($rs); } + + + public function getItems(){ + return $items = \app\admin\model\Item::where('level',1)->field('id,title as name')->select(); + } } diff --git a/application/admin/controller/statistics/Worker.php b/application/admin/controller/statistics/Worker.php index 9af1dc2..40e30d9 100644 --- a/application/admin/controller/statistics/Worker.php +++ b/application/admin/controller/statistics/Worker.php @@ -7,6 +7,7 @@ use app\admin\model\Aftersale; use app\admin\model\Order; use app\admin\model\OrderDispatch; use app\admin\model\OrderReview; +use app\admin\model\WorkerItem; use app\common\controller\Backend; use PDOStatement; use think\Collection; @@ -134,6 +135,12 @@ class Worker extends Backend } } + if(!empty($filter['item_id'])) + { + $item_id = $filter['item_id']; + $filter['worker_ids'] = WorkerItem::where('item_id',$item_id)->column('worker_id'); + } + //派单表 $dispatchSubsql = $this->dispatchSubsql($filter); //订单表 @@ -141,6 +148,7 @@ class Worker extends Backend //评分表 $viewSubsql = $this->viewSubsql($filter); + [$where, $sort, $order, $offset, $limit] = $this->buildparams(); $list = $this->model->alias('fa_worker') ->with(['area2','items']) @@ -167,6 +175,50 @@ class Worker extends Backend ->order($sort, $order) ->paginate($limit); + $data = []; + $worker_ids = []; + foreach ($list->items() as $item){ + $dt = $item->toArray(); + $tel = $dt['tel']; + if (preg_match('/^\d{7,}$/', $tel)) { + $dt['tel'] = mb_substr($tel, 0, 3, 'UTF-8') . '****' . mb_substr($tel, -4, null, 'UTF-8'); + } else { + // 不处理非手机号,比如中文名称 + $dt['tel'] = $tel; + } + $data[] = $dt; + $worker_ids [] = $item['id']; + } + + $worker_item = WorkerItem::whereIn('worker_id',$worker_ids)->where('item_path_id',1) + ->field('worker_id,item_id')->select(); + + $allItemList = \app\admin\model\Item::where('level',1)->select(); + + $allItems= []; + foreach ($allItemList as $item){ + $allItems[$item->id] = $item->title; + } + + + $worker_item_map = []; +// dd($worker_item); + foreach ($worker_item as $item){ + $worker_item_map[$item->worker_id] [] = $item->item_id; + } + + foreach ($list as &$datum){ + $worker_item = []; +// dd($worker_item_map); + if (key_exists($datum['id'],$worker_item_map)){ + foreach ($worker_item_map[$datum['id']] as $item){ + $worker_item[] = $allItems[$item]??''; + } + } + $datum['worker_item'] = implode(',',$worker_item); + } + + $this->_toList($list); $result = ['total' => $list->total(), 'rows' => $list->items()]; return json($result); @@ -187,6 +239,11 @@ class Worker extends Backend if(!empty($filter['end_time'])){ $viewSubsql->where('create_time','<=',$filter['end_time']); } + + if(!empty($filter['worker_ids'])){ + $viewSubsql->where('worker_id','in',$filter['worker_ids']); + } + return $viewSubsql->group('worker_id')->buildSql(); } @@ -218,6 +275,11 @@ class Worker extends Backend $builder->where('create_time','<=',$filter['end_time']); } + if(!empty($filter['worker_ids'])){ + $builder->where('worker_id','in',$filter['worker_ids']); + } + + $builder->group('worker_id'); return $builder->buildSql(); } @@ -260,6 +322,9 @@ class Worker extends Backend if(!empty($filter['end_time'])){ $builder->where('create_time','<=',$filter['end_time']); } + if(!empty($filter['worker_ids'])){ + $builder->where('worker_id','in',$filter['worker_ids']); + } //->where('dispatch_admin_id','>',0); return $builder->group('worker_id')->buildSql(); @@ -363,8 +428,16 @@ class Worker extends Backend $filter['fa_worker.area_id'] = $this->getSelectAreaCode($area_id); } + if(!empty($filter['item_id'])) + { + $item_id = $filter['item_id']; + $filter['fa_worker.id'] = WorkerItem::where('item_id',$item_id)->column('worker_id'); + unset($filter['item_id']); + } + $op = (array)json_decode($op, true); $op['fa_worker.area_id'] = 'LIKE%'; + $op['fa_worker.id'] = 'IN'; $filter = $filter ? $filter : []; $where = []; diff --git a/public/assets/js/backend/statistics/worker.js b/public/assets/js/backend/statistics/worker.js index c464c5d..e6b175a 100644 --- a/public/assets/js/backend/statistics/worker.js +++ b/public/assets/js/backend/statistics/worker.js @@ -29,10 +29,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t columns: [ [ //{field: 'id', title: __('Id')}, - {field: 'id', title: __('ID'),visible:true}, + {field: 'id', title: __('ID'),operate:false,visible:true}, {field: 'name', title: __('姓名'), class: 'autocontent', formatter: Table.api.formatter.content,operate: "like"}, {field: 'tel', title: __('电话'),operate: "like"}, {field: 'area2.merge_name', title: __('城市'), class: 'autocontent', formatter: Table.api.formatter.content,operate: false}, + {field: 'worker_item', title: __('工种'), class: 'autocontent', formatter: Table.api.formatter.content,operate: false}, + {field: 'star', title: __('评分'),operate: false}, {field: 'performance', title: __('总业绩(¥)'), operate: false}, {field: 'get_count', title: __('接单数'),operate: false,sortable:true}, @@ -81,6 +83,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'echarts', 'echarts-t visible: false }, + {field: 'item_id', title: __('工程'), searchList:$.getJSON("ajax/getItems"),operate: 'IN',visible:false}, + + {field: 'operate', title: __('Operate'), table: table2, events: Table.api.events.operate, formatter: Table.api.formatter.operate, buttons: [ {