This commit is contained in:
Lx 2025-04-07 18:08:13 +08:00
parent 02dde0928f
commit a81983c192
12 changed files with 2245 additions and 2103 deletions

View File

@ -75,12 +75,14 @@
import request from "@/utils/request";
import config from "@/config.js"
import {getLocalUserInfo, getUserInfo} from "@/utils/auth";
export default {
data() {
return {
courseId: undefined,
tenantId: undefined,
courseDetails: [],
driveSchoolPhone: [],
imagesUrl: config.imagesUrl,
userDetails: [],
};
@ -91,7 +93,8 @@ export default {
console.log(options)
this.getCourseDetails();
this.userDetails = getLocalUserInfo();
console.log('123123',this.userDetails)
this.getServicePhone()
console.log('123123', this.userDetails)
},
methods: {
goBack() {
@ -99,7 +102,7 @@ export default {
delta: 1
});
},
getCourseDetails(){
getCourseDetails() {
request({
url: '/app-api/dl-drive-school-course-small/get',
method: 'GET',
@ -116,11 +119,25 @@ export default {
},
zxkf() {
uni.makePhoneCall({
phoneNumber: '18888888888'
phoneNumber: this.driveSchoolPhone.phone
});
},
getServicePhone() {
request({
url: '/app-api/dl-drive-school-course-small/getServicePhone',
method: 'GET',
params: {
tenantId: this.tenantId,
}
}).then(res => {
this.driveSchoolPhone = res.data
console.log('客服电话res', res)
console.log('客服电话1', this.driveSchoolPhone)
console.log('客服电话2', this.driveSchoolPhone.phone)
})
},
goRegisterNow(){
goRegisterNow() {
uni.navigateTo({
url: `/newPages/register/index?courseId=${this.courseDetails.id}&userId=${this.userDetails.id}&tenantId=${this.tenantId}`,
// url: '/pages/index/bmPage'

View File

@ -18,7 +18,8 @@
scroll-y
:style="{ height: scrollHeight + 'px' }"
>
<view class="group_6 flex-col" v-for="(item, index) in schoolAllClassList" :key="index" @click="goToDetail(item.id)">
<view class="group_6 flex-col" v-for="(item, index) in schoolAllClassList" :key="index"
@click="goToDetail(item.id)">
<view class="image-text_1 flex-row">
<image
class="image_2"

View File

@ -9,7 +9,7 @@
<view class="box_2 flex-col">
<view class="block_3 flex-row">
<view class="text-group_1 flex-col justify-between">
<text class="text_2">{{ subjectArr[info.subject - 1] }}{{ title}}</text>
<text class="text_2">{{ subjectArr[info.subject - 1] }}{{ title }}</text>
<text class="text_3">{{ info.time }}</text>
</view>
</view>
@ -31,7 +31,8 @@
<text class="text-group_2">{{ info.coachName }}</text>
</view>
<view style="display: flex; align-items: center;">
<u-rate active-color="#EAA140" v-model="info.rate" allowHalf inactive-color="#b2b2b2" @change="changeRate"></u-rate>
<u-rate active-color="#EAA140" v-model="info.rate" allowHalf inactive-color="#b2b2b2"
@change="changeRate"></u-rate>
<text style="margin-left: 5rpx;color:#E1A652;">{{ info.rate }}</text>
</view>
</view>
@ -40,11 +41,11 @@
<view class="section_4 flex-col">
<text class="text_7">服务评价</text>
<view class="text-wrapper_3 flex-col">
<u--textarea v-model="info.serviceContent" placeholder="请输入内容" ></u--textarea>
<u--textarea v-model="info.serviceContent" placeholder="请输入内容"></u--textarea>
</view>
<text class="text_9">技术评价</text>
<view class="text-wrapper_4 flex-col">
<u--textarea v-model="info.teachContent" placeholder="请输入内容" ></u--textarea>
<u--textarea v-model="info.teachContent" placeholder="请输入内容"></u--textarea>
</view>
</view>
<view class="bottom_" v-if="show">
@ -69,9 +70,9 @@ export default {
return {
constants: {},
show: false,
title:'',
title: '',
//
info:{
info: {
rate: 0.0,
evaluateType: 0,
busiId: '',
@ -81,7 +82,7 @@ export default {
subjectArr: ['科目一', '科目二', '科目三', '科目四'],
};
},
onLoad(options){
onLoad(options) {
const data = JSON.parse(options.data);
//
if (options.controls) {
@ -107,8 +108,9 @@ export default {
console.log(this.info)
},
methods: {
changeRate(){},
submit(){
changeRate() {
},
submit() {
//
if (this.info.rate === 0.0 || this.info.serviceEvaluate === '' || this.info.technologyEvaluate === '') {
uni.showToast({
@ -146,7 +148,8 @@ export default {
<style lang='scss'>
@import '../common/common.scss';
@import './assets/style/index.rpx.scss';
.bottom_{
.bottom_ {
//
position: fixed;
bottom: 10rpx;

View File

@ -20,7 +20,8 @@
<view class="image-text_1 flex-row justify-between">
<view>
<u-picker v-model="process.examStatus" :show="show" :columns="ifPassColumns" title="是否通过" @confirm="ifPassOnConfirm" @cancel="show = false">
<u-picker v-model="process.examStatus" :show="show" :columns="ifPassColumns" title="是否通过"
@confirm="ifPassOnConfirm" @cancel="show = false">
</u-picker>
<text class="text-group_2">{{ selectedValue || '请选择' }}</text>
</view>
@ -36,7 +37,8 @@
v-model="process.examScore"
maxlength="3"
inputAlign="right"
></u--input>
>
</u--input>
</view>
</view>
<view class="text-wrapper_8 flex-row justify-between">
@ -49,7 +51,9 @@
@confirm="onConfirmExamTime"
@cancel="showTimePicker = false"
></u-datetime-picker>
<text class="text_3" @click="showTimePicker = true">{{ process.examTime ? formatDate(process.examTime) : '选择时间' }}</text>
<text class="text_3" @click="showTimePicker = true">
{{ process.examTime ? formatDate(process.examTime) : '选择时间' }}
</text>
</view>
</view>
<!-- <view class="text-wrapper_9 flex-row justify-between">
@ -66,13 +70,15 @@
</view> -->
<view class="text-wrapper_10 flex-row justify-between">
<text class="text_8">考试类型</text>
<text class="text_9" v-if="process.subject != 2 && process.subject != 3" >{{ courseType }}</text>
<text class="text_9" v-else >{{ opCourseType }}</text>
<text class="text_9" v-if="process.subject != 2 && process.subject != 3">{{ courseType }}</text>
<text class="text_9" v-else>{{ opCourseType }}</text>
</view>
<view class="text-wrapper_11 flex-row justify-between" @click="subjectShow = true" v-if="process.subject != 2 && process.subject != 3">
<view class="text-wrapper_11 flex-row justify-between" @click="subjectShow = true"
v-if="process.subject != 2 && process.subject != 3">
<text class="text_10">考试科目</text>
<view>
<u-picker v-model="process.subject" :show="subjectShow" :columns="subjectColumns" title="科目" @confirm="subjectOnConfirm" @cancel="subjectShow = false">
<u-picker v-model="process.subject" :show="subjectShow" :columns="subjectColumns" title="科目"
@confirm="subjectOnConfirm" @cancel="subjectShow = false">
</u-picker>
<text class="text-group_2">{{ subjectValue || '请选择科目' }}</text>
</view>
@ -80,7 +86,7 @@
</view>
<view class="group_5 flex-col">
<text class="text_16">备注</text>
<u--textarea class="text_17" v-model="process.remark" placeholder="请输入内容" count ></u--textarea>
<u--textarea class="text_17" v-model="process.remark" placeholder="请输入内容" count></u--textarea>
<text class="text_18">图片</text>
<view class="image-wrapper_4 flex-row justify-between">
<u-upload
@ -101,9 +107,10 @@
</view>
</template>
<script>
import upload from '@/utils/upload.js'
import request from '@/utils/request.js'
import { getLocalUserInfo } from '../../utils/auth';
import upload from '@/utils/upload.js'
import request from '@/utils/request.js'
import {getLocalUserInfo} from '../../utils/auth';
export default {
data() {
return {
@ -121,14 +128,14 @@ export default {
courseCompleteStatusList: {},
opTenantId: null,
opCourseType: null,
examId:null,
batchId:null,
examId: null,
batchId: null,
batchItemId: null,
process: {
id:null,
id: null,
userName: null,
userId: null,
subject:null,
subject: null,
fraction: null,
examNum: null,
examStatus: null,
@ -161,8 +168,8 @@ export default {
this.process.id = options.id
this.process.coachId = options.coachId
this.process.userId = this.userInfo.id
console.log('options',options)
console.log('batchItemId',this.batchItemId)
console.log('options', options)
console.log('batchItemId', this.batchItemId)
},
computed: {
displayFileList() {
@ -288,20 +295,20 @@ export default {
method: 'GET',
params: {
userId: this.userInfo.id,
paymentStatus:'2',
paymentStatus: '2',
ifEnd: 0,
},
tenantIdFlag : false
tenantIdFlag: false
}).then(res => {
this.orderList = res.data.records;
console.log('订单信息',res.data)
if(res.data.records.length > 0){
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){
if (this.process.subject != 2 && this.process.subject != 3) {
this.process.courseId = tempData.courseId
}
if(this.process.subject != 2 && this.process.subject != 3){
if (this.process.subject != 2 && this.process.subject != 3) {
this.courseType = tempData.courseType
}
@ -311,11 +318,11 @@ export default {
});
},
getCourseCompleteStatus(){
getCourseCompleteStatus() {
console.log('userId', this.userId)
console.log('courseId', this.process.courseId)
request({
url:'/app-api/process/page',
url: '/app-api/process/page',
method: 'GET',
params: {
userId: this.userInfo.id,
@ -323,8 +330,8 @@ export default {
}
}).then(res => {
this.courseCompleteStatusList = res.data.records
console.log('res.data',res.data)
if(this.courseCompleteStatusList.length > 0){
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)
@ -341,23 +348,23 @@ export default {
},
saveData() {
if(this.process.subject == 1 || this.process.subject == 4){
if (this.process.subject == 1 || this.process.subject == 4) {
this.saveDataOne()
}
if(this.process.subject == 2 || this.process.subject == 3){
if (this.process.subject == 2 || this.process.subject == 3) {
this.saveDataTwo()
}
},
saveDataOne(){
if(this.process.subject === 1 && this.courseCompleteStatusList.length <= 0){
console.log('this.courseCompleteStatusList',this.courseCompleteStatusList)
uni.showToast({ title: '请联系驾校人员', icon: 'none' });
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){
if (this.process.subject === 4 && this.courseCompleteStatusList.length <= 0) {
uni.showToast({ title: '请联系驾校人员', icon: 'none' });
uni.showToast({title: '请联系驾校人员', icon: 'none'});
return;
}
@ -366,7 +373,7 @@ export default {
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' });
uni.showToast({title: '信息填写不完整', icon: 'none'});
return;
}
request({
@ -374,7 +381,7 @@ export default {
method: 'PUT',
data: this.process,
}).then(res => {
if(res.code === 0){
if (res.code === 0) {
uni.showToast({
title: '保存成功',
icon: 'success',
@ -385,12 +392,12 @@ export default {
delta: 1
});
}, 1500);
}else{
uni.showToast({ title: res.data?.message || '保存失败', icon: 'none' });
} else {
uni.showToast({title: res.data?.message || '保存失败', icon: 'none'});
}
})
},
saveDataTwo(){
saveDataTwo() {
/* const postData = {
...this.process, // process
tenantId: this.opTenantId,
@ -408,7 +415,7 @@ export default {
this.process.ifPass = this.process.examStatus
this.process.images = this.fileList?.map(item => item.url).join(',') || '';
if (!this.process.userId || !this.process.subject || !this.process.examScore || !this.process.examStatus || !this.process.examTime) {
uni.showToast({ title: '信息填写不完整', icon: 'none' });
uni.showToast({title: '信息填写不完整', icon: 'none'});
return;
}
request({
@ -417,7 +424,7 @@ export default {
// data: postData,
data: this.process,
}).then(res => {
if(res.code === 0){
if (res.code === 0) {
uni.showToast({
title: '保存成功',
icon: 'success',
@ -428,8 +435,8 @@ export default {
delta: 1
});
}, 1500);
}else{
uni.showToast({ title: res.data?.message || '保存失败', icon: 'none' });
} else {
uni.showToast({title: res.data?.message || '保存失败', icon: 'none'});
}
})
}

View File

@ -3,7 +3,6 @@
<view class="box_1 flex-row">
</view>
<view class="box_4 flex-col">
<view class="box_5 flex-row">
@ -103,6 +102,7 @@
</template>
<script>
import request from '@/utils/request.js'
export default {
data() {
return {
@ -125,7 +125,7 @@ export default {
});
},
getUserInfo(){
getUserInfo() {
request({
url: '/app-api/small/dl-drive-school-student/getByUserId',
method: 'GET',
@ -140,7 +140,7 @@ export default {
status: 'success'
}]
}
console.log('res.data',res.data);
console.log('res.data', res.data);
console.log('userDetails', this.userDetails);
})
},

View File

@ -15,10 +15,10 @@
</view>
</view>
<view class="text-group_1 flex-col justify-between">
<view v-if="selfInfo.nickname" class="text_3">{{ selfInfo.nickname}}</view>
<view v-if="selfInfo.username" class="text_3">{{selfInfo.username}}</view>
<view v-if="selfInfo.nickname" class="text_3">{{ selfInfo.nickname }}</view>
<view v-if="selfInfo.username" class="text_3">{{ selfInfo.username }}</view>
<view v-else @click="toLogin()" class="text_2">登录/注册</view>
<text v-if="!selfInfo.username"class="text_3">登录将开启全部服务</text>
<text v-if="!selfInfo.username" class="text_3">登录将开启全部服务</text>
</view>
</view>
<view class="image-text_2 flex-col justify-between">
@ -40,7 +40,7 @@
</view>
<view class="text-group_3 flex-col justify-between">
<text class="text_4" v-if="coachDetails.name != null">{{ coachDetails.name }}</text>
<text class="text_111" v-else> 暂无教练信息 </text>
<text class="text_111" v-else> 暂无教练信息</text>
<view class="text-wrapper_1" v-if="coachDetails.seniority != null">
<text class="text_5">教龄</text>
<text class="text_6">{{ coachDetails.seniority }}</text>
@ -126,20 +126,21 @@
</view>
</template>
<script>
import headers from '../../components/header/headers.vue'
import tabbar from '../../components/tabbar/tabbar.vue'
import request from '@/utils/request.js'
import {
import headers from '../../components/header/headers.vue'
import tabbar from '../../components/tabbar/tabbar.vue'
import request from '@/utils/request.js'
import {
getLocalUserInfo,
getToken
} from '@/utils/auth'
} from '@/utils/auth'
export default {
data() {
return {
msg: "3",
selfInfo: {},
coachDetails:{},
coachDetails: {},
userDetails: {},
loopData: [
{
@ -214,18 +215,18 @@ export default {
this.selfInfo = res
},*/
toOrderPage(orderType,type) {
toOrderPage(orderType, type) {
uni.navigateTo({
url: `/newPages/orderList/index?orderType=${orderType}&type=${type}&userId=${this.selfInfo.id}`
})
},
goMyInDetails(){
goMyInDetails() {
uni.navigateTo({
url: `/newPages/informationAdd/index?userId=${this.selfInfo.id}`
})
},
getUserInfo(){
getUserInfo() {
request({
url: '/app-api/small/dl-drive-school-student/getByUserId',
method: 'GET',
@ -235,13 +236,13 @@ export default {
}).then(res => {
this.userDetails = res.data
console.log('userDetails', this.userDetails)
if(this.userDetails.sourceUserId !== null){
if (this.userDetails.sourceUserId !== null) {
this.getCoachDetails(this.userDetails.sourceUserId)
}
})
},
getCoachDetails(userId){
getCoachDetails(userId) {
request({
url: '/app-api/dl-drive-school-coach-small/getCoachByUserId',
method: 'GET',

View File

@ -1,7 +1,8 @@
<template>
<view class="page flex-col">
<view class="top_">
<u-swiper class="lunbo_" :list="swiperList" keyName="swiperPicture" radius="10" height="300" indicator indicatorMode="line"></u-swiper>
<u-swiper class="lunbo_" :list="swiperList" keyName="swiperPicture" radius="10" height="300" indicator
indicatorMode="line"></u-swiper>
</view>
<view class="section_2 flex-col">
<view class="list_1 flex-row">
@ -51,7 +52,8 @@
<!-- 使用 scroll-view 包裹 SchoolInfo 组件 -->
<scroll-view class="school-scroll-view" scroll-y @scrolltolower="onReachBottomCus"
refresher-enabled @refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<SchoolInfo style="" v-for="(school, index) in schoolList" :key="index" :schoolInfo="school" @click="goSchoolDetail(school)"/>
<SchoolInfo style="" v-for="(school, index) in schoolList" :key="index" :schoolInfo="school"
@click="goSchoolDetail(school)"/>
</scroll-view>
</view>
@ -155,7 +157,7 @@ export default {
pageSize: this.pageSize,
serviceCodes: 'jiaxiao'
},
tenantIdFlag : false
tenantIdFlag: false
}).then(res => {
res.data.records.forEach(item => {
item.features = ['有接送', '规模大']
@ -275,7 +277,8 @@ export default {
flex-direction: column;
row-gap: 20rpx;
}
.top_{
.top_ {
//padding-top: 200rpx;
}
</style>

View File

@ -19,12 +19,18 @@
class="scroll-view"
scroll-y
:style="{ height: scrollHeight + 'px' }"
@scrolltolower="loadMoreData"
:refresher-enabled="true"
:refresher-triggered="isRefreshing"
@refresherrefresh="onRefresherrefresh"
>
<view class="list-items_1 flex-col" v-for="(item, index) in orderList" :key="index" >
<view class="list-items_1 flex-col" v-for="(item, index) in orderList" :key="index">
<view class="box_6 flex-row justify-between">
<text class="text_2">订单号: {{item.orderNo}}</text>
<view class="text-wrapper_1 flex-col" :style="{ background: statusMap[item.paymentStatus].background }">
<text class="text_3" :style="{ color: statusMap[item.paymentStatus].color }">{{ statusMap[item.paymentStatus].name}}</text>
<text class="text_3" :style="{ color: statusMap[item.paymentStatus].color }">{{
statusMap[item.paymentStatus].name}}
</text>
</view>
</view>
<view class="box_7 flex-row">
@ -32,20 +38,21 @@
<image
class="image_3"
referrerpolicy="no-referrer"
src='/static/lanhu_shouye2gai/FigmaDDSSlicePNG530e91ec069b391e8972e9ed0aeebc58.png'
:src="imageUrl + '/' + item.photo"
/>
<view class="text-group_1 flex-col justify-between">
<text class="text_4" >{{item.courseName}}</text>
<text class="text_4">{{item.courseName}}</text>
<view class="text-wrapper_2 flex-row justify-between">
<text class="text_5" >{{item.reserveMoney}}</text>
<text class="text_6" >{{item.reserveMoney}}</text>
<text class="text_5">{{item.reserveMoney}}</text>
<text class="text_6">{{item.reserveMoney}}</text>
</view>
</view>
<view class="text-wrapper_3 flex-col">
<text class="text_7" >{{item.courseType}}</text>
<text class="text_7">{{typeFormat(item.type).code}}</text>
</view>
<view class="text-wrapper_4 flex-col">
<text class="text_8" >{{item.courseType}}</text>
<text class="text_8">{{typeFormat(item.type).desc}}</text>
</view>
</view>
</view>
@ -92,9 +99,11 @@
</template>
<script>
import request from '@/utils/request.js'
export default {
data() {
return {
imageUrl: this.$imagesUrl,
loopData0: [
{
lanhutext0: '订单号44782938752039585',
@ -139,21 +148,26 @@ export default {
type: null,
orderType: null,
scrollHeight: 0,
userId:null,
orderList:[],
userId: null,
orderList: [],
constants: {},
courseDetails: {},
pageNo: 1,
pageSize: 10,
total: 0,
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)' },
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)'},
}
};
},
onLoad(options){
onLoad(options) {
// this.orderType = options.orderType; // orderType
this.orderType = options.orderType ? parseInt(options.orderType) : '';
this.type = options.type ? parseInt(options.type) : 1;
@ -161,11 +175,11 @@ export default {
// this.type = options.type;
// this.getUserOrderDetails(this.orderType); //
// this.getUserOrderDetails(options.orderType);
console.log('options',options)
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)
console.log('orderType', this.orderType)
console.log('orderType', this.orderType === 2)
this.changeOrderType(this.orderType, this.type)
},
@ -183,7 +197,35 @@ export default {
delta: 1
});
},
getUserOrderDetails(paymentStatus) {
/**
* 上滑加载数据
*/
loadMoreData() {
//
if (this.loading || this.pageNo * this.pageSize >= this.total) {
return;
}
this.loading = true;
this.pageNo++;
this.getUserOrderDetails(this.orderType, false);
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
if (this.isRefreshing) return;
this.isRefreshing = true;
//
this.pageNo = 1;
this.getUserOrderDetails(this.orderType, true);
},
/* getUserOrderDetails(paymentStatus) {
console.log(paymentStatus)
console.log(this.userId)
request({
@ -198,19 +240,62 @@ export default {
this.orderList = res.data.records;
console.log('订单信息',res.data)
});
}, */
getUserOrderDetails(paymentStatus, isRefresh = false) {
if (!isRefresh && this.loading) return;
request({
url: '/app-api/small/drive/school-course-order/page',
method: 'GET',
params: {
userId: this.userId,
paymentStatus: paymentStatus,
pageNo: this.pageNo,
pageSize: this.pageSize
},
changeOrderType(orderType,type) {
tenantIdFlag: false
}).then(res => {
if (isRefresh) {
//
this.orderList = res.data.records;
this.isRefreshing = false;
//
uni.stopPullDownRefresh();
} else if (this.pageNo === 1) {
// tab
this.orderList = res.data.records;
} else {
//
this.orderList = [...this.orderList, ...res.data.records];
}
this.total = res.data.total;
this.loading = false;
console.log('订单信息', res.data);
}).catch(err => {
this.loading = false;
this.isRefreshing = false;
if (isRefresh) {
uni.stopPullDownRefresh();
}
console.error('获取订单失败', err);
});
},
changeOrderType(orderType, type) {
this.orderType = orderType;
this.type = type;
console.log('type',type)
console.log('orderType',orderType)
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: '' };
return this.statusMap[status] || {name: '未知状态', background: '', color: ''};
},
getCourseDetails(){
getCourseDetails() {
request({
url: '/app-api/dl-drive-school-course-small/get',
method: 'GET',
@ -236,6 +321,23 @@ export default {
const tabWidth = uni.getSystemInfoSync().windowWidth / 4; // 4
this.underlinePosition = index * tabWidth;
}, */
typeFormat(type) {
const typeMap = {
'1': {code: 'C1', desc: '小型手动挡汽车', full: 'C1小型手动挡汽车'},
'2': {code: 'C2', desc: '小型自动档汽车', full: 'C2小型自动档汽车'},
'3': {code: 'B1', desc: '中型客车', full: 'B1中型客车'},
'4': {code: 'B2', desc: '大型货车', full: 'B2大型货车'},
'5': {code: 'A1', desc: '大型客车', full: 'A1大型客车'},
'6': {code: 'A2', desc: '牵引车', full: 'A2牵引车'},
'7': {code: 'A3', desc: '城市公交车', full: 'A3城市公交车'},
'8': {code: 'D', desc: '三轮摩托车', full: 'D三轮摩托车'},
'9': {code: 'E', desc: '两轮摩托车', full: 'E两轮摩托车'},
'10': {code: 'F', desc: '轻便摩托车', full: 'F轻便摩托车'}
};
const typeStr = typeof type === 'number' ? type.toString() : type;
return typeMap[typeStr] || {code: '未知', desc: '未知类型', full: '未知类型'};
}
}
};
</script>

View File

@ -8,19 +8,20 @@
</headers>
<!-- #endif -->
<!-- #endif -->
<u-loadmore :status="status" v-if="show == true" />
<u-loadmore :status="status" v-if="show == true"/>
</view>
<view class="bm-page">
<view class="bm-page-top">
<image class="top-left-img" :src="baseUrl +'/'+ rightInfoList.photo" mode=""></image>
<view class="bm-page-right">
<view class="bm-page-right-1">{{ rightInfoList.name}}</view>
<view class="bm-page-right-1">{{ rightInfoList.name }}</view>
<view class="bm-page-right-2">
<view class="bm-page-right-zd">{{rightInfoList.tittle}}</view>
<view class="bm-page-right-c2">{{rightInfoList.type}}</view>
<view class="bm-page-right-zd">{{ rightInfoList.tittle }}</view>
<view class="bm-page-right-c2">{{ rightInfoList.type }}</view>
</view>
<view class="bm-page-right-3"> <text class="bm-page-right-price">{{rightInfoList.price}}</text>
<text class="bm-page-right-jprice">{{rightInfoList.price}}</text>
<view class="bm-page-right-3">
<text class="bm-page-right-price">{{ rightInfoList.price }}</text>
<text class="bm-page-right-jprice">{{ rightInfoList.price }}</text>
</view>
</view>
</view>
@ -31,7 +32,7 @@
</view>
<view class="d-s" @click="showjl = true">
<view class="" v-if="!jlName">请选择</view>
<view class="" v-else>{{jlName}}</view>
<view class="" v-else>{{ jlName }}</view>
<u-icon name="arrow-right" size="16"></u-icon>
</view>
</view>
@ -57,7 +58,8 @@
<view class="info-name-left">性别</view>
<view class="d-s" style="width: 70%;">
<view class="size-lv" :class="{'clv' : sex == index }" v-for=" (item,index) in sexlist"
:key="index" @click="getsexindex(index)">{{item}}</view>
:key="index" @click="getsexindex(index)">{{ item }}
</view>
</view>
</view>
<view class="info-name">
@ -91,7 +93,8 @@
<view class="bm-page-dj">
<view class="bm-page-dj-title" @click="show = true">
<view class="d-s">
<view>{{dname}}</view>
<view>{{ dname }}</view>
<text class="bm-page-dj-title-price">
{{ currentPrice }} <!-- 动态显示当前价格 -->
</text>
@ -147,12 +150,13 @@
</template>
<script>
import headers from '../../components/header/headers.vue'
import request from '@/utils/request.js'
import tabbar from '../../components/tabbar/tabbar.vue'
import upload from '@/utils/upload.js'
import { getLocalUserInfo } from '../../utils/auth'
export default {
import headers from '../../components/header/headers.vue'
import request from '@/utils/request.js'
import tabbar from '../../components/tabbar/tabbar.vue'
import upload from '@/utils/upload.js'
import {getLocalUserInfo} from '../../utils/auth'
export default {
data() {
return {
titles: "报名",
@ -215,7 +219,7 @@ import { getLocalUserInfo } from '../../utils/auth'
],
}
},
onLoad: function(option) {
onLoad: function (option) {
uni.showToast({
title: '请完善个人信息',
icon: 'none'
@ -230,7 +234,7 @@ import { getLocalUserInfo } from '../../utils/auth'
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("userinfo", this.userinfo)
console.log('当前存储的所有键:', uni.getStorageInfoSync().keys)
console.log('token值:', uni.getStorageSync('App-Token'))
},
@ -359,19 +363,19 @@ import { getLocalUserInfo } from '../../utils/auth'
//
async validateForm() {
if (!this.sfzimg) {
uni.showToast({ title: '请上传身份证照片', icon: 'error' });
uni.showToast({title: '请上传身份证照片', icon: 'error'});
return false;
}
if (!this.phone || !this.name || !this.identity) {
uni.showToast({ title: '请输入完整信息', icon: 'error' });
uni.showToast({title: '请输入完整信息', icon: 'error'});
return false;
}
if (!this.isValidPhoneNumber(this.phone)) {
uni.showToast({ title: '手机号不规范', icon: 'error' });
uni.showToast({title: '手机号不规范', icon: 'error'});
return false;
}
if (!this.isValidIDNumber(this.identity)) {
uni.showToast({ title: '身份证不规范', icon: 'error' });
uni.showToast({title: '身份证不规范', icon: 'error'});
return false;
}
return true;
@ -385,7 +389,7 @@ import { getLocalUserInfo } from '../../utils/auth'
try {
// 1.
if (!this.checkLogin()) {
uni.navigateTo({ url: '/pages/login/login' });
uni.navigateTo({url: '/pages/login/login'});
return;
}
if (!await this.validateForm()) return;
@ -408,7 +412,7 @@ import { getLocalUserInfo } from '../../utils/auth'
} catch (error) {
console.error("报名出错:", error);
if (!error.message.includes('cancel')) {
uni.showToast({ title: error.message || '操作失败', icon: 'none' });
uni.showToast({title: error.message || '操作失败', icon: 'none'});
}
} finally {
this.loading = false;
@ -481,7 +485,7 @@ import { getLocalUserInfo } from '../../utils/auth'
});
if (res.code === 0) {
const contractData = { /* ...合同数据... */ };
const contractData = { /* ...合同数据... */};
uni.navigateTo({
url: '/pages/index/contract?data=' + encodeURIComponent(JSON.stringify(contractData))
});
@ -500,7 +504,7 @@ import { getLocalUserInfo } from '../../utils/auth'
//
async processExistingOrder() {
uni.showLoading({ title: '准备支付...', mask: true });
uni.showLoading({title: '准备支付...', mask: true});
try {
if (this.startPay === 1) {
@ -529,7 +533,6 @@ import { getLocalUserInfo } from '../../utils/auth'
},
//
handleWxPayment(paymentParams) {
return new Promise((resolve) => {
@ -547,7 +550,7 @@ import { getLocalUserInfo } from '../../utils/auth'
//
async createNewOrder() {
uni.showLoading({ title: '创建订单中...', mask: true });
uni.showLoading({title: '创建订单中...', mask: true});
try {
if (this.startPay === 1) {
@ -634,14 +637,14 @@ import { getLocalUserInfo } from '../../utils/auth'
imagePath: url
}
})
console.log('321',res)
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);
console.log('654', res);
that.popupShow = false
},
@ -657,20 +660,20 @@ import { getLocalUserInfo } from '../../utils/auth'
});
},
insertSchoolStudent(){
insertSchoolStudent() {
request({
url: '/app-api/small/dl-drive-school-student/create',
method: 'post',
data: {
avatar:this.userinfo.avatar,
name:this.name,
age:this.age,
sex:this.sex,
phone:this.phone,
idCard:this.identity,
registAddress:this.Address,
userId:this.userinfo.id,
tenantId:this.tenantId,
avatar: this.userinfo.avatar,
name: this.name,
age: this.age,
sex: this.sex,
phone: this.phone,
idCard: this.identity,
registAddress: this.Address,
userId: this.userinfo.id,
tenantId: this.tenantId,
idPhoto: this.sfzimg,
}
@ -681,7 +684,7 @@ import { getLocalUserInfo } from '../../utils/auth'
const token = uni.getStorageSync('App-Token');
console.log(token)
if (!token) {
uni.showToast({ title: '请先登录', icon: 'none' });
uni.showToast({title: '请先登录', icon: 'none'});
return false;
}
return true;
@ -699,7 +702,7 @@ import { getLocalUserInfo } from '../../utils/auth'
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
// return now;
},
signContract(){
signContract() {
const contractData = {
adress: this.Address,
name: this.name,
@ -726,11 +729,11 @@ import { getLocalUserInfo } from '../../utils/auth'
}
}
}
</script>
<style scoped lang="scss">
.bm-page {
.bm-page {
padding: 30rpx;
.bm-page-button {
@ -878,30 +881,30 @@ import { getLocalUserInfo } from '../../utils/auth'
border-radius: 12rpx;
}
}
}
}
.content {
.content {
background: #f4f5f6;
// background: linear-gradient(180deg, #9ffcc5 0%, #84fcbc 14%, rgba(255, 255, 255, 0.84) 24%, rgba(255, 255, 255, 0.84) 100%);
height: 100vh;
}
}
.container {
.container {
width: 100%;
background: #f4f5f6;
box-sizing: border-box;
padding-top: 88px;
}
}
.onel {
.onel {
width: 18px;
height: 18px;
border-radius: 50%;
overflow: hidden;
border: 1px solid #8c8c8d;
}
}
.twol {
.twol {
width: 18px;
height: 18px;
border-radius: 50%;
@ -912,14 +915,14 @@ import { getLocalUserInfo } from '../../utils/auth'
align-items: center;
justify-content: center;
color: #fff;
}
}
.d-s {
.d-s {
display: flex;
align-items: center;
}
}
.anniu {
.anniu {
width: 120px;
height: 35px;
border-radius: 4px;
@ -929,22 +932,22 @@ import { getLocalUserInfo } from '../../utils/auth'
align-items: center;
justify-content: center;
font-size: 14px;
}
}
.popup-box {
.popup-box {
width: 300px;
border-radius: 10px;
background: #fff;
box-sizing: border-box;
padding: 10px;
}
}
.title_s {
.title_s {
font-weight: bold;
margin-bottom: 10px;
}
}
.clv {
.clv {
color: #fff;
background: #4aa76f;
width: 26px;
@ -955,9 +958,9 @@ import { getLocalUserInfo } from '../../utils/auth'
align-items: center;
justify-content: center;
font-weight: bold;
}
}
.size-lv {
.size-lv {
margin-right: 35px;
}
}
</style>

View File

@ -3,8 +3,6 @@
<view class="group_1 flex-row">
</view>
<view class="group_2 flex-row">
<image
@ -187,7 +185,7 @@ export default {
params: {
id: this.schoolId
},
tenantIdFlag : false
tenantIdFlag: false
}).then(res => {
this.schoolDetails = res.data;
this.tenantId = res.data.tenantId
@ -198,7 +196,7 @@ export default {
});
},
getSchoolClass() {
console.log('tenantId',this.tenantId)
console.log('tenantId', this.tenantId)
request({
url: '/app-api/dl-drive-school-course-small/noTenantIdPage',
method: 'GET',
@ -230,7 +228,7 @@ export default {
})
},
getSchoolCoach(){
getSchoolCoach() {
request({
url: '/app-api/dl-drive-school-coach-small/page',
method: 'GET',
@ -248,7 +246,7 @@ export default {
})
},
goClassList(){
goClassList() {
uni.navigateTo({
url: '/newPages/courseList/index?tenantId=' + this.tenantId,
});

View File

@ -1,14 +1,16 @@
<template>
<view class="page flex-col">
<view class="container">
<headers titles="驾校"><uni-icons @click="goback()" type="arrow-left" color="#000000"
size="22px"></uni-icons></headers>
<headers titles="驾校">
<uni-icons @click="goback()" type="arrow-left" color="#000000"
size="22px"></uni-icons>
</headers>
</view>
<view class="itemContent">
<scroll-view style="height: 100%;" scroll-y="true" class="itemContent" @scrolltolower="onReachBottomCus"
refresher-enabled @refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<!-- 使用 SchoolInfo 组件渲染驾校信息 -->
<SchoolInfo v-for="(school, index) in schoolList" :key="index" :schoolInfo="school" />
<SchoolInfo v-for="(school, index) in schoolList" :key="index" :schoolInfo="school"/>
</scroll-view>
</view>
</view>
@ -98,7 +100,7 @@ export default {
})
this.schoolList = this.schoolList.concat(res.data.records)
this.total = res.data.total
console.log('长度',this.schoolList.length)
console.log('长度', this.schoolList.length)
this.isTriggered = false
})
},
@ -120,7 +122,7 @@ export default {
/**
* 下拉刷新数据
*/
onRefresherrefresh(){
onRefresherrefresh() {
this.isTriggered = true
this.pageNo = 1
this.total = 0
@ -174,13 +176,15 @@ export default {
<style lang='scss'>
@import '../common/common.scss';
@import './assets/style/index.rpx.scss';
.container {
width: 100%;
background: #f4f5f6;
box-sizing: border-box;
padding-top: 88px;
}
.itemContent{
.itemContent {
padding: 30rpx 0;
display: flex;
flex-direction: column;

View File

@ -1,7 +1,9 @@
<template>
<view class="content">
<view class="container">
<headers :titles="titles"><uni-icons type="arrow-left" color="#000000" size="22px"></uni-icons></headers>
<headers :titles="titles">
<uni-icons type="arrow-left" color="#000000" size="22px"></uni-icons>
</headers>
<view class="f-box">
<u-parse :content="content"></u-parse>
</view>
@ -14,9 +16,10 @@
</template>
<script>
import headers from '../../components/header/headers.vue'
import request from '@/utils/request.js'
export default {
import headers from '../../components/header/headers.vue'
import request from '@/utils/request.js'
export default {
data() {
return {
titles: "合同",
@ -118,7 +121,7 @@
duration: 3000
})
setTimeout(function() {
setTimeout(function () {
//
uni.navigateTo({
url: '/newPages/newIndex/index'
@ -135,26 +138,26 @@
},
}
}
}
</script>
<style scoped lang="scss">
.content {
.content {
background: #f4f5f6;
height: 100vh;
}
}
.container {
.container {
width: 100%;
background: #f4f5f6;
box-sizing: border-box;
padding-top: 88px;
}
}
.f-box {
.f-box {
width: 100%;
box-sizing: border-box;
padding: 15px;
}
}
</style>