unknown 1 year ago
parent
commit
2348bc6c96
  1. 11
      common/js/utils.js
  2. 248
      components/pickDateTimer/pickDateTimer.vue
  3. 2
      config/api.js
  4. 5
      config/request.js
  5. 2
      config/site.config.js
  6. 225
      pages/carEntry/examineAppointment/comp/step1.vue
  7. 59
      pages/carEntry/examineAppointment/comp/step2.vue
  8. 113
      pages/carEntry/examineAppointment/comp/step3.vue
  9. 153
      pages/carEntry/examineAppointment/comp/step4.vue
  10. 177
      pages/carEntry/examineAppointment/comp/step5.vue
  11. 86
      pages/carEntry/examineAppointment/comp/选择科目备份.vue
  12. 14
      pages/carEntry/examineAppointment/examineAppointment.vue
  13. 59
      pages/carEntry/operaAppointment/comp/step4.vue
  14. 4
      pages/carEntry/simulateAppointment/comp/step1.vue
  15. 55
      pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach.vue
  16. 33
      pages/indexEntry/enroll/registInfo/comp/searchSchool.vue
  17. 32
      pages/indexEntry/enroll/registInfo/registInfo.vue
  18. 2
      pages/indexEntry/findShcool/shcoolDetail/shcoolDetail.vue
  19. 17
      pages/indexEntry/publicVideo/publicVideo.vue
  20. 6
      pages/mineEntry/carData/carData.vue
  21. 4
      pages/tabbar/index/index.vue
  22. 4
      pages/tabbar/learnCar/index.vue

11
common/js/utils.js

@ -100,7 +100,13 @@ const install = (Vue, vm) => {
}); });
} }
let truncateText = (text, maxLength)=> {
if(!text) return
if (text.length > maxLength) {
return text.substring(0, maxLength) + "...";
}
return text;
}
@ -111,7 +117,8 @@ const install = (Vue, vm) => {
distanceLatLng, distanceLatLng,
distanceFn, distanceFn,
getDate, getDate,
callPhone
callPhone,
truncateText
} }
} }

248
components/pickDateTimer/pickDateTimer.vue

