Merge remote-tracking branch 'origin/master' into akun
正在显示
1 个修改的文件
包含
21 行增加
和
112 行删除
| @@ -109,15 +109,31 @@ class AsideTicketController extends BaseController | @@ -109,15 +109,31 @@ class AsideTicketController extends BaseController | ||
| 109 | //TODO::用户部门搜索 | 109 | //TODO::用户部门搜索 |
| 110 | if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){ | 110 | if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){ |
| 111 | $manageHrModel = new ManageHr(); | 111 | $manageHrModel = new ManageHr(); |
| 112 | - $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id'); | ||
| 113 | - $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 114 | - $q->whereIn('engineer_id', $manageIdArr); | ||
| 115 | - }); | 112 | + //售后优化+技术搜索 |
| 113 | + if($this->param['dept_id'] == 2 && !empty($this->param['entry_position'])) {//售后部 | ||
| 114 | + if ($this->param['entry_position'] == 1) { | ||
| 115 | + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [44, 46, 49]], 'status' => 1], 'manage_id'); | ||
| 116 | + } else { | ||
| 117 | + //售后技术 | ||
| 118 | + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [42, 43, 45, 48, 51]], 'status' => 1], 'manage_id'); | ||
| 119 | + } | ||
| 120 | + $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 121 | + $q->whereIn('engineer_id', $manageIdArr); | ||
| 122 | + }); | ||
| 123 | + }else{ | ||
| 124 | + $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id'); | ||
| 125 | + $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 126 | + $q->whereIn('engineer_id', $manageIdArr); | ||
| 127 | + }); | ||
| 128 | + } | ||
| 116 | } | 129 | } |
| 117 | if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){ | 130 | if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){ |
| 118 | return $query->whereBetween('created_at',[$this->param['start_at'],$this->param['end_at']]); | 131 | return $query->whereBetween('created_at',[$this->param['start_at'],$this->param['end_at']]); |
| 119 | } | 132 | } |
| 120 | - | 133 | + //搜索提交人姓名 |
| 134 | + if(!empty($this->param['submit_username'])){ | ||
| 135 | + return $query->where('submit_username','%'.$this->param['submit_username'].'%'); | ||
| 136 | + } | ||
| 121 | // 添加排序功能 | 137 | // 添加排序功能 |
| 122 | $query->orderBy('status', 'asc'); | 138 | $query->orderBy('status', 'asc'); |
| 123 | // $query->orderBy('id', 'desc'); | 139 | // $query->orderBy('id', 'desc'); |
| @@ -142,113 +158,6 @@ class AsideTicketController extends BaseController | @@ -142,113 +158,6 @@ class AsideTicketController extends BaseController | ||
| 142 | $this->response('success', Code::SUCCESS, $lists); | 158 | $this->response('success', Code::SUCCESS, $lists); |
| 143 | } | 159 | } |
| 144 | 160 | ||
| 145 | - /** | ||
| 146 | - * @remark :列表数据 | ||
| 147 | - * @name :lists | ||
| 148 | - * @author :lyh | ||
| 149 | - * @method :post | ||
| 150 | - * @time :2025/9/1 16:45 | ||
| 151 | - */ | ||
| 152 | - public function lists(AsideTicketListRequest $request) | ||
| 153 | - { | ||
| 154 | - $validated = $request->validated(); | ||
| 155 | - $ticketsModel = new Tickets(); | ||
| 156 | - $query = $ticketsModel->leftJoin('gl_ticket_projects', 'gl_ticket_projects.id', '=', 'gl_tickets.project_id') | ||
| 157 | - ->leftJoin('gl_ticket_logs', 'gl_ticket_logs.ticket_id', '=', 'gl_tickets.id') | ||
| 158 | - ->select([ | ||
| 159 | - 'gl_tickets.*', | ||
| 160 | - 'gl_ticket_projects.title as project_title', | ||
| 161 | - 'gl_ticket_projects.company_name as project_company', | ||
| 162 | - 'gl_ticket_projects.status as project_status', | ||
| 163 | - 'gl_ticket_projects.project_cate as project_cate', | ||
| 164 | - ]) | ||
| 165 | - ->distinct(); // 避免多条 logs 时数据重复 | ||
| 166 | - | ||
| 167 | - // 工程师过滤 | ||
| 168 | - if (!empty($validated['engineer_id'])) { | ||
| 169 | - $engineerId = $validated['engineer_id']; | ||
| 170 | - $query->where(function ($q) use ($engineerId) { | ||
| 171 | - $q->where('gl_tickets.submit_user_id', $engineerId) | ||
| 172 | - ->orWhere('gl_ticket_logs.engineer_id', $engineerId); | ||
| 173 | - }); | ||
| 174 | - } | ||
| 175 | - // project_id 过滤 | ||
| 176 | - if ($request->filled('project_id')) { | ||
| 177 | - $query->where('gl_ticket_projects.uuid', $request->input('project_id')); | ||
| 178 | - } | ||
| 179 | - // status 过滤 | ||
| 180 | - if ($request->filled('status')) { | ||
| 181 | - $status = $request->input('status'); | ||
| 182 | - if ($status == -1) { | ||
| 183 | - $newTime = now()->subHours(120); | ||
| 184 | - $query->where('gl_tickets.status', 0) | ||
| 185 | - ->where('gl_tickets.plan_end_at', '<', $newTime); | ||
| 186 | - } else { | ||
| 187 | - $query->where('gl_tickets.status', $status); | ||
| 188 | - } | ||
| 189 | - } | ||
| 190 | - // timeout 过滤 | ||
| 191 | - if ($request->filled('timeout')) { | ||
| 192 | - $timeout = (int)$request->input('timeout'); | ||
| 193 | - switch ($timeout) { | ||
| 194 | - case 1: $newTime = now()->subHours(24); break; | ||
| 195 | - case 2: $newTime = now()->subHours(48); break; | ||
| 196 | - case 3: $newTime = now()->subHours(72); break; | ||
| 197 | - default: $newTime = now(); break; | ||
| 198 | - } | ||
| 199 | - $query->where('gl_tickets.status', 0) | ||
| 200 | - ->where('gl_tickets.plan_end_at', '<', $newTime); | ||
| 201 | - } | ||
| 202 | - // star 过滤 | ||
| 203 | - if ($request->filled('star')) { | ||
| 204 | - $query->where('gl_tickets.star', $request->input('star')); | ||
| 205 | - } | ||
| 206 | - // search 模糊搜索 | ||
| 207 | - if ($request->filled('search')) { | ||
| 208 | - $search = $request->input('search'); | ||
| 209 | - $query->where(function ($q) use ($search) { | ||
| 210 | - $q->where('gl_tickets.title', 'like', "%$search%") | ||
| 211 | - ->orWhere('gl_ticket_projects.title', 'like', "%$search%") | ||
| 212 | - ->orWhere('gl_ticket_projects.company_name', 'like', "%$search%"); | ||
| 213 | - }); | ||
| 214 | - } | ||
| 215 | - // project_status | ||
| 216 | - if ($request->filled('project_status')) { | ||
| 217 | - $query->where('gl_ticket_projects.status', $request->input('project_status')); | ||
| 218 | - } | ||
| 219 | - // project_cate | ||
| 220 | - if ($request->filled('project_cate')) { | ||
| 221 | - $query->where('gl_ticket_projects.project_cate', $request->input('project_cate')); | ||
| 222 | - } | ||
| 223 | - // 部门搜索 | ||
| 224 | - if (!empty($this->param['dept_id'])) { | ||
| 225 | - $manageHrModel = new ManageHr(); | ||
| 226 | - $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id'); | ||
| 227 | - $query->whereIn('gl_ticket_logs.engineer_id', $manageIdArr); | ||
| 228 | - } | ||
| 229 | - // 时间区间 | ||
| 230 | - if (!empty($this->param['start_at']) && !empty($this->param['end_at'])) { | ||
| 231 | - $query->whereBetween('gl_tickets.created_at', [$this->param['start_at'], $this->param['end_at']]); | ||
| 232 | - } | ||
| 233 | - // 排序 | ||
| 234 | - $query->orderBy('gl_tickets.status', 'asc'); | ||
| 235 | - $sortField = $request->input('sort_field', 'gl_tickets.plan_end_at'); | ||
| 236 | - $sortOrder = strtolower($request->input('sort_order', 'asc')); | ||
| 237 | - $query->orderBy($sortField, $sortOrder); | ||
| 238 | - if ($sortField != 'gl_tickets.plan_end_at') { | ||
| 239 | - $query->orderBy('gl_tickets.plan_end_at', 'asc'); | ||
| 240 | - } | ||
| 241 | - // 分页 (建议用 simplePaginate 提速) | ||
| 242 | - $lists = $query->paginate($this->row, ['*'], 'page', $this->page); | ||
| 243 | - // 计算超时小时数(也可以 SQL 里用 TIMESTAMPDIFF 算好) | ||
| 244 | - foreach ($lists as $item) { | ||
| 245 | - if ($item->status == 0 && $item->plan_end_at < now()) { | ||
| 246 | - $item->plan_ent_time = diffInHours($item->plan_end_at, now()); | ||
| 247 | - } | ||
| 248 | - } | ||
| 249 | - $this->response('success', Code::SUCCESS, $lists); | ||
| 250 | - } | ||
| 251 | - | ||
| 252 | /** | 161 | /** |
| 253 | * @param $search | 162 | * @param $search |
| 254 | * @return void | 163 | * @return void |
-
请 注册 或 登录 后发表评论