['work_sn', 'service_work_id', 'master_worker_id', 'issue_approval', 'complaint_status', 'responsible', 'complaint_details', 'approval_admin_id', ], ]; } public function querySearch():array { $where = []; if(isset($this->params['approval_time']) && !empty($this->params['approval_time'])){ $time = [strtotime($this->params['approval_time'][0]), strtotime($this->params['approval_time'][1])]; $where[] = ['approval_time', 'between', $time]; } if(isset($this->params['finished_time']) && !empty($this->params['finished_time'])){ $time = [strtotime($this->params['finished_time'][0]), strtotime($this->params['finished_time'][1])]; $where[] = ['finished_time', 'between', $time]; } if(isset($this->params['create_time']) && !empty($this->params['create_time'])){ $time = [strtotime($this->params['create_time'][0]), strtotime($this->params['create_time'][1])]; $where[] = ['create_time', 'between', $time]; } if(isset($this->params['update_time']) && !empty($this->params['update_time'])){ $time = [strtotime($this->params['update_time'][0]), strtotime($this->params['update_time'][1])]; $where[] = ['update_time', 'between', $time]; } return $where; } /** * 获取数据权限 * $this->adminInfo['data_rules'] * province city admin_id sale_group_id sale_id property_head_id */ public function queryDataWhere(){ $where = []; $data_rules = $this->adminInfo['data_rules']; $this->queryExists = function (Query $query) { $query->name('service_work')->where('id','>', 0)->field('id'); }; if (isset($data_rules['province']) && !empty($data_rules['province'])) { $this->queryExists = function (Query $query) use ($data_rules) { $p_table = $query->getTable().$query->getName(); $query->name('service_work')->alias('b') ->where('province','in', $data_rules['province']) ->where($p_table.'.service_work_id', '=', Db::raw('b.id')) ->field('id'); }; } if (isset($data_rules['city']) && !empty($data_rules['city'])) { $this->queryExists = function (Query $query) use ($data_rules) { $p_table = $query->getTable().$query->getName(); $query->name('service_work')->alias('b') ->where('city','in', $data_rules['city']) ->where($p_table.'.service_work_id', '=', Db::raw('b.id')) ->field('id'); }; } if (isset($data_rules['sale_group_id']) && !empty($data_rules['sale_group_id'])) { $work_ids = PropertyOrder::where('sale_group_id','in',$data_rules['sale_group_id'])->column('work_id')??[]; $where[] = ['service_work_id','in' ,$work_ids]; } if (isset($data_rules['sale_id']) && !empty($data_rules['sale_id'])) { $work_ids = PropertyOrder::where('sale_id','in',$data_rules['sale_id'])->column('work_id')??[]; $where[] = ['service_work_id','in' ,$work_ids]; } if (isset($data_rules['property_head_id']) && !empty($data_rules['property_head_id'])) { $work_ids = PropertyOrder::where('property_head_id','in',$data_rules['property_head_id'])->column('work_id')??[]; $where[] = ['service_work_id','in' ,$work_ids]; } return $where; } /** * @notes 获取列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author likeadmin * @date 2024/07/10 15:06 */ public function lists(): array { return IssueWork::with([ 'masterWorker'=>function(Query $query){ $query->field('id,real_name,worker_number,mobile,work_status'); },'admin'=>function(Query $query){ $query->field('id,name'); },'user'=>function(Query $query){ $query->field('id,sn,real_name,mobile,account,nickname'); },'serviceWork'=>function(Query $query){ $query->field('id,title,work_sn,address'); },'returnWork'=>function(Query $query){ $query->field('id,work_sn,issue_work_id,finished_images'); } ]) ->where($this->searchWhere) ->where($this->querySearch()) ->where($this->queryDataWhere()) ->whereExists($this->queryExists) ->field(['id', 'work_sn', 'service_work_id', 'master_worker_id','user_id', 'issue_approval', 'complaint_status', 'responsible', 'complaint_details', 'complaint_images', 'finished_time', 'approval_admin_id', 'approval_time', 'create_time', 'update_time','appeal_info']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() ->toArray(); } /** * @notes 获取数量 * @return int * @author likeadmin * @date 2024/07/10 15:06 */ public function count(): int { return IssueWork::where($this->searchWhere)->where($this->querySearch())->where($this->queryDataWhere())->whereExists($this->queryExists)->count(); } }