学员端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

359 lines
8.2 KiB

1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
1 year ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view class="pageBgImg">
  3. <!-- 学员名字 -->
  4. <view class="top_row flex-b" @click="topClick">
  5. <view class="flex">
  6. <view class="userName">Hi{{ vuex_userInfo.name?vuex_userInfo.name:vuex_userInfo.phone?vuex_userInfo.phone:'请登录'}}</view>
  7. <view class="arrowIcon">
  8. <image src="../../../static/images/userCenter/ic_gengduo.png" mode=""></image>
  9. </view>
  10. </view>
  11. <view class="scanCode">
  12. <image src="../../../static/images/userCenter/ic_erweima.png" mode=""></image>
  13. </view>
  14. </view>
  15. <view class="pad">
  16. <!-- 学车进度 -->
  17. <view class="userProgress">
  18. <view class="progItme first flex">
  19. <view class="dianBox">
  20. <view class="dian"></view>
  21. </view>
  22. <view class="rightCon">报名成功</view>
  23. </view>
  24. <view class="progItme flex">
  25. <view class="dianBox">
  26. <view class="dian active"></view>
  27. </view>
  28. <view class="line"></view>
  29. <view class="rightCon">
  30. <view class="day">22</view>
  31. <view class="flex-b">
  32. <view class="flex">
  33. <view class="text">科目一考试通过</view>
  34. <view class="tag">当前进度</view>
  35. </view>
  36. <view class="progBtn" @click="$goPage('/pages/mineEntry/carLearProgress/carLearProgress')">进度查询</view>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. <!-- 我的相关入口 -->
  42. <view class="ul">
  43. <view class="li" v-for="(item,index) in myPageEntry" :key="index" @click="myPageEntryClick(item)">
  44. <view class="icon">
  45. <image :src="item.icon" mode=""></image>
  46. </view>
  47. <view class="text">{{ item.text }}</view>
  48. </view>
  49. </view>
  50. <!-- 业务办理 -->
  51. <view class="business ">
  52. <view class="h1">业务办理</view>
  53. <view class="card">
  54. <view class="item" v-for="(item,index) in businessEntry" :key="index" @click="goBusinessEntry(item)">
  55. <view class="icon">
  56. <image :src="item.icon" mode=""></image>
  57. </view>
  58. <view class="text">{{ item.text }}</view>
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. </template>
  65. <script>
  66. import { selectContractPdfBase64 } from '@/config/api.js'
  67. export default {
  68. data() {
  69. return {
  70. myPageEntry: [
  71. {
  72. text: '我的预约',
  73. icon: require('../../../static/images/userCenter/ic_yuyue.png'),
  74. url: '/pages/mineEntry/myAppointment/myAppointment'
  75. },
  76. {
  77. text: '我的订单',
  78. icon: require('../../../static/images/userCenter/ic_dingdan.png'),
  79. url: '/pages/mineEntry/myOrder/myOrder'
  80. },
  81. {
  82. text: '学车数据',
  83. icon: require('../../../static/images/userCenter/ic_shuju.png'),
  84. url: '/pages/mineEntry/carData/carData'
  85. },
  86. {
  87. text: '我的合同',
  88. icon: require('../../../static/images/userCenter/ic_hetong.png'),
  89. url: '/pages/mineEntry/myContract/myContract'
  90. },
  91. {
  92. text: '我的评价',
  93. icon: require('../../../static/images/userCenter/ic_pingjia.png'),
  94. url: '/pages/mineEntry/myEvaluate/myEvaluate'
  95. },
  96. {
  97. text: '我的收藏',
  98. icon: require('../../../static/images/userCenter/ic_shoucang.png'),
  99. url: '/pages/mineEntry/myCollect/myCollect'
  100. },
  101. {
  102. text: '本地生活',
  103. icon: require('../../../static/images/userCenter/ic_shenghuo.png'),
  104. },
  105. ],
  106. businessEntry: [
  107. {
  108. text: '学时查询',
  109. icon: require('../../../static/images/userCenter/ic_chaxun.png'),
  110. url: '/pages/mineEntry/carLearnHours/carLearnHours'
  111. },
  112. {
  113. text: '同城转校',
  114. icon: require('../../../static/images/userCenter/tgzhuanxiao.png'),
  115. url: '/pages/mineEntry/schoolTransfer/schoolTransfer'
  116. },
  117. {
  118. text: '车型变更',
  119. icon: require('../../../static/images/userCenter/biangen.png'),
  120. url: '/pages/mineEntry/modelChange/modelChange'
  121. },
  122. {
  123. text: '申请退学',
  124. icon: require('../../../static/images/userCenter/shenqingtuixue.png'),
  125. url: '/pages/mineEntry/refund/refund'
  126. },
  127. ]
  128. }
  129. },
  130. onLoad() {
  131. console.log('我的页面')
  132. },
  133. onShow() {
  134. // uni.hideTabBar();
  135. },
  136. methods: {
  137. topClick() {
  138. if(!this.vuex_userInfo.phone) {
  139. this.$goPage('/pages/userCenter/login/login')
  140. }else {
  141. this.$goPage('/pages/mineEntry/personaInfo/personaInfo')
  142. }
  143. },
  144. async selectContractPdfBase64Fn() {
  145. const {data: res} = await selectContractPdfBase64({studentId: this.studentId})
  146. this.pdfUrl = res
  147. console.log('this.pdfUrl')
  148. console.log(this.pdfUrl)
  149. },
  150. async goBusinessEntry(item) {
  151. const res = await this.$store.dispatch('checkLogin')
  152. console.log('res')
  153. console.log(res)
  154. if(!res) return
  155. this.$goPage(item.url)
  156. },
  157. async myPageEntryClick(item) {
  158. await this.$store.dispatch('checkLogin')
  159. this.$goPage(item.url)
  160. }
  161. }
  162. }
  163. </script>
  164. <style lang="scss" scoped>
  165. .pageBgImg {
  166. .top_row {
  167. width: 100%;
  168. padding: 180rpx 62rpx 0 32rpx;
  169. .flex {
  170. .userName {
  171. font-size: 48rpx;
  172. font-weight: 600;
  173. color: #FFFFFF;
  174. }
  175. .arrowIcon {
  176. margin-left: 24rpx;
  177. width: 40rpx;
  178. height: 40rpx;
  179. }
  180. }
  181. .scanCode {
  182. width: 40rpx;
  183. height: 40rpx;
  184. }
  185. }
  186. .userProgress {
  187. background: rgba(255,255,255,0.65);
  188. box-shadow: 2px 2px 8px 0px #C3D6E9, inset 0px 2px 4px 0px rgba(255,255,255,0.5);
  189. border-radius: 16rpx;
  190. padding: 22rpx 22rpx 22rpx 32rpx;
  191. margin-top: 32rpx;
  192. .progItme {
  193. position: relative;
  194. .dianBox {
  195. width: 32rpx;
  196. display: flex;
  197. align-items: center;
  198. justify-content: center;
  199. position: absolute;
  200. left: 0rpx;
  201. bottom: 14rpx;
  202. z-index: 4;
  203. .dian {
  204. width: 12rpx;
  205. height: 12rpx;
  206. background: #1989FA;
  207. border-radius: 50%;
  208. &.active {
  209. width: 32rpx;
  210. height: 32rpx;
  211. background: rgba(25,137,250,0.11);
  212. position: relative;
  213. &::before {
  214. content: '' ;
  215. width: 18rpx;
  216. height: 18rpx;
  217. position: absolute;
  218. border-radius: 50%;
  219. top: 50%;
  220. left: 50%;
  221. background: #1989FA;
  222. transform: translate(-50%, -50%);
  223. }
  224. }
  225. }
  226. }
  227. .line {
  228. position: absolute;
  229. left: 14rpx;
  230. bottom: 30rpx;
  231. width: 0rpx;
  232. height: 90rpx;
  233. border: 1rpx dashed rgba(25,137,250,0.7);
  234. z-index: 1;
  235. }
  236. .rightCon {
  237. flex: 1;
  238. padding: 0 0 0 54rpx;
  239. .day {
  240. font-size: 20rpx;
  241. color: $themC;
  242. margin: 12rpx 0 0rpx 0;
  243. }
  244. .flex-b {
  245. .flex {
  246. .text {
  247. font-size: 28rpx;
  248. color: #333;
  249. font-weight: 600;
  250. }
  251. .tag {
  252. margin-left: 10rpx;
  253. width: 110rpx;
  254. height: 44rpx;
  255. background: #FAF0E4;
  256. border-radius: 8rpx;
  257. font-size: 20rpx;
  258. color: #FA7919;
  259. line-height: 44rpx;
  260. text-align: center;
  261. }
  262. }
  263. .progBtn {
  264. width: 130rpx;
  265. height: 60rpx;
  266. background: rgba(25,137,250,0.1);
  267. border-radius: 8rpx;
  268. border: 2rpx solid #1989FA;
  269. font-size: 28rpx;
  270. color: $themC;
  271. line-height: 60rpx;
  272. text-align: center;
  273. }
  274. }
  275. }
  276. }
  277. }
  278. .ul {
  279. padding: 38rpx 0;
  280. display: flex;
  281. flex-wrap: wrap;
  282. width: 100%;
  283. .li {
  284. width: 25%;
  285. display: flex;
  286. flex-direction: column;
  287. align-items: center;
  288. margin: 24rpx 0;
  289. .icon {
  290. width: 68rpx;
  291. height: 68rpx;
  292. }
  293. .text {
  294. font-size: 28rpx;
  295. margin-top: 16rpx;
  296. color: #333;
  297. }
  298. }
  299. }
  300. .business {
  301. padding: 32rpx 0;
  302. .h1 {
  303. margin-bottom: 24rpx;
  304. }
  305. .card {
  306. width: 100%;
  307. height: 390rpx;
  308. background: #FFFFFF;
  309. border-radius: 16rpx;
  310. display: flex;
  311. flex-wrap: wrap;
  312. padding: 38rpx 0 0 0;
  313. .item {
  314. width: 33.33%;
  315. display: flex;
  316. flex-direction: column;
  317. align-items: center;
  318. height: 162rpx;
  319. .icon {
  320. width: 72rpx;
  321. height: 72rpx;
  322. background: #F6F7F8;
  323. border-radius: 50%;
  324. display: flex;
  325. align-items: center;
  326. justify-content: center;
  327. image {
  328. width: 48rpx;
  329. height: 48rpx;
  330. }
  331. }
  332. .text {
  333. margin-top: 16rpx;
  334. font-size: 28rpx;
  335. color: #333;
  336. }
  337. }
  338. }
  339. }
  340. }
  341. </style>