@ -0,0 +1,248 @@
<template>
<view class="step1">
<view class="card">
<view class="dateBox">
<view class="month-row">
<view class="month">2032.08</view>
<view class="arrow">
<u-icon name="arrow-down" :size="12" :color="'#1989FA'"></u-icon>
</view>
</view>
<view class="date_row">
<view class="icon left" @click="changeDateIndex(-1)">
<u-icon name="arrow-left" :size="12" :color="'#fff'"></u-icon>
</view>
<view class="dateArr" >
<view class="dateWidth" v-for="(item,index) in dateArr[currentDay]" :key="index" @click="chooseDate(item)" >
<view class="date" :class="{active: chooseDay==item.date}">
<view class="week">{{ item.week }}</view>
<view class="num">{{ item.num }}</view>
</view>
</view>
</view>
<view class="icon right" @click="changeDateIndex(1)">
<u-icon name="arrow-right" :size="12" :color="'#fff'"></u-icon>
</view>
</view>
</view>
</view>
<view class="card">
<view class="timeCon">
<view class="h2">上午</view>
<view class="time_box">
<view class="time_item" v-for="(item,index) in timerArr" :key="index" @click="chooseTimerClick(item)" :class="{active: item.id==chooseTimerId, disable: item.status!==1}">
<view class="lab" v-if="item.status==3">已过期</view>
<view class="lab" v-if="item.status==2">已约满</view>
<view class="lab" v-if="item.status==1">可预约</view>
<view class="time">{{ item.timer }}</view>
</view>
</view>
<view class="h2">下午</view>
<view class="time_box">
<view class="time_item" v-for="(item,index) in timerArr2" :key="index" @click="chooseTimerClick(item)" :class="{active: item.id==chooseTimerId,disable: item.status!==1}">
<view class="lab" v-if="item.status==3">已过期</view>
<view class="lab" v-if="item.status==2">已约满</view>
<view class="lab" v-if="item.status==1">可预约</view>
<view class="time">{{ item.timer }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { getDates } from '@/config/utils.js'
export default {
data() {
return {
dateArr: [],
currentDay: 0,
chooseDay: '',
timerArr: [
{status: 1, timer: '06:00-07:00', id: 1},
{status: 2, timer: '06:00-07:00', id: 2},
{status: 3, timer: '06:00-07:00', id: 3},
],
timerArr2: [
{status: 1, timer: '06:00-07:00', id: 4},
{status: 2, timer: '06:00-07:00', id: 5},
{status: 3, timer: '06:00-07:00', id: 6},
],
chooseTimerId: ''
}
},
mounted() {
const startDate = new Date('2023-09-06');
const endDate = new Date();
this.dateArr = getDates(startDate, endDate);
},
methods: {
//
chooseTimerClick(item) {
if(item.status!=1) return this.$u.toast('请选择可预约时间')
this.chooseTimerId = item.id
},
//
chooseDate(item) {
this.chooseDay = item.date
console.log(this.chooseDay)
},
changeDateIndex(num) {
if(this.currentDay==0&&num==-1) return
if(this.currentDay==this.dateArr.length-1&&num==1) return
this.currentDay = this.currentDay + num
console.log(this.currentDay)
},
}
}
</script>
<style lang="scss" scoped>
.card {
width: 100%;
margin-bottom: 24rpx;
overflow: hidden;
.dateBox {
padding: 36rpx 0 40rpx 0;
.month-row {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 36rpx;
.month {
font-size: 32rpx;
color: $themC;
}
.arrow {
margin-left: 6rpx;
}
}
.date_row {
width: 100%;
height: 100rpx;
position: relative;
.icon {
width: 40rpx;
height: 40rpx;
background: rgba(51,51,51,0.18);
backdrop-filter: blur(4rpx);
position: absolute;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
&.left {
left: 16rpx;
}
&.right {
right: 16rpx;
}
}
.dateArr {
display: flex;
padding: 0 70rpx;
// justify-content: space-between;
&.oneDate {
justify-content: center;
}
.dateWidth {
width: 20%;
display: flex;
justify-content: center;
}
.date {
width: 74rpx;
height: 100rpx;
border-radius: 16rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #333;
&.active {
background: rgba(25,137,250,0.1);
border: 2rpx solid #1989FA;
color: $themC;
}
.week {
}
.num {
margin-top: 4rpx;
}
}
}
}
}
}
.card {
.timeCon {
padding: 0 24rpx 40rpx 24rpx;
}
.h2 {
line-height: 90rpx;
font-weight: 500;
color: #333;
}
.time_box {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.time_item {
width: 30%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
border-radius: 12rpx;
color: #333;
&.active {
background: rgba(25,137,250,0.1);
border: 2rpx solid #1989FA;
color: $themC;
}
&.disable {
opacity: 0.4;
}
.lab {
font-size: 28rpx;
font-weight: 500;
}
.time {
font-size: 24rpx;
margin-top: 4rpx;
}
}
}
}
.btn {
width: 47%;
height: 72rpx;
background: #1989FA;
border-radius: 8rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 72rpx;
margin: 108rpx auto 50rpx auto;
}
</style>

2
config/api.js

@ -16,6 +16,8 @@ export const logOut = (data={}) => http.post('member/auth/logout', data, { custo
export const schoolPage = (params) => http.get('business/school/page', {params: params}) export const schoolPage = (params) => http.get('business/school/page', {params: params})
// 教练列表分页 // 教练列表分页
export const coachPage = (params) => http.get('business/coach/page', {params: params}) export const coachPage = (params) => http.get('business/coach/page', {params: params})
// 公益视频
export const publicVideoPage = (params) => http.get('business/public-video/page', {params: params})

5
config/request.js

@ -1,6 +1,5 @@
import { H5_API, WX_API } from './site.config.js'
import { refreshToken } from '@/config/api.js'
import { H5_API, WX_API,httpPrefix } from './site.config.js'
import { checkToken } from './utils' import { checkToken } from './utils'
@ -12,7 +11,7 @@ import { checkToken } from './utils'
module.exports = (vm) => { module.exports = (vm) => {
// 初始化请求配置 // 初始化请求配置
uni.$u.http.setConfig((config) => { uni.$u.http.setConfig((config) => {
let prefix = config.prefix?config.prefix:'app-api/'
let prefix = config.prefix?config.prefix: httpPrefix
/* config 为默认全局配置*/ /* config 为默认全局配置*/
config.baseURL = H5_API+ WX_API + prefix; /* 根域名 */ config.baseURL = H5_API+ WX_API + prefix; /* 根域名 */
console.log(config.baseURL) console.log(config.baseURL)

2
config/site.config.js

@ -4,5 +4,5 @@ module.exports = {
H5_API: VUE_APP_PLATFORM === 'h5' ? '/api' : '',//h5代理 H5_API: VUE_APP_PLATFORM === 'h5' ? '/api' : '',//h5代理
WX_API: VUE_APP_PLATFORM === 'h5' ? '' : 'http://192.168.1.26:48080/',//非代理地址 WX_API: VUE_APP_PLATFORM === 'h5' ? '' : 'http://192.168.1.26:48080/',//非代理地址
TEMP_HOST: VUE_APP_PLATFORM === 'h5' ? '' : 'http://192.168.1.26:48080/', TEMP_HOST: VUE_APP_PLATFORM === 'h5' ? '' : 'http://192.168.1.26:48080/',
httpPrefix: '/app-api/'
}; };

225
pages/carEntry/examineAppointment/comp/step1.vue

@ -1,82 +1,25 @@
<template> <template>
<view class="step1">
<view class="card">
<view class="dateBox">
<view class="month-row">
<view class="month">2032.08</view>
<view class="arrow">
<u-icon name="arrow-down" :size="12" :color="'#1989FA'"></u-icon>
</view>
</view>
<view class="date_row">
<view class="icon left">
<u-icon name="arrow-left" :size="12" :color="'#fff'"></u-icon>
</view>
<view class="dateArr">
<view class="date" v-for="(item,index) in dateArr" :key="index" :class="{active: index==1}">
<view class="week">{{ item.week }}</view>
<view class="num">{{ item.num }}</view>
</view>
</view>
<view class="icon right">
<u-icon name="arrow-right" :size="12" :color="'#fff'"></u-icon>
</view>
</view>
<view class="step2">
<view class="card" v-for="(item,index) in 10" :key="index" :class="{active: index==2}">
<view class="leftTxt">
<view class="name oneRowText">某某模拟驾驶馆</view>
<view class="adr">江西省江西市江西区尚坤丁兰国际1190</view>
</view>
<view class="icon">
<image src="@/static/images/index/telephone.png" mode=""></image>
<!-- <image src="@/static/images/index/telephone_cli.png" mode=""></image> -->
</view> </view>
</view> </view>
<view class="card">
<view class="timeCon">
<view class="h2">上午</view>
<view class="time_box">
<view class="time_item">
<view class="lab">已过期</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">已约满</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">可预约</view>
<view class="time">06:00-07:00</view>
</view>
</view>
<view class="h2">下午</view>
<view class="time_box">
<view class="time_item">
<view class="lab">已过期</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">已约满</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">可预约</view>
<view class="time">06:00-07:00</view>
</view>
</view>
<view class="poz_btn">
<view class="btn_row" >
<view class="btn" @click="changeStep(2)">下一步</view>
</view> </view>
</view> </view>
<view class="btn" @click="changeStep(2)">下一步</view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() {
return {
dateArr: [
{week: '一', num: '08'},
{week: '二', num: '09'},
{week: '三', num: '10'},
{week: '四', num: '11'},
{week: '五', num: '12'},
]
}
},
methods: { methods: {
changeStep(val) { changeStep(val) {
this.$emit('changeStep', val) this.$emit('changeStep', val)
@ -86,128 +29,48 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.card {
.poz_btn {
position: fixed;
bottom: 0;
left: 0;
padding: 32rpx;
width: 100%; width: 100%;
overflow: hidden;
.dateBox {
padding: 36rpx 0 40rpx 0;
.month-row {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 36rpx;
.month {
font-size: 32rpx;
color: $themC;
}
.arrow {
margin-left: 6rpx;
}
}
.date_row {
width: 100%;
height: 100rpx;
position: relative;
.icon {
width: 40rpx;
height: 40rpx;
background: rgba(51,51,51,0.18);
backdrop-filter: blur(4rpx);
position: absolute;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
&.left {
left: 16rpx;
}
&.right {
right: 16rpx;
}
}
.dateArr {
display: flex;
padding: 0 70rpx;
justify-content: space-between;
.date {
width: 74rpx;
height: 100rpx;
border-radius: 16rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 28rpx;
color: #333;
&.active {
background: rgba(25,137,250,0.1);
border: 2rpx solid #1989FA;
color: $themC;
}
.week {
}
.num {
margin-top: 4rpx;
}
}
}
}
}
background: #F6F6F6;
} }
.card {
.timeCon {
padding: 0 24rpx 40rpx 24rpx;
}
.h2 {
line-height: 90rpx;
font-weight: 500;
color: #333;
}
.time_box {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.time_item {
width: 30%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
.step2 {
width: 100%;
padding-bottom: 120rpx;
.card {
padding: 28rpx 36rpx;
display: flex; display: flex;
flex-direction: column;
justify-content: center;
justify-content: space-between;
align-items: center; align-items: center;
border-radius: 12rpx;
color: #333;
margin-bottom: 20rpx;
&.active { &.active {
background: rgba(25,137,250,0.1); background: rgba(25,137,250,0.1);
border: 2rpx solid #1989FA; border: 2rpx solid #1989FA;
color: $themC; color: $themC;
} }
&.disable {
opacity: 0.5;
.leftTxt {
width: 0;
flex: 1;
.name {
font-size: 32rpx;
font-weight: 600;
}
.adr {
font-size: 24rpx;
margin-top: 8rpx;
}
}
.icon {
width: 72rpx;
height: 72rpx;
} }
.lab {
font-size: 28rpx;
font-weight: 500;
}
.time {
font-size: 24rpx;
margin-top: 4rpx;
}
}
}
}
} }
.btn { .btn {
width: 47%; width: 47%;
height: 72rpx; height: 72rpx;
@ -217,6 +80,6 @@
color: #fff; color: #fff;
text-align: center; text-align: center;
line-height: 72rpx; line-height: 72rpx;
margin: 108rpx auto 50rpx auto;
margin: 0 auto;
} }
</style> </style>

59
pages/carEntry/examineAppointment/comp/step2.vue

@ -1,12 +1,11 @@
<template> <template>
<view class="step1"> <view class="step1">
<view class="card"> <view class="card">
<view class="list">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: index==1}">
{{ item.text }}</view>
</view>
<view class="carModel">C1小型汽车手动挡</view>
</view>
<view class="card">
<view class="carModel active">C2小型汽车自动挡</view>
</view> </view>
<view class="btn_row" style="margin-top: 108rpx;"> <view class="btn_row" style="margin-top: 108rpx;">
<view class="border btn" @click="changeStep(1)">返回上一步</view> <view class="border btn" @click="changeStep(1)">返回上一步</view>
<view class="btn" @click="changeStep(3)">下一步</view> <view class="btn" @click="changeStep(3)">下一步</view>
@ -18,15 +17,14 @@
export default { export default {
data() { data() {
return { return {
list: [{
text: '科目二',
id: 2
},
{
text: '科目三',
id: 3
},
dateArr: [
{week: '一', num: '08'},
{week: '二', num: '09'},
{week: '三', num: '10'},
{week: '四', num: '11'},
{week: '五', num: '12'},
], ],
show: true
} }
}, },
methods: { methods: {
@ -38,34 +36,27 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.list {
display: flex;
flex-wrap: wrap;
display: flex;
padding: 24rpx;
.listItem {
width: 32.4%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
font-weight: 500;
text-align: center;
line-height: 120rpx;
margin-right: 20rpx;
.card {
margin-bottom: 20rpx;
.carModel {
padding: 0 36rpx;
height: 152rpx;
background: #FFFFFF;
border-radius: 16rpx;
font-size: 32rpx;
font-weight: 600;
line-height: 152rpx;
&.active { &.active {
width: 200rpx;
height: 120rpx;
background: rgba(25, 137, 250, 0.1);
border-radius: 12rpx;
border: 2rpx solid $themC;
background: rgba(25,137,250,0.1);
color: $themC; color: $themC;
border: 2rpx solid #1989FA;
} }
} }
} }
.btn_row { .btn_row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: 30rpx;
.btn { .btn {
width: 47%; width: 47%;
height: 72rpx; height: 72rpx;
@ -83,4 +74,6 @@
} }
} }
} }
</style> </style>

113
pages/carEntry/examineAppointment/comp/step3.vue

@ -1,26 +1,42 @@
<template> <template>
<view class="step2">
<view class="card" v-for="(item,index) in 10" :key="index" :class="{active: index==2}">
<view class="leftTxt">
<view class="name oneRowText">某某模拟驾驶馆</view>
<view class="adr">江西省江西市江西区尚坤丁兰国际1190</view>
</view>
<view class="icon">
<image src="@/static/images/index/telephone.png" mode=""></image>
<!-- <image src="@/static/images/index/telephone_cli.png" mode=""></image> -->
<view class="step3">
<view class="card">
<view class="list">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: index==1}">
<view class="num">{{index+1}}号车</view>
<view class="text">{{ item.text }}</view>
</view>
</view> </view>
</view> </view>
<view class="poz_btn">
<view class="btn_row" >
<view class="border btn" @click="changeStep(2)">返回上一步</view>
<view class="btn" @click="changeStep(4)">下一步</view>
</view>
<view class="btn_row" style="margin-top: 108rpx;">
<view class="border btn" @click="changeStep(2)">返回上一步</view>
<view class="btn" @click="changeStep(4)">下一步</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() {
return {
list: [{
text: '00001',
id: 1
},
{
text: '00002',
id: 1
},
{
text: '00003',
id: 1
},
],
show: true
}
},
methods: { methods: {
changeStep(val) { changeStep(val) {
this.$emit('changeStep', val) this.$emit('changeStep', val)
@ -30,52 +46,48 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.poz_btn {
position: fixed;
bottom: 0;
left: 0;
padding: 12rpx 32rpx;
width: 100%;
background: #F6F6F6;
.card {
padding: 28rpx 24rpx;
} }
.step2 {
width: 100%;
padding-bottom: 120rpx;
.card {
padding: 28rpx 36rpx;
.list {
display: flex;
flex-wrap: wrap;
display: flex;
justify-content: space-between;
.listItem {
width: 32.4%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
font-weight: 500;
text-align: center;
font-size: 24rpx;
display: flex; display: flex;
justify-content: space-between;
flex-direction: column;
align-items: center; align-items: center;
margin-bottom: 20rpx;
justify-content: center;
.num {
font-size: 28rpx;
font-weight: 600;
margin-bottom: 10rpx;
}
&.active { &.active {
background: rgba(25,137,250,0.1);
border: 2rpx solid #1989FA;
width: 200rpx;
height: 120rpx;
background: rgba(25, 137, 250, 0.1);
border-radius: 12rpx;
border: 2rpx solid $themC;
color: $themC; color: $themC;
} }
.leftTxt {
width: 0;
flex: 1;
.name {
font-size: 32rpx;
font-weight: 600;
}
.adr {
font-size: 24rpx;
margin-top: 8rpx;
}
}
.icon {
width: 72rpx;
height: 72rpx;
}
} }
} }
.btn_row { .btn_row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: 20rpx;
.btn { .btn {
width: 47%; width: 47%;
height: 72rpx; height: 72rpx;
@ -85,7 +97,7 @@
color: #fff; color: #fff;
text-align: center; text-align: center;
line-height: 72rpx; line-height: 72rpx;
&.border { &.border {
background: rgba(25, 137, 250, 0.1); background: rgba(25, 137, 250, 0.1);
border: 2rpx solid $themC; border: 2rpx solid $themC;
@ -93,4 +105,5 @@
} }
} }
} }
</style> </style>

153
pages/carEntry/examineAppointment/comp/step4.vue

@ -1,15 +1,48 @@
<template> <template>
<view class="step1"> <view class="step1">
<view class="card">
<view class="carModel">C1小型汽车手动挡</view>
</view>
<view class="card">
<view class="carModel active">C2小型汽车自动挡</view>
</view>
<view class="btn_row" style="margin-top: 108rpx;">
<pickDateTimer/>
<view class="btn_row">
<view class="border btn" @click="changeStep(3)">返回上一步</view> <view class="border btn" @click="changeStep(3)">返回上一步</view>
<view class="btn" @click="changeStep(5)">下一步</view>
<view class="btn" @click="show=true">确认预约</view>
</view> </view>
<u-popup :show="show" mode="center" :round="8">
<view class="popupCon">
<view class="h2">再次确认预约信息</view>
<view class="content">
<view class="row">
<view class="lab">预约类型</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约科目</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约考场</view>
<view class="val">2023/08/08 08:009:00</view>
</view>
<view class="row">
<view class="lab">预约车型</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约车辆</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约时间</view>
<view class="val">2023/08/08 08:009:00</view>
</view>
</view>
<view class="btn_row">
<view class="border btn" @click="show = false">返回修改</view>
<view class="btn">确认</view>
</view>
</view>
</u-popup>
</view> </view>
</template> </template>
@ -17,14 +50,8 @@
export default { export default {
data() { data() {
return { return {
dateArr: [
{week: '一', num: '08'},
{week: '二', num: '09'},
{week: '三', num: '10'},
{week: '四', num: '11'},
{week: '五', num: '12'},
],
show: true
show: false
} }
}, },
methods: { methods: {
@ -37,26 +64,90 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.card { .card {
margin-bottom: 20rpx;
.carModel {
padding: 0 36rpx;
height: 152rpx;
background: #FFFFFF;
border-radius: 16rpx;
width: 100%;
overflow: hidden;
.dateBox {
padding: 36rpx 0 40rpx 0;
.month-row {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 36rpx;
.month {
font-size: 32rpx; font-size: 32rpx;
font-weight: 600;
line-height: 152rpx;
&.active {
background: rgba(25,137,250,0.1);
color: $themC;
border: 2rpx solid #1989FA;
color: $themC;
}
.arrow {
margin-left: 6rpx;
}
}
.date_row {
width: 100%;
height: 100rpx;
position: relative;
.icon {
width: 40rpx;
height: 40rpx;
background: rgba(51,51,51,0.18);
backdrop-filter: blur(4rpx);
position: absolute;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
&.left {
left: 16rpx;
} }
}
&.right {
right: 16rpx;
}
}
}
}
} }
.popupCon {
padding: 30rpx 50rpx;
.h2 {
font-weight: 600;
color: #333333;
line-height: 70rpx;
font-size: 36rpx;
text-align: center;
}
.content {
padding-bottom: 20rpx;
.row {
padding: 22rpx 0;
display: flex;
font-size: 28rpx;
align-items: center;
.lab {
width: 180rpx;
color: #686B73;
}
.val {
flex: 1;
font-weight: 500;
}
}
}
}
.btn_row { .btn_row {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
padding-bottom: 30rpx;
.btn { .btn {
width: 47%; width: 47%;
height: 72rpx; height: 72rpx;
@ -74,6 +165,4 @@
} }
} }
} }
</style> </style>

177
pages/carEntry/examineAppointment/comp/step5.vue

@ -1,177 +0,0 @@
<template>
<view class="step3">
<view class="card">
<view class="list">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: index==1}">
<view class="num">{{index+1}}号车</view>
<view class="text">{{ item.text }}</view>
</view>
</view>
</view>
<view class="btn_row" style="margin-top: 108rpx;">
<view class="border btn" @click="changeStep(4)">返回上一步</view>
<view class="btn" @click="show = true">确认预约</view>
</view>
<u-popup :show="show" mode="center" :round="8">
<view class="popupCon">
<view class="h2">再次确认预约信息</view>
<view class="content">
<view class="row">
<view class="lab">预约类型</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约科目</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约考场</view>
<view class="val">2023/08/08 08:009:00</view>
</view>
<view class="row">
<view class="lab">预约车型</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约车辆</view>
<view class="val">xxx</view>
</view>
<view class="row">
<view class="lab">预约时间</view>
<view class="val">2023/08/08 08:009:00</view>
</view>
</view>
<view class="btn_row">
<view class="border btn" @click="show = false">返回修改</view>
<view class="btn">确认</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
data() {
return {
list: [{
text: '00001',
id: 1
},
{
text: '00002',
id: 1
},
{
text: '00003',
id: 1
},
],
show: true
}
},
methods: {
changeStep(val) {
this.$emit('changeStep', val)
}
}
}
</script>
<style lang="scss" scoped>
.card {
padding: 28rpx 24rpx;
}
.list {
display: flex;
flex-wrap: wrap;
display: flex;
justify-content: space-between;
.listItem {
width: 32.4%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
font-weight: 500;
text-align: center;
font-size: 24rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.num {
font-size: 28rpx;
font-weight: 600;
margin-bottom: 10rpx;
}
&.active {
width: 200rpx;
height: 120rpx;
background: rgba(25, 137, 250, 0.1);
border-radius: 12rpx;
border: 2rpx solid $themC;
color: $themC;
}
}
}
.btn_row {
display: flex;
justify-content: space-between;
.btn {
width: 47%;
height: 72rpx;
background: #1989FA;
border-radius: 8rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 72rpx;
&.border {
background: rgba(25, 137, 250, 0.1);
border: 2rpx solid $themC;
color: $themC;
}
}
}
.popupCon {
padding: 30rpx 50rpx;
.h2 {
font-weight: 600;
color: #333333;
line-height: 70rpx;
font-size: 36rpx;
text-align: center;
}
.content {
padding-bottom: 20rpx;
.row {
padding: 22rpx 0;
display: flex;
font-size: 28rpx;
align-items: center;
.lab {
width: 180rpx;
color: #686B73;
}
.val {
flex: 1;
font-weight: 500;
}
}
}
}
</style>

86
pages/carEntry/examineAppointment/comp/选择科目备份.vue

@ -0,0 +1,86 @@
<template>
<view class="step1">
<view class="card">
<view class="list">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: index==1}">
{{ item.text }}</view>
</view>
</view>
<view class="btn_row" style="margin-top: 108rpx;">
<view class="border btn" @click="changeStep(1)">返回上一步</view>
<view class="btn" @click="changeStep(3)">下一步</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
list: [{
text: '科目二',
id: 2
},
{
text: '科目三',
id: 3
},
],
}
},
methods: {
changeStep(val) {
this.$emit('changeStep', val)
}
}
}
</script>
<style lang="scss" scoped>
.list {
display: flex;
flex-wrap: wrap;
display: flex;
padding: 24rpx;
.listItem {
width: 32.4%;
height: 120rpx;
background: #F8F8F8;
border-radius: 12rpx;
font-weight: 500;
text-align: center;
line-height: 120rpx;
margin-right: 20rpx;
&.active {
width: 200rpx;
height: 120rpx;
background: rgba(25, 137, 250, 0.1);
border-radius: 12rpx;
border: 2rpx solid $themC;
color: $themC;
}
}
}
.btn_row {
display: flex;
justify-content: space-between;
.btn {
width: 47%;
height: 72rpx;
background: #1989FA;
border-radius: 8rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 72rpx;
&.border {
background: rgba(25, 137, 250, 0.1);
border: 2rpx solid $themC;
color: $themC;
}
}
}
</style>

14
pages/carEntry/examineAppointment/examineAppointment.vue

@ -19,17 +19,17 @@
<view class="dian" @click="changeStep(4)"> <view class="dian" @click="changeStep(4)">
<view class="num" :class="{active: currentStep==4}">4</view> <view class="num" :class="{active: currentStep==4}">4</view>
</view> </view>
<view class="line"></view>
<!-- <view class="line"></view>
<view class="dian" @click="changeStep(5)"> <view class="dian" @click="changeStep(5)">
<view class="num" :class="{active: currentStep==5}">5</view> <view class="num" :class="{active: currentStep==5}">5</view>
</view>
</view> -->
</view> </view>
<view class="step_text"> <view class="step_text">
<view class="txt">选择时间</view>
<view class="txt">选择科目</view>
<!-- <view class="txt">选择科目</view> -->
<view class="txt">选择考场</view> <view class="txt">选择考场</view>
<view class="txt">选择车型</view> <view class="txt">选择车型</view>
<view class="txt">选择车辆</view> <view class="txt">选择车辆</view>
<view class="txt">选择时间</view>
</view> </view>
</view> </view>
@ -37,7 +37,7 @@
<step2 v-if="currentStep==2" @changeStep="changeStep"></step2> <step2 v-if="currentStep==2" @changeStep="changeStep"></step2>
<step3 v-if="currentStep==3" @changeStep="changeStep"></step3> <step3 v-if="currentStep==3" @changeStep="changeStep"></step3>
<step4 v-if="currentStep==4" @changeStep="changeStep"></step4> <step4 v-if="currentStep==4" @changeStep="changeStep"></step4>
<step5 v-if="currentStep==5" @changeStep="changeStep"></step5>
<!-- <step5 v-if="currentStep==5" @changeStep="changeStep"></step5> -->
</view> </view>
</view> </view>
</template> </template>
@ -47,9 +47,9 @@
import step2 from './comp/step2' import step2 from './comp/step2'
import step3 from './comp/step3' import step3 from './comp/step3'
import step4 from './comp/step4' import step4 from './comp/step4'
import step5 from './comp/step5'
// import step5 from './comp/step5'
export default { export default {
components: { step1, step2, step3, step4, step5 },
components: { step1, step2, step3, step4,},
data() { data() {
return { return {
currentStep: 1 currentStep: 1

59
pages/carEntry/operaAppointment/comp/step4.vue

@ -1,64 +1,7 @@
<template> <template>
<view class="step1"> <view class="step1">
<view class="card">
<view class="dateBox">
<view class="month-row">
<view class="month">2032.08</view>
<view class="arrow">
<u-icon name="arrow-down" :size="12" :color="'#1989FA'"></u-icon>
</view>
</view>
<view class="date_row">
<view class="icon left">
<u-icon name="arrow-left" :size="12" :color="'#fff'"></u-icon>
</view>
<view class="dateArr">
<view class="date" v-for="(item,index) in dateArr" :key="index" :class="{active: index==1}">
<view class="week">{{ item.week }}</view>
<view class="num">{{ item.num }}</view>
</view>
</view>
<view class="icon right">
<u-icon name="arrow-right" :size="12" :color="'#fff'"></u-icon>
</view>
</view>
</view>
</view>
<view class="card">
<view class="timeCon">
<view class="h2">上午</view>
<view class="time_box">
<view class="time_item">
<view class="lab">已过期</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">已约满</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">可预约</view>
<view class="time">06:00-07:00</view>
</view>
</view>
<view class="h2">下午</view>
<view class="time_box">
<view class="time_item">
<view class="lab">已过期</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">已约满</view>
<view class="time">06:00-07:00</view>
</view>
<view class="time_item">
<view class="lab">可预约</view>
<view class="time">06:00-07:00</view>
</view>
</view>
</view>
</view>
<pickDateTimer/>
<view class="poz_btn"> <view class="poz_btn">
<view class="btn_row" > <view class="btn_row" >

4
pages/carEntry/simulateAppointment/comp/step1.vue

@ -79,8 +79,6 @@
const startDate = new Date('2023-09-06'); const startDate = new Date('2023-09-06');
const endDate = new Date(); const endDate = new Date();
this.dateArr = getDates(startDate, endDate); this.dateArr = getDates(startDate, endDate);
}, },
methods: { methods: {
// //
@ -224,7 +222,7 @@
color: $themC; color: $themC;
} }
&.disable { &.disable {
opacity: 0.5;
opacity: 0.4;
} }
.lab { .lab {
font-size: 28rpx; font-size: 28rpx;

55
pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach.vue

@ -2,14 +2,14 @@
<view class="main"> <view class="main">
<u-sticky> <u-sticky>
<view class="searchBox"> <view class="searchBox">
<u-search placeholder="请输入教练姓名" v-model="params.coachName" :show-action="false" @search="searchFn"> </u-search>
<u-search placeholder="请输入教练姓名" v-model="params.name" :show-action="false" @search="searchFn"> </u-search>
</view> </view>
</u-sticky> </u-sticky>
<view class="ul"> <view class="ul">
<view class="li" v-for="(item,index) in list" :key="index" @click="chooseClick(item)"> <view class="li" v-for="(item,index) in list" :key="index" @click="chooseClick(item)">
<view class="leftT">{{item.coachName}}</view>
<view class="rigthT">{{item.mobilePhone}}</view>
<view class="leftT">{{item.name}}</view>
<view class="rigthT">{{item.mobile}}</view>
</view> </view>
</view> </view>
<u-loadmore :status="status" v-if="list.length>30" :icon-type="'flower'" /> <u-loadmore :status="status" v-if="list.length>30" :icon-type="'flower'" />
@ -17,55 +17,54 @@
</template> </template>
<script> <script>
// import learnDrive from '@/api/learnDrive.js'
import { coachPage } from '@/config/api.js'
export default { export default {
data() { data() {
return { return {
keyword: '', keyword: '',
trainingSchoolId: '', trainingSchoolId: '',
list: [
{coachName: '张教练', mobilePhone: '15698236123'}
],
list: [],
params: { params: {
pageIndex: 1,
pageSize: 30,
trainingSchoolId: ''
pageNo: 1,
pageSize: 20,
schoolId: '',
name: ''
}, },
status: 'loadmore',
status: 'loading',
} }
}, },
onLoad(options) { onLoad(options) {
this.params.trainingSchoolId = options.trainingSchoolId
this.querySchoolCoachFn()
this.params.schoolId = options.schoolId
this.coachPageFn()
}, },
onReachBottom() { onReachBottom() {
if(status=='nomore') return if(status=='nomore') return
this.querySchoolCoachFn()
this.coachPageFn()
}, },
methods: { methods: {
chooseClick(item) { chooseClick(item) {
this.$store.commit('upDateCoachItem', item)
uni.$emit('upDateCoachItem', item)
uni.navigateBack() uni.navigateBack()
}, },
searchFn() { searchFn() {
this.list = [] this.list = []
this.params.pageIndex = 1
this.status = 'loadmore'
this.querySchoolCoachFn()
this.params.pageNo = 1
this.status = 'loading'
this.coachPageFn()
}, },
// //
async querySchoolCoachFn() {
// const [nulls, res] = await learnDrive.querySchoolCoach(this.params)
// this.list.push(...res.data)
// this.params.pageIndex ++
// if(res.data.length<this.params.pageSize) {
// this.status = 'nomore'
// }
// console.log('')
// console.log(res)
async coachPageFn() {
const {data:res} = await coachPage(this.params)
this.list.push(...res.list)
this.params.pageNo ++
this.total = res.total
if(this.list.length>=this.total) {
this.status = 'nomore'
}
console.log('获取教练')
console.log(this.list)
}, },
} }
} }

33
pages/indexEntry/enroll/registInfo/comp/searchSchool.vue

@ -9,14 +9,14 @@
<u-search placeholder="请输入驾校名称" v-model.trim="keyword" @search="searchSchool" @custom="searchSchool"> <u-search placeholder="请输入驾校名称" v-model.trim="keyword" @search="searchSchool" @custom="searchSchool">
</u-search> </u-search>
</view> </view>
<scroll-view scroll-y="true" style="height: calc(100% - 180rpx);" @scrolltolower="loadMore">
<scroll-view scroll-y="true" style="height: 700rpx" @scrolltolower="loadMore">
<view class="ul"> <view class="ul">
<view class="li" v-for="(item,index) in list" :key="index" @click="chooseSchool(item)">
<view class="li" v-for="(item,index) in listData" :key="index" @click="chooseSchool(item)">
<view class="name"> <view class="name">
{{item.schoolName}}
{{ $u.utils.truncateText(item.name, 18) }}
</view> </view>
<view class="starText"> <view class="starText">
{{item.starLevel}}
{{item.stars}}
</view> </view>
<!-- <view class="distance"> <!-- <view class="distance">
{{ $u.utils.distanceFn(item.distance)}} {{ $u.utils.distanceFn(item.distance)}}
@ -29,21 +29,39 @@
</template> </template>
<script> <script>
import { schoolPage } from '@/config/api.js'
export default { export default {
data() { data() {
return { return {
keyword: '', keyword: '',
status: 'loadmore', status: 'loadmore',
list: [
{schoolName: '翔力驾校',starLevel: 5, }
]
listData: [],
total: 10,
params: {
pageNo: 1,
pageSize: 20,
lat: 30.27419537786047,
lng: 120.20633397715788,
}
} }
}, },
created() {
this.schoolPageFn()
},
methods: { methods: {
// //
chooseSchool(item) { chooseSchool(item) {
this.$emit('chooseSchool', item) this.$emit('chooseSchool', item)
}, },
//
async schoolPageFn() {
const {data: res} = await schoolPage(this.params)
this.params.pageNo ++
this.listData.push(...res.list)
this.total = res.total
if(this.listData.length>=this.total) this.status = 'nomore'
console.log(res)
}
} }
} }
</script> </script>
@ -64,7 +82,6 @@
.ul { .ul {
width: 100%; width: 100%;
padding: 0 20rpx; padding: 0 20rpx;
.li { .li {
width: 100%; width: 100%;
display: flex; display: flex;

32
pages/indexEntry/enroll/registInfo/registInfo.vue

@ -56,7 +56,7 @@
<view class="row"> <view class="row">
<view class="lab">选择教练</view> <view class="lab">选择教练</view>
<view class="rightCon"> <view class="rightCon">
<view class="row" @click="$goPage('/pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach')">
<view class="row" @click="goCoach">
<view class="val"> <view class="val">
<mySelect :value="form.coach"/> <mySelect :value="form.coach"/>
</view> </view>
@ -310,18 +310,7 @@
{label: '科目三', id: 3}, {label: '科目三', id: 3},
] ]
], ],
columnsCar: [
[
{
label: 'C1',
id: 1
},
{
label: 'C2',
id: 2
}
]
],
columnsCar: [],
form: { form: {
school: '', school: '',
classModel: '', classModel: '',
@ -342,16 +331,18 @@
} }
}, },
onLoad() { onLoad() {
this.$on('upDateCoachItem',(item)=>{
uni.$on('upDateCoachItem',(item)=>{
console.log(item) console.log(item)
this.form.coach = item.coachName
this.form.coach = item.name
}) })
}, },
methods: { methods: {
// //
chooseSchool(item) { chooseSchool(item) {
this.form.school = item.schoolName
console.log(item)
this.form.school = item.name
this.form.schoolId = item.id
this.columnsCar = [item.businessScope.split(',')]
console.log(this.columnsCar)
this.showSchool = false this.showSchool = false
}, },
// //
@ -366,7 +357,12 @@
let item = val.value[0] let item = val.value[0]
console.log(item) console.log(item)
this.showCar = false this.showCar = false
this.form.car = item.label
this.form.car = item
},
//
goCoach() {
if(!this.form.schoolId) return this.$u.toast('请先选择驾校')
this.$goPage('/pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach?schoolId=' + this.form.schoolId)
}, },
// //
confirmFirstLicenceTime(val) { confirmFirstLicenceTime(val) {

2
pages/indexEntry/findShcool/shcoolDetail/shcoolDetail.vue

@ -97,6 +97,8 @@
}, },
onReachBottom() { onReachBottom() {
if(this.currentNav==3&&this.coachList.length<this.tab3Total) { if(this.currentNav==3&&this.coachList.length<this.tab3Total) {
this.coachParams.pageNo = 1
this.coachList = []
this.coachPageFn() this.coachPageFn()
} }
}, },

17
pages/indexEntry/publicVideo/publicVideo.vue

@ -16,8 +16,23 @@
<script> <script>
import videoItem from './comp/videoItem' import videoItem from './comp/videoItem'
import { publicVideoPage } from '@/config/api.js'
export default { export default {
components: { videoItem }
components: { videoItem },
data() {
return {
pageNo: 1,
pageSize: 20,
}
},
onLoad() {
this.publicVideoPageFn()
},
methods: {
async publicVideoPageFn() {
const {data: res} = await publicVideoPage(this.params)
}
}
} }
</script> </script>

6
pages/mineEntry/carData/carData.vue

@ -1,5 +1,5 @@
<template> <template>
<view class="myData" id="app">
<view class="myData" id="app" ref="appref">
<topNavbar title=" "></topNavbar> <topNavbar title=" "></topNavbar>
<view class="pad"> <view class="pad">
<view class="topText"> <view class="topText">
@ -84,7 +84,7 @@
</view> </view>
</view> </view>
<!-- <view class="btnBorder" @click="destImgFn">立即分享</view> <!-- <view class="btnBorder" @click="destImgFn">立即分享</view>
<canvas canvas-id="canvas" style="width: 350px; height: 350px;" class="canvas">3333</canvas>
<canvas canvas-id="canvas" style="width: 300px; height: 300px;" class="canvas" ref="canvas"></canvas>
<view class="img" style="width: 300px; height: 300px;"> <view class="img" style="width: 300px; height: 300px;">
<image :src="shareImageUrl" mode=""></image> <image :src="shareImageUrl" mode=""></image>
</view> --> </view> -->
@ -98,6 +98,7 @@
components: { ringChart, columnChart }, components: { ringChart, columnChart },
data() { data() {
return { return {
shareImageUrl: ''
} }
}, },
onReady() { onReady() {
@ -112,6 +113,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.myData { .myData {
width: 100%; width: 100%;
height: 1006rpx;
background: url('http://192.168.1.20:81/zhili/image/20230818/409dca21dfec44eb8477e056ee23e437.png') #f6f6f6 no-repeat; background: url('http://192.168.1.20:81/zhili/image/20230818/409dca21dfec44eb8477e056ee23e437.png') #f6f6f6 no-repeat;
background-size: 100% 544rpx; background-size: 100% 544rpx;
min-height: 100vh; min-height: 100vh;

4
pages/tabbar/index/index.vue

@ -288,8 +288,8 @@
}, },
methods: { methods: {
refereshFn() { refereshFn() {
// this.$store.dispatch('refreshToken')
this.$store.dispatch('getUserInfo')
this.$store.dispatch('refreshToken')
// this.$store.dispatch('getUserInfo')
}, },
close() { close() {

4
pages/tabbar/learnCar/index.vue

@ -84,12 +84,12 @@
min-height: 100vh; min-height: 100vh;
// background: url('../../../static/images/bigImg/topbg.png') #F6F6F6 no-repeat; // background: url('../../../static/images/bigImg/topbg.png') #F6F6F6 no-repeat;
background-size: 100% 362rpx; background-size: 100% 362rpx;
padding: 0 32rpx;
padding: 0 32rpx 32rpx 32rpx;
.title { .title {
font-size: 36rpx; font-size: 36rpx;
font-weight: 600; font-weight: 600;
color: #fff; color: #fff;
padding: 10rpx 0 48rpx 00rpx;
padding: 10rpx 0 48rpx 0rpx;
} }
.navCard { .navCard {
.nav_row { .nav_row {

Loading…
Cancel
Save