Browse Source

我的页面,学车动态

master
unknown 10 months ago
parent
commit
e3d44ca899
  1. 1
      pages.json
  2. 4
      pages/indexEntry/findShcool/shcoolDetail/shcoolDetail.vue
  3. 134
      pages/mineEntry/carLearProgress/carLearProgress.vue
  4. 7
      pages/tabbar/index/comp/informaItem.vue
  5. 21
      pages/tabbar/index/index.vue
  6. 63
      pages/tabbar/learnCar/comp/comp.scss
  7. 41
      pages/tabbar/learnCar/comp/subject0.vue
  8. 150
      pages/tabbar/learnCar/comp/topInfo.vue
  9. 172
      pages/tabbar/learnCar/index - 副本.vue
  10. 167
      pages/tabbar/learnCar/index.vue
  11. 368
      pages/tabbar/mine/index - 副本.vue
  12. 125
      pages/tabbar/mine/index.scss
  13. 385
      pages/tabbar/mine/index.vue
  14. 0
      static/images/icon/arrowRightfff.png
  15. 0
      static/images/icon/箭头 拷贝 2(1).png
  16. 0
      static/images/mineIcon/sanCode.png

1
pages.json

@ -496,7 +496,6 @@
"path": "carLearProgress/carLearProgress",
"style": {
"navigationBarTitleText": "学车进度",
"navigationStyle": "custom",
"enablePullDownRefresh": true,
"backgroundTextStyle": "dark"
}

4
pages/indexEntry/findShcool/shcoolDetail/shcoolDetail.vue

@ -14,8 +14,8 @@
<view class="card " v-if="Object.keys(schoolDetail).length">
<schoolItme :item="schoolDetail"/>
<view class="introduce" v-if=" schoolDetail.schoolIntroduceDO">
<u-read-more :showHeight="64" :toggle="true">
<rich-text :nodes="schoolDetail.schoolIntroduceDO.introduce"></rich-text>
<u-read-more :showHeight="64" :toggle="true" :fontSize="12">
<rich-text :nodes="schoolDetail.schoolIntroduceDO.introduce" style="font-size: 24rpx;"></rich-text>
</u-read-more>
</view>
</view>

134
pages/mineEntry/carLearProgress/carLearProgress.vue

