From 87fdad841dea411865440856fd0b7de97ee79fa9 Mon Sep 17 00:00:00 2001 From: zeyan <258785420@qq.com> Date: Tue, 5 Aug 2025 22:30:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/src/app/views/personnel/personnel.vue | 10 +- .../controller/personnel/Personnel.php | 2 +- .../controller/apiController/Personnel.php | 35 +++---- niucloud/app/api/middleware/ApiLog.php | 28 +++--- niucloud/app/model/personnel/Personnel.php | 13 ++- .../api/apiService/PersonnelService.php | 65 ++----------- .../SchoolApprovalProcessService.php | 94 ++++++++++++------- uniapp/pages-coach/coach/my/update_pass.vue | 6 +- uniapp/pages-market/my/update_pass.vue | 6 +- uniapp/pages/coach/my/update_pass.vue | 6 +- uniapp/pages/market/my/update_pass.vue | 6 +- 11 files changed, 115 insertions(+), 156 deletions(-) diff --git a/admin/src/app/views/personnel/personnel.vue b/admin/src/app/views/personnel/personnel.vue index 1f8dadf1..72045e3c 100644 --- a/admin/src/app/views/personnel/personnel.vue +++ b/admin/src/app/views/personnel/personnel.vue @@ -96,9 +96,15 @@ - @@ -335,7 +341,7 @@ let personnelTable = reactive({ education: '', employee_number: '', status: '', - create_time: '', + create_time: [], }, }) diff --git a/niucloud/app/adminapi/controller/personnel/Personnel.php b/niucloud/app/adminapi/controller/personnel/Personnel.php index 3c0be4dd..b99211c2 100644 --- a/niucloud/app/adminapi/controller/personnel/Personnel.php +++ b/niucloud/app/adminapi/controller/personnel/Personnel.php @@ -35,7 +35,7 @@ class Personnel extends BaseAdminController ["education",""], ["employee_number",""], ["status",""], - ["create_time",""] + ["create_time",[]] ]); return success((new PersonnelService())->getPage($data)); } diff --git a/niucloud/app/api/controller/apiController/Personnel.php b/niucloud/app/api/controller/apiController/Personnel.php index 70d253e6..e0a98d42 100644 --- a/niucloud/app/api/controller/apiController/Personnel.php +++ b/niucloud/app/api/controller/apiController/Personnel.php @@ -187,20 +187,17 @@ class Personnel extends BaseApiService } try { + // 获取申请人ID + $res = (new PersonnelService())->addPersonnel($params); + if (!$res['code']) { + return fail($res['msg']); + } // 检查是否使用审批流程 if (isset($params['use_approval']) && $params['use_approval'] && isset($params['approval_config_id']) && $params['approval_config_id'] > 0) { // 使用审批流程 $approvalService = new \app\service\school_approval\SchoolApprovalProcessService(); - - // 获取申请人ID - 如果未登录则使用管理员ID - // 如果没有登录用户,查找系统管理员或HR作为申请人 - $adminPersonnel = \think\facade\Db::table('school_personnel') - ->where('account_type', 'admin') - ->whereOr('account_type', 'teacher') - ->where('status', 1) - ->order('id', 'asc') - ->find(); - $applicantId = $adminPersonnel ? $adminPersonnel['id'] : 1; + + $applicantId = $res['data']['personnel_id']; $processId = $approvalService->createPersonnelApproval( $params, @@ -212,18 +209,14 @@ class Personnel extends BaseApiService 'process_id' => $processId, 'message' => '审批申请已提交,等待审批' ]); - } else { - // 直接添加人员 - $res = (new PersonnelService())->addPersonnel($params); - if (!$res['code']) { - return fail($res['msg']); - } - return success([ - 'type' => 'direct', - 'data' => $res['data'], - 'message' => '员工信息添加成功' - ]); } + // 直接添加人员 + + return success([ + 'type' => 'direct', + 'data' => $res['data'], + 'message' => '员工信息添加成功' + ]); } catch (\Exception $e) { return fail('添加员工信息失败:' . $e->getMessage()); } diff --git a/niucloud/app/api/middleware/ApiLog.php b/niucloud/app/api/middleware/ApiLog.php index 1e6a8587..f779ee5c 100644 --- a/niucloud/app/api/middleware/ApiLog.php +++ b/niucloud/app/api/middleware/ApiLog.php @@ -13,6 +13,7 @@ namespace app\api\middleware; use app\Request; +use app\service\admin\user\UserLogService; use Closure; /** @@ -25,20 +26,19 @@ class ApiLog public function handle(Request $request, Closure $next) { //写入日志 -// if($request->method() != 'GET') -// { -// $data = [ -// 'uid' => $request->adminid(), -// 'username' => $request->username(), -// 'url' => $request->url(), -// 'params' => $request->param(), -// 'ip' => $request->ip(), -// 'type' => $request->method() -// -// ]; -// (new UserLogService())->add($data); -// } -// + if ($request->method() != 'GET') { + $data = [ + 'uid' => $request->memberId(), + 'username' => $request->username(), + 'url' => $request->url(), + 'params' => $request->param(), + 'ip' => $request->ip(), + 'type' => $request->method() + + ]; + (new UserLogService())->add($data); + } + return $next($request); } } diff --git a/niucloud/app/model/personnel/Personnel.php b/niucloud/app/model/personnel/Personnel.php index b4235de3..53929764 100644 --- a/niucloud/app/model/personnel/Personnel.php +++ b/niucloud/app/model/personnel/Personnel.php @@ -87,7 +87,7 @@ class Personnel extends BaseModel public function searchPhoneAttr($query, $value, $data) { if ($value) { - $query->where("phone", $value); + $query->where("phone", "like", "%".$value."%"); } } @@ -99,7 +99,7 @@ class Personnel extends BaseModel public function searchAddressAttr($query, $value, $data) { if ($value) { - $query->where("address", $value); + $query->where("address", "like", "%".$value."%"); } } @@ -146,8 +146,13 @@ class Personnel extends BaseModel */ public function searchCreateTimeAttr($query, $value, $data) { - if ($value) { - $query->where("create_time", $value); + if ($value && is_array($value) && count($value) == 2) { + // 日期范围查询 + $query->where("create_time", ">=", $value[0]) + ->where("create_time", "<=", $value[1]); + } elseif ($value) { + // 单个日期查询(按天) + $query->whereTime("create_time", "=", $value); } } diff --git a/niucloud/app/service/api/apiService/PersonnelService.php b/niucloud/app/service/api/apiService/PersonnelService.php index 76003e3f..d206da8e 100644 --- a/niucloud/app/service/api/apiService/PersonnelService.php +++ b/niucloud/app/service/api/apiService/PersonnelService.php @@ -233,55 +233,6 @@ class PersonnelService extends BaseApiService } $model = $this->model; - - //存在员工id的时候 -// if ((!empty($where['personnel_id']) || isset($where['personnel_id'])) && $where['personnel_id'] !== '') { -// //查询这个员工的校区id -// $campus_id = CampusPersonRole::where('person_id', $where['personnel_id']) -// ->distinct(true) -// ->column('campus_id'); -// if ($campus_id[0]) { -// -// $person_id_arr = CampusPersonRole::whereIn('campus_id', $campus_id) -// ->where(['dept_id' => 3]) -// ->distinct(true) -// ->column('person_id'); -// if ($person_id_arr) { -// //根据校区id获取校区下的全部员工 -// $model = $model->whereIn('id', $person_id_arr); -// } -// }else{ -// $person_id_arr = CampusPersonRole::whereIn('campus_id', $campus_id) -// ->where(['dept_id' => 3]) -// ->distinct(true) -// ->column('person_id'); -// if ($person_id_arr) { -// //根据校区id获取校区下的全部员工 -// $model = $model->whereIn('id', $person_id_arr); -// } -// } -// } -// -// if (empty($where['account_type'])) { -// $model = $model->where('account_type', $where['account_type']); -// } -// -// if (!empty($where['campus'])) { -//// $model = $model->where('campus', $where['campus']); -// -// $person_id_arr = CampusPersonRole::whereIn('campus_id', $where['campus']) -// ->distinct(true) -// ->where(['dept_id' => 3]) -// ->column('person_id'); -// -// if ($person_id_arr) { -// //根据校区id获取校区下的全部员工 -// $model = $model->whereIn('id', $person_id_arr); -// } -// -// } - - $res = $model->field($field) ->select() ->toArray();//员工信息 @@ -470,18 +421,16 @@ class PersonnelService extends BaseApiService 'msg' => '添加失败', 'data' => [] ]; - + // 检查手机号是否已存在 + $existingPersonnel = $this->model->where('phone', $data['phone'])->find(); + if ($existingPersonnel) { + $res['msg'] = '该手机号已存在,请更换'; + return $res; + } try { // 开启事务 $this->model->startTrans(); - // 检查手机号是否已存在 - $existingPersonnel = $this->model->where('phone', $data['phone'])->find(); - if ($existingPersonnel) { - $res['msg'] = '该手机号已存在,请更换'; - return $res; - } - // 准备基本员工信息数据 $personnelData = [ 'name' => $data['name'], @@ -520,7 +469,7 @@ class PersonnelService extends BaseApiService $detailData = [ 'person_id' => $personnelId, 'name' => $data['name'], - 'ethnicity' => $data['ethnicity'] ?? '', +// 'ethnicity' => $data['ethnicity'] ?? '', 'age' => $data['age'] ?? null, 'politics' => $data['politics'] ?? '', 'university' => $data['university'] ?? '', diff --git a/niucloud/app/service/school_approval/SchoolApprovalProcessService.php b/niucloud/app/service/school_approval/SchoolApprovalProcessService.php index 7b1513b8..3300cb1b 100644 --- a/niucloud/app/service/school_approval/SchoolApprovalProcessService.php +++ b/niucloud/app/service/school_approval/SchoolApprovalProcessService.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace app\service\school_approval; use app\model\personnel\Personnel; +use app\model\personnel\PersonnelInfo; use app\model\school_approval\SchoolApprovalConfig; use app\model\school_approval\SchoolApprovalConfigNode; use app\model\school_approval\SchoolApprovalParticipants; @@ -33,8 +34,8 @@ class SchoolApprovalProcessService $list = (new SchoolApprovalProcess()) ->alias("a") - ->join(['school_personnel' => 'b'],'a.applicant_id = b.id','left') - ->join(['school_personnel' => 'c'],'a.current_approver_id = c.id','left') + ->join(['school_personnel' => 'b'], 'a.applicant_id = b.id', 'left') + ->join(['school_personnel' => 'c'], 'a.current_approver_id = c.id', 'left') ->where($where) ->field($field) ->order($order) @@ -59,8 +60,8 @@ class SchoolApprovalProcessService { $info = (new SchoolApprovalProcess()) ->alias("a") - ->join(['school_personnel' => 'b'],'a.applicant_id = b.id','left') - ->join(['school_personnel' => 'c'],'a.current_approver_id = c.id','left') + ->join(['school_personnel' => 'b'], 'a.applicant_id = b.id', 'left') + ->join(['school_personnel' => 'c'], 'a.current_approver_id = c.id', 'left') ->with(['participants']) ->where(['a.id' => $id]) ->field('a.*,b.name as applicant_name,c.name as current_approver_name') @@ -96,15 +97,15 @@ class SchoolApprovalProcessService // 创建审批流程 $process = [ - 'process_name' => $data['process_name'], - 'applicant_id' => $data['applicant_id'], - 'application_time' => date("Y-m-d H:i:s"), + 'process_name' => $data['process_name'], + 'applicant_id' => $data['applicant_id'], + 'application_time' => date("Y-m-d H:i:s"), 'current_approver_id' => 0, // 初始时为0,后面会更新 - 'approval_status' => SchoolApprovalProcess::STATUS_PENDING, - 'remarks' => $data['remarks'] ?? '', - 'business_type' => $data['business_type'] ?? '', - 'business_id' => $data['business_id'] ?? 0, - 'business_data' => isset($data['business_data']) ? json_encode($data['business_data']) : '' + 'approval_status' => SchoolApprovalProcess::STATUS_PENDING, + 'remarks' => $data['remarks'] ?? '', + 'business_type' => $data['business_type'] ?? '', + 'business_id' => $data['business_id'] ?? 0, + 'business_data' => isset($data['business_data']) ? json_encode($data['business_data']) : '' ]; $process_id = (new SchoolApprovalProcess())->insertGetId($process); @@ -113,17 +114,17 @@ class SchoolApprovalProcessService $participants = []; foreach ($config_info['nodes'] as $sequence => $node) { $approver_ids = explode(',', $node['approver_ids']); - + // 动态获取审批人 $actual_approvers = $this->getDynamicApprovers($node['approver_type'], $approver_ids); - + foreach ($actual_approvers as $approver_id) { $participants[] = [ - 'process_id' => $process_id, + 'process_id' => $process_id, 'participant_id' => $approver_id, - 'sequence' => $node['sequence'], - 'status' => SchoolApprovalParticipants::STATUS_PENDING, - 'sign_type' => $node['sign_type'] + 'sequence' => $node['sequence'], + 'status' => SchoolApprovalParticipants::STATUS_PENDING, + 'sign_type' => $node['sign_type'] ]; } } @@ -236,7 +237,7 @@ class SchoolApprovalProcessService (new SchoolApprovalProcess())->where(['id' => $process_id]) ->update([ 'approval_status' => SchoolApprovalProcess::STATUS_REJECTED, - 'approval_time' => time(), + 'approval_time' => date('Y-m-d H:i:s'), 'remarks' => $remarks ]); @@ -271,7 +272,7 @@ class SchoolApprovalProcessService (new SchoolApprovalProcess())->where(['id' => $process_id]) ->update([ 'approval_status' => SchoolApprovalProcess::STATUS_APPROVED, - 'approval_time' => time() + 'approval_time' => date('Y-m-d H:i:s') ]); // 处理业务逻辑 @@ -327,7 +328,7 @@ class SchoolApprovalProcessService (new SchoolApprovalProcess())->where(['id' => $process_id]) ->update([ 'approval_status' => SchoolApprovalProcess::STATUS_REJECTED, - 'approval_time' => time(), + 'approval_time' => date('Y-m-d H:i:s'), 'remarks' => '申请人撤销' ]); @@ -391,18 +392,39 @@ class SchoolApprovalProcessService try { // 调用API人员服务创建正式人员记录(避免info字段问题) $personnelService = new \app\service\api\apiService\PersonnelService(); - + // 准备人员数据 $createData = $personnelData; $createData['status'] = 2; // 设置为已审核状态 - - // 创建人员记录 - $result = $personnelService->addPersonnel($createData); - if (!$result['code']) { - throw new \Exception($result['msg']); + + $insert_status = (new Personnel())->where(['phone' => $createData['phone']])->order('id', 'desc')->find(); + if ($insert_status) { + $personnelId = $insert_status->id; + //获取Personnel模型中所有字段 + $fields = (new Personnel())->getFields(); + // 过滤只保留字符串和整数类型的键 + $fields = array_filter($fields, function($field) { + return is_string($field) || is_int($field); + }); + $PersonnelData = array_intersect_key($createData, array_flip($fields)); + (new Personnel())->where(['id' => $insert_status->id])->update($PersonnelData); + $fields = (new PersonnelInfo())->getFields(); + // 过滤只保留字符串和整数类型的键 + $fields = array_filter($fields, function($field) { + return is_string($field) || is_int($field); + }); + $PersonnelInfoData = array_intersect_key($createData, array_flip($fields)); + (new PersonnelInfo())->where(['person_id' => $insert_status->id])->update($PersonnelInfoData); + } else { + // 创建人员记录 + $result = $personnelService->addPersonnel($createData); + if (!$result['code']) { + throw new \Exception($result['msg']); + } + $personnelId = $result['data']['personnel_id']; } - $personnelId = $result['data']['personnel_id']; - + + // 更新流程的business_id为实际创建的人员ID (new SchoolApprovalProcess())->where(['id' => $process['id']]) ->update(['business_id' => $personnelId]); @@ -555,10 +577,10 @@ class SchoolApprovalProcessService */ private function recordApprovalHistory(int $process_id, int $participant_id, int $sequence, string $status, string $remarks): void { - $action = ($status == SchoolApprovalParticipants::STATUS_APPROVED) ? + $action = ($status == SchoolApprovalParticipants::STATUS_APPROVED) ? SchoolApprovalHistory::ACTION_APPROVE : SchoolApprovalHistory::ACTION_REJECT; - - $history_status = ($status == SchoolApprovalParticipants::STATUS_APPROVED) ? + + $history_status = ($status == SchoolApprovalParticipants::STATUS_APPROVED) ? SchoolApprovalHistory::STATUS_APPROVED : SchoolApprovalHistory::STATUS_REJECTED; (new SchoolApprovalHistory())->insert([ @@ -615,23 +637,23 @@ class SchoolApprovalProcessService // 根据通知类型设置消息内容 $title = ''; $content = ''; - + switch ($type) { case 'pending': $title = '待审批通知'; $content = "您有一个审批流程需要处理:{$process['process_name']},申请人:{$process['applicant_name']}"; break; - + case 'approved': $title = '审批通过通知'; $content = "您的审批申请已通过:{$process['process_name']}"; break; - + case 'rejected': $title = '审批拒绝通知'; $content = "您的审批申请已被拒绝:{$process['process_name']}"; break; - + default: return; } diff --git a/uniapp/pages-coach/coach/my/update_pass.vue b/uniapp/pages-coach/coach/my/update_pass.vue index af5d9aa4..7092c673 100644 --- a/uniapp/pages-coach/coach/my/update_pass.vue +++ b/uniapp/pages-coach/coach/my/update_pass.vue @@ -177,11 +177,7 @@ import apiRoute from '@/api/apiRoute.js'; }) //延迟1s执行 setTimeout(() => { - //跳转页面-个人中心 - //关闭当前页跳转新页面 - uni.redirectTo({ - url: `/pages-coach/coach/my/index` - }) + uni.navigateBack() }, 1000) }, } diff --git a/uniapp/pages-market/my/update_pass.vue b/uniapp/pages-market/my/update_pass.vue index c82fc34b..7092c673 100644 --- a/uniapp/pages-market/my/update_pass.vue +++ b/uniapp/pages-market/my/update_pass.vue @@ -177,11 +177,7 @@ import apiRoute from '@/api/apiRoute.js'; }) //延迟1s执行 setTimeout(() => { - //跳转页面-个人中心 - //关闭当前页跳转新页面 - uni.redirectTo({ - url: `/pages-market/my/index` - }) + uni.navigateBack() }, 1000) }, } diff --git a/uniapp/pages/coach/my/update_pass.vue b/uniapp/pages/coach/my/update_pass.vue index af5d9aa4..7092c673 100644 --- a/uniapp/pages/coach/my/update_pass.vue +++ b/uniapp/pages/coach/my/update_pass.vue @@ -177,11 +177,7 @@ import apiRoute from '@/api/apiRoute.js'; }) //延迟1s执行 setTimeout(() => { - //跳转页面-个人中心 - //关闭当前页跳转新页面 - uni.redirectTo({ - url: `/pages-coach/coach/my/index` - }) + uni.navigateBack() }, 1000) }, } diff --git a/uniapp/pages/market/my/update_pass.vue b/uniapp/pages/market/my/update_pass.vue index c82fc34b..7092c673 100644 --- a/uniapp/pages/market/my/update_pass.vue +++ b/uniapp/pages/market/my/update_pass.vue @@ -177,11 +177,7 @@ import apiRoute from '@/api/apiRoute.js'; }) //延迟1s执行 setTimeout(() => { - //跳转页面-个人中心 - //关闭当前页跳转新页面 - uni.redirectTo({ - url: `/pages-market/my/index` - }) + uni.navigateBack() }, 1000) }, }