Browse Source

模拟预约完成

master
unknown 1 year ago
parent
commit
9698aae28b
  1. 4
      components/cancelReservation/cancelReservation.vue
  2. 8
      config/api.js
  3. 2
      pages.json
  4. 8
      pages/carEntry/simulateAppointment/comp/pickDate.vue
  5. 8
      pages/carEntry/simulateAppointment/comp/step3.vue
  6. 2
      pages/carEntry/simulateAppointment/simulateAppointment.vue
  7. 2
      pages/indexEntry/enroll/enroll.vue
  8. 7
      pages/indexEntry/enroll/realName/realName.vue
  9. 2
      pages/mineEntry/myAppointment/comp/comp.scss
  10. 4
      pages/mineEntry/myAppointment/comp/examin.vue
  11. 22
      pages/mineEntry/myAppointment/comp/imitate.vue
  12. 28
      pages/mineEntry/myAppointment/detail/detail.vue
  13. 4
      pages/mineEntry/myAppointment/detail/examin.vue
  14. 30
      pages/mineEntry/myAppointment/detail/imitate.vue
  15. 63
      pages/mineEntry/myAppointment/myAppointment.vue
  16. 2
      pages/tabbar/index/index.vue
  17. BIN
      static/images/car/carIcon.png
  18. BIN
      static/images/car/listIcon.png
  19. BIN
      static/images/car/newSatus.png
  20. BIN
      static/images/car/site.png
  21. 3
      store/modules/user.js

4
components/cancelReservation/cancelReservation.vue

