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

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