'require|checkData', 'bkh_user_id' => 'require|checkBkhUser', 'examine_type' => 'require|checkExamineType', 'self_examine_id' => 'require|checkSelfExamine', 'detail' => 'require|checkDetail' ]; /** * 参数描述 * @var string[] */ protected $field = [ 'id' => 'id', 'bkh_user_id' => '被考核人', 'examine_type' => '考核类别', 'self_examine_id' => '自评记录', 'detail' => '考核项' ]; /** * @notes 添加场景 * @return OaExamineValidate * @author likeadmin * @date 2024/06/04 13:37 */ public function sceneAdd() { return $this->only(['bkh_user_id','examine_type','self_examine_id','content','detail']); } /** * @notes 编辑场景 * @return OaExamineValidate * @author likeadmin * @date 2024/06/04 13:37 */ public function sceneEdit() { return $this->only(['id','bkh_user_id','examine_type','self_examine_id','content','detail']); } /** * @notes 删除场景 * @return OaExamineValidate * @author likeadmin * @date 2024/06/04 13:37 */ public function sceneDelete() { return $this->only(['id']); } /** * @notes 详情场景 * @return OaExamineValidate * @author likeadmin * @date 2024/06/04 13:37 */ public function sceneDetail() { return $this->only(['id']); } public function checkData($value): bool|string { $data = OaExamine::where('id',$value)->findOrEmpty(); if($data->isEmpty()){ return '数据不存在'; } return true; } public function checkBkhUser($value): bool|string { $data = Admin::where('id',$value)->findOrEmpty(); if($data->isEmpty()){ return '被考核人不存在'; } return true; } public function checkExamineType($value): bool|string { $dict = DictData::where('type_value','jxgl_check_type')->column('value'); if(!in_array($value,$dict)){ return '考核类别无效'; } return true; } public function checkSelfExamine($value,$rule,$data): bool|string { $self_examine = OaSelfExamine::where('id',$value)->where('examine_type',$data['examine_type'])->where('user_id',$data['bkh_user_id'])->findOrEmpty(); if($self_examine->isEmpty()){ return '自评记录数据不存在'; } return true; } public function checkDetail($value): bool|string { if(!is_array($value) || empty($value)){ return '考核项数据格式错误'; } foreach($value as $k => $v){ if(isset($v['id']) && !empty($v['id'])){ $data = OaExamineDetail::where('id',$v['id'])->findOrEmpty(); if($data->isEmpty()){ return '第'.($k+1).'行数据不存在'; } } if(empty($v['examine_item'])){ return '第'.($k+1).'行考核项为空'; } if(empty($v['score'])){ return '第'.($k+1).'行分数为空'; }else{ if(!is_numeric($v['score']) || $v['score'] < 0){ return '第'.($k+1).'行分数必须是大于0的数字'; } } if(empty($v['examine_desc'])){ return '第'.($k+1).'行考核说明为空'; } if(empty($v['self_score'])){ return '第'.($k+1).'行自评评分为空'; }else{ if(!is_numeric($v['self_score']) || $v['self_score'] < 0){ return '第'.($k+1).'行自评评分必须是大于0的数字'; } } if(empty($v['superior_score'])){ return '第'.($k+1).'行上级评分为空'; }else{ if(!is_numeric($v['superior_score']) || $v['self_score'] < 0){ return '第'.($k+1).'行上级评分必须是大于0的数字'; } } } return true; } }