From bbd2867e1c55742b4e50c9f1e93210a508e829f7 Mon Sep 17 00:00:00 2001 From: zeyan <258785420@qq.com> Date: Fri, 4 Jul 2025 12:58:31 +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 --- .../api/controller/apiController/Contract.php | 1 - .../apiController/CourseSchedule.php | 216 ++++++++ uniapp/common/axios.js | 8 - uniapp/common/util.js | 66 ++- uniapp/components/AQ/AQUplodeImgMulti.vue | 5 - uniapp/components/schedule/ScheduleDetail.vue | 517 ++++++++++++++++++ uniapp/pages.json | 2 +- uniapp/pages/coach/my/index.vue | 28 +- .../pages/coach/schedule/schedule_detail.vue | 481 ++++++++++++++++ .../pages/coach/schedule/schedule_table.vue | 34 +- uniapp/pages/coach/student/student_list.vue | 306 ++++++++--- .../pages/common/contract/contract_detail.vue | 2 +- .../pages/common/contract/contract_sign.vue | 51 +- uniapp/pages/common/contract/my_contract.vue | 6 +- uniapp/pages/market/clue/order_list.vue | 106 +++- uniapp/pages/test/dict_test.vue | 263 --------- 16 files changed, 1687 insertions(+), 405 deletions(-) create mode 100644 niucloud/app/api/controller/apiController/CourseSchedule.php create mode 100644 uniapp/components/schedule/ScheduleDetail.vue create mode 100644 uniapp/pages/coach/schedule/schedule_detail.vue delete mode 100644 uniapp/pages/test/dict_test.vue diff --git a/niucloud/app/api/controller/apiController/Contract.php b/niucloud/app/api/controller/apiController/Contract.php index 5538a8de..b84c848d 100644 --- a/niucloud/app/api/controller/apiController/Contract.php +++ b/niucloud/app/api/controller/apiController/Contract.php @@ -107,7 +107,6 @@ class Contract extends BaseApiService 'personnel_id' => $this->member_id, 'sign_file' => $sign_file ]; - try { $service = new ContractService(); $res = $service->signContract($data); diff --git a/niucloud/app/api/controller/apiController/CourseSchedule.php b/niucloud/app/api/controller/apiController/CourseSchedule.php new file mode 100644 index 00000000..db4a4fad --- /dev/null +++ b/niucloud/app/api/controller/apiController/CourseSchedule.php @@ -0,0 +1,216 @@ +all(); + return success((new CourseScheduleService())->getScheduleList($data)); + } + + /** + * 获取课程安排详情 + * @param Request $request + * @return \think\Response + */ + public function getScheduleInfo(Request $request) + { + $data = $this->request->params([ + ["id", 0] + ]); + $result = (new CourseScheduleService())->getScheduleInfo($data['id']); + if (isset($result['code']) && $result['code'] === 0) { + return fail($result['msg']); + } + return success('SUCCESS', $result); + } + + /** + * 创建课程安排 + * @param Request $request + * @return \think\Response + */ + public function createSchedule(Request $request) + { + $data = $request->all(); + $result = (new CourseScheduleService())->createSchedule($data); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '创建成功', $result['data'] ?? []); + } + + /** + * 批量创建课程安排 + * @param Request $request + * @return \think\Response + */ + public function batchCreateSchedule(Request $request) + { + $data = $request->all(); + $result = (new CourseScheduleService())->batchCreateSchedule($data); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '批量创建成功', $result['data'] ?? []); + } + + /** + * 更新课程安排 + * @param Request $request + * @return \think\Response + */ + public function updateSchedule(Request $request) + { + $data = $request->all(); + $result = (new CourseScheduleService())->updateSchedule($data); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '更新成功', $result['data'] ?? []); + } + + /** + * 删除课程安排 + * @param Request $request + * @return \think\Response + */ + public function deleteSchedule(Request $request) + { + $data = $this->request->params([ + ["id", 0] + ]); + $result = (new CourseScheduleService())->deleteSchedule($data['id']); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '删除成功'); + } + + /** + * 获取场地列表 + * @param Request $request + * @return \think\Response + */ + public function getVenueList(Request $request) + { + $data = $request->all(); + return success((new CourseScheduleService())->getVenueList($data)); + } + + /** + * 获取场地可用时间 + * @param Request $request + * @return \think\Response + */ + public function getVenueAvailableTime(Request $request) + { + $data = $this->request->params([ + ["venue_id", 0], + ["date", ""] + ]); + return success((new CourseScheduleService())->getVenueAvailableTime($data)); + } + + /** + * 检查教练时间冲突 + * @param Request $request + * @return \think\Response + */ + public function checkCoachConflict(Request $request) + { + $data = $this->request->params([ + ["coach_id", 0], + ["date", ""], + ["time_slot", ""], + ["schedule_id", 0] // 排除当前正在编辑的课程安排 + ]); + return success((new CourseScheduleService())->checkCoachConflict($data)); + } + + /** + * 获取课程安排统计 + * @param Request $request + * @return \think\Response + */ + public function getScheduleStatistics(Request $request) + { + $data = $request->all(); + return success((new CourseScheduleService())->getScheduleStatistics($data)); + } + + /** + * 学员加入课程安排 + * @param Request $request + * @return \think\Response + */ + public function joinSchedule(Request $request) + { + $data = $this->request->params([ + ["schedule_id", 0], + ["student_id", 0], + ["course_type", 0], // 0-正常, 1-加课, 2-补课, 3-等待位 + ["resources_id", 0] + ]); + $result = (new CourseScheduleService())->joinSchedule($data); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '添加成功', $result['data'] ?? []); + } + + /** + * 学员退出课程安排 + * @param Request $request + * @return \think\Response + */ + public function leaveSchedule(Request $request) + { + $data = $this->request->params([ + ["schedule_id", 0], + ["student_id", 0], + ["remark", ""] + ]); + $result = (new CourseScheduleService())->leaveSchedule($data); + if (!$result['code']) { + return fail($result['msg']); + } + return success($result['msg'] ?? '操作成功'); + } + + /** + * 获取筛选选项 + * @param Request $request + * @return \think\Response + */ + public function getFilterOptions(Request $request) + { + $data = $request->all(); + return success((new CourseScheduleService())->getFilterOptions($data)); + } +} \ No newline at end of file diff --git a/uniapp/common/axios.js b/uniapp/common/axios.js index 42f1b0f2..908c444b 100644 --- a/uniapp/common/axios.js +++ b/uniapp/common/axios.js @@ -152,19 +152,11 @@ export default { uni.showLoading({ title: '加载中...' }); - - console.log('请求配置:', interceptedConfig); - console.log('请求URL:', interceptedConfig.url); - console.log('请求方法:', interceptedConfig.method); - console.log('请求数据:', interceptedConfig.data); - uni.request({ ...interceptedConfig, success: (res) => { try { - console.log('原始响应数据:', res); const response = responseInterceptor(res); - console.log('处理后的响应数据:', response); resolve(response); } catch (error) { console.error('请求处理失败:', error); diff --git a/uniapp/common/util.js b/uniapp/common/util.js index e8613bdb..401acbe5 100644 --- a/uniapp/common/util.js +++ b/uniapp/common/util.js @@ -1,4 +1,4 @@ -import {img_domian} from "./config"; +import {img_domian,Api_url} from "./config"; import marketApi from '@/api/apiRoute.js'; function formatTime(time) { @@ -326,6 +326,67 @@ async function getDict(dictKey) { } } +/** + * 上传文件通用方法 + * @param {string} filePath 文件路径 + * @param {Function} successCallback 成功回调 + * @param {Function} errorCallback 失败回调 + */ +export function uploadFile(filePath, successCallback, errorCallback) { + const token = uni.getStorageSync('token') || ''; + + uni.uploadFile({ + url: Api_url + '/file/image', // 上传地址 + filePath: filePath, + name: 'file', + header: { + 'token': token + }, + success: (res) => { + let response; + try { + // 去除 BOM 字符并解析 JSON + response = JSON.parse(res.data.replace(/\ufeff/g, '') || '{}'); + } catch (e) { + uni.showToast({ title: '响应格式错误', icon: 'none' }); + if (errorCallback) errorCallback(e); + return; + } + + if (response.code === 1) { + const fileData = { + url: response.data.url, + extname: response.data.ext, + name: response.data.name + }; + + if (successCallback) { + successCallback(fileData); + } + } else if (response.code === 401) { + uni.showToast({ title: response.msg, icon: 'none' }); + setTimeout(() => { + uni.navigateTo({ url: '/pages/student/login/login' }); + }, 1000); + } else { + uni.showToast({ title: response.msg || '上传失败', icon: 'none' }); + if (errorCallback) errorCallback(response); + } + }, + fail: (err) => { + uni.showToast({ title: err.errMsg || '网络异常', icon: 'none' }); + if (errorCallback) errorCallback(err); + } + }); +} +/** + * 获取服务器上的资源完整 url + * @return {string} 完整的资源 URL + */ +function getResourceUrl(resource) { + //如果没有 http 协议,则加上 http 协议+服务域名 + return resource.indexOf('http') === -1 ? 'https://' + img_domian + resource : resource; +} module.exports = { loginOut, openHomeView, @@ -336,5 +397,6 @@ module.exports = { hexToRgba, img, formatToDateTime, - getDict + getDict, + uploadFile } diff --git a/uniapp/components/AQ/AQUplodeImgMulti.vue b/uniapp/components/AQ/AQUplodeImgMulti.vue index da3793e7..fc43ad76 100644 --- a/uniapp/components/AQ/AQUplodeImgMulti.vue +++ b/uniapp/components/AQ/AQUplodeImgMulti.vue @@ -159,12 +159,8 @@ import {Api_url} from "../../common/config"; header: { 'token': `${token}`,//请求头设置token }, - // formData: { - // 'age': '我是自定义参数' - // }, success: (uploadFileRes) => { let res = JSON.parse(uploadFileRes.data.replace(/\ufeff/g, "") || "{}") - console.log('上传成功1',res); if (res.code == 1){ let _arr = {} // 下面3个值是uni-app规定的一个不能少 @@ -173,7 +169,6 @@ import {Api_url} from "../../common/config"; _arr.name = res.data.name console.log('xxx',_arr) this.fileList.push(_arr) -console.log('上传成功2',_arr); this.filePathArr.push(res.data.url) //上传成功 this.emitUploadSuccess(this.filePathArr) diff --git a/uniapp/components/schedule/ScheduleDetail.vue b/uniapp/components/schedule/ScheduleDetail.vue new file mode 100644 index 00000000..fdeab7f8 --- /dev/null +++ b/uniapp/components/schedule/ScheduleDetail.vue @@ -0,0 +1,517 @@ + + + + + \ No newline at end of file diff --git a/uniapp/pages.json b/uniapp/pages.json index 4c85ede7..836e81a6 100644 --- a/uniapp/pages.json +++ b/uniapp/pages.json @@ -669,7 +669,7 @@ { "path": "pages/coach/schedule/schedule_table", "style": { - "navigationBarTitleText": "课程安排表", + "navigationBarTitleText": "课程安排", "navigationBarBackgroundColor": "#292929", "navigationBarTextStyle": "white" } diff --git a/uniapp/pages/coach/my/index.vue b/uniapp/pages/coach/my/index.vue index 8a06e476..fec563f7 100644 --- a/uniapp/pages/coach/my/index.vue +++ b/uniapp/pages/coach/my/index.vue @@ -38,13 +38,6 @@ - - 月授课数 - {{statisticsInfo.courseMonthNum}} - 节,月负责学员 - {{statisticsInfo.studentMonthNum}} - 名 - @@ -56,11 +49,6 @@ - - 即将到期 @@ -88,11 +76,16 @@ - - + + + + 课程安排 + + + 我的合同 @@ -254,6 +247,11 @@ showCancel: false }) }, + goCourseSchedule(){ + this.$navigateTo({ + url: '/pages/coach/schedule/schedule_table' + }) + } } } diff --git a/uniapp/pages/coach/schedule/schedule_detail.vue b/uniapp/pages/coach/schedule/schedule_detail.vue new file mode 100644 index 00000000..b3d6158c --- /dev/null +++ b/uniapp/pages/coach/schedule/schedule_detail.vue @@ -0,0 +1,481 @@ + + + + + \ No newline at end of file diff --git a/uniapp/pages/coach/schedule/schedule_table.vue b/uniapp/pages/coach/schedule/schedule_table.vue index 1284882c..72cb7c34 100644 --- a/uniapp/pages/coach/schedule/schedule_table.vue +++ b/uniapp/pages/coach/schedule/schedule_table.vue @@ -230,13 +230,26 @@ + + + - - \ No newline at end of file