@ -1,42 +1,54 @@
<template>
<view class="pageBgImg">
<topNavbar title="学车进度"></topNavbar>
<scroll-view class="scroll-view_w" scroll-x="true" @scroll="scroll" scroll-with-animation :scroll-into-view="'tab'+currentTab" >
<view class="tabs">
<view class="tab" v-for="(item,index) in tabData" :key="index" @click="changeTab(item)" :class="{active: currentTab==item.id}" :id="'tab'+item.id">{{ item.text }}</view>
<view class="rightPad"></view>
</view>
</scroll-view>
<view class="pageBg">
<view class="tabs">
<view class="tab" v-for="(item,index) in tabData" :key="index" @click="changeTab(item)" :class="{active: currentTab==item.id}" :id="'tab'+item.id">{{ item.text }}</view>
<view class="rightPad"></view>
</view>
<view class="pad learnStatus">
<view class="card">
<view class="flex-b">
<view class="lab">模拟器训练学时报审</view>
<view class="date">2023/08/09 22:52:12</view>
<view class="flex-b top_row">
<view class="lab">科目一阶段</view>
<view class="btn status">已完成</view>
</view>
<view class="date-row">2023-08-09 22:52:12</view>
</view>
<!-- <view class="card">
<view class="flex-b top_row">
<view class="lab">科目一考试</view>
<view class="btn status">已预约</view>
</view>
<view class="date-row">2023-08-09 22:52:12</view>
<view class="flex-b bg">
<view class="row">
<view class="text">评价模拟器教学老师</view>
<view class="text">科目二</view>
<view class="btn" @click="$goPage('/pages/carEntry/evaluate/evaluate')">去评价</view>
</view>
</view>
</view>
</view> -->
<view class="card">
<view class="flex-b">
<view class="lab">模拟器训练已预约</view>
<view class="date">2023/08/09 22:52:12</view>
<view class="flex-b top_row">
<view class="lab">科目二考试</view>
<view class="btn">已预约</view>
</view>
<view class="date-row">2023-08-09 22:52:12</view>
<view class="bg">
<view class="row">
<view class="text">模拟驾驶馆某某模拟驾驶馆</view>
<view class="text">考试场地某某科目二考场</view>
</view>
<view class="row">
<view class="text">模拟器编号00001</view>
</view>
<view class="row">
<view class="text">预约时间2023/08/23 10:00:00</view>
<view class="text">考试时间2023-08-23 10:00:00</view>
</view>
</view>
</view>
<view class="card">
<view class="flex-b top_row">
<view class="lab">科目一考试</view>
<view class="btn red status">未通过</view>
</view>
<view class="date-row">2023-08-09 22:52:12</view>
</view>
</view>
</view>
</template>
@ -50,10 +62,6 @@
id: 10
},
{
text: '模拟器',
id: 0
},
{
text: '科目一',
id: 1
},
@ -70,7 +78,7 @@
id: 4
},
],
currentTab: -1,
currentTab: 10,
}
},
methods: {
@ -86,42 +94,52 @@
<style lang="scss" scoped>
@import '../../tabbar/learnCar/comp/comp.scss';
.scroll-view_w {
width: 100%;
.tabs {
display: flex;
flex-wrap: nowrap;
padding: 0 0rpx 0 32rpx;
width: auto;
.tab {
width: 108rpx;
height: 60rpx;
border-radius: 8rpx;
border: 2rpx solid #FFFFFF;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 60rpx;
margin-right: 28rpx;
flex-shrink: 0;
&.active {
background-color: #fff;
color: $themC;
}
&.all {
width: 96rpx;
.date-row {
line-height: 88rpx;
color: #999;
border-top: 1px solid #F6F7FA;
}
.top_row {
height: 88rpx;
}
.red {
background-color: #FF7D7D !important;
}
.tabs {
display: flex;
justify-content: space-between;
.tab {
min-width: 108rpx;
height: 88rpx;
font-size: 28rpx;
color: #333;
text-align: center;
line-height: 88rpx;
margin-right: 28rpx;
&.active {
color: $themC;
position: relative;
&::before {
position: absolute;
content: '';
width: 34rpx;
height: 4rpx;
background: #3776FF;
border-radius: 2rpx;
bottom: 10rpx;
left: 50%;
transform: translateX(-50%);
}
}
.rightPad {
min-width: 10rpx;
height: 60rpx;
}
}
.rightPad {
min-width: 10rpx;
height: 60rpx;
}
}
.learnStatus {
margin-top: 24rpx;
}

7
pages/tabbar/index/comp/informaItem.vue

@ -4,7 +4,7 @@
<image :src="item.picture" mode="aspectFill"></image>
</view>
<view class="rightText">
<view class="text towRowText">{{ item.title }}item.titleitem.titleitem.titleitem.titleitem.titleitem.titleitem.title</view>
<view class="text towRowText">{{ item.title }}</view>
<view class="date">{{ $u.timeFormat(item.createTime, 'yyyy/mm/dd') }}</view>
</view>
</view>
@ -30,7 +30,6 @@
<style lang="scss" scoped>
.flex-b {
justify-content: flex-start !important;
padding-top: 30rpx;
.imgBox {
width: 200rpx;
height: 135rpx;
@ -42,8 +41,8 @@
.rightText {
flex: 1;
width: 0;
padding: 0rpx 0 0rpx 30rpx;
height: 168rpx;
padding: 30rpx 0 0rpx 30rpx;
height: 190rpx;
box-sizing: content;
display: flex;
flex-direction: column;

21
pages/tabbar/index/index.vue

@ -82,8 +82,8 @@
<view class="card">
<view class="h1_row">
<view class="tabs">
<view class="h1 "><text class="active">行业资讯</text></view>
<view class="h1"><text>政策法规</text></view>
<view class="h1" @click="changeInforma(1)"><text :class="{active: informa==1}">行业资讯</text></view>
<view class="h1" @click="changeInforma(2)"><text :class="{active: informa==2}">政策法规</text></view>
</view>
<moreRight text="查看全部" @click.native="$goPage('/pages/indexEntry/industryPolicy/industryPolicy')"/>
</view>
@ -127,7 +127,7 @@
<script>
import { imgUrl } from '@/config/site.config'
import { getarticleList, getBannerList } from '@/config/api.js'
import { getarticleList, getBannerList, getarticlezcList } from '@/config/api.js'
import schoolItem from './comp/schoolItem'
import informaItem from './comp/informaItem'
import coachItem from './comp/coachItem'
@ -243,6 +243,7 @@
},
bgColor: 'transparent',
informList: [],
informa: 1,
}
},
async onLoad() {
@ -295,16 +296,16 @@
}
this.$goPage(item.url)
},
changeInforma(val) {
this.informa = val
this.getarticleListFn()
},
//
async getarticleListFn() {
const {data: res} = await getarticleList({pageSize: 4})
this.informList = res.list[0].articleManagementDO
const {data: res} = await getarticlezcList({pageSize: 3, type: this.informa})
this.informList = res.list
},
//
// async getarticleListFn() {
// const {data: res} = await getarticleList(this.params)
// this.informList = res.list[0].articleManagementDO?.slice(0, 3)
// },
async refereshFn() {
const res = await this.$store.dispatch('refreshToken')
console.log(res)

63
pages/tabbar/learnCar/comp/comp.scss

@ -25,8 +25,15 @@
.card {
background: #FFFFFF;
border-radius: 16rpx;
padding: 28rpx 32rpx;
padding: 0rpx 20rpx;
margin-bottom: 20rpx;
overflow: hidden;
.date {
font-size: 28rpx;
color: #999;
white-space: nowrap;
flex-shrink: 0;
}
&.mb0 {
margin-bottom: 0;
}
@ -39,23 +46,23 @@
}
.btn {
width: 144rpx;
height: 56rpx;
background: #1989FA;
height: 44rpx;
padding: 0 18rpx;
background: $themC;
border-radius: 8rpx;
font-size: 28rpx;
color: #fff;
text-align: center;
line-height: 56rpx;
line-height: 44rpx;
&.disable {
opacity: 0.3;
}
&.status {
border-radius: 10rpx 6rpx 6rpx 0px;
}
}
}
.date {
font-size: 28rpx;
color: #333;
}
}
.learnStatus {
@ -72,16 +79,21 @@
}
}
.bg {
background: rgba(25,137,250,0.1);
background: #F6F7FA;
border-radius: 16rpx;
margin-top: 22rpx;
padding: 20rpx 20rpx 0 20rpx;
margin-bottom: 20rpx;
padding: 0rpx 20rpx 0 20rpx;
.row {
padding-bottom: 20rpx;
display: flex;
justify-content: space-between;
width: 100%;
align-items: center;
border-bottom: 1rpx solid #E3EAFB;
height: 88rpx;
&:last-child {
border: none;
}
&.oneBtn {
justify-content: center;
}
@ -106,4 +118,29 @@
color: #ADADAD;
margin-top: 22rpx;
text-decoration: underline;
}
.padTb {
padding: 30rpx 0;
align-items: flex-start !important;
.date {
margin-top: 4rpx;
padding-left: 20rpx;
}
}
.link-arrow {
display: flex;
align-items: center;
font-size: 28rpx;
color: $themC;
height: 100rpx;
.txt {
margin-right: 4rpx;
}
}
.mt20 {
margin-top: 20rpx;
margin-bottom: 0;
}

41
pages/tabbar/learnCar/comp/subject0.vue

@ -1,49 +1,38 @@
<template>
<view class="comp">
<!-- 学习内容 -->
<view class="learnCon">
<view class="h1">学习内容</view>
<view class="card mb0">
<view class="flex-b">
<view class="lab">模拟器训练预约</view>
<view class="btn" @click="$goPage('/pages/carEntry/simulateAppointment/simulateAppointment')">去预约</view>
</view>
</view>
</view>
<!-- 学习状态 -->
<view class="learnStatus">
<view class="flex-b">
<view class="h1">学习状态</view>
<view class="more">
<view class="txt">查看全部</view>
<view class="moreIcon">
<u-icon name="arrow-right" color="#686B73" size="12"></u-icon>
<view class="card mt20">
<view class="flex-b" >
<view class="lab">实操预约</view>
<view class="link-arrow">
<view class="txt">去预约</view>
<u-icon name="arrow-right" color="#3776FF" size="16"></u-icon>
</view>
</view>
</view>
<view class="h1"><text class="active">学习状态</text></view>
<view class="card">
<view class="flex-b">
<view class="lab">模拟器训练学时报审</view>
<view class="flex-b padTb">
<view class="lab">科目三安全文明常识成绩已通过</view>
<view class="date">2023/08/09 22:52:12</view>
</view>
<view class="flex-b bg">
<view class="row">
<view class="text">评价模拟器教学老师</view>
<view class="btn" @click="$goPage('/pages/carEntry/evaluate/evaluate?coachType=3&tit=模拟器老师&')">去评价</view>
<view class="text">考试成绩97</view>
<!-- <view class="btn" @click="$goPage('/pages/carEntry/evaluate/evaluate?coachType=3&tit=模拟器老师&')">去评价</view> -->
</view>
</view>
</view>
<view class="card">
<view class="flex-b">
<view class="lab">模拟器训练已预约</view>
<view class="flex-b padTb">
<view class="lab">科目三安全文明常识预约成功</view>
<view class="date">2023/08/09 22:52:12</view>
</view>
<view class="bg">
<view class="row">
<view class="text">模拟驾驶馆某某模拟驾驶馆</view>
</view>
<view class="row">
<view class="text">模拟器编号00001</view>
<view class="text">考试场地某某场地</view>
</view>
<view class="row">
<view class="text">预约时间2023/08/23 10:00:00</view>

150
pages/tabbar/learnCar/comp/topInfo.vue

@ -0,0 +1,150 @@
<template>
<view class="topInfo card">
<view class="user_row">
<view class="avatar">
<image src="@/static/images/mineIcon/emtryIcon (1).png" mode=""></image>
</view>
<view class="rightTxt">
<view class="name">JOE宝宝</view>
<view class="btn_row">
<view class="txt">科目四</view>
<u-icon name="arrow-down-fill" color="#fff" size="10"></u-icon>
</view>
</view>
</view>
<view class="bg">
<view class="row">
<view class="timeItem">
<view class="flex">
<view class="time">120</view>
<view class="uni">分钟</view>
</view>
<view class="lab">已完成学时</view>
</view>
<view class="timeItem">
<view class="flex">
<view class="time">120</view>
<view class="uni">分钟</view>
</view>
<view class="lab">应完成学时</view>
</view>
</view>
<view class="row">
<view class="timeItem">
<view class="flex ">
<view class="time">120</view>
<view class="uni">分钟</view>
</view>
<view class="lab">已完成学时</view>
</view>
<view class="timeItem">
<view class="flex ">
<view class="time ">120</view>
<view class="uni">分钟</view>
</view>
<view class="lab">应完成学时</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
}
}
</script>
<style scoped lang="scss">
.topInfo.card {
padding: 0rpx 20rpx 20rpx 20rpx;
.user_row {
display: flex;
.avatar {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
overflow: hidden;
// transform: translateY(-50rpx);
margin-top: -36rpx;
background: #F6F7FA;
}
.rightTxt {
display: flex;
align-items: center;
justify-content: space-between;
flex: 1;
width: 0;
padding: 0 0 0 20rpx;
.name {
font-size: 28rpx;
color: #333;
}
.btn_row {
display: flex;
align-items: center;
justify-content: center;
background: $themC;
width: 150rpx;
height: 50rpx;
color: #fff;
border-radius: 10rpx;
font-size: 24rpx;
lighting-color: 50rpx;
.txt {
margin-right: 10rpx;
}
}
}
}
.bg {
background: #F6F7FA;
border-radius: 20rpx;
padding: 20rpx;
margin-top: 30rpx;
.row {
border-top: 1rpx solid #EDEDED;
display: flex;
&:first-child {
border: none;
}
.timeItem {
border-left: 1px solid #EDEDED;
flex: 1;
align-items: center;
justify-content: center;
color: #999;
font-size: 24rpx;
padding: 20rpx 0;
&:first-child {
border: none;
}
.flex {
justify-content: center;
.time {
font-size: 36rpx;
color: #333;
font-weight: 700;
}
.uni {
margin-top: -6rpx;
}
}
.lab {
text-align: center;
}
}
}
}
}
</style>

172
pages/tabbar/learnCar/index - 副本.vue

@ -0,0 +1,172 @@
<template>
<view class="content pageBgImg">
<view style="width: 100%;height: 40rpx;"></view>
<view class="status_bar"></view>
<view class="title">江西驾考公共服务平台</view>
<view class="navCard">
<view class="nav_row">
<view class="nav " v-for="(item,index) in navData" :key="index" :class="{active: item.id==currentNav}" @click="changeNav(item.id)">{{ item.text }}</view>
</view>
<view class="time_row">
<view class="time_item">
<view class="lab">应完成学时</view>
<view class="num">100分钟</view>
</view>
<view class="time_item">
<view class="lab">已完成学时</view>
<view class="num">30分钟</view>
<view class="shareTime">*与科目一学时共享</view>
</view>
</view>
<view class="subject3" v-if="currentNav==3">
<view class="chain left">
<image src="@/static/images/index/chain.png" mode=""></image>
</view>
<view class="chain right">
<image src="@/static/images/index/chain.png" mode=""></image>
</view>
<view class="time_row ">
<view class="time_item">
<view class="lab">应完成里程</view>
<view class="num">50km</view>
</view>
<view class="time_item">
<view class="lab">已完成里程</view>
<view class="num">0km</view>
</view>
</view>
</view>
</view>
<view class="haveToken" v-if="studentId">
<subject0 v-show="currentNav==0"/>
<subject1 v-show="currentNav==1"/>
<subject2 v-show="currentNav==2"/>
<subject3 v-show="currentNav==3"/>
<subject4 v-show="currentNav==4"/>
</view>
<view class="noDate" v-else>
<nodata><text>暂无数据您还未报名</text></nodata>
</view>
</view>
</template>
<script>
import subject0 from './comp/subject0'
import subject1 from './comp/subject1'
import subject2 from './comp/subject2'
import subject3 from './comp/subject3'
import subject4 from './comp/subject4'
export default {
components: { subject0, subject1, subject2, subject3, subject4 },
data() {
return {
navData: [
{text: '模拟器', id: 0},
{text: '科目一', id: 1},
{text: '科目二', id: 2},
{text: '科目三', id: 3},
{text: '科目四', id: 4},
],
currentNav: 0
}
},
onLoad() {
},
onShow() {
// console.log('')
// this.$store.dispatch('checkLogin')
},
methods: {
changeNav(id) {
this.currentNav = id
}
}
}
</script>
<style lang="scss" scoped>
.content {
width: 100vw;
min-height: 100vh;
// background: url('../../../static/images/bigImg/topbg.png') #F6F6F6 no-repeat;
background-size: 100% 362rpx;
padding: 0 32rpx 32rpx 32rpx;
.title {
font-size: 36rpx;
font-weight: 600;
color: #fff;
padding: 10rpx 0 48rpx 0rpx;
}
.navCard {
.nav_row {
display: flex;
justify-content: space-between;
.nav {
width: 19.4%;
height: 86rpx;
background: rgba(255,255,255,0.4);
border-radius: 8rpx 8rpx 0px 0px;
font-size: 28rpx;
color: #fff;
line-height: 86rpx;
text-align: center;
&.active {
background: #FFFFFF;
color: $themC;
}
}
}
.subject3 {
padding-top: 32rpx;
position: relative;
.chain {
width: 28rpx;
height: 100rpx;
position: absolute;
top: -34rpx;
&.left {
left: 60rpx;
}
&.right {
right: 60rpx !important;
}
}
}
.time_row {
display: flex;
height: 240rpx;
padding: 32rpx;
align-items: center;
justify-content: center;
background: #fff;
border-radius: 0 0 8rpx 8rpx;
.time_item {
flex: 1;
text-align: center;
position: relative;
.lab {
font-size: 28rpx;
color: #333;
}
.num {
font-size: 40rpx;
font-weight: 600;
color: $themC;
margin-top: 20rpx;
}
.shareTime {
font-size: 20rpx;
color: $themC;
position: absolute;
bottom: -40rpx;
left: 0;
width: 100%;
}
}
}
}
}
</style>

167
pages/tabbar/learnCar/index.vue

@ -1,172 +1,25 @@
<template>
<view class="content pageBgImg">
<view style="width: 100%;height: 40rpx;"></view>
<view class="pageBgImg pad">
<view class="status_bar"></view>
<view class="title">江西驾考公共服务平台</view>
<view class="navCard">
<view class="nav_row">
<view class="nav " v-for="(item,index) in navData" :key="index" :class="{active: item.id==currentNav}" @click="changeNav(item.id)">{{ item.text }}</view>
</view>
<view class="time_row">
<view class="time_item">
<view class="lab">应完成学时</view>
<view class="num">100分钟</view>
</view>
<view class="time_item">
<view class="lab">已完成学时</view>
<view class="num">30分钟</view>
<view class="shareTime">*与科目一学时共享</view>
</view>
</view>
<view class="subject3" v-if="currentNav==3">
<view class="chain left">
<image src="@/static/images/index/chain.png" mode=""></image>
</view>
<view class="chain right">
<image src="@/static/images/index/chain.png" mode=""></image>
</view>
<view class="time_row ">
<view class="time_item">
<view class="lab">应完成里程</view>
<view class="num">50km</view>
</view>
<view class="time_item">
<view class="lab">已完成里程</view>
<view class="num">0km</view>
</view>
</view>
</view>
</view>
<view class="haveToken" v-if="studentId">
<subject0 v-show="currentNav==0"/>
<subject1 v-show="currentNav==1"/>
<subject2 v-show="currentNav==2"/>
<subject3 v-show="currentNav==3"/>
<subject4 v-show="currentNav==4"/>
</view>
<view class="noDate" v-else>
<nodata><text>暂无数据您还未报名</text></nodata>
</view>
<view class="" style="height: 100rpx;"></view>
<topInfo></topInfo>
<subject0></subject0>
</view>
</template>
<script>
import subject0 from './comp/subject0'
import subject1 from './comp/subject1'
import subject2 from './comp/subject2'
import subject3 from './comp/subject3'
import subject4 from './comp/subject4'
import topInfo from './comp/topInfo.vue'
import subject0 from './comp/subject0.vue'
export default {
components: { subject0, subject1, subject2, subject3, subject4 },
components: { topInfo, subject0 },
data() {
return {
navData: [
{text: '模拟器', id: 0},
{text: '科目一', id: 1},
{text: '科目二', id: 2},
{text: '科目三', id: 3},
{text: '科目四', id: 4},
],
currentNav: 0
}
},
onLoad() {
},
onShow() {
// console.log('')
// this.$store.dispatch('checkLogin')
},
methods: {
changeNav(id) {
this.currentNav = id
}
}
}
</script>
<style lang="scss" scoped>
.content {
width: 100vw;
min-height: 100vh;
// background: url('../../../static/images/bigImg/topbg.png') #F6F6F6 no-repeat;
background-size: 100% 362rpx;
padding: 0 32rpx 32rpx 32rpx;
.title {
font-size: 36rpx;
font-weight: 600;
color: #fff;
padding: 10rpx 0 48rpx 0rpx;
}
.navCard {
.nav_row {
display: flex;
justify-content: space-between;
.nav {
width: 19.4%;
height: 86rpx;
background: rgba(255,255,255,0.4);
border-radius: 8rpx 8rpx 0px 0px;
font-size: 28rpx;
color: #fff;
line-height: 86rpx;
text-align: center;
&.active {
background: #FFFFFF;
color: $themC;
}
}
}
.subject3 {
padding-top: 32rpx;
position: relative;
.chain {
width: 28rpx;
height: 100rpx;
position: absolute;
top: -34rpx;
&.left {
left: 60rpx;
}
&.right {
right: 60rpx !important;
}
}
}
.time_row {
display: flex;
height: 240rpx;
padding: 32rpx;
align-items: center;
justify-content: center;
background: #fff;
border-radius: 0 0 8rpx 8rpx;
.time_item {
flex: 1;
text-align: center;
position: relative;
.lab {
font-size: 28rpx;
color: #333;
}
.num {
font-size: 40rpx;
font-weight: 600;
color: $themC;
margin-top: 20rpx;
}
.shareTime {
font-size: 20rpx;
color: $themC;
position: absolute;
bottom: -40rpx;
left: 0;
width: 100%;
}
}
}
}
<style scoped lang="scss">
}
</style>
</style>

368
pages/tabbar/mine/index - 副本.vue

@ -0,0 +1,368 @@
<template>
<view class="pageBgImg">
<!-- 学员名字 -->
<view class="top_row flex-b" @click="topClick">
<view class="flex">
<view class="userName">Hi{{ vuex_userInfo.name?vuex_userInfo.name:vuex_userInfo.phone?vuex_userInfo.phone:'请登录'}}</view>
<view class="arrowIcon">
<image src="../../../static/images/userCenter/ic_gengduo.png" mode=""></image>
</view>
</view>
<view class="scanCode">
<image src="../../../static/images/userCenter/ic_erweima.png" mode=""></image>
</view>
</view>
<view class="pad">
<!-- 学车进度 -->
<view class="userProgress">
<view class="progItme first flex">
<view class="dianBox">
<view class="dian"></view>
</view>
<view class="rightCon">报名成功</view>
</view>
<view class="progItme flex">
<view class="dianBox">
<view class="dian active"></view>
</view>
<view class="line"></view>
<view class="rightCon">
<view class="day">22</view>
<view class="flex-b">
<view class="flex">
<view class="text">科目一考试通过</view>
<view class="tag">当前进度</view>
</view>
<view class="progBtn" @click="$goPage('/pages/mineEntry/carLearProgress/carLearProgress')">进度查询</view>
</view>
</view>
</view>
</view>
<!-- 我的相关入口 -->
<view class="ul">
<view class="li" v-for="(item,index) in myPageEntry" :key="index" @click="myPageEntryClick(item)">
<view class="icon">
<image :src="item.icon" mode="" v-if="item.text=='我的报名'" ></image>
<image :src="item.icon" mode="" v-else></image>
</view>
<view class="text">{{ item.text }}</view>
</view>
</view>
<!-- 业务办理 -->
<view class="business ">
<view class="h1">业务办理</view>
<view class="card">
<view class="item" v-for="(item,index) in businessEntry" :key="index" @click="goBusinessEntry(item)">
<view class="icon">
<image :src="item.icon" mode=""></image>
</view>
<view class="text">{{ item.text }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { selectContractPdfBase64 } from '@/config/api.js'
export default {
data() {
return {
myPageEntry: [
{
text: '我的报名',
icon: require('../../../static/images/userCenter/yubaoming.png'),
url: '/pages/mineEntry/myForecastName/myForecastName',
},
{
text: '我的预约',
icon: require('../../../static/images/userCenter/ic_yuyue.png'),
url: '/pages/mineEntry/myAppointment/myAppointment'
},
{
text: '我的订单',
icon: require('../../../static/images/userCenter/ic_dingdan.png'),
url: '/pages/mineEntry/myOrder/myOrder'
},
{
text: '学车数据',
icon: require('../../../static/images/userCenter/ic_shuju.png'),
url: '/pages/mineEntry/carData/carData'
},
{
text: '我的合同',
icon: require('../../../static/images/userCenter/ic_hetong.png'),
url: '/pages/mineEntry/myContract/myContract'
},
{
text: '我的评价',
icon: require('../../../static/images/userCenter/ic_pingjia.png'),
url: '/pages/mineEntry/myEvaluate/myEvaluate'
},
{
text: '我的收藏',
icon: require('../../../static/images/userCenter/ic_shoucang.png'),
url: '/pages/mineEntry/myCollect/myCollect'
},
{
text: '本地生活',
icon: require('../../../static/images/userCenter/ic_shenghuo.png'),
},
],
businessEntry: [
{
text: '学时查询',
icon: require('../../../static/images/userCenter/ic_chaxun.png'),
url: '/pages/mineEntry/carLearnHours/carLearnHours'
},
{
text: '同城转校',
icon: require('../../../static/images/userCenter/tgzhuanxiao.png'),
url: '/pages/mineEntry/schoolTransfer/schoolTransfer'
},
{
text: '车型变更',
icon: require('../../../static/images/userCenter/biangen.png'),
url: '/pages/mineEntry/modelChange/modelChange'
},
{
text: '申请退学',
icon: require('../../../static/images/userCenter/shenqingtuixue.png'),
url: '/pages/mineEntry/refund/refund'
},
]
}
},
onLoad() {
console.log('我的页面')
},
onShow() {
// uni.hideTabBar();
},
methods: {
topClick() {
if(!this.vuex_userInfo.phone) {
this.$goPage('/pages/userCenter/login/login')
}else {
this.$goPage('/pages/mineEntry/personaInfo/personaInfo')
}
},
async selectContractPdfBase64Fn() {
const {data: res} = await selectContractPdfBase64({studentId: this.studentId})
this.pdfUrl = res
console.log('this.pdfUrl')
console.log(this.pdfUrl)
},
async goBusinessEntry(item) {
const res = await this.$store.dispatch('checkLogin')
if(!res) return
if(!this.vuex_userInfo.schoolId) return this.$u.toast('您不是平台学员')
this.$goPage(item.url)
},
async myPageEntryClick(item) {
const res = await this.$store.dispatch('checkLogin')
if(!res) return
let arr = ['我的收藏','本地生活', '我的报名']
console.log(arr.includes(item.text))
if(!this.vuex_userInfo.schoolId&&!arr.includes(item.text)) return this.$u.toast('您不是平台学员')
this.$goPage(item.url)
}
}
}
</script>
<style lang="scss" scoped>
.pageBgImg {
.top_row {
width: 100%;
padding: 180rpx 62rpx 0 32rpx;
.flex {
.userName {
font-size: 48rpx;
font-weight: 600;
color: #FFFFFF;
}
.arrowIcon {
margin-left: 24rpx;
width: 40rpx;
height: 40rpx;
}
}
.scanCode {
width: 40rpx;
height: 40rpx;
}
}
.userProgress {
background: rgba(255,255,255,0.65);
box-shadow: 2px 2px 8px 0px #C3D6E9, inset 0px 2px 4px 0px rgba(255,255,255,0.5);
border-radius: 16rpx;
padding: 22rpx 22rpx 22rpx 32rpx;
margin-top: 32rpx;
.progItme {
position: relative;
.dianBox {
width: 32rpx;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
left: 0rpx;
bottom: 14rpx;
z-index: 4;
.dian {
width: 12rpx;
height: 12rpx;
background: #1989FA;
border-radius: 50%;
&.active {
width: 32rpx;
height: 32rpx;
background: rgba(25,137,250,0.11);
position: relative;
&::before {
content: '' ;
width: 18rpx;
height: 18rpx;
position: absolute;
border-radius: 50%;
top: 50%;
left: 50%;
background: #1989FA;
transform: translate(-50%, -50%);
}
}
}
}
.line {
position: absolute;
left: 14rpx;
bottom: 30rpx;
width: 0rpx;
height: 90rpx;
border: 1rpx dashed rgba(25,137,250,0.7);
z-index: 1;
}
.rightCon {
flex: 1;
padding: 0 0 0 54rpx;
.day {
font-size: 20rpx;
color: $themC;
margin: 12rpx 0 0rpx 0;
}
.flex-b {
.flex {
.text {
font-size: 28rpx;
color: #333;
font-weight: 600;
}
.tag {
margin-left: 10rpx;
width: 110rpx;
height: 44rpx;
background: #FAF0E4;
border-radius: 8rpx;
font-size: 20rpx;
color: #FA7919;
line-height: 44rpx;
text-align: center;
}
}
.progBtn {
width: 130rpx;
height: 60rpx;
background: rgba(25,137,250,0.1);
border-radius: 8rpx;
border: 2rpx solid #1989FA;
font-size: 28rpx;
color: $themC;
line-height: 60rpx;
text-align: center;
}
}
}
}
}
.ul {
padding: 38rpx 0;
display: flex;
flex-wrap: wrap;
width: 100%;
.li {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
margin: 24rpx 0;
.icon {
width: 68rpx;
height: 68rpx;
}
.text {
font-size: 28rpx;
margin-top: 16rpx;
color: #333;
}
}
}
.business {
padding: 32rpx 0;
.h1 {
margin-bottom: 24rpx;
}
.card {
width: 100%;
height: 390rpx;
background: #FFFFFF;
border-radius: 16rpx;
display: flex;
flex-wrap: wrap;
padding: 38rpx 0 0 0;
.item {
width: 33.33%;
display: flex;
flex-direction: column;
align-items: center;
height: 162rpx;
.icon {
width: 72rpx;
height: 72rpx;
background: #F6F7F8;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
image {
width: 48rpx;
height: 48rpx;
}
}
.text {
margin-top: 16rpx;
font-size: 28rpx;
color: #333;
}
}
}
}
}
</style>

125
pages/tabbar/mine/index.scss

@ -0,0 +1,125 @@
.pageBgImg {
.userInfo {
width: 100%;
padding: 30rpx 30rpx 100rpx 30rpx;
display: flex;
align-items: center;
.avatar {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
overflow: hidden;
background: #f4f4f4;
image {
}
}
.rightInfo {
flex: 1;
width: 0;
padding-left: 20rpx;
.name-row {
display: flex;
justify-content: space-between;
.leftTxt {
flex: 1;
width: 0;
display: flex;
align-items: center;
.name {
font-size: 30rpx;
color: #fff;
font-weight: 700;
}
.arrowIcon {
width: 36rpx;
height: 36rpx;
margin-left: 4rpx;
}
}
.scanCode {
width: 36rpx;
height: 36rpx;
}
}
.phone {
font-size: 24rpx;
color: #fff;
margin-top: 20rpx;
}
}
}
.pad {
border-radius: 20rpx 20rpx 0 0;
background-color: #f4f4f4;
transform: translateY(-22rpx);
}
.ul {
display: flex;
width: 100%;
height: 154rpx;
background: #FFFFFF;
border-radius: 20rpx;
padding: 20rpx;
transform: translateY(-60rpx);
.li {
flex: 1;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
.icon {
width: 77rpx;
height: 77rpx;
}
.text {
font-size: 24rpx;
color: #333;
}
}
}
.ul2 {
background: #FFFFFF;
border-radius: 20rpx;
margin-top: -40rpx;
padding: 4rpx 20rpx;
.li2 {
display: flex;
height: 88rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #F6F7FA;
&:last-child {
border: none;
}
.icon {
width: 54rpx;
height: 52rpx;
image {
}
}
.text {
font-size: 28rpx;
color: #333;
margin-left: 20rpx;
}
.arrowRight {
width: 36rpx;
height: 36rpx;
margin-left: auto;
}
}
}
}

385
pages/tabbar/mine/index.vue

@ -1,368 +1,79 @@
<template>
<view class="pageBgImg">
<!-- 学员名字 -->
<view class="top_row flex-b" @click="topClick">
<view class="flex">
<view class="userName">Hi{{ vuex_userInfo.name?vuex_userInfo.name:vuex_userInfo.phone?vuex_userInfo.phone:'请登录'}}</view>
<view class="arrowIcon">
<image src="../../../static/images/userCenter/ic_gengduo.png" mode=""></image>
</view>
</view>
<view class="scanCode">
<image src="../../../static/images/userCenter/ic_erweima.png" mode=""></image>
<view class="status_bar"></view>
<!-- 用户信息 -->
<view class="userInfo">
<view class="avatar">
<image src="@/static/images/mineIcon/emtryIcon (3).png" mode=""></image>
</view>
</view>
<view class="pad">
<!-- 学车进度 -->
<view class="userProgress">
<view class="progItme first flex">
<view class="dianBox">
<view class="dian"></view>
</view>
<view class="rightCon">报名成功</view>
</view>
<view class="progItme flex">
<view class="dianBox">
<view class="dian active"></view>
</view>
<view class="line"></view>
<view class="rightCon">
<view class="day">22</view>
<view class="flex-b">
<view class="flex">
<view class="text">科目一考试通过</view>
<view class="tag">当前进度</view>
</view>
<view class="progBtn" @click="$goPage('/pages/mineEntry/carLearProgress/carLearProgress')">进度查询</view>
<view class="rightInfo">
<view class="name-row">
<view class="leftTxt">
<view class="name">JOE宝宝</view>
<view class="arrowIcon">
<image src="@/static/images/icon/arrowRightfff.png" mode=""></image>
</view>
</view>
<view class="scanCode">
<image src="@/static/images/mineIcon/sanCode.png" mode=""></image>
</view>
</view>
<view class="phone">18267103167</view>
</view>
<!-- 我的相关入口 -->
</view>
<view class="pad">
<view class="ul">
<view class="li" v-for="(item,index) in myPageEntry" :key="index" @click="myPageEntryClick(item)">
<view class="li" v-for="(item,index) in ulData" :key="index" @click="$goPage(item.url)">
<view class="icon">
<image :src="item.icon" mode="" v-if="item.text=='我的报名'" ></image>
<image :src="item.icon" mode="" v-else></image>
<image :src="item.icon" mode=""></image>
</view>
<view class="text">{{ item.text }}</view>
<view class="text">{{ item.name }}</view>
</view>
</view>
<!-- 业务办理 -->
<view class="business ">
<view class="h1">业务办理</view>
<view class="card">
<view class="item" v-for="(item,index) in businessEntry" :key="index" @click="goBusinessEntry(item)">
<view class="icon">
<image :src="item.icon" mode=""></image>
</view>
<view class="text">{{ item.text }}</view>
<view class="ul2">
<view class="li2" v-for="(item,index) in ulData2" :key="index">
<view class="icon">
<image :src="item.icon" mode=""></image>
</view>
<view class="text">{{ item.name }}</view>
<view class="arrowRight">
<u-icon name="arrow-right" color="#ccc" size="16"></u-icon>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { selectContractPdfBase64 } from '@/config/api.js'
export default {
data() {
return {
myPageEntry: [
{
text: '我的报名',
icon: require('../../../static/images/userCenter/yubaoming.png'),
url: '/pages/mineEntry/myForecastName/myForecastName',
},
{
text: '我的预约',
icon: require('../../../static/images/userCenter/ic_yuyue.png'),
url: '/pages/mineEntry/myAppointment/myAppointment'
},
{
text: '我的订单',
icon: require('../../../static/images/userCenter/ic_dingdan.png'),
url: '/pages/mineEntry/myOrder/myOrder'
},
{
text: '学车数据',
icon: require('../../../static/images/userCenter/ic_shuju.png'),
url: '/pages/mineEntry/carData/carData'
},
{
text: '我的合同',
icon: require('../../../static/images/userCenter/ic_hetong.png'),
url: '/pages/mineEntry/myContract/myContract'
},
{
text: '我的评价',
icon: require('../../../static/images/userCenter/ic_pingjia.png'),
url: '/pages/mineEntry/myEvaluate/myEvaluate'
},
{
text: '我的收藏',
icon: require('../../../static/images/userCenter/ic_shoucang.png'),
url: '/pages/mineEntry/myCollect/myCollect'
},
{
text: '本地生活',
icon: require('../../../static/images/userCenter/ic_shenghuo.png'),
},
ulData: [
{name: '学车进度', icon: require('@/static/images/mineIcon/emtryIcon (4).png'),url: '/pages/mineEntry/carLearProgress/carLearProgress'},
{name: '我的预约', icon: require('@/static/images/mineIcon/emtryIcon (1).png'),url: ''},
{name: '我的订单', icon: require('@/static/images/mineIcon/emtryIcon (2).png'),url: ''},
{name: '我的合同', icon: require('@/static/images/mineIcon/emtryIcon (3).png'),url: ''},
],
businessEntry: [
{
text: '学时查询',
icon: require('../../../static/images/userCenter/ic_chaxun.png'),
url: '/pages/mineEntry/carLearnHours/carLearnHours'
},
{
text: '同城转校',
icon: require('../../../static/images/userCenter/tgzhuanxiao.png'),
url: '/pages/mineEntry/schoolTransfer/schoolTransfer'
},
{
text: '车型变更',
icon: require('../../../static/images/userCenter/biangen.png'),
url: '/pages/mineEntry/modelChange/modelChange'
},
{
text: '申请退学',
icon: require('../../../static/images/userCenter/shenqingtuixue.png'),
url: '/pages/mineEntry/refund/refund'
},
ulData2: [
{name: '学时查询', icon: require('@/static/images/mineIcon/minIcon (4).png'),url: ''},
{name: '我的评价', icon: require('@/static/images/mineIcon/minIcon (1).png'),url: ''},
{name: '退款申请', icon: require('@/static/images/mineIcon/minIcon (3).png'),url: ''},
{name: '变更车型', icon: require('@/static/images/mineIcon/minIcon (7).png'),url: ''},
{name: '同城转校', icon: require('@/static/images/mineIcon/minIcon (5).png'),url: ''},
{name: '退款申请记录', icon: require('@/static/images/mineIcon/minIcon (6).png'),url: ''},
{name: '关于我们', icon: require('@/static/images/mineIcon/minIcon (2).png'),url: ''},
]
}
},
onLoad() {
console.log('我的页面')
},
onShow() {
// uni.hideTabBar();
},
methods: {
topClick() {
if(!this.vuex_userInfo.phone) {
this.$goPage('/pages/userCenter/login/login')
}else {
this.$goPage('/pages/mineEntry/personaInfo/personaInfo')
}
},
async selectContractPdfBase64Fn() {
const {data: res} = await selectContractPdfBase64({studentId: this.studentId})
this.pdfUrl = res
console.log('this.pdfUrl')
console.log(this.pdfUrl)
},
async goBusinessEntry(item) {
const res = await this.$store.dispatch('checkLogin')
if(!res) return
if(!this.vuex_userInfo.schoolId) return this.$u.toast('您不是平台学员')
this.$goPage(item.url)
},
async myPageEntryClick(item) {
const res = await this.$store.dispatch('checkLogin')
if(!res) return
let arr = ['我的收藏','本地生活', '我的报名']
console.log(arr.includes(item.text))
if(!this.vuex_userInfo.schoolId&&!arr.includes(item.text)) return this.$u.toast('您不是平台学员')
this.$goPage(item.url)
}
}
}
</script>
<style lang="scss" scoped>
.pageBgImg {
.top_row {
width: 100%;
padding: 180rpx 62rpx 0 32rpx;
.flex {
.userName {
font-size: 48rpx;
font-weight: 600;
color: #FFFFFF;
}
.arrowIcon {
margin-left: 24rpx;
width: 40rpx;
height: 40rpx;
}
}
.scanCode {
width: 40rpx;
height: 40rpx;
}
}
.userProgress {
background: rgba(255,255,255,0.65);
box-shadow: 2px 2px 8px 0px #C3D6E9, inset 0px 2px 4px 0px rgba(255,255,255,0.5);
border-radius: 16rpx;
padding: 22rpx 22rpx 22rpx 32rpx;
margin-top: 32rpx;
.progItme {
position: relative;
.dianBox {
width: 32rpx;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
left: 0rpx;
bottom: 14rpx;
z-index: 4;
.dian {
width: 12rpx;
height: 12rpx;
background: #1989FA;
border-radius: 50%;
&.active {
width: 32rpx;
height: 32rpx;
background: rgba(25,137,250,0.11);
position: relative;
&::before {
content: '' ;
width: 18rpx;
height: 18rpx;
position: absolute;
border-radius: 50%;
top: 50%;
left: 50%;
background: #1989FA;
transform: translate(-50%, -50%);
}
}
}
}
.line {
position: absolute;
left: 14rpx;
bottom: 30rpx;
width: 0rpx;
height: 90rpx;
border: 1rpx dashed rgba(25,137,250,0.7);
z-index: 1;
}
.rightCon {
flex: 1;
padding: 0 0 0 54rpx;
.day {
font-size: 20rpx;
color: $themC;
margin: 12rpx 0 0rpx 0;
}
.flex-b {
.flex {
.text {
font-size: 28rpx;
color: #333;
font-weight: 600;
}
.tag {
margin-left: 10rpx;
width: 110rpx;
height: 44rpx;
background: #FAF0E4;
border-radius: 8rpx;
font-size: 20rpx;
color: #FA7919;
line-height: 44rpx;
text-align: center;
}
}
.progBtn {
width: 130rpx;
height: 60rpx;
background: rgba(25,137,250,0.1);
border-radius: 8rpx;
border: 2rpx solid #1989FA;
font-size: 28rpx;
color: $themC;
line-height: 60rpx;
text-align: center;
}
}
}
}
}
.ul {
padding: 38rpx 0;
display: flex;
flex-wrap: wrap;
width: 100%;
.li {
width: 25%;
display: flex;
flex-direction: column;
align-items: center;
margin: 24rpx 0;
.icon {
width: 68rpx;
height: 68rpx;
}
.text {
font-size: 28rpx;
margin-top: 16rpx;
color: #333;
}
}
}
.business {
padding: 32rpx 0;
.h1 {
margin-bottom: 24rpx;
}
.card {
width: 100%;
height: 390rpx;
background: #FFFFFF;
border-radius: 16rpx;
display: flex;
flex-wrap: wrap;
padding: 38rpx 0 0 0;
.item {
width: 33.33%;
display: flex;
flex-direction: column;
align-items: center;
height: 162rpx;
.icon {
width: 72rpx;
height: 72rpx;
background: #F6F7F8;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
image {
width: 48rpx;
height: 48rpx;
}
}
.text {
margin-top: 16rpx;
font-size: 28rpx;
color: #333;
}
}
}
}
}
</style>
@import './index.scss';
</style>

0
static/images/mineIcon/箭头 拷贝 2.png → static/images/icon/arrowRightfff.png

Before

Width: 36  |  Height: 36  |  Size: 516 B

After

Width: 36  |  Height: 36  |  Size: 516 B

0
static/images/mineIcon/箭头 拷贝 2(1).png → static/images/icon/箭头 拷贝 2(1).png

Before

Width: 36  |  Height: 36  |  Size: 638 B

After

Width: 36  |  Height: 36  |  Size: 638 B

0
static/images/mineIcon/扫码.png → static/images/mineIcon/sanCode.png

Before

Width: 36  |  Height: 36  |  Size: 626 B

After

Width: 36  |  Height: 36  |  Size: 626 B

Loading…
Cancel
Save