unknown
8 months ago
16 changed files with 4 additions and 1391 deletions
-
1common/js/mixins.js
-
33components/UserTab/UserTab.vue
-
45pages.json
-
42pages/recordEntry/examine/examineRecord/detail/detail.vue
-
153pages/recordEntry/examine/examineRecord/examineRecord.vue
-
189pages/tabbar/examSimulation/comp/coach.vue
-
316pages/tabbar/examSimulation/comp/simulation.vue
-
157pages/tabbar/examSimulation/comp/studentComment.vue
-
39pages/tabbar/examSimulation/index.vue
-
1pages/tabbar/mine/index.vue
-
117pages/tabbar/statistics/comp/examinCoach.vue
-
3pages/tabbar/statistics/index.vue
-
6pages/tabbar/student/index.vue
-
101pages/userCenter/examinInfo/comp/examinItem.vue
-
127pages/userCenter/examinInfo/examinInfo.vue
-
65pages/userCenter/indicatorRecharge/indicatorRecharge.vue
@ -1,42 +0,0 @@ |
|||||
<template> |
|
||||
<view class="pageBgImg"> |
|
||||
<topNavbar title="预约详情"></topNavbar> |
|
||||
<view class="pad"> |
|
||||
<view class="card"> |
|
||||
<appointItem /> |
|
||||
<view class="border_bottom"> |
|
||||
<view class="date">核销时间:2023/08/08 08:52:08</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.card { |
|
||||
padding: 0 28rpx; |
|
||||
} |
|
||||
.date { |
|
||||
font-size: 28rpx; |
|
||||
color: #ADADAD; |
|
||||
margin-bottom: 16rpx; |
|
||||
} |
|
||||
.border_bottom { |
|
||||
border-top: 2rpx dashed #E8E9EC; |
|
||||
padding: 24rpx 10rpx 10rpx 0; |
|
||||
|
|
||||
.date { |
|
||||
font-size: 28rpx; |
|
||||
color: #ADADAD; |
|
||||
margin-bottom: 16rpx; |
|
||||
} |
|
||||
.btnBg { |
|
||||
width: 212rpx; |
|
||||
margin: 30rpx auto; |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,153 +0,0 @@ |
|||||
<template> |
|
||||
<view class="main"> |
|
||||
<view class="blueBg"> |
|
||||
<topNavbar title="预约记录"></topNavbar> |
|
||||
<view class="pad"> |
|
||||
<view class="searchBox"> |
|
||||
<searchRow placeholder="搜索学员姓名、学员手机号、考场名称"></searchRow> |
|
||||
</view> |
|
||||
<view class="tabs"> |
|
||||
<view class="tab" @click="changeTab(1)" :class="{active: currentTab==1}">待核销</view> |
|
||||
<view class="tab" @click="changeTab(2)" :class="{active: currentTab==2}">已核销</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="navs"> |
|
||||
<view class="nav" v-for="(item,index) in tabsList" :key="index" :class="{active: currentNav==item.id}" @click="changeNav(item)">{{ item.text }}</view> |
|
||||
</view> |
|
||||
<view class="pad"> |
|
||||
<view class="total_row"> |
|
||||
<view class="total">12条记录</view> |
|
||||
<view class="screen"> |
|
||||
<view class="text">筛选</view> |
|
||||
<view class="icon"> |
|
||||
<image src="@/static/images/coach/screen.png" mode=""></image> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="card" @click="goPage"> |
|
||||
<appointItem /> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
currentTab: 1, |
|
||||
currentNav: 1, |
|
||||
tabsList: [ |
|
||||
{id: 1, text: '全部'}, |
|
||||
{id: 2, text: '科目二'}, |
|
||||
{id: 3, text: '科目三'}, |
|
||||
] |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
changeTab(num) { |
|
||||
console.log(num) |
|
||||
this.currentTab = num |
|
||||
}, |
|
||||
changeNav(item) { |
|
||||
this.currentNav = item.id |
|
||||
}, |
|
||||
goPage() { |
|
||||
console.log('------------') |
|
||||
this.$goPage('/pages/recordEntry/examine/examineRecord/detail/detail') |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.main { |
|
||||
width: 100%; |
|
||||
min-height: 100vh; |
|
||||
background: #f3f3f3; |
|
||||
.blueBg { |
|
||||
background: #1989FA; |
|
||||
padding-bottom: 20rpx; |
|
||||
} |
|
||||
.total_row { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
height: 82rpx; |
|
||||
align-items: center; |
|
||||
.total { |
|
||||
font-size: 24rpx; |
|
||||
color: #686B73; |
|
||||
text-align: right; |
|
||||
line-height: 82rpx; |
|
||||
} |
|
||||
.screen { |
|
||||
display: flex;align-items: center; |
|
||||
color: $themC; |
|
||||
margin-left: 8rpx; |
|
||||
font-size: 28rpx; |
|
||||
.icon { |
|
||||
width: 24rpx; |
|
||||
height: 24rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.card { |
|
||||
padding: 0 20rpx; |
|
||||
} |
|
||||
} |
|
||||
.searchBox { |
|
||||
padding: 24rpx 0 20rpx 0; |
|
||||
} |
|
||||
.tabs { |
|
||||
display: flex; |
|
||||
width: 100%; |
|
||||
height: 72rpx; |
|
||||
background: #FFFFFF; |
|
||||
border-radius: 16rpx; |
|
||||
.tab { |
|
||||
flex: 1; |
|
||||
text-align: center; |
|
||||
line-height: 72rpx; |
|
||||
color: #ADADAD; |
|
||||
font-size: 28rpx; |
|
||||
&.active { |
|
||||
background: rgba(25,137,250,0.1); |
|
||||
border-radius: 16rpx; |
|
||||
border: 2rpx solid #1989FA; |
|
||||
color: $themC; |
|
||||
font-weight: 600; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
.navs { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
color: #fff; |
|
||||
font-size: 28rpx; |
|
||||
padding: 0rpx 108rpx 0rpx 130rpx; |
|
||||
color: $themC; |
|
||||
background: #fff; |
|
||||
height: 100rpx; |
|
||||
.nav { |
|
||||
line-height: 100rpx; |
|
||||
&.active { |
|
||||
font-weight: 500; |
|
||||
position: relative; |
|
||||
&::before { |
|
||||
position: absolute; |
|
||||
left: 50%; |
|
||||
transform: translateX(-50%); |
|
||||
bottom: 20rpx; |
|
||||
content: ''; |
|
||||
width: 56rpx; |
|
||||
height: 6rpx; |
|
||||
background: $themC; |
|
||||
border-radius: 3rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,189 +0,0 @@ |
|||||
<template> |
|
||||
<view class="pageBgImg pad"> |
|
||||
<view class="searchBox"> |
|
||||
<searchRow placeholder="搜索学员姓名、学员手机号、考场名称"></searchRow> |
|
||||
</view> |
|
||||
<view class="card"> |
|
||||
<view class="verified_today"> |
|
||||
<view class="leftVerified"> |
|
||||
<view class="num_row"> |
|
||||
<view class="num">7</view> |
|
||||
<view class="unit">个</view> |
|
||||
</view> |
|
||||
<view class="txtLab">今日待核销</view> |
|
||||
</view> |
|
||||
<view class="rightBtn"> |
|
||||
<view class="objBtn">科目二:3</view> |
|
||||
<view class="objBtn">科目二:7</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
<view class="card_flex"> |
|
||||
<view class="card" v-for="(item,index) in 4" :key="index"> |
|
||||
<view class="flex-b" style="padding: 32rpx 0;"> |
|
||||
<view class="leftText"> |
|
||||
<view class="lab">指标总量</view> |
|
||||
<view class="num_row"> |
|
||||
<view class="num">7</view> |
|
||||
<view class="unit">个</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="rightTxt"> |
|
||||
<view class="text_row"> |
|
||||
<view class="dian yellow"></view> |
|
||||
<view class="text">科目二:100</view> |
|
||||
</view> |
|
||||
<view class="text_row"> |
|
||||
<view class="dian"></view> |
|
||||
<view class="text">科目二:100</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
<view class="flex-b"> |
|
||||
<view class="h1">预约记录</view> |
|
||||
<moreRight text="更多" @click.native="$goPage('/pages/recordEntry/examine/examineRecord/examineRecord')"></moreRight> |
|
||||
</view> |
|
||||
<view class="card"> |
|
||||
<appointItem /> |
|
||||
</view> |
|
||||
<UserTab name ='考场模拟'></UserTab> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
data() { |
|
||||
return {} |
|
||||
}, |
|
||||
onLoad() {}, |
|
||||
onShow() { |
|
||||
uni.hideTabBar(); |
|
||||
}, |
|
||||
methods: { |
|
||||
goPage() {} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
|
|
||||
.searchBox { |
|
||||
padding: 140rpx 0 24rpx 0; |
|
||||
} |
|
||||
.h1 { |
|
||||
line-height: 92rpx; |
|
||||
} |
|
||||
.card { |
|
||||
padding: 0 28rpx; |
|
||||
margin-bottom: 20rpx; |
|
||||
.verified_today { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
padding: 20rpx 0; |
|
||||
.leftVerified { |
|
||||
flex: 1; |
|
||||
text-align: center; |
|
||||
.num_row { |
|
||||
display: flex; |
|
||||
justify-content: center; |
|
||||
color: $themC; |
|
||||
.num { |
|
||||
font-size: 56rpx; |
|
||||
} |
|
||||
|
|
||||
.unit { |
|
||||
font-size: 24rpx; |
|
||||
margin-top: 20rpx; |
|
||||
} |
|
||||
} |
|
||||
.txtLab { |
|
||||
font-size: 28rpx; |
|
||||
color: #686B73; |
|
||||
margin-top: 10rpx; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.rightBtn { |
|
||||
width: 224rpx; |
|
||||
.objBtn { |
|
||||
width: 100%; |
|
||||
height: 76rpx; |
|
||||
background: rgba(25,137,250,0.1); |
|
||||
border-radius: 8rpx; |
|
||||
line-height: 76rpx; |
|
||||
text-align: center; |
|
||||
font-size: 32rpx; |
|
||||
color: $themC; |
|
||||
&:first-child { |
|
||||
margin-bottom: 8rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.card_flex { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
flex-wrap: wrap; |
|
||||
.card { |
|
||||
width: 48.8%; |
|
||||
.leftText { |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
align-items: center; |
|
||||
color: $themC; |
|
||||
.lab { |
|
||||
font-size: 24rpx; |
|
||||
white-space: nowrap; |
|
||||
} |
|
||||
|
|
||||
.num_row { |
|
||||
display: flex; |
|
||||
margin-top: 10rpx; |
|
||||
.num { |
|
||||
font-size: 40rpx; |
|
||||
font-weight: 500; |
|
||||
} |
|
||||
|
|
||||
.unit { |
|
||||
font-size: 24rpx; |
|
||||
margin-top: 8rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.rightTxt { |
|
||||
display: flex; |
|
||||
flex-direction: column; |
|
||||
align-items: center; |
|
||||
.text_row { |
|
||||
display: flex; |
|
||||
align-items: center; |
|
||||
&:first-child { |
|
||||
margin-bottom: 20rpx; |
|
||||
} |
|
||||
.dian { |
|
||||
width: 8rpx; |
|
||||
height: 8rpx; |
|
||||
background: #0D9269; |
|
||||
border-radius: 4rpx; |
|
||||
margin-right: 10rpx; |
|
||||
&.yellow { |
|
||||
background: #FA7919; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.text { |
|
||||
font-size: 24rpx; |
|
||||
color: #333; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,316 +0,0 @@ |
|||||
<template> |
|
||||
<view class="main"> |
|
||||
<view class="blueBg"> |
|
||||
<!-- <topNavbar title="预约记录"></topNavbar> --> |
|
||||
<view class="pad"> |
|
||||
<view class="searchBox"> |
|
||||
<searchRow placeholder="搜索学员姓名、学员手机号" @searchFn="searchFn"></searchRow> |
|
||||
</view> |
|
||||
<view class="tabs"> |
|
||||
<view class="tab" @click="changeTab(0)" :class="{active: params.writtenoffStatus==0}">待核销</view> |
|
||||
<view class="tab" @click="changeTab(1)" :class="{active: params.writtenoffStatus==1}">已核销</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="navs"> |
|
||||
<view class="nav" v-for="(item,index) in tabsList" :key="index" :class="{active: params.subject==item.id}" @click="changeNav(item)">{{ item.text }}</view> |
|
||||
</view> |
|
||||
<view class="pad"> |
|
||||
<view class="total_row"> |
|
||||
<view class="total"> <text v-if="total">{{total}}条记录</text></view> |
|
||||
<view class="screen" @click="showDate=true"> |
|
||||
<view class="text"><text v-if="params.beginTime||params.trainType">已</text> 筛选</view> |
|
||||
<view class="icon"> |
|
||||
<image src="@/static/images/coach/screen.png" mode=""></image> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="card" @click="goPage" v-for="(item,index) in list" :key="index"> |
|
||||
<appointItem :item="item"/> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view style="padding-bottom: 100rpx;" v-if="list.length"> |
|
||||
<u-loadmore :status="status" /> |
|
||||
</view> |
|
||||
<nodata v-if="!list.length&&status=='nomore'"></nodata> |
|
||||
<UserTab name ='预约记录'></UserTab> |
|
||||
|
|
||||
<u-popup :show="showDate" mode="bottom" :round="20" :closeable="true" :closeOnClickOverlay="true"> |
|
||||
<view class="popupBox"> |
|
||||
<view class="pad"> |
|
||||
<view class="car"> |
|
||||
<view class="h1">车型</view> |
|
||||
<view class="car_row"> |
|
||||
<view class="carItem" @click="screenCarFn('C1')" :class="{active: screen.trainType=='C1'}">C1</view> |
|
||||
<view class="carItem" @click="screenCarFn('C2')" :class="{active: screen.trainType=='C2'}">C2</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="car"> |
|
||||
<view class="h1" >日期</view> |
|
||||
<view class="car_row border" @click="showDatePicker=true"> |
|
||||
<mySelect placeholder="请选择日期" :value="screen.screenDate"></mySelect> |
|
||||
<u-icon name="arrow-down" :size="12" :color="'#ADADAD'" style="margin-left: 12rpx;"></u-icon> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="btn_row"> |
|
||||
<view class="btnBorder btn" @click="resetScreen">重置</view> |
|
||||
<view class="btnBg btn" @click="screenSearch">确定</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</u-popup> |
|
||||
|
|
||||
<u-datetime-picker |
|
||||
:show="showDatePicker" |
|
||||
mode="date" |
|
||||
:closeOnClickOverlay="true" |
|
||||
:minDate="1587524800000" |
|
||||
@confirm="confirmDatePicker" |
|
||||
@cancel="showDatePicker=false" |
|
||||
@close="showDatePicker=false" |
|
||||
></u-datetime-picker> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { examSimulationPages } from '@/config/api.js' |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
tabsList: [ |
|
||||
{id: 0, text: '全部'}, |
|
||||
{id: 2, text: '科目二'}, |
|
||||
{id: 3, text: '科目三'}, |
|
||||
], |
|
||||
showDate: false, |
|
||||
showDatePicker: false, |
|
||||
params: { |
|
||||
pageNo: 1, |
|
||||
pageSize: 20, |
|
||||
coachId: 0, |
|
||||
writtenoffStatus: 0, |
|
||||
subject: 0, |
|
||||
studentName: '', |
|
||||
studentPhone: '' |
|
||||
}, |
|
||||
screen: { |
|
||||
trainType: '', |
|
||||
screenDate: '' |
|
||||
}, |
|
||||
list: [], |
|
||||
status: 'loading', |
|
||||
total: 20 |
|
||||
} |
|
||||
}, |
|
||||
created() { |
|
||||
this.params.coachId = this.vuex_userInfo.coachId |
|
||||
// this.params.deptId = this.vuex_userInfo.deptId |
|
||||
// this.examSimulationPagesFn() |
|
||||
this.initList() |
|
||||
}, |
|
||||
methods: { |
|
||||
async examSimulationPagesFn() { |
|
||||
let obj = Object.assign({},this.params) |
|
||||
if(obj.subject==0) delete obj.subject |
|
||||
const {data: res} = await examSimulationPages(obj) |
|
||||
this.params.pageNo ++ |
|
||||
this.total = res.total |
|
||||
this.list.push(...res.list) |
|
||||
if(this.list.length>=this.total) this.status = 'nomore' |
|
||||
console.log(res) |
|
||||
}, |
|
||||
initList() { |
|
||||
this.status = 'loading' |
|
||||
this.list = [] |
|
||||
this.params.pageNo = 1 |
|
||||
this.examSimulationPagesFn() |
|
||||
}, |
|
||||
changeTab(num) { |
|
||||
if(this.params.writtenoffStatus == num) return |
|
||||
this.params.writtenoffStatus = num |
|
||||
this.initList() |
|
||||
|
|
||||
}, |
|
||||
changeNav(item) { |
|
||||
if(this.params.subject == item.id) return |
|
||||
this.params.subject = item.id |
|
||||
this.initList() |
|
||||
}, |
|
||||
goPage() { |
|
||||
this.$goPage('/pages/recordEntry/examine/examineRecord/detail/detail') |
|
||||
}, |
|
||||
confirmDatePicker(val) { |
|
||||
this.screen.screenDate = this.$u.timeFormat(val.value, 'yyyy-mm-dd') |
|
||||
this.showDatePicker = false |
|
||||
}, |
|
||||
// 选择筛选日期 |
|
||||
selectDateClick(val) { |
|
||||
console.log(val) |
|
||||
this.showDate = false |
|
||||
}, |
|
||||
screenCarFn(trainType) { |
|
||||
this.screen.trainType = trainType |
|
||||
}, |
|
||||
resetScreen() { |
|
||||
this.screen.trainType = '' |
|
||||
this.screen.screenDate = '' |
|
||||
}, |
|
||||
// 筛选搜索 |
|
||||
screenSearch() { |
|
||||
this.params.trainType = this.screen.trainType |
|
||||
if(!this.screen.screenDate) { |
|
||||
this.params.beginTime = '' |
|
||||
this.params.endTime = '' |
|
||||
}else { |
|
||||
this.params.beginTime = this.screen.screenDate + ' 00:00:00' |
|
||||
this.params.endTime = this.screen.screenDate + ' 23:59:59' |
|
||||
} |
|
||||
this.showDate = false |
|
||||
this.initList() |
|
||||
}, |
|
||||
searchFn(val) { |
|
||||
if(uni.$u.test.mobile(val)) { |
|
||||
this.params.studentPhone = val |
|
||||
this.params.studentName = '' |
|
||||
}else { |
|
||||
this.params.studentName = val |
|
||||
this.params.studentPhone = '' |
|
||||
} |
|
||||
this.initList() |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
|
|
||||
.popupBox { |
|
||||
padding-bottom: 30rpx; |
|
||||
.btn_row { |
|
||||
padding-top: 20rpx; |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
.btn { |
|
||||
width: 48%; |
|
||||
} |
|
||||
} |
|
||||
.car { |
|
||||
margin-bottom: 20rpx; |
|
||||
.h1 { |
|
||||
line-height: 100rpx; |
|
||||
} |
|
||||
.car_row { |
|
||||
display: flex; |
|
||||
|
|
||||
&.border { |
|
||||
width: 300rpx; |
|
||||
line-height: 70rpx; |
|
||||
border: 1rpx solid #d8d8d8; |
|
||||
border-radius: 10rpx; |
|
||||
padding: 0 16rpx; |
|
||||
justify-content: space-between; |
|
||||
} |
|
||||
.carItem { |
|
||||
width: 130rpx; |
|
||||
background: #f3f3f3; |
|
||||
border-radius: 8rpx; |
|
||||
text-align: center; |
|
||||
line-height: 60rpx; |
|
||||
color: #333; |
|
||||
margin-right: 58rpx; |
|
||||
&.active { |
|
||||
background: $themC; |
|
||||
color: #fff; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
.main { |
|
||||
width: 100%; |
|
||||
min-height: 100vh; |
|
||||
background: #f3f3f3; |
|
||||
.blueBg { |
|
||||
background: #1989FA; |
|
||||
padding: 140rpx 0 20rpx 0; |
|
||||
} |
|
||||
.total_row { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
height: 82rpx; |
|
||||
align-items: center; |
|
||||
.total { |
|
||||
font-size: 24rpx; |
|
||||
color: #686B73; |
|
||||
text-align: right; |
|
||||
line-height: 82rpx; |
|
||||
} |
|
||||
.screen { |
|
||||
display: flex;align-items: center; |
|
||||
color: $themC; |
|
||||
margin-left: 8rpx; |
|
||||
font-size: 28rpx; |
|
||||
.icon { |
|
||||
width: 24rpx; |
|
||||
height: 24rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.card { |
|
||||
padding: 0 20rpx; |
|
||||
} |
|
||||
} |
|
||||
.searchBox { |
|
||||
padding: 24rpx 0 20rpx 0; |
|
||||
} |
|
||||
.tabs { |
|
||||
display: flex; |
|
||||
width: 100%; |
|
||||
height: 72rpx; |
|
||||
background: #FFFFFF; |
|
||||
border-radius: 16rpx; |
|
||||
.tab { |
|
||||
flex: 1; |
|
||||
text-align: center; |
|
||||
line-height: 72rpx; |
|
||||
color: #ADADAD; |
|
||||
font-size: 28rpx; |
|
||||
&.active { |
|
||||
background: rgba(25,137,250,0.1); |
|
||||
border-radius: 16rpx; |
|
||||
border: 2rpx solid #1989FA; |
|
||||
color: $themC; |
|
||||
font-weight: 600; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
.navs { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
color: #fff; |
|
||||
font-size: 28rpx; |
|
||||
padding: 0rpx 108rpx 0rpx 130rpx; |
|
||||
color: $themC; |
|
||||
background: #fff; |
|
||||
height: 100rpx; |
|
||||
.nav { |
|
||||
line-height: 100rpx; |
|
||||
&.active { |
|
||||
font-weight: 500; |
|
||||
position: relative; |
|
||||
&::before { |
|
||||
position: absolute; |
|
||||
left: 50%; |
|
||||
transform: translateX(-50%); |
|
||||
bottom: 20rpx; |
|
||||
content: ''; |
|
||||
width: 56rpx; |
|
||||
height: 6rpx; |
|
||||
background: $themC; |
|
||||
border-radius: 3rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,157 +0,0 @@ |
|||||
<template> |
|
||||
<view class="pageBgImg"> |
|
||||
<view class="status_bar"></view> |
|
||||
<view class="navH"></view> |
|
||||
<view class="pad"> |
|
||||
<view class="searchBox"> |
|
||||
<searchRow placeholder="搜索学员姓名" @searchFn="searchFn"></searchRow> |
|
||||
</view> |
|
||||
<view class="tabs"> |
|
||||
<view class="tab" :class="{active: this.params.condition==0}" @click="changeTab(0)">全部({{ totalType.total1 }})</view> |
|
||||
<view class="tab" :class="{active: this.params.condition==1}" @click="changeTab(1)">匿名({{ totalType.total2 }})</view> |
|
||||
<view class="tab" :class="{active: this.params.condition==2}" @click="changeTab(2)">有图({{ totalType.total3 }})</view> |
|
||||
<view class="tab" :class="{active: this.params.condition==3}" @click="changeTab(3)">有视频({{ totalType.total4 }})</view> |
|
||||
</view> |
|
||||
<view class="list" v-if="list.length"> |
|
||||
<view class="card" v-for="(item,index) in list" :key="index"> |
|
||||
<commentItem :item="item"/> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
<view style="padding-bottom: 20rpx;" v-if="list.length>5"> |
|
||||
<u-loadmore :status="status" /> |
|
||||
</view> |
|
||||
<nodata v-if="!list.length&&status=='nomore'"></nodata> |
|
||||
</view> |
|
||||
<UserTab name ='学员评价'></UserTab> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import { coachCommentPage, pageCoachCommentTotal } from '@/config/api.js' |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
list: [], |
|
||||
params: { |
|
||||
pageNo: 1, |
|
||||
pageSize: 20, |
|
||||
schoolId: '', |
|
||||
condition: 0, |
|
||||
studentName: '', |
|
||||
coachType: '3', //1.教练 2.模拟教练 3.模拟器老师 |
|
||||
}, |
|
||||
// 0查全部 1有图 2最新 3有视频 |
|
||||
total: 20, |
|
||||
status: 'loading', |
|
||||
totalType: {} |
|
||||
} |
|
||||
}, |
|
||||
created() { |
|
||||
this.params.schoolId = this.vuex_schoolId |
|
||||
// if(this.identity=='实操教练') { |
|
||||
// this.params.coachType = 1 |
|
||||
// }else if(this.identity=='考场模拟教练'){ |
|
||||
// this.params.coachType = 2 |
|
||||
// }else if(this.identity=='模拟器老师'){ |
|
||||
// this.params.coachType = 3 |
|
||||
// } |
|
||||
this.coachCommentPageFn() |
|
||||
this.pageCoachCommentTotalFn() |
|
||||
}, |
|
||||
|
|
||||
|
|
||||
methods: { |
|
||||
// 查条数 |
|
||||
async pageCoachCommentTotalFn() { |
|
||||
let obj = { |
|
||||
coachType : 3, |
|
||||
coachId : this.vuex_coachId, |
|
||||
schoolId : this.params.schoolId |
|
||||
} |
|
||||
let {data: res} = await pageCoachCommentTotal(obj) |
|
||||
this.totalType = { |
|
||||
total1: res.total1, |
|
||||
total2: res.total2, |
|
||||
total3: res.total3, |
|
||||
total4: res.total4, |
|
||||
} |
|
||||
}, |
|
||||
loadMore() { |
|
||||
if(this.total>this.list.length) { |
|
||||
this.coachCommentPageFn() |
|
||||
} |
|
||||
}, |
|
||||
searchFn(val) { |
|
||||
this.params.studentName = val |
|
||||
this.initList() |
|
||||
}, |
|
||||
changeTab(val) { |
|
||||
if(this.params.condition == val) return |
|
||||
this.params.condition = val |
|
||||
this.initList() |
|
||||
}, |
|
||||
initList() { |
|
||||
this.list = [] |
|
||||
this.params.pageNo = 1 |
|
||||
this.status = 'loading' |
|
||||
this.coachCommentPageFn() |
|
||||
}, |
|
||||
async coachCommentPageFn() { |
|
||||
var {data: res} = await coachCommentPage(this.params) |
|
||||
this.params.pageNo ++ |
|
||||
let arr = res.list.map(item=>{ |
|
||||
if(item.images) { |
|
||||
item.images = item.images.split(',') |
|
||||
} |
|
||||
return item |
|
||||
}) |
|
||||
this.list.push(...arr) |
|
||||
this.total = res.total |
|
||||
if(this.list.length>=this.total) { |
|
||||
this.status = 'nomore' |
|
||||
}else { |
|
||||
this.status = 'loading' |
|
||||
} |
|
||||
console.log(res) |
|
||||
}, |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.navH { |
|
||||
width: 100%; |
|
||||
height: 90rpx; |
|
||||
} |
|
||||
.card { |
|
||||
padding: 28rpx; |
|
||||
margin-bottom: 20rpx; |
|
||||
|
|
||||
} |
|
||||
.tabs { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
padding: 24rpx 12rpx; |
|
||||
.tab { |
|
||||
line-height: 76rpx; |
|
||||
font-size: 28rpx; |
|
||||
color: #fff; |
|
||||
&.active { |
|
||||
position: relative; |
|
||||
&::before { |
|
||||
position: absolute; |
|
||||
content: ''; |
|
||||
left: 50%; |
|
||||
bottom: 0; |
|
||||
transform: translateX(-50%); |
|
||||
width: 56rpx; |
|
||||
height: 6rpx; |
|
||||
background: #FFFFFF; |
|
||||
border-radius: 3rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,39 +0,0 @@ |
|||||
<template> |
|
||||
<view class="main"> |
|
||||
<!-- 考场模拟 之前的版本可以删除了--> |
|
||||
<!-- <coachIdentity v-if="identity=='实操教练'"/> --> |
|
||||
<!-- 预约记录 --> |
|
||||
<simulation v-if="identity=='考场模拟教练'"/> |
|
||||
<!-- 学员评价 --> |
|
||||
<studentComment v-if="identity=='模拟器老师'" ref="studentCommentRef"/> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import coachIdentity from './comp/coach.vue' |
|
||||
import simulation from './comp/simulation.vue' |
|
||||
import studentComment from './comp/studentComment.vue' |
|
||||
export default { |
|
||||
components: { coachIdentity,simulation, studentComment }, |
|
||||
data() { |
|
||||
return { |
|
||||
|
|
||||
} |
|
||||
}, |
|
||||
onShow() { |
|
||||
uni.hideTabBar(); |
|
||||
}, |
|
||||
onPullDownRefresh() { |
|
||||
this.$refs.studentCommentRef.initList() |
|
||||
}, |
|
||||
onReachBottom() { |
|
||||
if(identity=='模拟器老师') { |
|
||||
this.$refs.studentCommentRef.loadMore() |
|
||||
} |
|
||||
}, |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
|
|
||||
</style> |
|
@ -1,117 +0,0 @@ |
|||||
<template> |
|
||||
<view class="content"> |
|
||||
<view class="userInfo"> |
|
||||
<view class="tit">Hi,{{ vuex_userInfo.name }}</view> |
|
||||
<view class="flex userRow"> |
|
||||
<view class="schoolIcon"> |
|
||||
<image src="@/static/images/index/ic_jiaxiao.png" mode=""></image> |
|
||||
</view> |
|
||||
<view class="schoolName oneRowText">缺字段</view> |
|
||||
<view class="tag">{{identity}}</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="card priceBox"> |
|
||||
<view class="blueLab">今日待服务</view> |
|
||||
<view class="toDayServe"> |
|
||||
<view class="serveItem"> |
|
||||
<view class="lab">科目二</view> |
|
||||
<view class="val">6</view> |
|
||||
</view> |
|
||||
<view class="serveItem"> |
|
||||
<view class="lab">科目三</view> |
|
||||
<view class="val">10</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="flex-b"> |
|
||||
<view class="data">截止:2023/08/08 11:00:00</view> |
|
||||
<view class="refresh"> |
|
||||
<view class="text">刷新</view> |
|
||||
<view class="icon"> |
|
||||
<image src="@/static/images/index/ic_shuaxin.png" mode=""></image> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
<view class="h1">服务次数统计</view> |
|
||||
<view class="navBox"> |
|
||||
<cardNav :navData="navData" :currentNav="currentNav" @changeNav="changeNav"></cardNav> |
|
||||
</view> |
|
||||
<view class="tab_box"> |
|
||||
<tabDate/> |
|
||||
</view> |
|
||||
|
|
||||
<view class="card"> |
|
||||
<view class="chart"> |
|
||||
<columnChart/> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
|
|
||||
<view class="h1">服务学员人数统计</view> |
|
||||
<view class="tab_box"> |
|
||||
<tabDate/> |
|
||||
</view> |
|
||||
<view class="card"> |
|
||||
<view class="chart"> |
|
||||
<columnChart/> |
|
||||
</view> |
|
||||
</view> |
|
||||
|
|
||||
<UserTab name ='统计'></UserTab> |
|
||||
|
|
||||
|
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import stage from './stage' |
|
||||
import columnChart from './columnChart' |
|
||||
import tabDate from './tabDate' |
|
||||
export default { |
|
||||
components: { stage, columnChart, tabDate }, |
|
||||
data() { |
|
||||
return { |
|
||||
value1: '', |
|
||||
currentTab: 1, |
|
||||
currentTab2: 1, |
|
||||
showDatePicker: false, |
|
||||
navData: [ |
|
||||
{text: '全部', id: 0}, |
|
||||
{text: '科目二', id: 1}, |
|
||||
{text: '科目三', id: 2}, |
|
||||
], |
|
||||
currentNav: 1 |
|
||||
} |
|
||||
}, |
|
||||
onLoad() { |
|
||||
|
|
||||
}, |
|
||||
onShow() { |
|
||||
uni.hideTabBar(); |
|
||||
}, |
|
||||
methods: { |
|
||||
|
|
||||
tabClick2(num) { |
|
||||
this.currentTab2 = num |
|
||||
if(num==4) { |
|
||||
this.showDatePicker = true |
|
||||
} |
|
||||
}, |
|
||||
changeNav(num) { |
|
||||
this.currentNav = num |
|
||||
}, |
|
||||
// 2选择时间选择器里的时间 |
|
||||
selectDateClick(val) { |
|
||||
console.log(val) |
|
||||
}, |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
@import './comp.scss'; |
|
||||
.navBox { |
|
||||
margin-bottom: 24rpx; |
|
||||
} |
|
||||
</style> |
|
@ -1,101 +0,0 @@ |
|||||
<template> |
|
||||
<view class="li" @click="$goPage('/pages/indexEntry/examines/detail/detail')"> |
|
||||
<view class="flex"> |
|
||||
<view class="cover"> |
|
||||
<image :src="item.background" mode=""></image> |
|
||||
</view> |
|
||||
<view class="textCon"> |
|
||||
<view class="name oneRowText">{{ item.name }}</view> |
|
||||
<!-- <view class="starBox"> |
|
||||
<u-rate active-color="#1989FA" inactive-color="#1989FA" gutter="1" :size="16" :value="item.star" readonly></u-rate> |
|
||||
<view class="num">没有返回字段</view> |
|
||||
</view> --> |
|
||||
<view class="modeCar">准考车型:{{item.carType}}</view> |
|
||||
</view> |
|
||||
<callPhone :servicePhone="[item.phone]"> |
|
||||
<view class="pozPhone"> |
|
||||
<image src="@/static/images/index/telephone.png" mode=""></image> |
|
||||
</view> |
|
||||
</callPhone> |
|
||||
</view> |
|
||||
<view class="redBox"v-if="item.notification&&item.notification.length"> |
|
||||
<u-notice-bar :text="item.notification" bgColor="#FBE8EA" color="#C12727" fontSize="12"></u-notice-bar> |
|
||||
</view> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
props: ['item'], |
|
||||
data() { |
|
||||
return { |
|
||||
text1: '免费开放日:2023/08/08 ' |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
/deep/.redBox .u-notice__content__text{ |
|
||||
line-height: 24rpx !important; |
|
||||
} |
|
||||
.flex { |
|
||||
position: relative; |
|
||||
.cover { |
|
||||
width: 204rpx; |
|
||||
height: 140rpx; |
|
||||
border-radius: 8rpx; |
|
||||
overflow: hidden; |
|
||||
} |
|
||||
|
|
||||
.textCon { |
|
||||
flex: 1; |
|
||||
padding: 0 0 0 36rpx; |
|
||||
width: 0; |
|
||||
.name { |
|
||||
font-size: 32rpx; |
|
||||
font-weight: 600; |
|
||||
margin-bottom: 32rpx; |
|
||||
} |
|
||||
|
|
||||
.starBox { |
|
||||
padding: 10rpx 0 20rpx 0; |
|
||||
} |
|
||||
|
|
||||
.modeCar { |
|
||||
font-size: 24rpx; |
|
||||
color: #686B73; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
.pozPhone { |
|
||||
position: absolute; |
|
||||
bottom: 0rpx; |
|
||||
right: 0rpx; |
|
||||
width: 72rpx; |
|
||||
height: 72rpx; |
|
||||
// transform: translateY(-50%); |
|
||||
} |
|
||||
} |
|
||||
.redBox { |
|
||||
width: 100%; |
|
||||
display: flex; |
|
||||
background: #FBE8EA; |
|
||||
height: 40rpx; |
|
||||
align-items: center; |
|
||||
margin-top: 34rpx; |
|
||||
overflow: hidden; |
|
||||
.icon { |
|
||||
width: 40rpx; |
|
||||
image { |
|
||||
width: 28rpx; |
|
||||
height: 28rpx; |
|
||||
margin-left: auto; |
|
||||
} |
|
||||
} |
|
||||
.marqueeW { |
|
||||
width: 0; |
|
||||
flex: 1; |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,127 +0,0 @@ |
|||||
<template> |
|
||||
<view class="main pageBg"> |
|
||||
<view class="topBg"> |
|
||||
<topNavbar title="考场信息"></topNavbar> |
|
||||
<view class="pad"> |
|
||||
<view class="searchBox"> |
|
||||
<searchRow placeholder="搜索考场名称" @searchFn="searchFn"></searchRow> |
|
||||
</view> |
|
||||
<view class="tabs"> |
|
||||
<view class="tab" v-for="(item,index) in tabData" :key="index" :class="{active: params.siteType==item.id}" @click="changeTab(item)">{{ item.text }}</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view class="pad" style="margin-top: 20rpx;"> |
|
||||
<view class="list"> |
|
||||
<view class="card" v-for="(item,index) in list" :key="index"> |
|
||||
<examinItem :item="item"/> |
|
||||
</view> |
|
||||
</view> |
|
||||
<view style="padding-bottom: 20rpx;" v-if="list.length"> |
|
||||
<u-loadmore :status="status" /> |
|
||||
</view> |
|
||||
<nodata v-if="!list.length&&status=='nomore'"></nodata> |
|
||||
</view> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import examinItem from './comp/examinItem' |
|
||||
import { businessSitePage } from '@/config/api.js' |
|
||||
export default { |
|
||||
components: { examinItem }, |
|
||||
data() { |
|
||||
return { |
|
||||
tabData: [ |
|
||||
{text: '全部', id: 0}, |
|
||||
{text: '理论', id: 1}, |
|
||||
{text: '科目二', id: 2}, |
|
||||
{text: '科目三', id: 3}, |
|
||||
], |
|
||||
params: { |
|
||||
pageSize: 20, |
|
||||
pageNo: 1, |
|
||||
schoolId: '', |
|
||||
siteType: '',//1.理论 2.科目二 3.科目三 4.科目二/科目三 |
|
||||
}, |
|
||||
total: 20, |
|
||||
list: [], |
|
||||
status: 'loading' |
|
||||
} |
|
||||
}, |
|
||||
onLoad() { |
|
||||
this.params.schoolId = this.vuex_schoolId |
|
||||
this.businessSitePageFn() |
|
||||
}, |
|
||||
onPullDownRefresh() { |
|
||||
this.initList() |
|
||||
}, |
|
||||
onReachBottom() { |
|
||||
if(this.total>this.list.length) this.businessSitePageFn() |
|
||||
}, |
|
||||
methods: { |
|
||||
initList() { |
|
||||
this.params.pageNo = 1 |
|
||||
this.list = [] |
|
||||
this.status = 'loading' |
|
||||
this.businessSitePageFn() |
|
||||
}, |
|
||||
async businessSitePageFn() { |
|
||||
let obj = Object.assign({},this.params) |
|
||||
const {data: res} = await businessSitePage(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.name = val |
|
||||
this.initList() |
|
||||
}, |
|
||||
changeTab(item) { |
|
||||
this.params.siteType = item.id |
|
||||
this.initList() |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.topBg { |
|
||||
background: #1989fa; |
|
||||
} |
|
||||
.card { |
|
||||
padding: 32rpx 36rpx 26rpx 24rpx; |
|
||||
margin-bottom: 20rpx; |
|
||||
} |
|
||||
.searchBox { |
|
||||
padding: 20rpx 0 0rpx 0; |
|
||||
} |
|
||||
.tabs { |
|
||||
display: flex; |
|
||||
justify-content: space-between; |
|
||||
height: 120rpx; |
|
||||
align-items: center; |
|
||||
.tab { |
|
||||
font-size: 28rpx; |
|
||||
color: #fff; |
|
||||
line-height: 110rpx; |
|
||||
&.active { |
|
||||
position: relative; |
|
||||
&::before { |
|
||||
content: ''; |
|
||||
width: 56rpx; |
|
||||
height: 6rpx; |
|
||||
background: #FFFFFF; |
|
||||
border-radius: 3rpx; |
|
||||
position: absolute; |
|
||||
left: 50%; |
|
||||
transform: translateX(-50%); |
|
||||
bottom: 20rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
@ -1,65 +0,0 @@ |
|||||
<template> |
|
||||
<view class="pageBgImg"> |
|
||||
<topNavbar title="指标充值记录"></topNavbar> |
|
||||
<view class="pad"> |
|
||||
<view class="navBox"> |
|
||||
<cardNav :navData="navData" :currentNav="currentNav" @changeNav="changeNav"></cardNav> |
|
||||
</view> |
|
||||
<view class="ul"> |
|
||||
<view class="card" v-for="(item,index) in 10" :key="index"> |
|
||||
<view class="num">+20</view> |
|
||||
<view class="date">2023/08/08 10:55:21</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</view> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
export default { |
|
||||
data() { |
|
||||
return { |
|
||||
navData: [ |
|
||||
{text: '科目二', id: 1}, |
|
||||
{text: '科目三', id: 2}, |
|
||||
], |
|
||||
currentNav: 1 |
|
||||
} |
|
||||
}, |
|
||||
methods: { |
|
||||
changeNav(id) { |
|
||||
this.currentNav = id |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" scoped> |
|
||||
.navBox { |
|
||||
padding: 24rpx 0; |
|
||||
} |
|
||||
.ul { |
|
||||
width: 100%; |
|
||||
.card { |
|
||||
display: flex; |
|
||||
width: 100%; |
|
||||
height: 100rpx; |
|
||||
align-items: center; |
|
||||
margin-bottom: 20rpx; |
|
||||
justify-content: space-between; |
|
||||
padding: 0 32rpx; |
|
||||
margin-bottom: 20rpx; |
|
||||
.num { |
|
||||
color: $themC; |
|
||||
font-weight: 500; |
|
||||
font-size: 36rpx; |
|
||||
&::after { |
|
||||
content: '个'; |
|
||||
font-size: 24rpx; |
|
||||
font-weight: 400; |
|
||||
margin-left: 6rpx; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
</style> |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue