工行这里学车报名流程h5
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.

286 lines
6.3 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view class="content">
  3. <u-navbar title="优享驾培" :custom-back="goApp"></u-navbar>
  4. <view class="content">
  5. <view class="topCon">
  6. <view class="tag" @click="$goPage('/pages/payRecords/payRecords')">
  7. <image src="@/static/images/home_img_pay@2x.png" mode=""></image>
  8. </view>
  9. <view class="cardBox">
  10. <view class="card">
  11. <view class="h1">
  12. <view class="h1Icon">
  13. <image src="@/static/images/home_icon_btzuo@3x.png" mode=""></image>
  14. </view>
  15. <view class="txt">专属服务与优惠</view>
  16. <view class="h1Icon">
  17. <image src="@/static/images/home_icon_btyou@3x.png" mode=""></image>
  18. </view>
  19. </view>
  20. <view class="item_Box">
  21. <view class="h2">优质的服务</view>
  22. <view class="text">1.专属优享驾培服务团队优秀教练员施教</view>
  23. <view class="text">2.提供一人一方案培训教学考试服务</view>
  24. </view>
  25. <view class="item_Box">
  26. <view class="h2">优惠的价格</view>
  27. <view class="text">1.为工会会员提供9.5折专享优惠价格</view>
  28. <view class="text">2.工会会员可为家庭成员代报名同享9.5</view>
  29. </view>
  30. </view>
  31. </view>
  32. </view>
  33. <view class="listCon">
  34. <view class="h1">
  35. <view class="h1Icon">
  36. <image src="@/static/images/home_icon_btzuo@3x.png" mode=""></image>
  37. </view>
  38. <view class="txt">优质驾校</view>
  39. <view class="h1Icon">
  40. <image src="@/static/images/home_icon_btyou@3x.png" mode=""></image>
  41. </view>
  42. </view>
  43. <view class="area">
  44. <view class="areaLab">选择区/</view>
  45. <view class="areaChoose" @click="show=true">
  46. <view class="txt">{{ regionName }}</view>
  47. <view class="iconImg">
  48. <image src="@/static/images/home_icon_xiahei@3x.png" mode=""></image>
  49. </view>
  50. </view>
  51. </view>
  52. <list :listData="listData" />
  53. <view class="" style="padding: 40rpx 0 0 0; ">
  54. <u-loadmore :status="status" icon-type="circle" />
  55. </view>
  56. </view>
  57. </view>
  58. <u-picker mode="selector" v-model="show" :range="region" @confirm="confirmRegion"
  59. range-key="regionName"></u-picker>
  60. </view>
  61. </template>
  62. <script>
  63. import list from './comp/list.vue'
  64. import indexApi from '@/api/index.js'
  65. export default {
  66. components: {
  67. list
  68. },
  69. data() {
  70. return {
  71. status: 'loadmore',
  72. queryParams: {
  73. pageIndex: 1,
  74. pageSize: 30,
  75. lat: 30.27419537786047,
  76. trainingScope: '',
  77. lng: 120.20633397715788,
  78. schoolName: ''
  79. },
  80. show: false,
  81. listData: [],
  82. region: [],
  83. regionName: '杭州市'
  84. }
  85. },
  86. onLoad() {
  87. this.listInit()
  88. this.queryRegionByParentCodeFn()
  89. const latLng = this.$u.utils.getLocation()
  90. this.queryParams.lat = latLng.lat
  91. this.queryParams.lng = latLng.lng
  92. this.$u.utils.appPostMessage("encryption_user_msg_type");
  93. //Android和iOS获取⽤户信息回调
  94. window.arouseNativeMsg = function(data) {
  95. if(data) {
  96. }
  97. }
  98. },
  99. onReachBottom() {
  100. if (this.status == 'nomore') return
  101. this.queryTrainingSchoolListFromAppFn()
  102. },
  103. onPullDownRefresh() {
  104. this.listInit()
  105. setTimeout(() => {
  106. uni.stopPullDownRefresh()
  107. }, 1500)
  108. },
  109. methods: {
  110. goApp() {
  111. this.$u.utils.appPostMessage("backToApp");
  112. },
  113. listInit() {
  114. this.status == 'loadmore'
  115. this.queryParams.pageIndex = 1
  116. this.listData = []
  117. this.queryTrainingSchoolListFromAppFn()
  118. },
  119. // 选择区域
  120. confirmRegion(i) {
  121. let index = i[0]
  122. let item = this.region[index]
  123. this.queryParams.district = item.regionCode
  124. this.regionName = item.regionName
  125. this.listInit()
  126. },
  127. // 获取区域数据
  128. async queryRegionByParentCodeFn() {
  129. const [nulls, res] = await indexApi.queryRegionByParentCode()
  130. this.region = res.data
  131. },
  132. // 列表
  133. async queryTrainingSchoolListFromAppFn() {
  134. let obj = {}
  135. for (let key in this.queryParams) {
  136. if (this.queryParams[key]) {
  137. obj[key] = this.queryParams[key]
  138. }
  139. }
  140. const [nulls, res] = await indexApi.queryTrainingSchoolListFromApp(obj)
  141. this.queryParams.pageIndex++
  142. this.listData.push(...res.data)
  143. console.log('驾校列表')
  144. console.log(res.data)
  145. if (res.data.length < this.queryParams.pageSize) this.status = 'nomore'
  146. },
  147. }
  148. }
  149. </script>
  150. <style lang="scss" scoped>
  151. .h1 {
  152. display: flex;
  153. justify-content: center;
  154. height: 96rpx;
  155. align-items: center;
  156. .h1Icon {
  157. width: 36rpx;
  158. height: 20rpx;
  159. }
  160. .txt {
  161. font-size: 32rpx;
  162. color: #333;
  163. padding: 0 12rpx;
  164. }
  165. }
  166. .topCon {
  167. width: 100%;
  168. height: 792rpx;
  169. padding: 0 32rpx;
  170. background: url('../../static/images/home_bg_dingbu@3x.png') no-repeat;
  171. background-size: 100% 100%;
  172. position: relative;
  173. .tag {
  174. position: absolute;
  175. right: 0;
  176. top: 96rpx;
  177. width: 40rpx;
  178. height: 146rpx;
  179. }
  180. .cardBox {
  181. position: absolute;
  182. bottom: 0;
  183. left: 0rpx;
  184. width: 100%;
  185. height: 504rpx;
  186. padding: 0 32rpx;
  187. .card {
  188. background: #FFFFFF;
  189. border-radius: 16rpx;
  190. padding: 0 24rpx 24rpx 24rpx;
  191. .item_Box {
  192. width: 100%;
  193. height: 180rpx;
  194. background: #F2F9FF;
  195. border-radius: 16rpx;
  196. padding: 24rpx 0 0 0;
  197. color: #333;
  198. margin-bottom: 16rpx;
  199. .h2 {
  200. font-size: 32rpx;
  201. position: relative;
  202. padding: 0 0 8rpx 26rpx;
  203. font-weight: 600;
  204. &::before {
  205. position: absolute;
  206. content: '';
  207. left: 0;
  208. top: 8rpx;
  209. width: 6rpx;
  210. height: 28rpx;
  211. background: #1989FA;
  212. border-radius: 0px 6rpx 6rpx 0px;
  213. }
  214. }
  215. .text {
  216. font-size: 28rpx;
  217. padding: 2rpx 26rpx;
  218. }
  219. }
  220. }
  221. }
  222. }
  223. .listCon {
  224. width: 100%;
  225. background: #FFFFFF;
  226. border-radius: 32rpx 32rpx 0px 0px;
  227. padding: 0 32rpx 32rpx 32rpx;
  228. margin-top: 32rpx;
  229. .area {
  230. display: flex;
  231. align-items: center;
  232. font-size: 28rpx;
  233. color: #686B73;
  234. margin-bottom: 40rpx;
  235. .areaLab {
  236. font-size: 28rpx;
  237. color: #686B73;
  238. margin-right: 16rpx;
  239. }
  240. .areaChoose {
  241. height: 56rpx;
  242. background: #F6F7F8;
  243. border-radius: 8rpx;
  244. padding: 8rpx 16rpx;
  245. display: flex;
  246. align-items: center;
  247. .txt {
  248. font-size: 28rpx;
  249. color: #686B73;
  250. }
  251. .iconImg {
  252. width: 24rpx;
  253. height: 24rpx;
  254. margin-left: 8rpx;
  255. }
  256. }
  257. }
  258. }
  259. </style>