@ -1,7 +1,7 @@
<template>
<view class="popupCon">
<view class="h2">确定取消预约</view>
<view class="txt">某个训练预约取消规则</view>
<!-- <view class="txt">某个训练预约取消规则</view> -->
<view class="btnBox">
<view class="btn" @click="$emit('popupBtnClick',0)">取消</view>
<view class="btn right" @click="$emit('popupBtnClick',1)">确定</view>
@ -23,7 +23,7 @@
color: #333;
font-weight: 600;
text-align: center;
padding: 90rpx 0 0rpx 0;
padding: 60rpx 0 50rpx 0;
}
.txt {

8
config/api.js

@ -26,8 +26,8 @@ export const addSchoolComment = (data={}) => http.post('business/appcomplain/add
export const addCoachComment = (data={}) => http.post('business/appcomplain/addCoachComment', data,)
// 我的评价
export const getUsersCommentById = (params) => http.get('business/appcomplain/getUsersById', {params: params})
// 获取已报名驾校
export const getStudentinfo = (params) => http.get('business/appcomplain/getStudentinfo', {params: params})
// 获得学员档案记录
export const getStudentinfo = () => http.get('app/student-record/get', )
// 驾校评论分页
export const getSchoolListComment = (params) => http.get('business/school/getListComment', {params: params})
// 教练评价分页
@ -108,6 +108,10 @@ export const simulationDevices = (params) => http.get('business/booking/simulati
export const simulationCreate = (data) => http.post('business/booking/simulation-record/create', data)
// 5获得模拟预约记录
export const simulationPage = (params) => http.get('business/booking/simulation-record/page', {params})
// 6获得模拟详情
export const simulationDetail = (params) => http.get('business/booking/simulation-record/get', {params})
// 7取消模拟预约
export const cancelSimulationDevice = (params) => http.put('business/booking/simulation-record/cancelSimulation?id='+ params.id,)
// 1新增实操预约记录
export const masterCreate = (data) => http.post('business/booking/master/create', data)
// 1获得考场

2
pages.json

@ -392,7 +392,7 @@
"style": {
"navigationBarTitleText": "我的预约",
"navigationStyle": "custom",
"enablePullDownRefresh": false,
"enablePullDownRefresh": true,
"backgroundTextStyle": "dark"
}
},

8
pages/carEntry/simulateAppointment/comp/pickDate.vue

@ -57,11 +57,12 @@
</view>
</view>
</view>
<view class="card" v-if="!timerArr2.length&&!timerArr.length">
<nodata>暂无预约排课</nodata>
</view>
</view>
<view class="card" v-if="!timerArr2.length&&!timerArr.length">
<nodata>暂无预约排课</nodata>
</view>
<u-datetime-picker
:show="show"
@ -70,6 +71,7 @@
:maxDate="maxDate"
mode="year-month"
@confirm="changeMonth"
@cancel="show=false"
></u-datetime-picker>
</view>
</template>

8
pages/carEntry/simulateAppointment/comp/step3.vue

@ -2,7 +2,7 @@
<view class="step3">
<view class="card">
<view class="list">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: FormData.deviceNum==item.id}" @click="chooseDevice(item)">
<view class="listItem" v-for="(item,index) in list" :key="index" :class="{active: FormData.deviceNum==item.seq}" @click="chooseDevice(item)">
{{ item.seq }}</view>
</view>
</view>
@ -30,7 +30,7 @@
</view>
<view class="row">
<view class="lab">预约模拟器</view>
<view class="val">{{ FormData.deviceName}}</view>
<view class="val">{{ FormData.deviceNum}}</view>
</view>
</view>
<view class="btn_row">
@ -67,8 +67,8 @@
},
chooseDevice(item) {
this.FormData.deviceNum = item.id
this.FormData.deviceName = item.seq
this.FormData.deviceNum = item.seq
// this.FormData.deviceName = item.seq
},
confirmClick(item) {

2
pages/carEntry/simulateAppointment/simulateAppointment.vue

@ -56,7 +56,7 @@
created() {
this.simulationPointFn()
this.FormData.trainType = this.vuex_userInfo.trainType
this.FormData.studentId = this.userId
this.FormData.studentId = this.vuex_userInfo.id
},
methods: {
changeStep(num) {

2
pages/indexEntry/enroll/enroll.vue

@ -94,7 +94,7 @@
this.showType = false
},
async getpersonfaceFn() {
const {data: res} = await getpersonface({ ruleId: 1, RedirectUrl: 'http://192.168.1.44:8001/h5/#/pages/indexEntry/enroll/realName/realName'})
const {data: res} = await getpersonface({ ruleId: 1, RedirectUrl: 'http://192.168.1.44:8003/h5/#/pages/indexEntry/enroll/realName/realName'})
let obj = JSON.parse(res)
this.link = obj.Url
this.$store.commit('updateBizToken', obj.BizToken)

7
pages/indexEntry/enroll/realName/realName.vue

@ -21,7 +21,7 @@
})
let obj = {
ruleId: 1,
redirectUrl: 'http://192.168.1.44:8001/h5/#/pages/indexEntry/enroll/registInfo/registInfo',
redirectUrl: 'http://192.168.1.44:8003/h5/#/pages/indexEntry/enroll/registInfo/registInfo',
bizToken: this.$store.state.school.BizToken,
userId: this.userId
}
@ -34,8 +34,9 @@
}
// console.log(obj2)
// alert('')
// alert(obj2.Text.name)
alert('请求结果来了')
alert(obj2.Text.ErrMsg)
alert(obj2.Text.name)
// uni.setStorageSync(obj2)
},
}

2
pages/mineEntry/myAppointment/comp/comp.scss

