From bb3ab5753e4e0cbdbf51dac2a0760b8b2cbd8e07 Mon Sep 17 00:00:00 2001 From: Lx <935448346@qq.com> Date: Fri, 11 Apr 2025 18:06:20 +0800 Subject: [PATCH] 0411 --- components/tabbar/VNavigationBar.vue | 130 ++++ newPages/appointment/index.vue | 2 - newPages/appointmentAdd/index.vue | 9 - newPages/appointmentDetail/index.vue | 11 - .../courseDetail/assets/style/index.rpx.scss | 25 +- newPages/courseDetail/index.vue | 7 - newPages/courseList/index.vue | 3 - newPages/evaluate/assets/style/index.rpx.scss | 8 +- newPages/evaluate/index.vue | 11 +- newPages/evaluateAdd/index.vue | 3 - newPages/examinationAdd/index.vue | 34 - newPages/examinationList/index.vue | 70 +- newPages/information/index.vue | 65 +- newPages/informationAdd/index.vue | 4 - newPages/messageCenter/index.vue | 260 +++++++ newPages/my/assets/style/index.rpx.scss | 121 +++- newPages/my/index.vue | 100 ++- newPages/newIndex/assets/style/index.rpx.scss | 2 +- newPages/newIndex/index.vue | 5 +- newPages/orderDetails/index.vue | 679 ++++++++++++++++++ .../orderList/assets/style/index.rpx.scss | 32 +- newPages/orderList/index.vue | 81 +-- newPages/register/index.vue | 228 +++++- .../schoolDetail/assets/style/index.rpx.scss | 28 +- newPages/schoolDetail/index.vue | 42 +- newPages/schoolList/index.vue | 92 +-- pages/index/contract.vue | 31 +- static/imgs/clear.png | Bin 0 -> 2173 bytes static/imgs/message-icon1.png | Bin 0 -> 6899 bytes static/imgs/nothing.png | Bin 0 -> 40779 bytes utils/utils.js | 38 + 31 files changed, 1693 insertions(+), 428 deletions(-) create mode 100644 components/tabbar/VNavigationBar.vue create mode 100644 newPages/messageCenter/index.vue create mode 100644 newPages/orderDetails/index.vue create mode 100644 static/imgs/clear.png create mode 100644 static/imgs/message-icon1.png create mode 100644 static/imgs/nothing.png diff --git a/components/tabbar/VNavigationBar.vue b/components/tabbar/VNavigationBar.vue new file mode 100644 index 0000000..28b6f92 --- /dev/null +++ b/components/tabbar/VNavigationBar.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/newPages/appointment/index.vue b/newPages/appointment/index.vue index 021e062..ab17bb8 100644 --- a/newPages/appointment/index.vue +++ b/newPages/appointment/index.vue @@ -154,7 +154,6 @@ }, tenantIdFlag: false }).then(res => { - console.log('获取预约列表', res) if (this.pageNo === 1) { this.total = res.data.total this.appointmentList = [] @@ -176,7 +175,6 @@ }, tenantIdFlag: false }).then(res => { - console.log('获取预约列表', res) if (this.pageNo === 1) { this.total = res.data.total this.appointmentList = [] diff --git a/newPages/appointmentAdd/index.vue b/newPages/appointmentAdd/index.vue index 1d256b2..5b8b988 100644 --- a/newPages/appointmentAdd/index.vue +++ b/newPages/appointmentAdd/index.vue @@ -135,7 +135,6 @@ export default { async onLoad() { this.getLoginUserCourseInfoList() this.timeColumns = await getDictDataByType('school_reserv_time'); - console.log('字典', this.timeColumns) }, onReady() { //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。 @@ -154,19 +153,14 @@ export default { this.appointmentInfo.userName = e.value[0].userName this.appointmentInfo.userId = e.value[0].userId this.getAllByCourseId(e.value[0].courseId) - console.log(e) this.showCourse = false }, confirmDate(e) { - console.log(e) this.appointmentInfo.dateStr = e[0] - console.log(this.appointmentInfo) this.showDate = false }, confirmTime(e) { - console.log(e) this.appointmentInfo.time = e.value[0].label - console.log(this.appointmentInfo) this.showTime = false }, restForm() { @@ -203,7 +197,6 @@ export default { }, //根据课程id查询报名进度 async getAllByCourseId(courseId) { - console.log('courseId', courseId) const res = await request({ url: '/app-api/process/getAllByCourseId', method: 'GET', @@ -217,7 +210,6 @@ export default { return item.status == 1 && item.subject != 1 && item.subject != 4 }) if (progress.length > 0) { - console.log('正在训练中的科目', progress) // 找出正在训练中的科目并且科目不是1和4 const subject = progress[0].subject this.$nextTick(() => { @@ -227,7 +219,6 @@ export default { this.appointmentInfo.coachName = progress[0].coachName this.appointmentInfo.coachId = progress[0].coachId this.appointmentInfo.trainTime = progress[0].trainTime - console.log('subject', this.appointmentInfo) } else { // 弹窗只能预约训练科目二 uni.showModal({ diff --git a/newPages/appointmentDetail/index.vue b/newPages/appointmentDetail/index.vue index 41dc561..037a193 100644 --- a/newPages/appointmentDetail/index.vue +++ b/newPages/appointmentDetail/index.vue @@ -78,13 +78,11 @@ export default { onLoad(options) { this.appointmentInfo = JSON.parse(options.data) this.getAllTrainTime() - console.log(this.appointmentInfo) if (options.type === 'train') { this.isTrain = true } else { this.isTrain = false } - console.log(this.isTrain) }, methods: { async getAllTrainTime() { @@ -98,9 +96,6 @@ export default { tenantIdFlag: false, }); - console.log("获取所有训练时间", res); - console.log("当前科目:", this.appointmentInfo.subject); - // 确保 appointmentInfo.subject 已有值 if (!this.appointmentInfo.subject) { console.warn("appointmentInfo.subject 为空,等待赋值..."); @@ -110,14 +105,8 @@ export default { (item) => item.subject == this.appointmentInfo.subject ); - console.log("匹配的训练时间数据:", data); - this.appointmentInfo.trainTime = data ? data.trainTime || "0" : "0"; - console.log( - "this.appointmentInfo.trainTime", - this.appointmentInfo.trainTime - ); } catch (error) { console.error("获取训练时间失败:", error); } diff --git a/newPages/courseDetail/assets/style/index.rpx.scss b/newPages/courseDetail/assets/style/index.rpx.scss index f07bc34..ca158d4 100644 --- a/newPages/courseDetail/assets/style/index.rpx.scss +++ b/newPages/courseDetail/assets/style/index.rpx.scss @@ -195,11 +195,13 @@ .text-wrapper_2 { background-color: rgba(223, 235, 255, 1); border-radius: 2px; - height: 36rpx; - width: 92rpx; + /* height: 36rpx; + width: 92rpx; */ + padding: 0 5rpx 0 5rpx; .text_7 { - width: 72rpx; - height: 24rpx; + /* width: 72rpx; + height: 24rpx; */ + overflow-wrap: break-word; color: rgba(44, 120, 245, 1); font-size: 24rpx; @@ -208,17 +210,20 @@ text-align: left; white-space: nowrap; line-height: 24rpx; - margin: 6rpx 0 0 10rpx; + margin: 6rpx 10rpx 0 10rpx; } } .text-wrapper_3 { background-color: rgba(255, 239, 229, 1); border-radius: 2px; - height: 36rpx; - width: 52rpx; + /* height: 36rpx; + width: 52rpx; */ + margin-left: 10rpx; + padding: 0 5rpx; .text_8 { - width: 32rpx; - height: 24rpx; + /* width: 32rpx; + height: 24rpx; */ + overflow-wrap: break-word; color: rgba(123, 81, 11, 1); font-size: 24rpx; @@ -227,7 +232,7 @@ text-align: left; white-space: nowrap; line-height: 24rpx; - margin: 6rpx 0 0 10rpx; + margin: 6rpx 10rpx 0 10rpx; } } } diff --git a/newPages/courseDetail/index.vue b/newPages/courseDetail/index.vue index 7bbb3c0..1f13063 100644 --- a/newPages/courseDetail/index.vue +++ b/newPages/courseDetail/index.vue @@ -82,11 +82,9 @@ export default { onLoad(options) { this.courseId = options.courseId; this.tenantId = options.tenantId; - console.log(options) this.getCourseDetails(); this.userDetails = getLocalUserInfo(); this.getServicePhone() - console.log('123123', this.userDetails) }, methods: { goBack() { @@ -105,8 +103,6 @@ export default { tenantIdFlag: false }).then(res => { this.courseDetails = res.data; - - console.log('驾校课程列表', this.schoolAllClassList); }) }, zxkf() { @@ -123,9 +119,6 @@ export default { } }).then(res => { this.driveSchoolPhone = res.data - console.log('客服电话res', res) - console.log('客服电话1', this.driveSchoolPhone) - console.log('客服电话2', this.driveSchoolPhone.phone) }) }, diff --git a/newPages/courseList/index.vue b/newPages/courseList/index.vue index 2bc54c1..084d8ad 100644 --- a/newPages/courseList/index.vue +++ b/newPages/courseList/index.vue @@ -62,8 +62,6 @@ export default { onLoad(options) { if (options.tenantId) { this.tenantId = options.tenantId - console.log("首页传入数据", options) - console.log("驾校租户id", this.tenantId) this.getSchoolAllClass() } }, @@ -88,7 +86,6 @@ export default { }).then(res => { this.schoolAllClassList = res.data; this.total = res.data.total; - console.log('驾校课程列表', this.schoolAllClassList); }) }, diff --git a/newPages/evaluate/assets/style/index.rpx.scss b/newPages/evaluate/assets/style/index.rpx.scss index 77798e3..40af3ad 100644 --- a/newPages/evaluate/assets/style/index.rpx.scss +++ b/newPages/evaluate/assets/style/index.rpx.scss @@ -33,7 +33,8 @@ } .group_4 { width: 750rpx; - height: 1534rpx; + // height: 1534rpx; + height: 100%; margin-bottom: 2rpx; .group_5 { background-color: rgba(255, 255, 255, 1); @@ -93,9 +94,8 @@ } .list_1 { width: 686rpx; - height: 464rpx; - justify-content: space-between; - margin: 20rpx 0 954rpx 32rpx; + justify-content: center; + margin: 20rpx 0 0 32rpx; .list-items_1 { background-color: rgba(255, 255, 255, 1); border-radius: 8px; diff --git a/newPages/evaluate/index.vue b/newPages/evaluate/index.vue index fe70b38..d0417f3 100644 --- a/newPages/evaluate/index.vue +++ b/newPages/evaluate/index.vue @@ -9,7 +9,7 @@ { - console.log(res) this.total = res.data.total if (this.pageNo == 1) { this.evaluate = res.data.records @@ -139,7 +139,7 @@ export default { // 获取屏幕高度 const screenHeight = uni.getSystemInfoSync().windowHeight; // 获取顶部区域高度 - const topHeight = 160; + const topHeight = 120; // 计算滚动区域高度 this.scrollHeight = screenHeight - topHeight; }, @@ -185,4 +185,9 @@ export default { text-overflow: ellipsis; } +.itemContent { + height: 100% !important; /* 确保高度生效 */ + flex: 1; /* 填充剩余空间 */ +} + diff --git a/newPages/evaluateAdd/index.vue b/newPages/evaluateAdd/index.vue index 9b4cb82..763e6af 100644 --- a/newPages/evaluateAdd/index.vue +++ b/newPages/evaluateAdd/index.vue @@ -93,7 +93,6 @@ }, onLoad(options) { const data = JSON.parse(options.data); - console.log('穿进来的数据'); // 判断新增还是查看 if (options.controls) { this.show = true @@ -121,8 +120,6 @@ } else { Object.assign(this.info, data); } - - console.log(this.info) }, methods: { changeRate() {}, diff --git a/newPages/examinationAdd/index.vue b/newPages/examinationAdd/index.vue index c772edd..f852506 100644 --- a/newPages/examinationAdd/index.vue +++ b/newPages/examinationAdd/index.vue @@ -164,7 +164,6 @@ export default { }, onLoad(options) { this.userInfo = getLocalUserInfo() - console.log('userInfo', this.userInfo) this.getUserOrderDetails() this.process.subject = options.subject this.opTenantId = options.tenantId @@ -180,8 +179,6 @@ export default { this.process.userId = this.userInfo.id this.process.coachId = options.coachId this.process.userName = options.nickname - console.log('options', options) - console.log('batchItemId', this.batchItemId) }, computed: { displayFileList() { @@ -209,8 +206,6 @@ export default { }); }, ifPassOnConfirm(value) { - console.log('选中的值:', value); - const statusMap = { '已通过': 1, '未通过': 0 @@ -218,17 +213,11 @@ export default { // 更新数据 this.process.examStatus = statusMap[value.value[0]]; - console.log('value[0]', value.value[0]) this.selectedValue = value.value[0]; this.show = false; - - console.log('examStatus:', this.process.examStatus); - console.log('process', this.process) }, subjectOnConfirm(value) { - console.log('选中的值:', value); - const statusMap = { '科目一': 1, '科目四': 4 @@ -236,16 +225,11 @@ export default { // 更新数据 this.process.subject = statusMap[value.value[0]]; - console.log('value[0]', value.value[0]) this.subjectValue = value.value[0]; this.subjectShow = false; - - console.log('subject:', this.process.subject); - console.log('process', this.process) }, onConfirmExamTime(value) { - console.log("选中的时间:", value); this.process.examTime = value; this.showTimePicker = false; }, @@ -292,7 +276,6 @@ export default { } }, uploadFilePromise(filePath) { - console.log('图片地址', filePath) return new Promise((resolve, reject) => { upload({ url: '/app-api/small-upload/common/upload', @@ -300,8 +283,6 @@ export default { }).then((res) => { if (res.data && res.data.url) { resolve(res.data.url); - console.log('返回', res) - console.log('返回url', res.data.url) } else { reject(new Error('上传失败')); } @@ -321,7 +302,6 @@ export default { tenantIdFlag: false }).then(res => { this.orderList = res.data.records; - console.log('订单信息', res.data) if (res.data.records.length > 0) { const tempData = res.data.records[0] if (this.process.subject != 2 && this.process.subject != 3) { @@ -339,8 +319,6 @@ export default { }, getCourseCompleteStatus() { - console.log('userId', this.userId) - console.log('courseId', this.process.courseId) request({ url: '/app-api/process/page', method: 'GET', @@ -350,17 +328,11 @@ export default { } }).then(res => { this.courseCompleteStatusList = res.data.records - console.log('res.data', res.data) if (this.courseCompleteStatusList.length > 0) { - console.log('courseCompleteStatusList', this.courseCompleteStatusList) const subject2 = this.courseCompleteStatusList.find(item => item.subject === 2) const subject3 = this.courseCompleteStatusList.find(item => item.subject === 3) - console.log('subject2', subject2) - console.log('subject3', subject3) - console.log(subject2?.status === '2' && subject3?.status === '2') if (subject2?.status === '2' && subject3?.status === '2') { - console.log(subject2?.status === 2 && subject3?.status === 2) this.subjectColumns = [['科目一', '科目四']] } } @@ -381,20 +353,16 @@ export default { }, saveDataOne() { if (this.process.subject === 1 && this.courseCompleteStatusList.length <= 0) { - console.log('this.courseCompleteStatusList', this.courseCompleteStatusList) uni.showToast({title: '请联系驾校人员', icon: 'none'}); return; } if (this.process.subject === 4 && this.courseCompleteStatusList.length <= 0) { - uni.showToast({title: '请联系驾校人员', icon: 'none'}); return; } - console.log('courseCompleteStatusList', this.courseCompleteStatusList.length) this.process.images = this.fileList?.map(item => item.url).join(',') || ''; - console.log('process', this.process) if (!this.process.userId || !this.process.subject || !this.process.examScore || !this.process.examStatus || !this.process.examTime) { uni.showToast({title: '信息填写不完整', icon: 'none'}); @@ -432,8 +400,6 @@ export default { remark: this.process.remark, images: this.fileList?.map(item => item.url).join(',') || '', } - - console.log('提交数据是:', postData) /* this.process.userId = this.userInfo.id this.process.tenantId = this.opTenantId this.process.fraction = this.process.examScore diff --git a/newPages/examinationList/index.vue b/newPages/examinationList/index.vue index 70bcd14..3bb516d 100644 --- a/newPages/examinationList/index.vue +++ b/newPages/examinationList/index.vue @@ -48,45 +48,12 @@ - + {{ getButtonInfo(item).text }} - + @@ -185,6 +152,7 @@ export default { }, + // 点击笔试成绩录入的时候 检查是否已报名课程 onEnterScoreClick() { if (this.courseList.length > 0) { this.pickerColumns = this.courseList.map(item => ({ @@ -193,21 +161,17 @@ export default { })); this.pickerShow = true; } else if (this.courseList.length === 1) { - console.log('1231231',this.courseList[0]) this.goToScoreEntry(this.courseList[0]); } else { this.$u.toast("暂无课程信息"); } }, + // 选择课程后检查是否有课程进度信息 onPickerConfirm(e) { const selectedCourseId = e.value[0]; const selectedCourse = this.courseList.find(item => item.courseId === selectedCourseId.value); - console.log('courseList', this.courseList); - console.log('selectedCourseId', selectedCourseId); - console.log('selectedCourse', selectedCourse); - if (selectedCourse) { this.getProcess(selectedCourse.courseId).then(processData => { if (!processData || processData.length === 0) { @@ -224,7 +188,6 @@ export default { ); if (hasSubject1Or4) { - console.log('selectedCourse', this.selectedCourse) this.goToScoreEntry(selectedCourse); } else { uni.showToast({ @@ -238,8 +201,8 @@ export default { this.pickerShow = false; }, + // 跳转成绩录入界面 goToScoreEntry(course) { - console.log('course', course) this.$u.route({ url: '/newPages/examinationAdd/index', params: { @@ -252,6 +215,7 @@ export default { }); }, + // 获取课程进度 getProcess(courseId) { return new Promise((resolve, reject) => { request({ @@ -262,7 +226,6 @@ export default { courseId: courseId, } }).then(res => { - console.log('res123', res); this.processList = res.data; resolve(res.data); }).catch(err => { @@ -272,6 +235,7 @@ export default { }); }, + // 获取考试信息 getExamList() { request({ url: '/app-api/process/getExamListByUserId', @@ -281,13 +245,11 @@ export default { } }).then(res => { this.examList = res.data - this.getExamTwoList() - console.log('examList', this.examList) - console.log('res', res) + // this.getExamTwoList() this.isTriggered = false }) }, - getExamTwoList() { + /* getExamTwoList() { request({ url: '/app-api/examBatch/selectExamByUserIdAndCoachId', method: 'GET', @@ -299,16 +261,19 @@ export default { console.log('examTwoList', this.examTwoList) console.log('resTwo', res) }) - }, + }, */ + + // 获取课程信息 getCourseList() { request({ url: '/app-api/small/drive/school-course-order/getCourseByLoginUser', method: 'GET' }).then(res => { this.courseList = res.data - console.log('res111', res) }) }, + + // 转换考试状态 getStatusText(status) { const statusMap = { 0: '未通过', @@ -321,7 +286,7 @@ export default { return statusMap[status] || '未知状态'; }, - + // 转换科目 getCourseTypeText(status) { const statusMap = { '1': '科目一', @@ -331,6 +296,8 @@ export default { }; return statusMap[status] || '未知状态'; }, + + // 格式化时间 formatDate(timestamp) { const date = new Date(timestamp); const year = date.getFullYear(); @@ -348,8 +315,8 @@ export default { this.scrollHeight = screenHeight - topHeight; }, + getButtonInfo(item) { - console.log('item', item) if (item.fraction == null) { return {text: '成绩录入', type: 'input'} } else if (!item.ifPass) { @@ -364,6 +331,7 @@ export default { // } }, + // handleButtonClick(item) { const buttonInfo = this.getButtonInfo(item) diff --git a/newPages/information/index.vue b/newPages/information/index.vue index 4211896..a5dddcf 100644 --- a/newPages/information/index.vue +++ b/newPages/information/index.vue @@ -24,7 +24,7 @@ :maxCount="1" width="70rpx" height="70rpx" - border-radius="50%" + > + + + {{ nowReadItem.templateContent }} + + + + + + + + + diff --git a/newPages/my/assets/style/index.rpx.scss b/newPages/my/assets/style/index.rpx.scss index c5d3b9e..a47c34b 100644 --- a/newPages/my/assets/style/index.rpx.scss +++ b/newPages/my/assets/style/index.rpx.scss @@ -89,14 +89,17 @@ background-color: rgba(255, 255, 255, 1); height: 116rpx; width: 116rpx; + border-radius: 10rpx; .image-wrapper_2 { background-color: rgba(177, 205, 255, 1); height: 108rpx; width: 108rpx; margin: 4rpx 0 0 4rpx; + border-radius: 10rpx; .image_2 { width: 108rpx; height: 108rpx; + border-radius: 10rpx; } } } @@ -171,12 +174,13 @@ .label_2 { width: 80rpx; height: 80rpx; + border-radius:10rpx; } } .text-group_3 { width: 112rpx; height: 72rpx; - margin: 34rpx 0 0 10rpx; + margin: 34rpx 0 0 30rpx; .text_4 { width: 84rpx; height: 28rpx; @@ -336,8 +340,10 @@ width: 646rpx; height: 56rpx; margin: 50rpx 0 0 52rpx; + background-color: #000; .image-wrapper_4 { - background-color: rgba(223, 235, 255, 1); + // background-color: rgba(223, 235, 255, 1); + background-color: #aa0000; border-radius: 50%; height: 56rpx; width: 56rpx; @@ -404,6 +410,8 @@ width: 646rpx; height: 56rpx; margin: 50rpx 0 436rpx 52rpx; + display: flex; + justify-content: space-between; .image-wrapper_6 { background-color: rgba(223, 235, 255, 1); border-radius: 50%; @@ -416,7 +424,7 @@ } } .text_13 { - width: 128rpx; + width: 500rpx; height: 32rpx; overflow-wrap: break-word; color: rgba(51, 51, 51, 1); @@ -502,4 +510,111 @@ line-height: 28rpx; margin: 10rpx 0 40rpx 30rpx; } + + /* .menu-list { + margin-top: 20rpx; + background-color: #fff; + border-radius: 20rpx; + overflow: hidden; + padding: 0 20rpx; + } + + .menu-item { + display: flex; + align-items: center; + justify-content: center; + padding: 30rpx 10rpx; + border-bottom: 1rpx solid #f0f0f0; + + &:last-child { + border-bottom: none; + } + } + + .menu-icon { + width: 32rpx; + height: 32rpx; + margin: 12rpx 20rpx 0 12rpx; + } + + .menu-text { + flex: 1; + font-size: 30rpx; + color: #333; + } + + .menu-arrow { + width: 32rpx; + height: 32rpx; + margin: 12rpx 0 0 400rpx; + } */ + + .menu-list { + margin: 20rpx 32rpx; + background-color: #fff; + border-radius: 16rpx; + overflow: hidden; + box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.05); + + .menu-item, .menu-item-btn { + display: flex; + align-items: center; + padding: 40rpx 32rpx; + // border-bottom: 1rpx solid #f5f5f5; + position: relative; + + &:last-child { + border-bottom: none; + } + + .menu-icon { + width: 36rpx; + height: 36rpx; + margin-right: 24rpx; + flex-shrink: 0; + } + + .menu-text { + flex: 1; + font-size: 30rpx; + color: #333; + font-weight: 400; + } + + .menu-arrow { + width: 24rpx; + height: 24rpx; + margin-left: auto; + flex-shrink: 0; + } + + .message-num { + margin-right: 16rpx; + width: 36rpx; + height: 36rpx; + background: #ff4d4f; + border-radius: 50%; + color: #fff; + font-size: 24rpx; + display: flex; + align-items: center; + justify-content: center; + } + } + + .menu-item-btn { + text-align: left; + justify-content: flex-start; + background: none; + border: none; + padding: 0; + line-height: normal; + width: 100%; + &::after { + display: none !important; + border: none !important; + } + } + + } } diff --git a/newPages/my/index.vue b/newPages/my/index.vue index a7e36a4..9fd16f6 100644 --- a/newPages/my/index.vue +++ b/newPages/my/index.vue @@ -76,7 +76,9 @@ - + + + + + + + + + + + 个人信息 + + + + + + + + + + 消息中心 + {{ noReadNum }} + + + + @@ -155,6 +214,7 @@ export default { processList: {}, showQrCode: false, isCreateQrCode:true, + noReadNum:0, loopData: [ { url: '/static/myImgs/alreadyPaid.png', @@ -187,7 +247,6 @@ export default { }, onLoad() { this.selfInfoLocal = getLocalUserInfo() - console.log("用户信息", this.selfInfoLocal) this.getUserInfo() }, onShow() { @@ -234,7 +293,6 @@ export default { this.showQrCode = false }, openQrCode(){ - console.log(this.userDetails,'202222') // 判断是否有二维码 有了不需要绘制 if (this.isCreateQrCode){ this.createQrCode(this.userDetails.uniqueCode) @@ -262,6 +320,11 @@ export default { url: `/newPages/information/index?userId=${this.selfInfo.id}` }) }, + goFeedback(){ + uni.navigateTo({ + url: "/newPages/messageCenter/index" + }) + }, getUserInfo() { @@ -275,7 +338,7 @@ export default { } this.getOrder() this.getStudentInfo() - console.log('userDetails', this.selfInfo) + this.getNoReadNum() }) }, getStudentInfo(){ @@ -284,7 +347,6 @@ export default { method: 'GET', params: { userId: this.selfInfo.id } }).then(res => { - console.log('userDetailsRes', res) this.userDetails = { ...res.data }; }); }, @@ -298,7 +360,6 @@ export default { } }).then(res => { this.coachDetails = res.data - console.log('coachDetails', this.coachDetails); }) }, @@ -309,7 +370,6 @@ export default { }).then(res => { this.orderList = res.data if (this.orderList.length > 0) { - console.log('orderList', this.orderList) this.getProcess(this.orderList[0].courseId) } @@ -345,13 +405,25 @@ export default { // 如果没有数据,result 保持 null } - console.log('最终结果:', result); // 调试用,可删除 return result; // 如果需要返回结果,可以加上 return }).catch(error => { console.error('请求出错:', error); return null; // 出错时也返回 null }); - } + }, + + //获取未读消息数量 + async getNoReadNum(){ + await request({ + url: "/app-api/system/notify-message/get-unread-count", + method: "GET", + tenantIdFlag:false + }).then((res) => { + if(res.code==0){ + this.noReadNum = res.data + } + }) + }, } }; diff --git a/newPages/newIndex/assets/style/index.rpx.scss b/newPages/newIndex/assets/style/index.rpx.scss index 328b4d4..c5e8ef0 100644 --- a/newPages/newIndex/assets/style/index.rpx.scss +++ b/newPages/newIndex/assets/style/index.rpx.scss @@ -103,7 +103,7 @@ } .section_2 { width: 750rpx; - height: 1108rpx; + height: 1020rpx; .list_1 { width: 618rpx; height: 112rpx; diff --git a/newPages/newIndex/index.vue b/newPages/newIndex/index.vue index 72051de..d9ed936 100644 --- a/newPages/newIndex/index.vue +++ b/newPages/newIndex/index.vue @@ -115,7 +115,7 @@ export default { }).then(res => { res.data.records.forEach(item => { item.features = ['有接送', '规模大'] - item.imageUrl = '/static/lanhu_shouye2gai/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png' + item.imageUrl = this.imageUrl + '/' + item.photo }) this.schoolList = this.schoolList.concat(res.data.records) this.isTriggered = false @@ -148,7 +148,6 @@ export default { item.swiperPicture = this.imageUrl + item.swiperPicture }) this.swiperList = res.data - console.log('轮播图', this.swiperList) }) }, /** @@ -182,7 +181,7 @@ export default { }, goSchoolDetail(data) { uni.navigateTo({ - url: `/newPages/schoolDetail/index?id=${data.id}&tenantId=${data.tenantId}`, + url: `/newPages/schoolDetail/index?id=${data.id}&tenantId=${data.tenantId}&schoolName=${data.corpName}`, // url: '/newPages/schoolDetail/index', }); }, diff --git a/newPages/orderDetails/index.vue b/newPages/orderDetails/index.vue new file mode 100644 index 0000000..a27f727 --- /dev/null +++ b/newPages/orderDetails/index.vue @@ -0,0 +1,679 @@ + + + + + + diff --git a/newPages/orderList/assets/style/index.rpx.scss b/newPages/orderList/assets/style/index.rpx.scss index 0f4d47c..083f63a 100644 --- a/newPages/orderList/assets/style/index.rpx.scss +++ b/newPages/orderList/assets/style/index.rpx.scss @@ -93,16 +93,16 @@ } } .list_1 { - width: 686rpx; + width: 720rpx; height: 766rpx; justify-content: space-between; - margin: 112rpx 0 560rpx 32rpx; + margin: 112rpx 20rpx 560rpx 20rpx; .list-items_1 { background-color: rgba(255, 255, 255, 1); border-radius: 8px; - height: 242rpx; + height: 250rpx; margin-bottom: 20rpx; - width: 686rpx; + width: 710rpx; .box_6 { width: 646rpx; height: 40rpx; @@ -221,7 +221,7 @@ background-color: rgba(223, 235, 255, 1); border-radius: 2px; height: 36rpx; - width: 92rpx; + width: 52rpx; position: absolute; left: 232rpx; top: 48rpx; @@ -241,6 +241,28 @@ } } } + .action-buttons { + width: 100%; + // padding: 0 20rpx 20rpx; + margin-top: -10rpx; + + .action-btn { + height: 55rpx; + line-height: 55rpx; + border-radius: 18rpx; + font-size: 20rpx; + padding: 0 20rpx; + margin: 0 40rpx; + // background-color: #b1b1b1; + border: 1rpx solid #b1b1b1; + color: #636363; + + &::after { + border: none; + } + } + + } } } .group_2 { diff --git a/newPages/orderList/index.vue b/newPages/orderList/index.vue index 74fe438..7374d31 100644 --- a/newPages/orderList/index.vue +++ b/newPages/orderList/index.vue @@ -24,7 +24,7 @@ :refresher-triggered="isRefreshing" @refresherrefresh="onRefresherrefresh" > - + 订单号: {{item.orderNo}} @@ -44,19 +44,25 @@ {{item.courseName}} - {{item.reserveMoney}} - {{item.reserveMoney}} + ¥{{item.reserveMoney}} + + - - {{item.type}} - + {{item.type}} + + + + + @@ -158,12 +164,17 @@ export default { loading: false, isRefreshing: false, statusMap: { - 5: {name: '已完成', background: 'rgba(255,228,228,1)', color: 'rgba(237,58,58,1)'}, - 4: {name: '已面签', background: 'rgba(255,228,228,1)', color: 'rgba(237,58,58,1)'}, - 3: {name: '待面签', background: 'rgba(255,228,228,1)', color: 'rgba(237,58,58,1)'}, - 2: {name: '已付款', background: 'rgba(255,244,228,1)', color: 'rgba(237,162,58,1)'}, - 1: {name: '未付款', background: 'rgba(255,228,228,1)', color: 'rgba(237,58,58,1)'}, - 0: {name: '待支付', background: 'rgba(255,228,228,1)', color: 'rgba(237,58,58,1)'}, + 8: { name: '退款成功', background: '#fef0f0', color: '#f56c6c' }, // 红色柔和 + 7: { name: '退款中', background: '#fef0f0', color: '#f56c6c' }, // 红色柔和 + 6: { name: '申请退款', background: '#fef0f0', color: '#f56c6c' }, // 红色柔和 + + 5: { name: '已完成', background: '#f0f9eb', color: '#67c23a' }, // 绿色完成 + 4: { name: '已面签', background: '#ecf5ff', color: '#409EFF' }, // 蓝色稳定 + 3: { name: '待面签', background: '#fdf6ec', color: '#e6a23c' }, // 橙色提醒 + + 2: { name: '已支付', background: '#f0f9eb', color: '#67c23a' }, // 绿色支付成功 + 1: { name: '已取消', background: '#f4f4f5', color: '#909399' }, // 灰色中立 + 0: { name: '待支付', background: '#fdf6ec', color: '#e6a23c' }, // 橙色提醒 } }; }, @@ -175,11 +186,6 @@ export default { // this.type = options.type; // this.getUserOrderDetails(this.orderType); // 页面加载时请求数据 // this.getUserOrderDetails(options.orderType); - console.log('options', options) - console.log('type', this.type) - console.log('type', this.type === 2) - console.log('orderType', this.orderType) - console.log('orderType', this.orderType === 2) this.changeOrderType(this.orderType, this.type) }, @@ -225,23 +231,7 @@ export default { this.getUserOrderDetails(this.orderType, true); }, - /* getUserOrderDetails(paymentStatus) { - console.log(paymentStatus) - console.log(this.userId) - request({ - url: '/app-api/small/drive/school-course-order/page', - method: 'GET', - params: { - userId: this.userId, - paymentStatus:paymentStatus - }, - tenantIdFlag : false - }).then(res => { - this.orderList = res.data.records; - console.log('订单信息',res.data) - }); - }, */ - + // 获取用户订单详情 getUserOrderDetails(paymentStatus, isRefresh = false) { if (!isRefresh && this.loading) return; @@ -272,8 +262,6 @@ export default { this.total = res.data.total; this.loading = false; - - console.log('订单信息', res.data); }).catch(err => { this.loading = false; this.isRefreshing = false; @@ -283,18 +271,21 @@ export default { console.error('获取订单失败', err); }); }, + + // 判断选择的标签 changeOrderType(orderType, type) { this.orderType = orderType; this.type = type; this.pageNo = 1; - console.log('type', type) - console.log('orderType', orderType) this.getUserOrderDetails(orderType); // 切换 Tab 时重新请求数据 // this.updateUnderlinePosition(type); }, + // 支付状态 getStatusStyle(status) { return this.statusMap[status] || {name: '未知状态', background: '', color: ''}; }, + + // 获取课程详情 getCourseDetails() { request({ url: '/app-api/dl-drive-school-course-small/get', @@ -308,6 +299,15 @@ export default { this.courseDetails = res.data; }) }, + + // 订单详情 + goOrderDetails(data){ + uni.navigateTo({ + // url: `/newPages/orderDetails/index?data=${data}` + url: `/newPages/orderDetails/index?data=${encodeURIComponent(JSON.stringify(data))}` + }) + }, + calculateScrollHeight() { // 获取屏幕高度 const screenHeight = uni.getSystemInfoSync().windowHeight; @@ -316,11 +316,6 @@ export default { // 计算滚动区域高度 this.scrollHeight = screenHeight - topHeight; }, - /* updateUnderlinePosition(type) { - const index = parseInt(type) - 1; // 计算选中的索引(从 0 开始) - const tabWidth = uni.getSystemInfoSync().windowWidth / 4; // 假设有 4 个选项,均分屏幕宽度 - this.underlinePosition = index * tabWidth; - }, */ } }; diff --git a/newPages/register/index.vue b/newPages/register/index.vue index 76538b9..9369bb6 100644 --- a/newPages/register/index.vue +++ b/newPages/register/index.vue @@ -21,7 +21,7 @@ ¥{{ rightInfoList.price }} - ¥{{ rightInfoList.price }} + @@ -205,6 +205,7 @@ export default { userinfo: [], payPrice: null, payStatus: null, + oldOrderDetails: [], loading: false, columns: [ [{ @@ -232,11 +233,6 @@ export default { this.userId = option.userId, this.tenantId = option.tenantId this.userinfo = getLocalUserInfo() - console.log("驾校id", this.jxId, "课程id", this.courseId) - console.log("userId", this.userId, "tenantId", this.tenantId) - console.log("userinfo", this.userinfo) - console.log('当前存储的所有键:', uni.getStorageInfoSync().keys) - console.log('token值:', uni.getStorageSync('App-Token')) }, onShow() { this.getListAll() @@ -292,7 +288,6 @@ export default { }, tenantIdFlag: false }) - console.log(res); this.columnjl = [ res.data.map(coach => ({ label: coach.name, @@ -312,7 +307,6 @@ export default { }, // 选择教练 jlconfirm(e) { - console.log("选中教练:", e.value[0]); this.jlName = e.value[0].label; // 显示名称 this.jlId = e.value[0].value.userId; // 获取教练ID this.showjl = false; @@ -414,7 +408,6 @@ export default { // 3. 创建新订单 await this.createNewOrder(); } catch (error) { - console.error("报名出错:", error); if (!error.message.includes('cancel')) { uni.showToast({title: error.message || '操作失败', icon: 'none'}); } @@ -493,16 +486,28 @@ export default { adress: this.Address, name: this.name, tenantId: this.tenantId, - type: this.rightInfoList.price, - money: this.getRightInfoList, + type: this.rightInfoList.type, + carType: this.getLicenseTypeDescription(this.rightInfoList.type), + money: this.rightInfoList.price, indent: this.identity, phone: this.phone, time: this.getCurrentDateTime() + }; - uni.navigateTo({ + /* uni.navigateTo({ url: '/pages/index/contract?data=' + encodeURIComponent(JSON.stringify(contractData)) - }); - } + }); */ + uni.navigateTo({ + url: '/pages/index/contract?data=' + encodeURIComponent(JSON.stringify(contractData)) + + '&callback=' + encodeURIComponent('handleContractSigned') + }); + } else { + uni.showToast({ + title: '订单创建失败,请稍后再试', + icon: 'none', + duration: 2000 + }); + } }, async getRightInfoList() { @@ -512,11 +517,15 @@ export default { }) this.rightInfoList = res.data, this.currentPrice = this.rightInfoList.price; - console.log("111222333", this.rightInfoList) }, + + // 线下支付合同签署完成后调用的方法 + handleContractSigned() { + this.insertSchoolStudent(); + }, // 处理已存在的订单 - async processExistingOrder() { + /* async processExistingOrder() { uni.showLoading({title: '准备支付...', mask: true}); try { @@ -526,17 +535,7 @@ export default { url: `/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}`, method: 'get' }); - /* if(res.userName != this.name || - res.userPhone != this.phone || - res.coachUserId != this.jlId || - res.coachUserName != jlName || - res.userNo != this.identity || - res.userSex != this.sex || - res.reserveMoney != this.payPrice || - res.payType != this.payType - res.restMoney != ){ - - } */ + const result = await this.handleWxPayment(res); if (result === 'success') { @@ -554,8 +553,141 @@ export default { } finally { uni.hideLoading(); } - }, + }, */ + + async processExistingOrder() { + uni.showLoading({title: '准备支付...', mask: true}); + + try { + // 1. 准备当前数据 + const payType = this.selectedPayType; + const reserveMoney = payType === 1 + ? this.rightInfoList.reserveMoney + : this.rightInfoList.price; + const restMoney = payType === 1 + ? this.rightInfoList.price - reserveMoney + : 0; + + // 2. 获取并对比订单数据 + const orderDetail = await this.getOrderDetail(this.orderId); + const needUpdate = this.checkOrderNeedUpdate(orderDetail, { + userName: this.name, + userPhone: this.phone, + coachUserId: this.jlId, + coachUserName: this.jlName, + userNo: this.identity, + userSex: this.sex, + reserveMoney: reserveMoney, + payType: payType, + restMoney: restMoney + }); + + // 3. 更新订单数据(如有变更) + if (needUpdate) { + this.orderNo = await this.generateOrderNo() + await this.updateOrderData({ + id: this.orderId, + userName: this.name, + userPhone: this.phone, + userSex: this.sex, + userNo: this.identity, + coachUserName: this.jlName, + coachUserId: this.jlId, + reserveMoney: reserveMoney, + payType: payType, + restMoney: restMoney, + orderNo: this.orderNo, + paymentStatus: '0' // 重置为未支付状态 + }); + + // 更新成功后保存新的原始数据 + this.saveOriginalFormData(); + } + + // 4. 处理支付 + if (this.startPay === 1) { + const res = await request({ + url: `/small/jxInfo/prepayment?type=jsapi&orderNo=${this.orderNo}&orderId=${this.orderId}&payType=${payType}`, + method: 'get' + }); + + const result = await this.handleWxPayment(res); + if (result === 'success') { + await Promise.all([ + this.updateOrderStatus(this.orderId, '2'), + this.insertSchoolStudent() + ]); + this.signContract(); + } + return result; + } else { + this.xxiaPayClick(); + return 'success'; + } + } finally { + uni.hideLoading(); + } + }, + + // 检查订单是否需要更新 + checkOrderNeedUpdate(orderDetail, currentData) { + const fieldsToCheck = [ + 'userName', + 'userPhone', + 'coachUserId', + 'coachUserName', + 'userNo', + 'userSex', + 'reserveMoney', + 'payType', + 'restMoney' + ]; + + return fieldsToCheck.some(field => { + // 特殊处理数字类型的字段 + if (['reserveMoney', 'restMoney'].includes(field)) { + return Number(orderDetail[field]) !== Number(currentData[field]); + } + return orderDetail[field] !== currentData[field]; + }); + }, + // 获取订单详情 + async getOrderDetail(orderId) { + const res = await request({ + url: '/app-api/small/drive/school-course-order/get?id=' + orderId, + method: 'GET' + }); + return res.data; + }, + + // 更新订单数据 + async updateOrderData(orderData) { + const res = await request({ + url: '/app-api/small/drive/school-course-order/update', + method: 'put', + data: orderData + }); + return res.data; + }, + + saveOriginalFormData() { + this.originalFormData = { + jlName: this.jlName, // 教练姓名 + jlId: this.jlId, // 教练ID + sfzimg: this.sfzimg, // 身份证照片 + name: this.name, // 学员姓名 + age: this.age, // 年龄 + sex: this.sex, // 性别 + identity: this.identity, // 身份证号 + phone: this.phone, // 手机号 + selectedPayType: this.selectedPayType, // 支付类型(1:定金 2:全款) + currentPrice: this.currentPrice, // 当前显示价格 + reserveMoney: this.rightInfoList.reserveMoney, // 定金金额 + restMoney: this.rightInfoList.price - this.rightInfoList.reserveMoney // 尾款金额 + }; + this.formModified = false; // 重置修改标志 + }, // 微信支付处理 handleWxPayment(paymentParams) { @@ -598,6 +730,16 @@ export default { uni.hideLoading(); } }, + + // 获取新订单号 + async generateOrderNo(){ + const res = await request({ + url: '/small/jxInfo/generateOrderNo', + method: 'GET', + }); + return res + + }, // 上传 deletePic(event) { @@ -632,14 +774,11 @@ export default { } }, uploadFilePromise(e) { - console.log(e); upload({ url: '/app-api/small-upload/common/upload', filePath: e, }).then((res) => { - console.log('sfz', res) this.sfzimg = this.baseUrl + '/' + res.data.url - console.log(this.sfzimg); if (this.sfzimg) { this.idOcr(this.sfzimg) @@ -648,9 +787,6 @@ export default { }) }, async idOcr(url) { - console.log('url', url) - console.log('sfz', this.sfzimg) - let that = this let res = await request({ url: '/app-api/small-upload/idOcr', @@ -659,14 +795,12 @@ export default { imagePath: url } }) - console.log('321', res) that.name = res.data.name that.phone = res.data.phone that.sex = res.data.sex that.identity = res.data.idCard that.age = res.data.age that.Address = res.data.Address - console.log('654', res); that.popupShow = false }, @@ -710,7 +844,7 @@ export default { method: 'PUT', data: { nickname: this.name, - id: this.userInfo.id + id: this.userinfo.id } }) }, @@ -718,7 +852,6 @@ export default { // 校验是否登录 checkLogin() { const token = uni.getStorageSync('App-Token'); - console.log(token) if (!token) { uni.showToast({title: '请先登录', icon: 'none'}); return false; @@ -741,6 +874,23 @@ export default { // return now; }, + getLicenseTypeDescription(code) { + const licenseMap = { + C1: "小型手动挡汽车", + C2: "小型自动档汽车", + B1: "中型客车", + B2: "大型货车", + A1: "大型客车", + A2: "牵引车", + A3: "城市公交车", + D: "三轮摩托车", + E: "两轮摩托车", + F: "轻便摩托车" + }; + + return licenseMap[code] || "未知类型"; + }, + // 签合同 signContract() { const contractData = { @@ -748,6 +898,7 @@ export default { name: this.name, tenantId: this.tenantId, type: this.rightInfoList.type, + carType: this.getLicenseTypeDescription(this.rightInfoList.type), money: this.payPrice, indent: this.identity, phone: this.phone, @@ -765,6 +916,7 @@ export default { method: 'GET' }); this.payStatus = res.data.paymentStatus; + this.oldOrderDetails = res.data return res.data.paymentStatus; }, diff --git a/newPages/schoolDetail/assets/style/index.rpx.scss b/newPages/schoolDetail/assets/style/index.rpx.scss index c8877a3..f143bea 100644 --- a/newPages/schoolDetail/assets/style/index.rpx.scss +++ b/newPages/schoolDetail/assets/style/index.rpx.scss @@ -134,13 +134,28 @@ line-height: 40rpx; margin: 30rpx 0 0 32rpx; } + .text_3_2 { + width: 88%; + height: auto; + overflow-wrap: break-word; + word-break: break-word; + color: rgba(51, 51, 51, 1); + font-size: 24rpx; + font-family: PingFang SC-Semibold; + font-weight: NaN; + text-align: left; + white-space: normal; + line-height: 40rpx; + margin: 30rpx 0 0 32rpx; + } .text-wrapper_1 { width: 220rpx; height: 24rpx; - margin: 30rpx 0 0 32rpx; + margin: 15rpx 0 0 32rpx; .text_4 { - width: 72rpx; - height: 24rpx; + /* width: 72rpx; + height: 24rpx; */ + padding: 0 10rpx 0 0; overflow-wrap: break-word; color: rgba(44, 120, 245, 1); font-size: 24rpx; @@ -154,7 +169,8 @@ width: 138rpx; height: 24rpx; overflow-wrap: break-word; - color: rgba(137, 146, 162, 1); + color: rgba(51, 51, 51, 1); + // color: rgba(137, 146, 162, 1); font-size: 24rpx; font-family: PingFang SC-Regular; font-weight: NaN; @@ -343,10 +359,10 @@ font-size: 24rpx; font-family: PingFang SC-Regular; font-weight: NaN; - text-align: left; + text-align: center; white-space: nowrap; line-height: 24rpx; - margin: 6rpx 0 0 10rpx; + // margin: 6rpx 0 0 10rpx; } } } diff --git a/newPages/schoolDetail/index.vue b/newPages/schoolDetail/index.vue index 05cf398..e342608 100644 --- a/newPages/schoolDetail/index.vue +++ b/newPages/schoolDetail/index.vue @@ -9,14 +9,17 @@ + - {{ schoolDetails.corpName }} + {{ schoolInfo.corpName }} + 地址:{{ schoolInfo.address }} - 营业中 - 08:00-18:00 + 营业时间 + + {{ schoolInfo.businessStartTime }} - {{schoolInfo.businessEndTime}} @@ -91,7 +94,7 @@ item.tittle }} - {{ item.type }} + {{ item.type }} @@ -162,7 +165,9 @@ export default { constants: {}, schoolId: undefined, tenantId: undefined, + schoolName: undefined, schoolDetails: {}, + schoolInfo: [], schoolClassList: [], schoolAllClassList: [], schoolCoachList: [], @@ -177,11 +182,10 @@ export default { onLoad(options) { if (options.id) { this.schoolId = options.id; - this.tenantId = options.tenantId - console.log("首页传入数据", options) - console.log("驾校id", this.schoolId) - console.log("驾校租户id", this.tenantId) - this.getSchoolDetails(); + this.tenantId = options.tenantId; + this.schoolName = options.schoolName; + // this.getSchoolDetails(); + this.getSchoolInfo() this.getSchoolClass(); this.getSchoolAllClass() this.getSchoolCoach() @@ -204,14 +208,23 @@ export default { }).then(res => { this.schoolDetails = res.data; this.tenantId = res.data.tenantId - console.log('租户id', this.tenantId) - console.log('学校详情', this.schoolDetails); }).catch(err => { console.error('获取驾校详情失败', err); }); }, + getSchoolInfo(){ + request({ + url:'/userClient/base/companySmallProgram/getCompanyByTenantId', + method: 'GET', + params: { + tenantId: this.tenantId, + systemCode: 'jiaxiao', + } + }).then(res => { + this.schoolInfo = res.data + }) + }, getSchoolClass() { - console.log('tenantId', this.tenantId) request({ url: '/app-api/dl-drive-school-course-small/noTenantIdPage', method: 'GET', @@ -224,7 +237,6 @@ export default { }).then(res => { this.schoolClassList = res.data.records; this.total = res.data.total; - console.log('驾校课程列表', this.schoolClassList); }) }, //获取当前位置 @@ -299,7 +311,6 @@ export default { }).then(res => { this.schoolAllClassList = res.data; this.total = res.data.total; - console.log('驾校所有课程列表', this.schoolAllClassList); }) }, @@ -317,7 +328,6 @@ export default { // 取排序后的前三条数据 this.schoolCoachList = sortedList.slice(0, 3); this.total = res.data.total; - console.log('驾校教练列表', this.schoolCoachList); }) }, diff --git a/newPages/schoolList/index.vue b/newPages/schoolList/index.vue index 28bb1e9..3c21054 100644 --- a/newPages/schoolList/index.vue +++ b/newPages/schoolList/index.vue @@ -27,48 +27,8 @@ export default { data() { return { constants: {}, - schoolList: [ - // { - // imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - // corpName: '兄弟驾校', - // status: '未营业', - // time: '08:00-18:00', - // address: '山东省济南市历下区工业南路168号', - // features: ['有接送', '规模大'] - // }, - // { - // imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - // corpName: '兄弟驾校', - // status: '营业中', - // time: '08:00-18:00', - // address: '山东省济南市历下区工业南路168号', - // features: ['有接送', '规模大'] - // }, - // { - // imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - // corpName: '兄弟驾校', - // status: '营业中', - // time: '08:00-18:00', - // address: '山东省济南市历下区工业南路168号', - // features: ['有接送', '规模大'] - // }, - // { - // imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - // corpName: '兄弟驾校', - // status: '营业中', - // time: '08:00-18:00', - // address: '山东省济南市历下区工业南路168号', - // features: ['有接送', '规模大'] - // }, - // { - // imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - // corpName: '兄弟驾校', - // status: '营业中', - // time: '08:00-18:00', - // address: '山东省济南市历下区工业南路168号', - // features: ['有接送', '规模大'] - // }, - ], + schoolList: [], + imageUrl: this.$imagesUrl, isTriggered: false, pageNo: 1, pageSize: 10, @@ -94,11 +54,10 @@ export default { }).then(res => { res.data.records.forEach(item => { item.features = ['有接送', '规模大'] - item.imageUrl = '/static/lanhu_shouye2gai/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png' + item.imageUrl = this.imageUrl + '/' + item.photo }) this.schoolList = this.schoolList.concat(res.data.records) this.total = res.data.total - console.log('长度',this.schoolList.length) this.isTriggered = false }) }, @@ -130,47 +89,7 @@ export default { this.isTriggered = true this.pageNo = 1 this.total = 0 - this.schoolList = [ - { - imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - corpName: '兄弟驾校', - status: '未营业', - time: '08:00-18:00', - address: '山东省济南市历下区工业南路168号', - features: ['有接送', '规模大'] - }, - { - imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - corpName: '兄弟驾校', - status: '营业中', - time: '08:00-18:00', - address: '山东省济南市历下区工业南路168号', - features: ['有接送', '规模大'] - }, - { - imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - corpName: '兄弟驾校', - status: '营业中', - time: '08:00-18:00', - address: '山东省济南市历下区工业南路168号', - features: ['有接送', '规模大'] - }, - { - imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - corpName: '兄弟驾校', - status: '营业中', - time: '08:00-18:00', - address: '山东省济南市历下区工业南路168号', - features: ['有接送', '规模大'] - }, - { - imageUrl: '/static/lanhu_jiaxiaoliebiao/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png', - corpName: '兄弟驾校', - status: '营业中', - time: '08:00-18:00', - address: '山东省济南市历下区工业南路168号', - features: ['有接送', '规模大'] - },] + this.schoolList = [] this.getList() }, } @@ -191,6 +110,7 @@ export default { display: flex; flex-direction: column; row-gap: 20rpx; - height: calc(100% - 65px); + /* height: calc(100% - 65px); */ + height: 100vh; } diff --git a/pages/index/contract.vue b/pages/index/contract.vue index f00dabd..8f52f0d 100644 --- a/pages/index/contract.vue +++ b/pages/index/contract.vue @@ -39,7 +39,7 @@ export default { tenantId: '', contractData: {}, userData: {}, - + callback: null, } }, onLoad(options) { @@ -51,12 +51,9 @@ export default { console.log('tenantId',this.tenantId)*/ if (options.data) { this.contractData = JSON.parse(decodeURIComponent(options.data)); - console.log(this.contractData.adress); - console.log(this.contractData.name); - console.log(this.contractData.tenantId); - console.log(this.contractData.type); - console.log(this.contractData.money); + this.callback = options.callback; } + this.callback = options.callback; this.userData = uni.getStorageSync('userInfo'); }, onShow() { @@ -119,8 +116,25 @@ export default { uni.showToast({ title: '报名成功', duration: 3000 - - }) + + }); + + const pages = getCurrentPages(); + const prevPage = pages[pages.length - 2]; + + if (prevPage && (prevPage.route === 'newPages/register/index' || prevPage.route === '/newPages/register/index')) { + if (this.callback) { // 从onLoad中获取的callback + try { + const callback = decodeURIComponent(this.callback); + if (prevPage.$vm && typeof prevPage.$vm[callback] === 'function') { + prevPage.$vm[callback](); + } + } catch (e) { + console.error('回调执行失败:', e); + } + } + } + setTimeout(function () { // 在这里写需要延迟执行的代码 uni.navigateTo({ @@ -133,6 +147,7 @@ export default { // this.uploadFile(this.imgUrl, fileName) }, + goback() { uni.navigateBack() }, diff --git a/static/imgs/clear.png b/static/imgs/clear.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0f153b46e5637daed82ba8b0e6147dc81ab5e2 GIT binary patch literal 2173 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 t6q9uT>1)v1VQ-NHq2cbDSs1PStn56}G@ z-VghTupwD{oom+2oU{3%t}2I#PKpiy05BEgr8NNnghluvfr<=&=bQui2mArSLsL!) z@Mnzt0RBSST3^9NMFqeDe~t=3_+}3Py`BO;NZ|(nfS88>K!iUcyuOzQ{J)^1z`ZfaYJ%|}%_%VYCz%WdB+?dhcu zg&HM7T&Ns`ZUgrm)fXfJ{Qv3YhNtWX^kg~it;~CY?2ao_KTs?Ou;UlcNs1_t5}Zg0 z=3j@MAFT)Pg^#bUW~>G7ts0$mT#ccG?EbzTe7Z#y89?=18C5eNe z%Ry{wS=&8UKEy#TWX;b5oN@(}Laj4s5I3G!hRLV;h0j)=TYdhlJ~Av&P$nqwZ{g~v zquza3OkN~B{Vr$TKns{4YlrTl7^U@K4U@3TVQic{xNTjO>rr)n#))%XZM_*-4X6tV zy}z9IX)_r~Xmf=IWS{w84k~p8;k5lZ!qqQCy;Js1hDN|ParN_20e1{(jlncyrp_FW zb%ue;48kZmqiZevFpS+^GtNxAy~PVBXd){C(5IKqZ39(cfKuR#3;fDO(oL|7QTczn zXG@K={q)aQ)AOY;{Q9Ax$t94?rR*UQd4mg7XG10b>~+?zl_mV$dHx2qLK8%8rDyNj z%t;9*jFNbN6zGBsdPi*dpL-41`F-12I@>jDwcrZhCc);{$-;j(#W{z^fAoo0DB>VN za*#8Q&a;V@0=W$g>AYoFU~!tE99mR%dj_l-b1ZECB!f?<;elTVzR z+aFdco%8~J)T}nm`=>r<{yO<-1h1L}_|U}`d;=UQ!T5yWZ~Rf~y$xDd1`uN5^T$lr zx0$e$5l_B{@oM8hK{i4BntOTmK;9Cq$6m(VwZ=P>KDCOLvkptqgZYq#ce4~znD ziZF{LJ~vHQT#0vFA6s^L`_t}XE+d_w6A_9#utK%5H1!xf5UexLPg(WE28EqmKVr3p#C=+t{a@$o2{jkDDi!h`
xkwnV$ZvpC%-*C9>`{um4C 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

E%k07TN<~1k{^o|N?c|$ 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 LZPi9)+sOY1w+cV1 literal 0 HcmV?d00001 diff --git a/utils/utils.js b/utils/utils.js index 53833e5..fc961cc 100644 --- a/utils/utils.js +++ b/utils/utils.js @@ -57,3 +57,41 @@ export function formatDateTimeToMinute(timestamp) { return `${year}-${month}-${day} ${hours}:${minutes}`; } +export function formatTimestamp(timestamp) { + // 将时间戳转换为Date对象 + const date = new Date(timestamp); + // 获取年月日时分秒 + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + const hours = date.getHours().toString().padStart(2, '0'); + const minutes = date.getMinutes().toString().padStart(2, '0'); + const seconds = date.getSeconds().toString().padStart(2, '0'); + // 组合成日期时间字符串 + return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; +} + +export function getWXStatusHeight() { + // #ifdef MP-WEIXIN + // 获取距上 + const barTop = wx.getSystemInfoSync().statusBarHeight + // 获取胶囊按钮位置信息 + const menuButtonInfo = wx.getMenuButtonBoundingClientRect() + // 获取导航栏高度 + const barHeight = menuButtonInfo.height + (menuButtonInfo.top - barTop) * 2 + let barWidth = menuButtonInfo.width + console.log('menuButtonInfo', menuButtonInfo) + let barLeftPosition = 375 - menuButtonInfo.right + menuButtonInfo.width + let menuButtonLeft = menuButtonInfo.left + let menuButtonRight = menuButtonInfo.right + return { + barHeight, + barTop, + barWidth, + barLeftPosition, + menuButtonLeft, + menuButtonRight + } + // #endif +} +