|
...
|
...
|
@@ -22,7 +22,7 @@ class AsideTicketController extends BaseController |
|
|
|
*
|
|
|
|
* @return \Illuminate\Http\Response
|
|
|
|
*/
|
|
|
|
public function indexs(AsideTicketListRequest $request)
|
|
|
|
public function index(AsideTicketListRequest $request)
|
|
|
|
{
|
|
|
|
$validated = $request->validated();
|
|
|
|
$query = Tickets::with([
|
|
...
|
...
|
@@ -142,119 +142,6 @@ class AsideTicketController extends BaseController |
|
|
|
$this->response('success', Code::SUCCESS, $lists);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function index(AsideTicketListRequest $request)
|
|
|
|
{
|
|
|
|
$validated = $request->validated();
|
|
|
|
|
|
|
|
$query = Tickets::with([
|
|
|
|
'logs.engineer',
|
|
|
|
'project.pm',
|
|
|
|
'project.projectV6' // 根据实际字段替换
|
|
|
|
])
|
|
|
|
->when(!empty($validated['engineer_id']), function ($query) use ($validated) {
|
|
|
|
$engineerId = $validated['engineer_id'];
|
|
|
|
return $query->where(function ($q) use ($engineerId) {
|
|
|
|
$q->where('submit_user_id', $engineerId)
|
|
|
|
->orWhereHas('logs', function ($q1) use ($engineerId) {
|
|
|
|
$q1->where('engineer_id', $engineerId);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
})
|
|
|
|
->when($request->input('project_id') !== null, function ($query) use ($request) {
|
|
|
|
$projectId = $request->input('project_id');
|
|
|
|
return $query->whereHas('project', function ($q) use ($projectId) {
|
|
|
|
$q->where('uuid', $projectId);
|
|
|
|
});
|
|
|
|
})
|
|
|
|
->when($request->input('status') !== null, function ($query) use ($request) {
|
|
|
|
$status = $request->input('status');
|
|
|
|
if ($status == '-1') {
|
|
|
|
$newTime = date("Y-m-d H:i:s", strtotime("-120 hours"));
|
|
|
|
return $query->where('status', 0)->where('plan_end_at','<',$newTime);
|
|
|
|
} else {
|
|
|
|
return $query->where('status', $status);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
->when($request->input('timeout') !== null, function ($query) use ($request) {
|
|
|
|
$timeout = $request->input('timeout');
|
|
|
|
switch ($timeout) {
|
|
|
|
case 1: $newTime = date("Y-m-d H:i:s", strtotime("-24 hours")); break;
|
|
|
|
case 2: $newTime = date("Y-m-d H:i:s", strtotime("-48 hours")); break;
|
|
|
|
case 3: $newTime = date("Y-m-d H:i:s", strtotime("-72 hours")); break;
|
|
|
|
default: $newTime = date("Y-m-d H:i:s"); break;
|
|
|
|
}
|
|
|
|
return $query->where('status', 0)->where('plan_end_at','<',$newTime);
|
|
|
|
})
|
|
|
|
->when($request->input('star') !== null, function ($query) use ($request) {
|
|
|
|
return $query->where('star', $request->input('star'));
|
|
|
|
})
|
|
|
|
->when($request->input('search'), function ($query) use ($request) {
|
|
|
|
$search = $request->input('search');
|
|
|
|
return $query->where(function ($q) use ($search) {
|
|
|
|
$q->where('title', 'like', '%' . $search . '%')
|
|
|
|
->orWhereHas('project', function ($q1) use ($search) {
|
|
|
|
$q1->where('title', 'like', '%' . $search . '%')
|
|
|
|
->orWhere('company_name', 'like', '%' . $search . '%');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
})
|
|
|
|
->when($request->input('project_status') !== null, function ($query) use ($request) {
|
|
|
|
return $query->whereHas('project', function ($q) use ($request) {
|
|
|
|
$q->where('status', $request->input('project_status'));
|
|
|
|
});
|
|
|
|
})
|
|
|
|
->when($request->input('project_cate') !== null, function ($query) use ($request) {
|
|
|
|
return $query->whereHas('project', function ($q) use ($request) {
|
|
|
|
$q->where('project_cate', $request->input('project_cate'));
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
// 用户部门搜索
|
|
|
|
if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){
|
|
|
|
$manageHrModel = new ManageHr();
|
|
|
|
$manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id');
|
|
|
|
$query->whereHas('logs', function ($q) use ($manageIdArr) {
|
|
|
|
$q->whereIn('engineer_id', $manageIdArr);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){
|
|
|
|
$query->whereBetween('created_at',[$this->param['start_at'],$this->param['end_at']]);
|
|
|
|
}
|
|
|
|
// 排序
|
|
|
|
$sortField = $request->input('sort_field', 'plan_end_at');
|
|
|
|
$sortOrder = strtolower($request->input('sort_order', 'asc'));
|
|
|
|
$query->orderBy('status', 'asc');
|
|
|
|
$query->orderBy($sortField, $sortOrder);
|
|
|
|
if ($sortField != 'plan_end_at') $query->orderBy('plan_end_at', 'asc');
|
|
|
|
// 先统计总条数
|
|
|
|
$total = (clone $query)->count();
|
|
|
|
// 再查询数据
|
|
|
|
$listsData = $query->offset(($this->page - 1) * $this->row)
|
|
|
|
->limit($this->row)
|
|
|
|
->get()
|
|
|
|
->toArray();
|
|
|
|
// 计算超时小时数
|
|
|
|
foreach ($listsData as $key => $item){
|
|
|
|
if($item['status'] == 0){
|
|
|
|
$end = date('Y-m-d H:i:s');
|
|
|
|
$start = $item['plan_end_at'];
|
|
|
|
if($start < $end){
|
|
|
|
$item['plan_ent_time'] = diffInHours($start,$end);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$listsData[$key] = $item;
|
|
|
|
}
|
|
|
|
// 还原分页结构
|
|
|
|
$lists = [
|
|
|
|
'total' => $total,
|
|
|
|
'per_page' => $this->row,
|
|
|
|
'current_page' => $this->page,
|
|
|
|
'last_page' => ceil($total / $this->row),
|
|
|
|
'list' => $listsData,
|
|
|
|
];
|
|
|
|
$this->response('success', Code::SUCCESS, $lists);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param $search
|
|
|
|
* @return void
|
...
|
...
|
|