@ -39,7 +39,7 @@
}
.target {
border-bottom: 2rpx dashed #E8E9EC;
// border-bottom: 2rpx dashed #E8E9EC;
}
.row {

4
pages/mineEntry/myAppointment/comp/examin.vue

@ -35,11 +35,11 @@
<view class="name">{{item.classTime}}</view>
</view>
</view>
<view class="border_bottom">
<view class="border_bottom" v-if="item.writtenoffStatus==1||item.recordStatus==9">
<view class="dateBox">
<!-- <view class="date">完成时间2022-01-04</view> -->
<view class="date" v-if="item.cancelTime&&item.recordStatus==9">取消时间{{ item.cancelTime }}</view>
<view class="date"v-if="item.recordStatus==9&&item.cancelTime">取消时间{{ $u.timeFormat(item.cancelTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
<!-- <view class="date">处理时间2022-01-04</view> -->
</view>
<view class="btnBg" @click.stop="$goPage('/pages/carEntry/evaluate/evaluate')" v-if="item.writtenoffStatus==1">去评价</view>

22
pages/mineEntry/myAppointment/comp/imitate.vue

@ -4,10 +4,11 @@
<view class="top_row">
<view class="flex">
<view class="tag">模拟器</view>
<view class="schoolName">xxx模拟驾驶馆</view>
<view class="schoolName">{{item.name}}</view>
</view>
<view class="status">
<view class="text">待处理</view>
<view class="text" v-if="item.recordStatus==9">已取消</view>
<view class="text" v-else>{{statusTxt[item.recordStatus]}}</view>
<view class="icon">
<u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
</view>
@ -21,7 +22,7 @@
</view>
<view class="lab">模拟器编号</view>
</view>
<view class="name">000001</view>
<view class="name">{{item.deviceNum}}</view>
</view>
<view class="row">
<view class="leftLab">
@ -30,13 +31,12 @@
</view>
<view class="lab">预约时间</view>
</view>
<view class="name">2023/08/08 10:00:00</view>
<view class="name">{{item.classTime}}</view>
</view>
</view>
<view class="border_bottom">
<view class="border_bottom" v-if="item.recordStatus==2">
<view class="dateBox">
<view class="date">完成时间2022-01-04</view>
<!-- <view class="date">处理时间2022-01-04</view> -->
<view class="date" >完成时间{{$u.timeFormat(item.signOutTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
</view>
<view class="btnBg" @click.stop="$goPage('/pages/carEntry/evaluate/evaluate')">去评价</view>
</view>
@ -44,6 +44,14 @@
</template>
<script>
export default {
props: ['item'],
data() {
return {
statusTxt: ['未签到','已签到','已签退','旷课','已取消',''],//012退39
}
}
}
</script>
<style lang="scss" scoped>

28
pages/mineEntry/myAppointment/detail/detail.vue

@ -4,8 +4,8 @@
<!-- 详情 -->
<view class="pad">
<view class="card">
<imitate v-if="type==1"/>
<opera v-else-if="type==2"/>
<imitate v-if="type==1" :info="info"/>
<opera v-else-if="type==2" :info="info"/>
<examin v-else-if="type==3" :info="info"/>
</view>
@ -25,7 +25,7 @@
import imitate from './imitate'
import opera from './opera'
import examin from './examin'
import { examSimulationGet, cancelSimulation } from "@/config/api.js"
import { examSimulationGet, cancelSimulation, simulationDetail, cancelSimulationDevice } from "@/config/api.js"
export default {
components: { imitate, opera, examin},
data() {
@ -41,13 +41,21 @@
this.id = options.id
if(this.type==3) {
this.examSimulationGetFn()
}else if(this.type==1) {
this.simulationDetailFn()
}
},
methods: {
//
async examSimulationGetFn() {
const {data: res} = await examSimulationGet({id: this.id})
this.info = res
},
//
async simulationDetailFn(item) {
const {data: res} = await simulationDetail({id: this.id})
this.info = res
},
//
async cancelSimulationFn() {
const res = await cancelSimulation({id: this.id})
@ -58,10 +66,20 @@
this.examSimulationGetFn()
// }
},
//
async cancelSimulationDeviceFn() {
const {data: res} = await cancelSimulationDevice({id: this.id})
this.$u.toast('取消成功')
this.simulationDetailFn()
},
//
popupBtnClick(val) {
if(val==1) {
this.cancelSimulationFn()
if(this.type==1) {
this.cancelSimulationDeviceFn()
}else if(this.type==3) {
this.cancelSimulationFn()
}
}
this.show = false
console.log(val)
@ -72,7 +90,7 @@
<style lang="scss" scoped>
.card {
padding: 24rpx;
padding: 0 24rpx;
}
.btnCon {
display: flex;

4
pages/mineEntry/myAppointment/detail/examin.vue

@ -34,8 +34,8 @@
</view>
<view class="border_bottom">
<view class="dateBox">
<view class="date">提交预约时间{{ $u.timeFormat(info.createTime, 'yyyy-mm-dd')}}</view>
<view class="date" v-if="info.cancelTime">取消时间{{ $u.timeFormat(info.cancelTime, 'yyyy-mm-dd')}}</view>
<view class="date">提交预约时间{{ $u.timeFormat(info.createTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
<view class="date" v-if="info.cancelTime">取消时间{{ $u.timeFormat(info.cancelTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
</view>
</view>
</view>

30
pages/mineEntry/myAppointment/detail/imitate.vue

@ -4,24 +4,25 @@
<view class="top_row">
<view class="flex">
<view class="tag">模拟器</view>
<view class="schoolName">xx模拟驾驶馆</view>
<view class="schoolName">{{info.name}}</view>
</view>
<view class="status">
<view class="text">待处理</view>
<view class="icon">
<view class="text" v-if="info.recordStatus==9">已取消</view>
<view class="text" v-else>{{statusTxt[info.recordStatus]}}</view>
<!-- <view class="icon">
<u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
</view>
</view> -->
</view>
</view>
<view class="target">
<view class="row">
<view class="leftLab">
<view class="icon">
<image src="@/static/images/index/edit.png" mode=""></image>
<image src="@/static/images/car/ic_banxing.png" mode=""></image>
</view>
<view class="lab">模拟器编号</view>
</view>
<view class="name">000001</view>
<view class="name">{{info.deviceNum}}</view>
</view>
<view class="row">
<view class="leftLab">
@ -30,20 +31,29 @@
</view>
<view class="lab">预约时间</view>
</view>
<view class="name">2023/08/08 10:00:00</view>
<view class="name">{{info.classTime}}</view>
</view>
</view>
<view class="border_bottom">
<view class="dateBox">
<view class="date">提交预约时间2022-01-04</view>
<view class="date">完成时间2022-01-04</view>
<view class="date">核销人员某某一号考场</view>
<view class="date">提交预约时间{{$u.timeFormat(info.createTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
<view class="date" v-if="info.cancelTime&&info.recordStatus==9">取消时间{{ $u.timeFormat(info.cancelTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
<view class="date" v-if="info.recordStatus==2">完成时间{{$u.timeFormat(info.signOutTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
<view class="date" v-if="info.recordStatus==2">核销人员目前没有字段</view>
</view>
</view>
</view>
</template>
<script>
export default {
props: ['info'],
data() {
return {
statusTxt: ['未签到','已签到','已签退','旷课','已取消',''],//012退39
}
}
}
</script>
<style lang="scss" scoped>

63
pages/mineEntry/myAppointment/myAppointment.vue

@ -3,7 +3,7 @@
<topNavbar title="我的预约"></topNavbar>
<view class="pad">
<view class="searcBox">
<searchRow placeholder="搜索考场名称、车牌号"/>
<searchRow placeholder="搜索考场名称、车牌号" @searchFn="searchFn" ref="searchRef"/>
</view>
<view class="tabs">
<view class="tab" v-for="(item,index) in tabList" :key="index" :class="{active: currentTab==item.id}" @click="changeTab(item)">{{ item.text }}</view>
@ -14,7 +14,7 @@
<view class="recordTotal" v-if="total">{{total}}条记录</view>
<view class="tabCon" v-show="currentTab==1">
<view class="card" v-for="(item,index) in examList" :key="index" @click="$goPage('/pages/mineEntry/myAppointment/detail/detail')">
<view class="card" v-for="(item,index) in list" :key="index" @click="$goPage('/pages/mineEntry/myAppointment/detail/detail?type=1&id='+item.id)">
<imitate :item="item"></imitate>
</view>
</view>
@ -26,11 +26,15 @@
</view>
<view class="tabCon" v-if="currentTab==3">
<view class="card" v-for="(item,index) in examList" :key="index" @click="$goPage('/pages/mineEntry/myAppointment/detail/detail?type=3&id='+item.id)">
<view class="card" v-for="(item,index) in list" :key="index" @click="$goPage('/pages/mineEntry/myAppointment/detail/detail?type=3&id='+item.id)">
<examin :item="item"></examin>
</view>
</view>
<view style="padding: 10rpx 0 20rpx 0;" v-if="list.length">
<u-loadmore :status="status" />
</view>
<nodata v-if="!list.length&&status=='nomore'"></nodata>
</view>
</view>
@ -60,20 +64,24 @@
// 012退39
currentTab: 3,
currentNav: 0,
examParams: { "pageNo": 1, "pageSize": 10, "keyWord": "", "status": '0',studentId: ''},
examList: [],
total: 20
params: { "pageNo": 1, "pageSize": 10, "keyWord": "", "status": '0',studentId: '', keyWord: ''},
list: [],
total: 20,
status: 'loading'
}
},
onLoad(options) {
if(options.currentTab) this.currentTab = options.currentTab
this.examParams.studentId = this.userId
this.params.studentId = this.vuex_userInfo.id
this.inintList()
},
onPullDownRefresh() {
this.inintList()
},
methods: {
inintList() {
this.examParams.pageNo = 1
this.examList = []
this.params.pageNo = 1
this.list = []
if(this.currentTab==3) {
this.examSimulationRecordFn()
}else if(this.currentTab==1) {
@ -81,33 +89,48 @@
}
},
changeTab(item) {
this.params.keyWord = ''
this.currentTab = item.id
this.$refs.searchRef.keyword = ''
this.inintList()
},
changeNav(item) {
this.currentNav = item.id
this.examList = []
this.examParams.pageNo = 1
this.list = []
this.params.pageNo = 1
if(item.id==-1) {
this.examParams.status = ''
this.params.status = ''
}else {
this.examParams.status = this.currentNav
this.params.status = this.currentNav
}
this.examSimulationRecordFn()
this.inintList()
},
//
async examSimulationRecordFn() {
const {data: res} = await examSimulationRecord(this.examParams)
this.examParams.pageNo ++
this.examList.push(...res.list)
const {data: res} = await examSimulationRecord(this.params)
this.params.pageNo ++
this.list.push(...res.list)
this.total = res.total
if(this.list.length>=this.total) this.status = 'nomore'
},
//
async simulationPageFn() {
const {data: res} = await simulationPage(this.examParams)
this.examParams.pageNo ++
this.examList.push(...res.list)
let obj = {}
for(let k in this.params) {
if(this.params[k]!=='') {
obj[k] = this.params[k]
}
}
const {data: res} = await simulationPage(obj)
this.params.pageNo ++
this.list.push(...res.list)
this.total = res.total
if(this.list.length>=this.total) this.status = 'nomore'
},
//
searchFn(val) {
this.params.keyWord = val
this.inintList()
}
}
}

2
pages/tabbar/index/index.vue

@ -283,11 +283,11 @@
if(!this.$store.state.user.vuex_cityInfo.lat) {
await this.$store.dispatch('getCity')
}
this.$store.dispatch('getUserInfo')
// console.log(this.$store.state.user.vuex_cityInfo)
},
onShow() {
this.$store.dispatch('getUserInfo')
},
computed: {
// joe() {

BIN
static/images/car/carIcon.png

After

Width: 32  |  Height: 28  |  Size: 1.2 KiB

BIN
static/images/car/listIcon.png

After

Width: 34  |  Height: 30  |  Size: 403 B

BIN
static/images/car/newSatus.png

After

Width: 14  |  Height: 14  |  Size: 501 B

BIN
static/images/car/site.png

After

Width: 32  |  Height: 28  |  Size: 1.3 KiB

3
store/modules/user.js

@ -72,7 +72,8 @@ const user = {
async getUserInfo({state, commit}) {
const http = uni.$u.http
let config = { custom: { auth: false }, header: {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'} }
const res = await http.get('app/student-record/get?id='+state.vuex_loginInfo.userId,config)
const res = await http.get('app/student-record/get')
// const res = await http.get('app/student-record/get?id='+state.vuex_loginInfo.userId,config)
commit('update_vuex_userInfo',res.data)
},
// 刷新token

Loading…
Cancel
Save