洛阳学员端
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.

368 lines
8.7 KiB

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