From c6a4e7b705575fa6fe55f8a45a9ca92670513231 Mon Sep 17 00:00:00 2001 From: "1213317725@qq.com" <1213317725@qq.com> Date: Wed, 25 Jun 2025 17:06:12 +0800 Subject: [PATCH] 1 --- admin/src/app/api/course_schedule.ts | 22 ++ admin/src/app/api/salary.ts | 7 + admin/src/app/views/attendance/attendance.vue | 2 + .../src/app/views/contract/components/ff.vue | 12 +- .../views/course_schedule/components/ff.vue | 240 ++++++++++++++++++ .../views/course_schedule/course_schedule.vue | 17 ++ .../src/app/views/order_table/order_table.vue | 18 +- admin/src/app/views/salary/salary.vue | 32 ++- .../course_schedule/CourseSchedule.php | 31 +++ .../controller/order_table/OrderTable.php | 3 +- .../app/adminapi/controller/salary/Salary.php | 9 +- .../app/adminapi/route/course_schedule.php | 10 +- niucloud/app/adminapi/route/salary.php | 5 +- .../admin/attendance/AttendanceService.php | 19 +- .../course_schedule/CourseScheduleService.php | 59 +++++ .../admin/order_table/OrderTableService.php | 13 +- .../service/admin/salary/SalaryService.php | 12 +- 17 files changed, 487 insertions(+), 24 deletions(-) create mode 100644 admin/src/app/views/course_schedule/components/ff.vue diff --git a/admin/src/app/api/course_schedule.ts b/admin/src/app/api/course_schedule.ts index 124a0a7d..c71d486f 100644 --- a/admin/src/app/api/course_schedule.ts +++ b/admin/src/app/api/course_schedule.ts @@ -73,4 +73,26 @@ export function getCourseStudents(id: number) { export function getResourceByNameOrPhone(params: Record) { return request.get(`customer_resources/personnel_all_byname`, { params }) } + + + // USER_CODE_END -- course_schedule +export function scheduleList(params: Record) { + return request.get(`course_schedule/scheduleList`, { params }) +} + +export function resourceList(params: Record) { + return request.get(`course_schedule/resourceList`, { params }) +} + +export function getCourseInfo(params: Record) { + return request.get(`course_schedule/courseInfo`, { params }) +} + + +export function addSchedule(params: Record) { + return request.post('course_schedule/addSchedule', params, { + showErrorMessage: true, + showSuccessMessage: true, + }) +} diff --git a/admin/src/app/api/salary.ts b/admin/src/app/api/salary.ts index 1595835c..5a942e1d 100644 --- a/admin/src/app/api/salary.ts +++ b/admin/src/app/api/salary.ts @@ -55,6 +55,13 @@ export function deleteSalary(id: number) { return request.delete(`salary/salary/${id}`, { showErrorMessage: true, showSuccessMessage: true }) } + + +export function ffSalary(id: number) { + return request.get(`salary/ffsalary/${id}`, { showErrorMessage: true, showSuccessMessage: true }) +} + + export function getWithPersonnelList(params: Record){ return request.get('salary/personnel_all', {params}) }export function getWithDepartmentsList(params: Record){ diff --git a/admin/src/app/views/attendance/attendance.vue b/admin/src/app/views/attendance/attendance.vue index aaff21dc..480d65aa 100644 --- a/admin/src/app/views/attendance/attendance.vue +++ b/admin/src/app/views/attendance/attendance.vue @@ -75,6 +75,8 @@ + + diff --git a/admin/src/app/views/contract/components/ff.vue b/admin/src/app/views/contract/components/ff.vue index c72d31c5..34add73a 100644 --- a/admin/src/app/views/contract/components/ff.vue +++ b/admin/src/app/views/contract/components/ff.vue @@ -68,15 +68,17 @@ :total="lessonCourseTeachingTable.total" @size-change="loadLessonCourseTeachingList()" @current-change="loadLessonCourseTeachingList" /> - - - - + + + + + + diff --git a/admin/src/app/views/course_schedule/components/ff.vue b/admin/src/app/views/course_schedule/components/ff.vue new file mode 100644 index 00000000..7fd0e6b8 --- /dev/null +++ b/admin/src/app/views/course_schedule/components/ff.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/admin/src/app/views/course_schedule/course_schedule.vue b/admin/src/app/views/course_schedule/course_schedule.vue index e98e87b3..f4657425 100644 --- a/admin/src/app/views/course_schedule/course_schedule.vue +++ b/admin/src/app/views/course_schedule/course_schedule.vue @@ -188,6 +188,10 @@ {{ t('edit') }} + + + 分配 + {{ t('delete') }} @@ -207,6 +211,9 @@ + + + @@ -224,6 +231,7 @@ import { getWithCampusList, getAllVenueList } from '@/app/api/venue' import { img } from '@/utils/common' import { ElMessageBox, FormInstance } from 'element-plus' import Edit from '@/app/views/course_schedule/components/course-schedule-edit.vue' +import Ff from '@/app/views/course_schedule/components/ff.vue' import { useRoute } from 'vue-router' const route = useRoute() const pageName = route.meta.title @@ -347,6 +355,15 @@ const editEvent = (data: any) => { editCourseScheduleDialog.value.showDialog = true } + + +const ffCourseScheduleDialog: Record | null = ref(null) + +const ffEvent = (data: any) => { + ffCourseScheduleDialog.value.setFormData(data.id,data.resource_id) + ffCourseScheduleDialog.value.showDialog = true +} + /** * 删除课程安排 */ diff --git a/admin/src/app/views/order_table/order_table.vue b/admin/src/app/views/order_table/order_table.vue index 8a394db9..fe0a8353 100644 --- a/admin/src/app/views/order_table/order_table.vue +++ b/admin/src/app/views/order_table/order_table.vue @@ -18,6 +18,19 @@ :value="item.value" /> + + + + + + + + + + + + + + @@ -151,7 +166,8 @@ searchParam: { order_status: '', payment_type: '', - resource_id: route.query.resource_id ?? '' + resource_id: route.query.resource_id ?? '', + order_type:'' }, }) diff --git a/admin/src/app/views/salary/salary.vue b/admin/src/app/views/salary/salary.vue index 359b9ff5..76786d3a 100644 --- a/admin/src/app/views/salary/salary.vue +++ b/admin/src/app/views/salary/salary.vue @@ -69,6 +69,12 @@ + + + + + + @@ -93,10 +99,11 @@ - + @@ -117,7 +124,7 @@ import { reactive, ref, watch } from 'vue' import { t } from '@/lang' import { useDictionary } from '@/app/api/dict' -import { getSalaryList, deleteSalary, getWithPersonnelList, getWithDepartmentsList } from '@/app/api/salary' +import { getSalaryList, deleteSalary, getWithPersonnelList, getWithDepartmentsList,ffSalary } from '@/app/api/salary' import { img } from '@/utils/common' import { ElMessageBox,FormInstance } from 'element-plus' import Edit from '@/app/views/salary/components/salary-edit.vue' @@ -214,6 +221,23 @@ const deleteEvent = (id: number) => { }) } + +const ffEvent = (id: number) => { + ElMessageBox.confirm("请确定发放工资", t('warning'), + { + confirmButtonText: t('confirm'), + cancelButtonText: t('cancel'), + type: 'warning', + } + ).then(() => { + ffSalary(id).then(() => { + loadSalaryList() + }).catch(() => { + }) + }) +} + + const staffIdList = ref([]) const setStaffIdList = async () => { diff --git a/niucloud/app/adminapi/controller/course_schedule/CourseSchedule.php b/niucloud/app/adminapi/controller/course_schedule/CourseSchedule.php index bb6f16eb..eb95ddc2 100644 --- a/niucloud/app/adminapi/controller/course_schedule/CourseSchedule.php +++ b/niucloud/app/adminapi/controller/course_schedule/CourseSchedule.php @@ -137,4 +137,35 @@ class CourseSchedule extends BaseAdminController ]); return success((new CourseScheduleService())->getCampusVenue($data)); } + + public function scheduleList(){ + $data = $this->request->params([ + ["schedule_id",''] + ]); + return success((new CourseScheduleService())->schedule_list($data)); + } + + + public function resourceList(){ + return success((new CourseScheduleService())->resourceList()); + } + + public function courseInfo(){ + $data = $this->request->params([ + ["id",''] + ]); + return success((new CourseScheduleService())->courseInfo($data['id'])); + } + + + public function addSchedule(){ + $data = $this->request->params([ + ["resources_id",''], + ["person_type",''], + ["schedule_id",''], + ["course_date",''], + ["time_slot",''] + ]); + return (new CourseScheduleService())->addSchedule($data); + } } diff --git a/niucloud/app/adminapi/controller/order_table/OrderTable.php b/niucloud/app/adminapi/controller/order_table/OrderTable.php index d632ff71..6a4a1de3 100644 --- a/niucloud/app/adminapi/controller/order_table/OrderTable.php +++ b/niucloud/app/adminapi/controller/order_table/OrderTable.php @@ -30,7 +30,8 @@ class OrderTable extends BaseAdminController $data = $this->request->params([ ["order_status",""], ["payment_type",""], - ["resource_id",""] + ["resource_id",""], + ["order_type",""] ]); return success((new OrderTableService())->getPage($data)); } diff --git a/niucloud/app/adminapi/controller/salary/Salary.php b/niucloud/app/adminapi/controller/salary/Salary.php index 1d251f6a..a9faf619 100644 --- a/niucloud/app/adminapi/controller/salary/Salary.php +++ b/niucloud/app/adminapi/controller/salary/Salary.php @@ -102,7 +102,14 @@ class Salary extends BaseAdminController return success('DELETE_SUCCESS'); } - + + public function ffsalary(int $id){ + (new SalaryService())->ffsalary($id); + return success('发放成功'); + } + + + public function getPersonnelAll(){ return success(( new SalaryService())->getPersonnelAll()); } diff --git a/niucloud/app/adminapi/route/course_schedule.php b/niucloud/app/adminapi/route/course_schedule.php index 31b473f6..9bcd35c7 100644 --- a/niucloud/app/adminapi/route/course_schedule.php +++ b/niucloud/app/adminapi/route/course_schedule.php @@ -33,7 +33,15 @@ Route::group('course_schedule', function () { Route::get('campus_venue', 'course_schedule.CourseSchedule/getCampusVenue'); Route::get('timetables', 'course_schedule.CourseSchedule/timetables'); - + + Route::get('scheduleList', 'course_schedule.CourseSchedule/scheduleList'); + + Route::get('resourceList', 'course_schedule.CourseSchedule/resourceList'); + + Route::get('courseInfo', 'course_schedule.CourseSchedule/courseInfo'); + + Route::post('addSchedule', 'course_schedule.CourseSchedule/addSchedule'); + })->middleware([ AdminCheckToken::class, AdminCheckRole::class, diff --git a/niucloud/app/adminapi/route/salary.php b/niucloud/app/adminapi/route/salary.php index adb6de61..232fcf8e 100644 --- a/niucloud/app/adminapi/route/salary.php +++ b/niucloud/app/adminapi/route/salary.php @@ -32,7 +32,10 @@ Route::group('salary', function () { Route::put('salary/:id', 'salary.Salary/edit'); //删除工资 Route::delete('salary/:id', 'salary.Salary/del'); - + + Route::get('ffsalary/:id', 'salary.Salary/ffsalary'); + + Route::get('personnel_all','salary.Salary/getPersonnelAll'); Route::get('departments_all','salary.Salary/getDepartmentsAll'); diff --git a/niucloud/app/service/admin/attendance/AttendanceService.php b/niucloud/app/service/admin/attendance/AttendanceService.php index c52cb538..904b3c20 100644 --- a/niucloud/app/service/admin/attendance/AttendanceService.php +++ b/niucloud/app/service/admin/attendance/AttendanceService.php @@ -38,10 +38,19 @@ class AttendanceService extends BaseAdminService */ public function getPage(array $where = []) { - $field = 'id,campus_id,staff_id,attendance_date,check_in_time,check_out_time,remarks,status,created_at,updated_at,coordinate'; - $order = 'id desc'; - - $search_model = $this->model->withSearch(["campus_id","staff_id","attendance_date","status"], $where)->with(['campus','personnel'])->field($field)->order($order); + $field = 'a.*,d.role_name'; + $order = 'a.id desc'; + + $search_model = $this->model + ->alias("a") + ->join(['school_personnel' => 'b'],'a.staff_id = b.id','left') + ->join(['school_campus_person_role' => 'c'],'b.id = c.person_id','left') + ->join(['school_sys_role' => 'd'],'c.role_id = d.role_id','left') + + ->withSearch(["a.campus_id","a.staff_id","a.attendance_date","a.status"], $where) + ->with(['campus','personnel']) + ->field($field) + ->order($order); $list = $this->pageQuery($search_model); return $list; } @@ -96,7 +105,7 @@ class AttendanceService extends BaseAdminService return $res; } - + public function getCampusAll(){ $campusModel = new Campus(); return $campusModel->select()->toArray(); diff --git a/niucloud/app/service/admin/course_schedule/CourseScheduleService.php b/niucloud/app/service/admin/course_schedule/CourseScheduleService.php index 701f9331..d76b8a2a 100644 --- a/niucloud/app/service/admin/course_schedule/CourseScheduleService.php +++ b/niucloud/app/service/admin/course_schedule/CourseScheduleService.php @@ -11,12 +11,15 @@ namespace app\service\admin\course_schedule; +use app\model\assignment\Assignment; use app\model\course_schedule\CourseSchedule; use app\model\person_course_schedule\PersonCourseSchedule; use app\model\personnel\Personnel; +use app\model\student_courses\StudentCourses; use app\model\venue\Venue; use app\service\admin\venue\VenueService; use core\base\BaseAdminService; +use think\facade\Db; /** @@ -288,4 +291,60 @@ class CourseScheduleService extends BaseAdminService { return (new Venue())->where('availability_status', 1)->where('campus_id', $id)->select(); } + + + public function schedule_list(array $data){ + $personCourseSchedule = new PersonCourseSchedule(); + $list = $personCourseSchedule + ->alias('a') + ->join(['school_customer_resources' => 'b'],'a.resources_id = b.id','left') + ->where('a.schedule_id',$data['schedule_id']) + ->field("b.name,a.status") + ->select()->toArray(); + + return $list; + } + + public function resourceList(){ + $studentCourse = new StudentCourses(); + $data = $studentCourse->alias("a") + ->join(['school_customer_resources' => 'b'],'a.resource_id = b.id','left') + ->where([ + ['a.end_date','<=',date('Y-m-d')] + ]) + ->field("b.name,b.id")->select(); + + return $data ? $data->toArray() : []; + } + + public function courseInfo(int $data){ + $CourseSchedule = new CourseSchedule(); + $info = $CourseSchedule + ->where('id', $data)->findOrEmpty(); + return $info->toArray(); + } + + + public function addSchedule(array $data){ + $CourseSchedule = new CourseSchedule(); + $personCourseSchedule = new PersonCourseSchedule(); + if($personCourseSchedule->where([ + 'resources_id' => $data['resources_id'], + 'schedule_id' => $data['schedule_id'] + ])->find()){ + return fail("重复添加"); + } + + $personCourseSchedule->insert([ + 'resources_id' => $data['resources_id'], + 'person_id' => 1, + 'person_type' => $data['person_type'], + 'schedule_id' => $data['schedule_id'], + 'course_date' => $data['course_date'], + 'time_slot' => $data['time_slot'], + ]); + $CourseSchedule->where(['id' => $data['schedule_id']])->dec("available_capacity")->update(); + return success("添加成功"); + + } } diff --git a/niucloud/app/service/admin/order_table/OrderTableService.php b/niucloud/app/service/admin/order_table/OrderTableService.php index 9bf51eb2..2454d7b5 100644 --- a/niucloud/app/service/admin/order_table/OrderTableService.php +++ b/niucloud/app/service/admin/order_table/OrderTableService.php @@ -41,7 +41,7 @@ class OrderTableService extends BaseAdminService public function getPage(array $data = []) { $where = []; - $field = 'id,resource_id,payment_id,order_status,payment_type,order_amount,course_id,class_id,staff_id,after_sales_status,after_sales_reason,after_sales_time,created_at,updated_at,payment_time,subscription_payment_time'; + $field = 'id,resource_id,payment_id,order_type,order_status,payment_type,order_amount,course_id,class_id,staff_id,after_sales_status,after_sales_reason,after_sales_time,created_at,updated_at,payment_time,subscription_payment_time'; $order = 'id desc'; if($data['order_status']){ $where[] = ['order_status','=',$data['order_status']]; @@ -54,9 +54,16 @@ class OrderTableService extends BaseAdminService if($data['resource_id']){ $where[] = ['resource_id','=',$data['resource_id']]; } + if($data['order_type']){ + $where[] = ['order_type','=',$data['order_type']]; + } + $search_model = $this->model->where($where)->with(['customerResources','course','classGrade','personnel'])->field($field)->order($order); - $list = $this->pageQuery($search_model); - return $list; + + return $this->pageQuery($search_model, function ($item, $key) { + $type = [1=>'新订单',2=>'续费订单',3=>'内部员工订单']; + $item['type'] = $type[$item['order_type']] ?? ''; + }); } /** diff --git a/niucloud/app/service/admin/salary/SalaryService.php b/niucloud/app/service/admin/salary/SalaryService.php index ba4797eb..8647e5c5 100644 --- a/niucloud/app/service/admin/salary/SalaryService.php +++ b/niucloud/app/service/admin/salary/SalaryService.php @@ -38,7 +38,7 @@ class SalaryService extends BaseAdminService */ public function getPage(array $where = []) { - $field = 'id,staff_id,department_id,base_salary,performance_bonus,deductions,other_subsidies,net_salary,payment_status,payment_method,remarks,salary_month,process_id,created_at,updated_at'; + $field = 'id,staff_id,department_id,base_salary,status,performance_bonus,deductions,other_subsidies,net_salary,payment_status,payment_method,remarks,salary_month,process_id,created_at,updated_at'; $order = 'id desc'; $search_model = $this->model->withSearch(["staff_id","department_id","payment_status","created_at"], $where)->with(['personnel','departments'])->field($field)->order($order); @@ -96,7 +96,15 @@ class SalaryService extends BaseAdminService return $res; } - + public function ffsalary(int $id) + { + $res = $this->model->where([['id', '=', $id]])->update(['status' => 2]); + + return $res; + } + + + public function getPersonnelAll(){ $personnelModel = new Personnel(); return $personnelModel->select()->toArray();