This commit is contained in:
xman 2025-06-28 20:12:22 +08:00
parent b9c7d3ecc0
commit a95d38be92
3 changed files with 84 additions and 1 deletions

View File

@ -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();
}
}

View File

@ -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 = [];

View File

@ -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: [
{