Browse Source

实操预约

master
unknown 11 months ago
parent
commit
52fa595896
  1. 1
      common/js/mixins.js
  2. 35
      components/appointItem-student/appointItem-student.vue
  3. 13
      config/api.js
  4. 2
      manifest.json
  5. 0
      pages/recordEntry/operate/mySchedule/comp/pickDateTimer/pickDateTimer - 副本.vue
  6. 17
      pages/recordEntry/operate/mySchedule/comp/pickDateTimer/pickDateTimer.vue
  7. 2
      pages/recordEntry/operate/mySchedule/mouldEdit/mouldAdd.vue
  8. 4
      pages/recordEntry/operate/mySchedule/mySchedule.vue
  9. 36
      pages/recordEntry/student/studentDetail/comp/info.vue
  10. 8
      pages/recordEntry/student/studentDetail/studentDetail.vue
  11. 42
      pages/tabbar/student/index.vue
  12. 30
      pages/userCenter/myCar/myCar.vue

1
common/js/mixins.js

@ -9,6 +9,7 @@ export default {
vuex_userInfo: state=>state.user.vuex_userInfo, vuex_userInfo: state=>state.user.vuex_userInfo,
vuex_deptId: state=>state.user.vuex_userInfo.user.deptId, vuex_deptId: state=>state.user.vuex_userInfo.user.deptId,
vuex_coachId: state=>state.user.vuex_userInfo.user.coachId, vuex_coachId: state=>state.user.vuex_userInfo.user.coachId,
vuex_loginInfo: state=>state.user.vuex_loginInfo,
}), }),
}, },

35
components/appointItem-student/appointItem-student.vue

