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

633 lines
17 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
11 months ago
1 year ago
11 months ago
1 year ago
12 months ago
11 months ago
1 year ago
11 months ago
11 months ago
11 months ago
1 year ago
1 year ago
11 months ago
12 months ago
11 months ago
1 year ago
11 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. businessType: '',//业务类型
  295. certificateCodeShow: '原驾驶证号xxx',
  296. driveLicence: '',//原驾驶证号 给后端的
  297. firstDriveDate: '',//原驾驶证初领日期
  298. sex: 2,
  299. phone: '18267103167',
  300. applyType: 1,
  301. name: '',
  302. oldTrainType: '',//原准驾车型
  303. subjectPass: '',
  304. subjectTreat: '',
  305. photoPath: '123.png',
  306. address: '',
  307. totalAmount: 0,
  308. radiovalue2: 2, //是否异地
  309. businessType: 0,
  310. },
  311. showSchool: false,
  312. radiolist1: [ {name: '初领', id: 0}, {name: '增驾', id: 1}],//0:初领,1:增驾,
  313. radiolist2: [ {name: '是', id: 1}, {name: '否', id: 2}],
  314. radiolist3: [ {name: '全款', id: 1}, {name: '预付款', id: 2}],
  315. cityArr: [],
  316. cityArr2: [],
  317. cityArr3: []
  318. }
  319. },
  320. onLoad() {
  321. // this.GetDetectInfoEnhancedFn()
  322. this.form.userId = this.userId
  323. this.form.accountId = this.vuex_userInfo.accountId
  324. this.form.address = this.vuex_userInfo.address
  325. this.form.name = this.vuex_userInfo.name
  326. this.form.idcard = this.vuex_userInfo.idcard
  327. uni.$on('upDateCoachItem',(item)=>{
  328. console.log(item)
  329. this.form.coach = item.name
  330. this.form.coachId = item.id
  331. })
  332. this.areaTreeFn()
  333. let schoolClass = this.$store.state.school.schoolClass
  334. console.log(schoolClass)
  335. if(schoolClass.id) {
  336. this.form.classModel = schoolClass.name
  337. this.form.school = schoolClass.schoolName
  338. this.form.schoolId = schoolClass.schoolId
  339. this.form.car = schoolClass.carType
  340. }
  341. let schoolCoach = this.$store.state.school.schoolCoach
  342. console.log(schoolCoach)
  343. if(schoolCoach.id) {
  344. this.form.classModel = schoolCoach.name
  345. this.form.school = schoolCoach.schoolName
  346. this.form.schoolId = schoolCoach.schoolId
  347. // this.form.car = schoolClass.carType
  348. }
  349. if(this.form.schoolId) {
  350. this.schoolClassFn()
  351. }
  352. },
  353. methods: {
  354. async schoolClassFn() {
  355. const {data: res} = await schoolClass({pageNo: 1,pageSize: 100, schoolId: this.form.schoolId})
  356. this.columnsClassModel = [res.list]
  357. console.log(this.columnsClassModel)
  358. },
  359. cityShowFn() {
  360. this.showCity = true
  361. this.$nextTick(()=>{
  362. let picker = this.$refs.uPicker
  363. picker.setColumnValues(1, this.cityArr2[0])
  364. picker.setColumnValues(2, this.cityArr3[0][0])
  365. })
  366. // picker = this.$refs.uPicker
  367. },
  368. changeHandler(e) {
  369. const {
  370. indexs,
  371. columnIndex,
  372. value,
  373. values, // values为当前变化列的数组内容
  374. index,
  375. // 微信小程序无法将picker实例传出来,只能通过ref操作
  376. picker = this.$refs.uPicker
  377. } = e
  378. // 当第一列值发生变化时,变化第二列(后一列)对应的选项
  379. if (columnIndex === 0) {
  380. // picker为选择器this实例,变化第二列对应的选项
  381. picker.setColumnValues(1, this.cityArr2[index])
  382. picker.setColumnValues(2, this.cityArr3[index][0])
  383. }
  384. if (columnIndex === 1) {
  385. let index3 = indexs[0]
  386. // picker为选择器this实例,变化第二列对应的选项
  387. picker.setColumnValues(2, (this.cityArr3[index3])[index])
  388. }
  389. console.log(indexs[0])
  390. // console.log(this.cityArr3[index3])
  391. // console.log(value)
  392. // console.log(values)
  393. // console.log(columnIndex)
  394. },
  395. // 回调参数为包含columnIndex、value、values
  396. confirmCity(e) {
  397. console.log('confirm', e)
  398. this.showCity = false
  399. },
  400. // 获取地区
  401. async areaTreeFn() {
  402. // this.cityArr2.push(this.traverse(item.children))
  403. const {data: res} = await areaTree()
  404. this.cityArr = res.map(item=>{
  405. let obj = {
  406. id: item.id,
  407. name: item.name
  408. }
  409. return obj
  410. })
  411. this.cityArr2 = res.map(item2=>{
  412. let arr2 = item2.children
  413. return arr2.map(val=>{
  414. let obj = {
  415. id: val.id,
  416. name: val.name
  417. }
  418. return obj
  419. })
  420. })
  421. this.cityArr3 = res.map(item2=>{
  422. let arr2 = item2.children
  423. return arr2.map(val=>{
  424. return val.children.map(val3=>{
  425. let obj = {
  426. id: val3.id,
  427. name: val3.name
  428. }
  429. return obj
  430. })
  431. })
  432. })
  433. // for(let i=0; i<res.length; i++) {
  434. // let obj = {
  435. // id: res[i].id,
  436. // name: res[i].name
  437. // }
  438. // this.cityArr.push(obj)
  439. // console.log(this.cityArr)
  440. // console.log(this.cityArr2)
  441. console.log(this.cityArr3)
  442. // this.showCity = res
  443. },
  444. traverse(arr, result=[]) {
  445. for (var i = 0; i < arr.length; i++) {
  446. let item = arr[i]
  447. let obj = {
  448. id: item.id,
  449. name: item.name
  450. }
  451. result.push(obj)
  452. if(item.children.length) {
  453. this.traverse(item.children, result)
  454. }
  455. }
  456. return result;
  457. },
  458. // 选择驾校
  459. chooseSchool(item) {
  460. this.form.school = item.name
  461. this.form.schoolId = item.id
  462. this.columnsCar = [item.businessScope.split(',')]
  463. console.log('驾校id')
  464. console.log(item.id)
  465. this.showSchool = false
  466. this.schoolClassFn()
  467. },
  468. // 选择班型
  469. confirmClassModel(val) {
  470. let item = val.value[0]
  471. console.log(item)
  472. this.showClassModel = false
  473. this.form.classModel = item.name
  474. this.form.schoolClassId = item.id
  475. this.form.totalAmount = item.totalAmount
  476. },
  477. // 选择车型
  478. confirmCar(val) {
  479. let item = val.value[0]
  480. console.log(item)
  481. this.showCar = false
  482. this.form.car = item
  483. this.form.trainType = item
  484. },
  485. showCarClick() {
  486. if(!this.form.school) return this.$u.toast('请先选择驾校')
  487. this.showCar = true
  488. },
  489. // 跳转到选择教练
  490. goCoach() {
  491. if(!this.form.schoolId) return this.$u.toast('请先选择驾校')
  492. this.$goPage('/pages/indexEntry/enroll/registInfo/chooseCoach/chooseCoach?schoolId=' + this.form.schoolId)
  493. },
  494. // 选择原驾驶证初领日期
  495. confirmFirstLicenceTime(val) {
  496. console.log(val)
  497. this.form.firstDriveDate = uni.$u.timeFormat(val.value, 'yyyy-mm-dd');
  498. this.showFirstLicenceTime = false
  499. },
  500. // 选择原准驾车型
  501. pickerOldDrive(val) {
  502. this.form.oldTrainType = val
  503. this.showOldDriveModel = false
  504. console.log(val)
  505. },
  506. // 选择已过科目
  507. confirmSubjectPass(val) {
  508. let item = val.value[0]
  509. this.form.finishSubject = item.label
  510. this.showSubjectPass = false
  511. },
  512. // 选择已过科目
  513. confirmTreat(val) {
  514. let item = val.value[0]
  515. this.form.subjectTreat = item.label
  516. this.showSubjectTreat = false
  517. },
  518. // 扫码
  519. scanCodeFn() {
  520. let _this = this
  521. uni.scanCode({
  522. success: function(res) {
  523. console.log('条码类型:' + res.scanType);
  524. console.log('条码内容:' + res.result);
  525. }
  526. });
  527. },
  528. changeVal(val) {
  529. console.log(val)
  530. },
  531. // 点击确认
  532. confirmClick() {
  533. this.showPopup = true
  534. },
  535. async comfigClick(val) {
  536. console.log(val)
  537. this.showPopup = false
  538. const {data: res} = await applyOnline(this.form)
  539. await this.$store.dispatch('getUserInfo')
  540. if(val) {
  541. this.$goPage('/pages/indexEntry/enroll/signContract/signContract?schoolId='+this.form.schoolId)
  542. }
  543. }
  544. }
  545. }
  546. </script>
  547. <style lang="scss" scoped>
  548. .pad {
  549. padding-bottom: 66rpx;
  550. }
  551. .card {
  552. padding: 10rpx 40rpx 10rpx 32rpx;
  553. margin-bottom: 20rpx;
  554. .row {
  555. height: 100rpx;
  556. display: flex;
  557. align-items: center;
  558. width: 100%;
  559. .lab {
  560. width: 152rpx;
  561. line-height: 100rpx;
  562. white-space: nowrap;
  563. &.long {
  564. width: 230rpx;
  565. }
  566. }
  567. .scan {
  568. margin-left: auto;
  569. width: 130rpx;
  570. height: 60rpx;
  571. background: rgba(25,137,250,0.1);
  572. border-radius: 8rpx;
  573. border: 2rpx solid #1989FA;
  574. background: #E8F3FE;
  575. text-align: center;
  576. line-height: 60rpx;
  577. color: $themC;
  578. }
  579. .rightCon {
  580. flex: 1;
  581. width: 0;
  582. display: flex;
  583. .val {
  584. flex: 1;
  585. width: 0;
  586. input {
  587. font-size: 28rpx;
  588. }
  589. &.blue {
  590. color: $themC;
  591. }
  592. &.red {
  593. color: #FF6A2A;
  594. }
  595. }
  596. .icon {
  597. width: 30rpx;
  598. height: 30rpx;
  599. u-icon {
  600. }
  601. }
  602. }
  603. }
  604. }
  605. .btnBg {
  606. width: 396rpx;
  607. margin: 100rpx auto 0 auto;
  608. }
  609. </style>