学员端小程序
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.

657 lines
18 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 year 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
11 months ago
1 year ago
1 year ago
1 year ago
1 year ago
11 months ago
12 months 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
1 year ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year ago
11 months ago
1 year ago
12 months ago
1 year ago
11 months ago
1 year ago
1 year ago
12 months ago
1 year ago
11 months ago
1 year ago
1 year ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1 year ago
11 months ago
1 year ago
12 months ago
11 months ago
1 year ago
9 months ago
1 year ago
1 year ago
11 months ago
12 months ago
11 months ago
9 months ago
1 year ago
9 months ago
9 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
11 months ago
12 months ago
1 year ago
11 months ago
11 months ago
11 months 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
11 months ago
1 year ago
11 months ago
11 months ago
1 year ago
11 months ago
1 year ago
1 year ago
  1. <template>
  2. <view class="pageBgImg">
  3. <topNavbar title="报名信息确认"></topNavbar>
  4. <view class="pad">
  5. <!-- #ifndef H5 -->
  6. <view class="card">
  7. <view class="row">
  8. <view class="lab">扫描教练二维码</view>
  9. <view class="rightCon">
  10. <view class="scan" @click="scanCodeFn">扫一扫</view>
  11. </view>
  12. </view>
  13. </view>
  14. <!-- #endif -->
  15. <view class="card">
  16. <view class="row" >
  17. <view class="lab">选择驾校</view>
  18. <view class="rightCon">
  19. <view class="row" @click="showSchool=true">
  20. <view class="val">
  21. <mySelect :value="form.school"/>
  22. </view>
  23. <view class="arrow">
  24. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  25. </view>
  26. </view>
  27. </view>
  28. </view>
  29. <view class="row">
  30. <view class="lab">选择车型</view>
  31. <view class="rightCon">
  32. <view class="row" @click="showCarClick">
  33. <view class="val">
  34. <mySelect :value="form.car"/>
  35. </view>
  36. <view class="arrow">
  37. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  38. </view>
  39. </view>
  40. </view>
  41. </view>
  42. <view class="row">
  43. <view class="lab">选择班型</view>
  44. <view class="rightCon">
  45. <view class="row" @click="showClassModel=true">
  46. <view class="val">
  47. <mySelect :value="form.classModel"/>
  48. </view>
  49. <view class="arrow">
  50. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  51. </view>
  52. </view>
  53. </view>
  54. </view>
  55. <view class="row">
  56. <view class="lab">选择教练</view>
  57. <view class="rightCon" @click="goCoach">
  58. <view class="row" >
  59. <view class="val">
  60. <mySelect :value="form.coach"/>
  61. </view>
  62. <view class="arrow">
  63. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  64. </view>
  65. </view>
  66. </view>
  67. </view>
  68. </view>
  69. <view class="card">
  70. <view class="row">
  71. <view class="lab">业务类型</view>
  72. <view class="rightCon">
  73. <u-radio-group
  74. v-model="form.businessType"
  75. >
  76. <u-radio
  77. :customStyle="{marginRight: '24rpx'}"
  78. v-for="(item, index) in radiolist1"
  79. :key="index"
  80. :label="item.name"
  81. :name="item.id"
  82. >
  83. </u-radio>
  84. </u-radio-group>
  85. </view>
  86. </view>
  87. </view>
  88. <view class="card" v-if="form.businessType==1">
  89. <view class="row">
  90. <view class="lab long">原驾驶证号</view>
  91. <view class="rightCon">
  92. <view class="row">
  93. <view class="val">{{ form.certificateCodeShow }}</view>
  94. </view>
  95. </view>
  96. </view>
  97. <view class="row">
  98. <view class="lab long">驾驶证初领日期</view>
  99. <view class="rightCon">
  100. <view class="row" @click="showFirstLicenceTime=true" >
  101. <view class="val">
  102. <mySelect :value="form.firstDriveDate"/>
  103. </view>
  104. <view class="arrow">
  105. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  106. </view>
  107. </view>
  108. </view>
  109. </view>
  110. <view class="row">
  111. <view class="lab long">原准驾车型</view>
  112. <view class="rightCon">
  113. <view class="row" @click="showOldDriveModel=true" >
  114. <view class="val">
  115. <mySelect :value="form.oldDriveModel"/>
  116. </view>
  117. <view class="arrow">
  118. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  119. </view>
  120. </view>
  121. </view>
  122. </view>
  123. </view>
  124. <view class="card">
  125. <view class="row">
  126. <view class="lab">是否异地转入</view>
  127. <view class="rightCon" style="margin-left: 40rpx;">
  128. <u-radio-group
  129. v-model="form.radiovalue2"
  130. @change="changeVal"
  131. >
  132. <u-radio
  133. :customStyle="{marginRight: '24rpx'}"
  134. v-for="(item, index) in radiolist2"
  135. :key="item.id"
  136. :label="item.name"
  137. :name="item.id"
  138. >
  139. </u-radio>
  140. </u-radio-group>
  141. </view>
  142. </view>
  143. </view>
  144. <view class="card" v-if="form.radiovalue2==1">
  145. <view class="row" @click="cityShowFn">
  146. <view class="lab">来源城市</view>
  147. <view class="rightCon">
  148. <view class="row">
  149. <view class="val">
  150. <mySelect :value="form.classModel"/>
  151. </view>
  152. <view class="arrow">
  153. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  154. </view>
  155. </view>
  156. </view>
  157. </view>
  158. <view class="row">
  159. <view class="lab ">已过科目</view>
  160. <view class="rightCon">
  161. <view class="row" @click="showSubjectPass=true">
  162. <view class="val">
  163. <mySelect :value="form.finishSubject"/>
  164. </view>
  165. <view class="arrow">
  166. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  167. </view>
  168. </view>
  169. </view>
  170. </view>
  171. <view class="row">
  172. <view class="lab">待学科目</view>
  173. <view class="rightCon">
  174. <view class="row" @click="showSubjectTreat=true">
  175. <view class="val">
  176. <mySelect :value="form.subjectTreat"/>
  177. </view>
  178. <view class="arrow">
  179. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  180. </view>
  181. </view>
  182. </view>
  183. </view>
  184. </view>
  185. <view class="card">
  186. <view class="row">
  187. <view class="lab">学费</view>
  188. <view class="rightCon">
  189. <view class="row">
  190. <view class="val">{{ $u.utils.priceTo(form.totalAmount) }}</view>
  191. </view>
  192. </view>
  193. </view>
  194. </view>
  195. <view class="card">
  196. <view class="row">
  197. <view class="lab">支付形式</view>
  198. <view class="rightCon">
  199. <u-radio-group
  200. v-model="form.radiovalue3"
  201. >
  202. <u-radio
  203. :customStyle="{marginRight: '24rpx'}"
  204. v-for="(item, index) in radiolist3"
  205. :key="index"
  206. :label="item.name"
  207. :name="item.name"
  208. >
  209. </u-radio>
  210. </u-radio-group>
  211. </view>
  212. </view>
  213. </view>
  214. <view class="card">
  215. <view class="row">
  216. <view class="lab">优惠券</view>
  217. <view class="rightCon">
  218. <view class="row">
  219. <view class="val red">-1000</view>
  220. </view>
  221. </view>
  222. </view>
  223. </view>
  224. <view class="card">
  225. <view class="row">
  226. <view class="lab">待支付金额</view>
  227. <view class="rightCon">
  228. <view class="row">
  229. <view class="val blue">100</view>
  230. </view>
  231. </view>
  232. </view>
  233. </view>
  234. <view class="btnBg" @click="confirmClick">确认</view>
  235. </view>
  236. <u-popup :show="showPopup" mode="center" :round="8" >
  237. <comfigPopup @comfigClick="comfigClick" :info="form"/>
  238. </u-popup>
  239. <u-popup :show="showSchool" mode="bottom" :round="8" @close="showSchool=false">
  240. <searchSchool @chooseSchool="chooseSchool"/>
  241. </u-popup>
  242. <!-- 选择班型 -->
  243. <u-picker :show="showClassModel" :columns="columnsClassModel" keyName="name" @confirm="confirmClassModel" @cancel="showClassModel=false"></u-picker>
  244. <!-- 选择车型 -->
  245. <u-picker :show="showCar" :columns="columnsCar" keyName="label" @confirm="confirmCar" :closeOnClickOverlay="true" @cancel="showCar=false"></u-picker>
  246. <!-- 原驾驶证初领日期 -->
  247. <u-datetime-picker :show="showFirstLicenceTime" mode="date" @confirm="confirmFirstLicenceTime"></u-datetime-picker>
  248. <!-- 原驾驶证学驾车型 -->
  249. <u-popup :show="showOldDriveModel" mode="bottom" :round="8" @close="showOldDriveModel=false">
  250. <oldDrive @pickerOldDrive="pickerOldDrive"/>
  251. </u-popup>
  252. <!-- 已过科目 -->
  253. <u-picker :show="showSubjectPass" :columns="columnsSubject" keyName="label" @confirm="confirmSubjectPass" @cancel="showSubjectPass=false"></u-picker>
  254. <!-- 待学科目 -->
  255. <u-picker :show="showSubjectTreat" :columns="columnsSubject" keyName="label" @confirm="confirmTreat" @cancel="showSubjectTreat=false"></u-picker>
  256. <!-- 城市 -->
  257. <u-picker :show="showCity" ref="uPicker" :columns="[cityArr]" @confirm="confirmCity" @change="changeHandler" keyName="name"></u-picker>
  258. </view>
  259. </template>
  260. <script>
  261. import comfigPopup from './comp/comfigPopup'
  262. import searchSchool from './comp/searchSchool'
  263. import oldDrive from './comp/oldDrive'
  264. import { areaTree, applyOnline, schoolClass, } from '@/config/api.js'
  265. export default {
  266. components: { comfigPopup, searchSchool, oldDrive },
  267. data() {
  268. return {
  269. showCity: false,
  270. showPopup: false,
  271. showClassModel: false,
  272. showCar: false,
  273. showFirstLicenceTime: false,
  274. showOldDriveModel: false,
  275. showSubjectPass: false,
  276. showSubjectTreat: false,
  277. columnsClassModel: [],//班型
  278. columnsSubject: [
  279. [
  280. {label: '科目一', id: 1},
  281. {label: '科目二', id: 2},
  282. {label: '科目三', id: 3},
  283. ]
  284. ],
  285. columnsCar: [],
  286. form: {
  287. school: '',
  288. classModel: '',
  289. car: '',
  290. coach: '',
  291. cardType: 1,
  292. idcard: '',
  293. nationality: '中国',
  294. certificateCodeShow: '原驾驶证号xxx',
  295. driveLicence: '',//原驾驶证号 给后端的
  296. firstDriveDate: '',//原驾驶证初领日期
  297. sex: 2,
  298. phone: '',
  299. applyType: 1,
  300. name: '',
  301. oldTrainType: '',//原准驾车型
  302. subjectPass: '',
  303. subjectTreat: '',
  304. photoPath: '123.png',
  305. address: '',
  306. totalAmount: 0,
  307. radiovalue2: 2, //是否异地
  308. businessType: 0,
  309. },
  310. showSchool: false,
  311. radiolist1: [ {name: '初领', id: 0}, {name: '增驾', id: 1}],//0:初领,1:增驾,
  312. radiolist2: [ {name: '是', id: 1}, {name: '否', id: 2}],
  313. radiolist3: [ {name: '全款', id: 1}, {name: '预付款', id: 2}],
  314. cityArr: [],
  315. cityArr2: [],
  316. cityArr3: []
  317. }
  318. },
  319. onLoad(options) {
  320. if(options.realNameNo) {
  321. this.realNameNo = options.realNameNo
  322. }
  323. this.initUserInfo()
  324. uni.$on('upDateCoachItem',(item)=>{
  325. console.log(item)
  326. this.form.coach = item.name
  327. this.form.coachId = item.id
  328. })
  329. this.areaTreeFn()
  330. let schoolClass = this.$store.state.school.schoolClass
  331. console.log(schoolClass)
  332. if(schoolClass.id) {
  333. this.form.classModel = schoolClass.name
  334. this.form.school = schoolClass.schoolName
  335. this.form.schoolId = schoolClass.schoolId
  336. this.form.car = schoolClass.carType
  337. }
  338. let schoolCoach = this.$store.state.school.schoolCoach
  339. console.log('schoolCoach')
  340. console.log(schoolCoach)
  341. if(schoolCoach.id) {
  342. this.form.coach = schoolCoach.name
  343. this.form.coachId = schoolCoach.id
  344. this.form.school = schoolCoach.schoolName
  345. this.form.schoolId = schoolCoach.schoolId
  346. // this.form.car = schoolClass.carType
  347. }
  348. if(this.form.schoolId) {
  349. this.schoolClassFn()
  350. }
  351. },
  352. onPullDownRefresh() {
  353. this.initUserInfo()
  354. },
  355. methods: {
  356. async initUserInfo() {
  357. // 如果不是实名
  358. if(!this.realNameNo) {
  359. await this.$store.dispatch('getUserInfo')
  360. }
  361. this.form.userId = this.userId
  362. this.form.accountId = this.vuex_userInfo.accountId
  363. this.form.address = this.vuex_userInfo.address
  364. this.form.name = this.vuex_userInfo.name
  365. this.form.idcard = this.vuex_userInfo.idcard
  366. this.form.phone = this.vuex_userInfo.phone
  367. this.form.nationality = this.vuex_userInfo.nationality || '中国'
  368. this.form.cardType = this.vuex_userInfo.cardType || '1'
  369. },
  370. async schoolClassFn() {
  371. const {data: res} = await schoolClass({pageNo: 1,pageSize: 100, schoolId: this.form.schoolId})
  372. this.columnsClassModel = [res.list]
  373. console.log(this.columnsClassModel)
  374. },
  375. cityShowFn() {
  376. this.showCity = true
  377. this.$nextTick(()=>{
  378. let picker = this.$refs.uPicker
  379. picker.setColumnValues(1, this.cityArr2[0])
  380. picker.setColumnValues(2, this.cityArr3[0][0])
  381. })
  382. // picker = this.$refs.uPicker
  383. },
  384. changeHandler(e) {
  385. const {
  386. indexs,
  387. columnIndex,
  388. value,
  389. values, // values为当前变化列的数组内容
  390. index,
  391. // 微信小程序无法将picker实例传出来,只能通过ref操作
  392. picker = this.$refs.uPicker
  393. } = e
  394. // 当第一列值发生变化时,变化第二列(后一列)对应的选项
  395. if (columnIndex === 0) {
  396. // picker为选择器this实例,变化第二列对应的选项
  397. picker.setColumnValues(1, this.cityArr2[index])
  398. picker.setColumnValues(2, this.cityArr3[index][0])
  399. }
  400. if (columnIndex === 1) {
  401. let index3 = indexs[0]
  402. // picker为选择器this实例,变化第二列对应的选项
  403. picker.setColumnValues(2, (this.cityArr3[index3])[index])
  404. }
  405. console.log(indexs[0])
  406. // console.log(this.cityArr3[index3])
  407. // console.log(value)
  408. // console.log(values)
  409. // console.log(columnIndex)
  410. },
  411. // 回调参数为包含columnIndex、value、values
  412. confirmCity(e) {
  413. console.log('confirm', e)
  414. this.showCity = false
  415. },
  416. // 获取地区
  417. async areaTreeFn() {
  418. // this.cityArr2.push(this.traverse(item.children))
  419. const {data: res} = await areaTree()
  420. this.cityArr = res.map(item=>{
  421. let obj = {
  422. id: item.id,
  423. name: item.name
  424. }
  425. return obj
  426. })
  427. this.cityArr2 = res.map(item2=>{
  428. let arr2 = item2.children
  429. return arr2.map(val=>{
  430. let obj = {
  431. id: val.id,
  432. name: val.name
  433. }
  434. return obj
  435. })
  436. })
  437. this.cityArr3 = res.map(item2=>{
  438. let arr2 = item2.children
  439. return arr2.map(val=>{
  440. return val.children.map(val3=>{
  441. let obj = {
  442. id: val3.id,
  443. name: val3.name
  444. }
  445. return obj
  446. })
  447. })
  448. })
  449. // for(let i=0; i<res.length; i++) {
  450. // let obj = {
  451. // id: res[i].id,
  452. // name: res[i].name
  453. // }
  454. // this.cityArr.push(obj)
  455. // console.log(this.cityArr)
  456. // console.log(this.cityArr2)
  457. console.log(this.cityArr3)
  458. // this.showCity = res
  459. },
  460. traverse(arr, result=[]) {
  461. for (var i = 0; i < arr.length; i++) {
  462. let item = arr[i]
  463. let obj = {
  464. id: item.id,
  465. name: item.name
  466. }
  467. result.push(obj)
  468. if(item.children.length) {
  469. this.traverse(item.children, result)
  470. }
  471. }
  472. return result;
  473. },
  474. // 选择驾校
  475. chooseSchool(item) {
  476. this.form.school = item.name
  477. this.form.schoolId = item.id
  478. this.columnsCar = [item.businessScope.split(',')]
  479. console.log('驾校id')
  480. console.log(item.id)
  481. this.showSchool = false
  482. this.schoolClassFn()
  483. },
  484. // 选择班型
  485. confirmClassModel(val) {
  486. let item = val.value[0]
  487. console.log(item)
  488. this.showClassModel = false
  489. this.form.classModel = item.name
  490. this.form.schoolClassId = item.id
  491. this.form.totalAmount = item.totalAmount
  492. },
  493. // 选择车型
  494. confirmCar(val) {
  495. let item = val.value[0]
  496. console.log(item)
  497. this.showCar = false
  498. this.form.car = item
  499. this.form.trainType = item
  500. },
  501. showCarClick() {
  502. if(!this.form.school) return this.$u.toast('请先选择驾校')
  503. this.showCar = true
  504. },
  505. // 跳转到选择教练
  506. goCoach() {
  507. if(!this.form.schoolId) return this.$u.toast('请先选择驾校')
  508. this.$goPage('/pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach?schoolId=' + this.form.schoolId)
  509. },
  510. // 选择原驾驶证初领日期
  511. confirmFirstLicenceTime(val) {
  512. console.log(val)
  513. this.form.firstDriveDate = uni.$u.timeFormat(val.value, 'yyyy-mm-dd');
  514. this.showFirstLicenceTime = false
  515. },
  516. // 选择原准驾车型
  517. pickerOldDrive(val) {
  518. this.form.oldTrainType = val
  519. this.showOldDriveModel = false
  520. console.log(val)
  521. },
  522. // 选择已过科目
  523. confirmSubjectPass(val) {
  524. let item = val.value[0]
  525. this.form.finishSubject = item.label
  526. this.showSubjectPass = false
  527. },
  528. // 选择已过科目
  529. confirmTreat(val) {
  530. let item = val.value[0]
  531. this.form.subjectTreat = item.label
  532. this.showSubjectTreat = false
  533. },
  534. // 扫码
  535. scanCodeFn() {
  536. let _this = this
  537. uni.scanCode({
  538. success: function(res) {
  539. console.log('条码类型:' + res.scanType);
  540. console.log('条码内容:' + res.result);
  541. let obj = JSON.parse(res.result)
  542. obj.nickname = decodeURIComponent(obj.nickname)
  543. obj.schoolName = decodeURIComponent(obj.schoolName)
  544. _this.form.school = obj.schoolName
  545. _this.form.schoolId = obj.schoolId
  546. _this.form.coach = obj.nickname
  547. _this.form.coachId = obj.id
  548. console.log(obj)
  549. }
  550. });
  551. },
  552. changeVal(val) {
  553. console.log(val)
  554. },
  555. // 点击确认
  556. confirmClick() {
  557. this.showPopup = true
  558. },
  559. async comfigClick(val) {
  560. console.log(val)
  561. this.showPopup = false
  562. const {data: res} = await applyOnline(this.form)
  563. await this.$store.dispatch('getUserInfo')
  564. if(val) {
  565. this.$goPage('/pages/indexEntry/enroll/signContract/signContract?schoolId='+this.form.schoolId)
  566. }
  567. }
  568. }
  569. }
  570. </script>
  571. <style lang="scss" scoped>
  572. .pad {
  573. padding-bottom: 66rpx;
  574. }
  575. .card {
  576. padding: 10rpx 40rpx 10rpx 32rpx;
  577. margin-bottom: 20rpx;
  578. .row {
  579. height: 100rpx;
  580. display: flex;
  581. align-items: center;
  582. width: 100%;
  583. .lab {
  584. width: 152rpx;
  585. line-height: 100rpx;
  586. white-space: nowrap;
  587. &.long {
  588. width: 230rpx;
  589. }
  590. }
  591. .scan {
  592. margin-left: auto;
  593. width: 130rpx;
  594. height: 60rpx;
  595. background: rgba(25,137,250,0.1);
  596. border-radius: 8rpx;
  597. border: 2rpx solid #1989FA;
  598. background: #E8F3FE;
  599. text-align: center;
  600. line-height: 60rpx;
  601. color: $themC;
  602. }
  603. .rightCon {
  604. flex: 1;
  605. width: 0;
  606. display: flex;
  607. .val {
  608. flex: 1;
  609. width: 0;
  610. input {
  611. font-size: 28rpx;
  612. }
  613. &.blue {
  614. color: $themC;
  615. }
  616. &.red {
  617. color: #FF6A2A;
  618. }
  619. }
  620. .icon {
  621. width: 30rpx;
  622. height: 30rpx;
  623. u-icon {
  624. }
  625. }
  626. }
  627. }
  628. }
  629. .btnBg {
  630. width: 396rpx;
  631. margin: 100rpx auto 0 auto;
  632. }
  633. </style>