@ -3,7 +3,7 @@
<view class="consultItem"> <view class="consultItem">
<view class="top_row"> <view class="top_row">
<view class="flex"> <view class="flex">
<view class="schoolName">张三三 18265468753</view>
<view class="schoolName">{{item.name}} <text style="margin-left: 10rpx;">{{item.phone}}</text></view>
</view> </view>
<view class="status"> <view class="status">
<!-- <view class="text">待上课</view> --> <!-- <view class="text">待上课</view> -->
@ -15,27 +15,27 @@
<view class="target"> <view class="target">
<view class="row"> <view class="row">
<view class="iconImg"> <view class="iconImg">
<image src="@/static/images/index/radio_nor.png" mode=""></image>
<image src="@/static/images/index/timerIcon.png" mode=""></image>
</view> </view>
<view class="name">报名时间2023/08/08</view>
<view class="name">报名时间{{$u.timeFormat(item.applyDate, 'yyyy/mm/dd')}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="iconImg"> <view class="iconImg">
<image src="@/static/images/index/radio_nor.png" mode=""></image>
<image src="@/static/images/index/carIcon.png" mode=""></image>
</view> </view>
<view class="name">学驾车型C1小型汽车手动挡</view>
<view class="name">学驾车型{{item.trainType}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="iconImg"> <view class="iconImg">
<image src="@/static/images/index/radio_nor.png" mode=""></image>
<image src="@/static/images/index/listIcon.png" mode=""></image>
</view> </view>
<view class="name">报名班型C1一对一VIP班</view>
<view class="name">报名班型{{item.className}}</view>
</view> </view>
<view class="row"> <view class="row">
<view class="iconImg"> <view class="iconImg">
<image src="@/static/images/index/radio_nor.png" mode=""></image> <image src="@/static/images/index/radio_nor.png" mode=""></image>
</view> </view>
<view class="name">最新状态<text>科目三理论考试已预约</text> </view>
<view class="name">最新状态<text>就先放着不做</text> </view>
</view> </view>
</view> </view>
@ -43,6 +43,21 @@
</template> </template>
<script> <script>
export default {
props: {
item: {
type: Object,
default: function() {
return {}
}
}
},
data() {
return {
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -89,8 +104,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
.iconImg { .iconImg {
width: 25rpx;
height: 25rpx;
width: 32rpx;
height: 28rpx;
} }
.name { .name {
font-size: 28rpx; font-size: 28rpx;

13
config/api.js

@ -42,6 +42,19 @@ export const scheduleTemplateGet = (params) => http.get('business/booking/schedu
export const trainingSiteList = (params) => http.get('business/training-site/list', {params} ,) export const trainingSiteList = (params) => http.get('business/training-site/list', {params} ,)
// 获得考场模拟预约记录分页 // 获得考场模拟预约记录分页
export const examSimulationPages = (params) => http.get('business/exam-simulation-record/page', {params} ,) export const examSimulationPages = (params) => http.get('business/exam-simulation-record/page', {params} ,)
// 已报名学员
export const studentRecordPage = (params) => http.get('business/student-record/page', {params} ,)
// 驾校班型
export const schoolClass = (params) => http.get('business/school-class/get', {params} ,)
// 获得学员档案记录
export const studentDetail = (params) => http.get('business/student-record/getStudent', {params} ,)
// 获得教练车信息分页
export const carPage = (params) => http.get('business/car/page', {params} ,)

2
manifest.json

@ -82,7 +82,7 @@
"disableHostCheck" : true, "disableHostCheck" : true,
"proxy" : { "proxy" : {
"/api" : { "/api" : {
"target" : "http://192.168.1.39:48080/",
"target" : "http://192.168.1.36:48080/",
"changeOrigin" : true, "changeOrigin" : true,
"secure" : true, "secure" : true,
"pathRewrite" : { "pathRewrite" : {

0
components/pickDateTimer/pickDateTimer - 副本.vue → pages/recordEntry/operate/mySchedule/comp/pickDateTimer/pickDateTimer - 副本.vue

17
components/pickDateTimer/pickDateTimer.vue → pages/recordEntry/operate/mySchedule/comp/pickDateTimer/pickDateTimer.vue

@ -29,8 +29,8 @@
</view> </view>
<view class="card"> <view class="card">
<view class="timeCon">
<view class="h2">上午</view>
<view class="timeCon"v-if="timerArr.length||timerArr2.length">
<view class="h2" v-if="timerArr.length">上午</view>
<view class="time_box"> <view class="time_box">
<view class="time_item" v-for="(item,index) in timerArr" :key="index" @click="chooseCourse(item)" :class="{active: courseIds.indexOf(item.classTime)!=-1, disable: item.status==2}" > <view class="time_item" v-for="(item,index) in timerArr" :key="index" @click="chooseCourse(item)" :class="{active: courseIds.indexOf(item.classTime)!=-1, disable: item.status==2}" >
<view class="flex" v-if="item.status==0"> <view class="flex" v-if="item.status==0">
@ -43,7 +43,7 @@
<view class="time">{{ item.classTime }}</view> <view class="time">{{ item.classTime }}</view>
</view> </view>
</view> </view>
<view class="h2">下午</view>
<view class="h2" v-if="timerArr2.length">下午</view>
<view class="time_box"> <view class="time_box">
<view class="time_item" v-for="(item,index) in timerArr2" :key="index" @click="chooseCourse(item)" :class="{active: courseIds.indexOf(item.classTime)!=-1, disable: item.status==2}"> <view class="time_item" v-for="(item,index) in timerArr2" :key="index" @click="chooseCourse(item)" :class="{active: courseIds.indexOf(item.classTime)!=-1, disable: item.status==2}">
<view class="flex" v-if="item.status==0"> <view class="flex" v-if="item.status==0">
@ -57,13 +57,9 @@
</view> </view>
</view> </view>
</view> </view>
<view class="noDate" v-else>暂无当日计划</view>
</view> </view>
<view class="card">
<view class="noDate">
<image src="http://192.168.1.20:81/zhili/image/20230927/ad178ebdf5394518b27b020c03ee48ab.png" mode=""></image>
</view>
</view>
<view class="step2" v-if="step==2"> <view class="step2" v-if="step==2">
<view class=""> <view class="">
@ -470,4 +466,9 @@
width: 310rpx; width: 310rpx;
} }
} }
.noDate {
line-height: 200rpx;
text-align: center;
font-size: 28rpx;
}
</style> </style>

2
pages/recordEntry/operate/mySchedule/mouldEdit/mouldAdd.vue

@ -115,7 +115,7 @@
// this.initFormData() // this.initFormData()
}, },
addFn() { addFn() {
let obj = {startTime: '',endTime: '', people: 1, id: new Date() * 1}
let obj = {startTime: '',endTime: '', personCount: 1, id: new Date() * 1}
this.FormData.scheduleClassTemplateDetailList.push(obj) this.FormData.scheduleClassTemplateDetailList.push(obj)
}, },
deleteFn(id) { deleteFn(id) {

4
pages/recordEntry/operate/mySchedule/mySchedule.vue

@ -25,9 +25,10 @@
<script> <script>
import mySchedulePopup from './comp/mySchedulePopup' import mySchedulePopup from './comp/mySchedulePopup'
import pickDateTimer from './comp/pickDateTimer/pickDateTimer'
import { scheduleClassGetById, scheduleClassGet, scheduleClassCreateByTime } from '@/config/api.js' import { scheduleClassGetById, scheduleClassGet, scheduleClassCreateByTime } from '@/config/api.js'
export default { export default {
components: { mySchedulePopup },
components: { mySchedulePopup,pickDateTimer },
data() { data() {
return { return {
show: false, show: false,
@ -73,6 +74,7 @@
obj.coachId = this.vuex_coachId obj.coachId = this.vuex_coachId
const res = await scheduleClassCreateByTime(Object.assign(this.pickDate, obj)) const res = await scheduleClassCreateByTime(Object.assign(this.pickDate, obj))
if(res.code==0) this.$u.toast('发布排课成功') if(res.code==0) this.$u.toast('发布排课成功')
this.$refs.pickDateRef.courseIds = []
// uni.$emit('refreshMySchedule') // uni.$emit('refreshMySchedule')
this.step = 1 this.step = 1
this.$refs.pickDateRef.scheduleClassGetFn() this.$refs.pickDateRef.scheduleClassGetFn()

36
pages/recordEntry/student/studentDetail/comp/info.vue

@ -3,31 +3,31 @@
<view class="card"> <view class="card">
<view class="li"> <view class="li">
<view class="val">真实姓名</view> <view class="val">真实姓名</view>
<view class="lab">xxx</view>
<view class="lab">{{info.name}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">性别</view> <view class="val">性别</view>
<view class="lab">xxx</view>
<view class="lab">{{info.sex==1?'男':'女'}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">驾名名称</view> <view class="val">驾名名称</view>
<view class="lab">xxx</view>
<view class="lab">{{info.schoolName}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">学车类型</view> <view class="val">学车类型</view>
<view class="lab">xxx</view>
<view class="lab">{{info.trainType}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">学车班型</view> <view class="val">学车班型</view>
<view class="lab">xxx</view>
<view class="lab">{{info.a}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">学车教练</view> <view class="val">学车教练</view>
<view class="lab">xxx</view>
<view class="lab">{{info.coachName}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">业务类型</view> <view class="val">业务类型</view>
<view class="lab">xxx</view>
<view class="lab">{{info.businessType==0?'初领':info.businessType==1?'增加':'其它'}}</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">是否异地转入</view> <view class="val">是否异地转入</view>
@ -41,10 +41,6 @@
<view class="lab">xxx</view> <view class="lab">xxx</view>
</view> </view>
<view class="li"> <view class="li">
<view class="val">性别</view>
<view class="lab">xxx</view>
</view>
<view class="li">
<view class="val">报名渠道</view> <view class="val">报名渠道</view>
<view class="lab">xxx</view> <view class="lab">xxx</view>
</view> </view>
@ -82,6 +78,24 @@
</template> </template>
<script> <script>
import { studentDetail } from '@/config/api.js'
export default {
props: ['id'],
data() {
return {
info: {}
}
},
mounted() {
this.studentDetailFn()
},
methods: {
async studentDetailFn() {
const {data: res} = await studentDetail({id: this.id, userId: this.vuex_loginInfo.userId})
this.info = res
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

8
pages/recordEntry/student/studentDetail/studentDetail.vue

@ -12,7 +12,7 @@
<list></list> <list></list>
</view> </view>
<view class="con" v-else> <view class="con" v-else>
<info/>
<info :id="studentId"/>
</view> </view>
</view> </view>
</view> </view>
@ -67,9 +67,13 @@
text: '个人及报名信息', text: '个人及报名信息',
id: 2 id: 2
}, },
]
],
studentId: ''
} }
}, },
onLoad(options) {
this.studentId = options.id
},
methods: { methods: {
changeTab(id) { changeTab(id) {
this.currentTab = id this.currentTab = id

42
pages/tabbar/student/index.vue

@ -76,8 +76,8 @@
</view> </view>
<view class="list"> <view class="list">
<view class="card" @click="$goPage('/pages/recordEntry/student/studentDetail/studentDetail')">
<appointItem-student/>
<view class="card" @click="$goPage('/pages/recordEntry/student/studentDetail/studentDetail?id='+item.id)" v-for="(item,index) in list" :key="index">
<appointItem-student :item="item"/>
</view> </view>
</view> </view>
<UserTab name ='学员'></UserTab> <UserTab name ='学员'></UserTab>
@ -85,9 +85,11 @@
<u-datetime-picker <u-datetime-picker
:show="showDatePicker" :show="showDatePicker"
mode="date" mode="date"
:minDate="1669341725000"
:visibleItemCount="4" :visibleItemCount="4"
:closeOnClickOverlay="false" :closeOnClickOverlay="false"
@confirm="confirmDatePicker" @confirm="confirmDatePicker"
@cancel="showDatePicker=false"
></u-datetime-picker> ></u-datetime-picker>
<u-picker :show="showCar" :columns="carArr" keyName="lab" @confirm="confirmCar" @cancel="showCar=false"></u-picker> <u-picker :show="showCar" :columns="carArr" keyName="lab" @confirm="confirmCar" @cancel="showCar=false"></u-picker>
@ -97,6 +99,7 @@
<script> <script>
import { imgUrl } from '@/config/site.config' import { imgUrl } from '@/config/site.config'
import { studentRecordPage, schoolClass } from '@/config/api.js'
import topUserInfo from '../statistics/comp/topUserInfo.vue' import topUserInfo from '../statistics/comp/topUserInfo.vue'
export default { export default {
components: { topUserInfo }, components: { topUserInfo },
@ -124,28 +127,52 @@
{lab: 'C2vip',id: 2}, {lab: 'C2vip',id: 2},
] ]
], ],
params: {
"pageNo": 1, "pageSize": 10, status: 1, trainType: ''
},
total: 20,
list: []
} }
}, },
onShow() { onShow() {
uni.hideTabBar(); uni.hideTabBar();
}, },
onLoad() {
this.studentRecordPageFn()
this.schoolClassFn()
},
methods: { methods: {
confirmDatePicker(val) { confirmDatePicker(val) {
this.showDatePicker = false this.showDatePicker = false
console.log(val)
console.log(uni.$u.date(val.value, 'yyyy-mm-dd'))
this.screen.timer = uni.$u.date(val.value, 'yyyy-mm-dd')
console.log(this.screen.timer)
this.params.applyDate = this.screen.timer = uni.$u.date(val.value, 'yyyy-mm-dd')
this.listInit()
}, },
confirmCar(val) { confirmCar(val) {
let item = val.value[0] let item = val.value[0]
this.screen.car = item.lab
this.params.trainType = this.screen.car = item.lab
this.showCar = false this.showCar = false
this.listInit()
}, },
confirmClass(val) { confirmClass(val) {
let item = val.value[0] let item = val.value[0]
this.screen.className = item.lab this.screen.className = item.lab
this.params.schoolClassId = item.id
this.showClass = false this.showClass = false
this.listInit()
},
//
async schoolClass() {
const {data: res} = await schoolClass({id: this.vuex_userInfo.shoolId})
},
listInit() {
this.params.pageNo = 1
this.list = []
this.studentRecordPageFn()
},
async studentRecordPageFn() {
const {data: res} = await studentRecordPage(this.params)
this.list.push(...res.list)
this.total = res.total
} }
} }
} }
@ -154,6 +181,7 @@
<style lang="scss" scoped> <style lang="scss" scoped>
.pad { .pad {
min-height: 100vh; min-height: 100vh;
padding-bottom: 110rpx;
} }
.card { .card {
padding: 0 28rpx; padding: 0 28rpx;

30
pages/userCenter/myCar/myCar.vue

@ -12,10 +12,10 @@
</view> </view>
</view> --> </view> -->
<view class="ul"> <view class="ul">
<view class="card">
<view class="card" v-for="(item,index) in list" :key="index">
<view class="li" > <view class="li" >
<view class="plate">浙A.6666</view>
<view class="name">大众朗逸</view>
<view class="plate">{{item.licnum}}</view>
<view class="name">{{item.manufacturer}}</view>
</view> </view>
</view> </view>
</view> </view>
@ -24,6 +24,29 @@
</template> </template>
<script> <script>
import { carPage } from '@/config/api.js'
export default {
data() {
return {
list: [],
params: {
pageNo: 1,
pageSize: 20
}
}
},
onLoad() {
this.carPageFn()
},
methods: {
async carPageFn() {
const {data: res} = await carPage(this.params)
this.params.pageNo ++
this.list.push(...res.list)
console.log(res)
}
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -53,7 +76,6 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 0 24rpx; padding: 0 24rpx;
.plate { .plate {
color: $themC; color: $themC;
font-weight: 500; font-weight: 500;

Loading…
Cancel
Save