editDriverCertification.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. <template>
  2. <view class="content">
  3. <view class="top-head"></view>
  4. <view class="container">
  5. <view class="content1 content-other">
  6. <view class="flex row">
  7. <view class="left-text">姓名</view>
  8. <u--input placeholder="输入姓名" inputAlign='left' border="none" v-model="dataDetails.driverName">
  9. </u--input>
  10. </view>
  11. <view class="flex row">
  12. <view class="left-text">性别</view>
  13. <u-radio-group v-model="dataDetails.driverSex" placement="row">
  14. <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in radiolist1" :key="index"
  15. :label="item.name" :name="item.name" @change="radioChange">
  16. </u-radio>
  17. </u-radio-group>
  18. </view>
  19. <view class="flex row row-ch">
  20. <view class="left-text">称呼</view>
  21. <u--input placeholder="输入姓氏" class="ch-style" inputAlign='center' border="none"
  22. v-model="dataDetails.driverCall" maxlength="1">
  23. </u--input>
  24. <view class="flex align-center" v-if="dataDetails.driverSex=='男'">先生</view>
  25. <view class="flex align-center" v-else>女士</view>
  26. </view>
  27. <view class="flex row noborder">
  28. <view class="left-text">联系电话</view>
  29. <u--input placeholder="请输入联系电话" inputAlign='left' border="none" v-model="dataDetails.driverPhone">
  30. </u--input>
  31. </view>
  32. <view class="flex row noborder" v-if="dataDetails.driverPhone!=userInfo.phone">
  33. <view class="left-text">验证码</view>
  34. <u--input v-model="dataDetails.verifyCode" border="none" placeholder="请填写验证码"></u--input>
  35. <view class="yzm">
  36. <u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
  37. <u-button class="yzm-btn" @tap="getCode">{{tips}}</u-button>
  38. </view>
  39. </view>
  40. </view>
  41. <view class="content2 content-other">
  42. <view class="title">上传身份证人像面</view>
  43. <view @click.stop="uploadImg(1,1)" class="picture picture1" v-if="!dataDetails.cardAddressUrl">
  44. <image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
  45. <view class="text">上传身份证人像面</view>
  46. </view>
  47. <view v-if="dataDetails.cardAddressUrl" @click.stop="uploadImg(1,1)"
  48. class="preview-card-img picture">
  49. <image class="" :src="dataDetails.cardAddressUrl" mode="aspectFit" style=""></image>
  50. </view>
  51. <view class="title">上传身份证国徽面</view>
  52. <view @click="uploadImg(2,2)" class="picture picture2" v-if="!dataDetails.cardBackAddressUrl">
  53. <image class="xj-image" src="@/static/images/mine/ic_shanchuan@2x.png"></image>
  54. <view class="text">上传身份证国徽面</view>
  55. </view>
  56. <view v-if="dataDetails.cardBackAddressUrl" @click.stop="uploadImg(2,2)"
  57. class="preview-card-img picture">
  58. <image class="" :src="dataDetails.cardBackAddressUrl" mode="aspectFit" style=""></image>
  59. </view>
  60. <view class="flex row">
  61. <view class="left-text">身份证号</view>
  62. <u--input placeholder="请输入身份证号" inputAlign='left' border="none" v-model="dataDetails.numberCard" maxlength="18">
  63. </u--input>
  64. </view>
  65. <view class="flex row">
  66. <view class="left-text">身份证截止日期</view>
  67. <view class="" @click="selectValidityPeriod">
  68. {{dataDetails.cardValidityDate?dataDetails.cardValidityDate:'选择身份证截止日期>'}}
  69. </view>
  70. </view>
  71. <view class="flex row noborder">
  72. <view class="left-text">身份证地址</view>
  73. <u--input placeholder="请输入身份证地址" inputAlign='left' border="none" v-model="dataDetails.cardAddress" maxlength="18">
  74. </u--input>
  75. </view>
  76. </view>
  77. <u-picker :show="isShowcardValidity" ref="uPicker" :columns="validityPeriod"
  78. @confirm="confirmValidityPeriod" @change="changeHandler" @cancel='isShowcardValidity= false'>
  79. </u-picker>
  80. <u-action-sheet :actions="$helper.imgTypeList" :title="$helper.imgType" :show="isShowimgType"
  81. @select="imgTypeSelect" :closeOnClickOverlay="true" :closeOnClickAction="true"
  82. @close="isShowimgType=false">
  83. </u-action-sheet>
  84. <u-toast ref="uToast"></u-toast>
  85. </view>
  86. <view class="content4">
  87. <view class="next-btn" @click="next()">
  88. 下一步
  89. </view>
  90. </view>
  91. </view>
  92. </template>
  93. <script>
  94. import upload from '@/components/upload.vue';
  95. import permision from "@/js_sdk/wa-permission/permission.js"
  96. import uploadImage from '@/components/ossutil/uploadFile.js';
  97. var _this
  98. import {
  99. mapState
  100. } from 'vuex';
  101. export default {
  102. components: {
  103. upload
  104. },
  105. data() {
  106. return {
  107. canvasSiz: {
  108. width: 188,
  109. height: 273
  110. },
  111. tips: '',
  112. // refCode: null,
  113. seconds: 30,
  114. radiolist1: [{
  115. name: '男',
  116. disabled: false
  117. },
  118. {
  119. name: '女',
  120. disabled: false
  121. },
  122. ],
  123. validityPeriod: [],
  124. isShowcardValidity: false,
  125. uploadType: '',
  126. isShowimgType: false,
  127. dataDetails: {
  128. commonId: '',
  129. driverName: '',
  130. driverSex: '',
  131. driverCall: '',
  132. driverPhone: '',
  133. numberCard: '',
  134. cardAddressUrl: '',
  135. cardBackAddressUrl: '',
  136. cardValidityDate: '',
  137. driverType: '',
  138. driverLicenseHomePage: '',
  139. driverLicenseBackPage: '',
  140. driverLicenseValidityDate: '',
  141. drivingLicenseHomePage: '',
  142. drivingLicenseBackPage: '',
  143. drivingLicenseValidityDate: '',
  144. trailerLicenseHomePage: '',
  145. trailerLicenseBackPage: '',
  146. trailerLicenseValidityDate: '',
  147. qualificationCertificate: '',
  148. qualificationCertificateValidityDate: '',
  149. operationCertificate: '',
  150. operationCertificateValidityDate: '',
  151. trailerOperationCertificate: '',
  152. trailerOperationCertificateValidityDate: '',
  153. },
  154. action: this.$helper.ossUploadUrl,
  155. // maxSize: 50 * 1024 * 1024, //限制文件大小 50M
  156. // isAdd: true,
  157. imagesrc: null
  158. };
  159. },
  160. onLoad() {
  161. _this = this;
  162. console.log(this.userInfo)
  163. this.get_camera_permission()
  164. //获取截止日期List数据
  165. this.validityPeriod = this.$helper.makeValidityPeriod(0)
  166. // this.dataDetails.driverPhone = this.userInfo.phone
  167. this.dataDetails.commonId = this.userInfo.id
  168. //获取认证状态
  169. this.getAuthenticationStatus()
  170. },
  171. computed: {
  172. ...mapState(['hasLogin', 'userInfo']),
  173. },
  174. methods: {
  175. async get_camera_permission() {
  176. var photol=await permision.requestAndroidPermission("android.permission.CAMERA")
  177. if(photol == false){
  178. uni.showModal({
  179. title: '提示',
  180. content: '您已经关闭相册权限,去设置',
  181. success: function (res) {
  182. if (res.confirm) {
  183. permision.gotoAppPermissionSetting()
  184. // plus.runtime.openURL("app-settings:");
  185. } else if (res.cancel) {
  186. console.log('用户点击取消');
  187. }
  188. }
  189. });
  190. }
  191. },
  192. changeHandler(e) {
  193. const {
  194. columnIndex,
  195. value,
  196. values,
  197. index,
  198. picker = this.$refs.uPicker
  199. } = e
  200. // if (columnIndex === 0) {
  201. // debugger
  202. // if (e.index != 0) {
  203. // picker.setColumnValues(1, this.validityPeriod[1].shift())
  204. // }
  205. // } else if (columnIndex === 1) {
  206. // if (e.index != 0) {
  207. // picker.setColumnValues(2, this.validityPeriod[2].shift())
  208. // }
  209. // }
  210. },
  211. codeChange(text) {
  212. this.tips = text;
  213. },
  214. getCode() {
  215. if (/^0?1[3|4|5|6|7|8][0-9]\d{8}$/.test(this.dataDetails.driverPhone)) {
  216. if (this.$refs.uCode.canGetCode) {
  217. // 模拟向后端请求验证码
  218. uni.showLoading({
  219. title: '正在获取验证码'
  220. })
  221. _this.$request.baseRequest('get', '/commonUser/sendVerifyCode', {
  222. phone: this.dataDetails.driverPhone
  223. }).then(res => {
  224. uni.hideLoading();
  225. // 这里此提示会被this.start()方法中的提示覆盖
  226. uni.$u.toast('验证码已发送');
  227. // 通知验证码组件内部开始倒计时
  228. this.$refs.uCode.start();
  229. })
  230. .catch(res => {
  231. uni.$u.toast(res.message);
  232. });
  233. // setTimeout(() => {
  234. // }, 2000);
  235. } else {
  236. uni.$u.toast('倒计时结束后再发送');
  237. }
  238. } else {
  239. uni.$u.toast('请输入正确手机号');
  240. }
  241. },
  242. end() {
  243. // uni.$u.toast('倒计时结束');
  244. },
  245. start() {
  246. // uni.$u.toast('倒计时开始');
  247. },
  248. // 性别切换
  249. radioChange(n) {
  250. console.log('radioChange', n);
  251. this.dataDetails.driverSex = n
  252. },
  253. //判断是否是初次认证
  254. getAuthenticationStatus() {
  255. this.$request.baseRequest('', '/driverInfo/firstAuthentication', {
  256. driverPhone: this.userInfo.phone,
  257. }).then(res => {
  258. if (res.code == 200) {
  259. this.dataDetails = res.data
  260. // this.dataDetails.driverName = res.data.driverName
  261. // this.dataDetails.driverSex = res.data.driverSex
  262. // this.dataDetails.driverCall = res.data.driverCall
  263. // this.dataDetails.driverPhone = res.data.driverPhone
  264. // this.dataDetails.cardAddressUrl = res.data.cardAddressUrl
  265. // this.dataDetails.cardBackAddressUrl = res.data.cardBackAddressUrl
  266. // this.dataDetails.numberCard = res.data.numberCard
  267. // this.dataDetails.cardValidityDate = res.data.cardValidityDate
  268. }
  269. })
  270. .catch(res => {
  271. uni.$u.toast(res.message);
  272. });
  273. },
  274. confirmValidityPeriod(e) {
  275. console.log('confirm', e)
  276. if (e.value[0] == '长期') {
  277. this.dataDetails.cardValidityDate = e.value[0]
  278. if (e.value[1] || e.value[2]) {
  279. this.$refs.uToast.show({
  280. type: 'error',
  281. message: "选择长期不允许选择月日!",
  282. })
  283. return
  284. }
  285. } else {
  286. if (!e.value[1] || !e.value[2]) {
  287. this.$refs.uToast.show({
  288. type: 'error',
  289. message: "日期格式错误,请重新选择!",
  290. })
  291. return
  292. }
  293. var date=new Date()
  294. if(e.value[0]<date.getFullYear()){
  295. this.$refs.uToast.show({
  296. type: 'error',
  297. message: "身份证已过期!",
  298. })
  299. return
  300. }
  301. if(e.value[0]==date.getFullYear()&&Number(e.value[1])<(date.getMonth()+1)){
  302. this.$refs.uToast.show({
  303. type: 'error',
  304. message: "身份证已过期!",
  305. })
  306. return
  307. }
  308. if(e.value[0]==date.getFullYear()&&Number(e.value[1])==(date.getMonth()+1)&&Number(e.value[2])<=(date.getDate())){
  309. this.$refs.uToast.show({
  310. type: 'error',
  311. message: "身份证已过期!",
  312. })
  313. return
  314. }
  315. this.dataDetails.cardValidityDate = e.value[0] + '-' + e.value[1] + '-' + e.value[2]
  316. }
  317. this.isShowcardValidity = false
  318. },
  319. selectValidityPeriod() {
  320. this.isShowcardValidity = true
  321. },
  322. //设置图片
  323. setImage(e) {
  324. console.log(e);
  325. //显示在页面
  326. //this.imagesrc = e.path;
  327. if (e.dotype == 'idphoto') {
  328. _this.zjzClipper(e.path);
  329. } else if (e.dotype == 'watermark') {
  330. _this.watermark(e.path);
  331. } else {
  332. _this.savePhoto(e.path);
  333. }
  334. },
  335. //保存图片到相册,方便核查
  336. savePhoto(path) {
  337. this.imagesrc = path;
  338. // this.dataDetails.cardAddressUrl = path
  339. uploadImage(path, 'appData/',
  340. result => {
  341. // 上传成功
  342. console.log('图片地址', result)
  343. this.dataDetails.cardAddressUrl = result
  344. }
  345. )
  346. },
  347. uploadImg(type, index) {
  348. this.uploadType = type
  349. // this.isShowimgType = true
  350. this.index = index
  351. this.imgTypeSelect()
  352. },
  353. // 上传图片
  354. imgTypeSelect() {
  355. // console.log(val)
  356. console.log(this.uploadType)
  357. // if (val.name == '相册') {
  358. uni.chooseImage({
  359. count: 1,
  360. // sourceType: this.$helper.chooseImage.sourceType,
  361. success: function(res) {
  362. console.log(JSON.stringify(res.tempFilePaths));
  363. uploadImage('image',res.tempFilePaths[0], 'appData/',
  364. result => {
  365. // 上传成功回调函数
  366. console.log('图片地址', result)
  367. switch (_this.uploadType) {
  368. // 身份正面
  369. case 1:
  370. _this.dataDetails.cardAddressUrl = result
  371. // 识别
  372. _this.$request.baseRequest('get',
  373. '/driverInfo/personShibie', {
  374. personImg: result,
  375. flag:1
  376. }).then(res => {
  377. if(res.data){
  378. _this.dataDetails.cardAddress=res.data.recPersonAddr
  379. _this.dataDetails.numberCard = res.data.recPersonNo
  380. if (res.data.recPerson) {
  381. _this.dataDetails.driverName = res.data.recPerson
  382. _this.dataDetails.driverCall = res.data.recPerson.substring(0,1)
  383. }
  384. _this.dataDetails.driverBirthday=res.data.recPersonBrithday
  385. }
  386. })
  387. .catch(res => {
  388. uni.$u.toast(res.message);
  389. });
  390. break
  391. // 身份反面
  392. case 2:
  393. _this.dataDetails.cardBackAddressUrl = result
  394. // 识别
  395. _this.$request.baseRequest('get',
  396. '/driverInfo/personShibie', {
  397. personImg: result,
  398. flag:2
  399. }).then(res => {
  400. if(res.data.idCardValidity){
  401. let date = res.data.idCardValidity.split("-")[1]
  402. _this.dataDetails.cardValidityDate = date.replace('.', '-').replace('.', '-')
  403. }
  404. })
  405. .catch(res => {
  406. uni.$u.toast(res.message);
  407. });
  408. break
  409. case 3:
  410. break;
  411. }
  412. }
  413. )
  414. }
  415. });
  416. // } else {
  417. // switch (this.uploadType) {
  418. // case 0:
  419. // break
  420. // case 1:
  421. // uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=idcardface');
  422. // console.log('身份正面')
  423. // break
  424. // case 2:
  425. // uni.$u.route('/pages/mine/camera/idcard/idcard?dotype=badge');
  426. // console.log('身份反面')
  427. // break
  428. // case 3:
  429. // break
  430. // case 4:
  431. // }
  432. // }
  433. },
  434. next(val) {
  435. if (this.validate()) return
  436. uni.$u.route('/pages/mine/editDriverCertificationNext', {
  437. data: JSON.stringify(this.dataDetails),
  438. });
  439. },
  440. validate() {
  441. // true 为校验不通过
  442. if (uni.$u.test.isEmpty(this.dataDetails.driverName)) {
  443. this.$refs.uToast.show({
  444. type: 'error',
  445. message: "司机姓名不能为空!",
  446. })
  447. return true
  448. }
  449. if (!uni.$u.test.chinese(this.dataDetails.driverName)) {
  450. this.$refs.uToast.show({
  451. type: 'error',
  452. message: "姓名为汉字!",
  453. })
  454. return true
  455. }
  456. if (uni.$u.test.isEmpty(this.dataDetails.driverCall)) {
  457. this.$refs.uToast.show({
  458. type: 'error',
  459. message: "司机称呼不能为空!",
  460. })
  461. return true
  462. }
  463. if (!uni.$u.test.chinese(this.dataDetails.driverCall)) {
  464. this.$refs.uToast.show({
  465. type: 'error',
  466. message: "称呼为汉字!",
  467. })
  468. return true
  469. }
  470. if (uni.$u.test.isEmpty(this.dataDetails.driverPhone)) {
  471. this.$refs.uToast.show({
  472. type: 'error',
  473. message: "联系电话不能为空!",
  474. })
  475. return true
  476. }
  477. if (!uni.$u.test.mobile(this.dataDetails.driverPhone)) {
  478. this.$refs.uToast.show({
  479. type: 'error',
  480. message: "电话号码格式错误!",
  481. })
  482. return true
  483. }
  484. if (uni.$u.test.isEmpty(this.dataDetails.driverPhone)) {
  485. this.$refs.uToast.show({
  486. type: 'error',
  487. message: "身份证人像页不能为空!",
  488. })
  489. return true
  490. }
  491. if (uni.$u.test.isEmpty(this.dataDetails.driverPhone)) {
  492. this.$refs.uToast.show({
  493. type: 'error',
  494. message: "身份证国徽页不能为空!",
  495. })
  496. return true
  497. }
  498. if (uni.$u.test.isEmpty(this.dataDetails.cardValidityDate)) {
  499. this.$refs.uToast.show({
  500. type: 'error',
  501. message: "身份证人有效截止日期不能为空!",
  502. })
  503. return true
  504. }
  505. if (uni.$u.test.isEmpty(this.dataDetails.cardAddress)) {
  506. this.$refs.uToast.show({
  507. type: 'error',
  508. message: "身份证地址为空!",
  509. })
  510. return true
  511. }
  512. return false
  513. }
  514. },
  515. };
  516. </script>
  517. <style scoped lang="scss">
  518. /deep/.u-radio {
  519. margin-bottom: 0 !important;
  520. }
  521. .top-head {
  522. background: #2772FB;
  523. height: 80rpx;
  524. width: 100%;
  525. }
  526. .container {
  527. position: relative;
  528. top: -60rpx;
  529. margin: 0 20rpx;
  530. }
  531. .row4-img {
  532. width: 32rpx;
  533. height: 32rpx;
  534. }
  535. .content1,
  536. .content2,
  537. .content3 {
  538. .left-text {
  539. width: 290rpx;
  540. color: #333333;
  541. display: flex;
  542. align-items: center;
  543. }
  544. .row {
  545. border-bottom: 1px solid #EEEEEE;
  546. padding-bottom: 28rpx;
  547. margin-top: 26rpx;
  548. .ch-style {}
  549. }
  550. .row-ch {
  551. padding-right: 180rpx;
  552. box-sizing: border-box;
  553. }
  554. }
  555. .content1-car {
  556. margin-top: 20rpx;
  557. .left-text {
  558. width: 290rpx;
  559. color: #333333;
  560. display: flex;
  561. align-items: center;
  562. }
  563. .row {
  564. border-bottom: 1px solid #EEEEEE;
  565. padding-bottom: 28rpx;
  566. margin-top: 26rpx;
  567. .color {
  568. // background: blue;
  569. width: 340rpx;
  570. }
  571. }
  572. }
  573. .input-ckg {
  574. height: 86rpx;
  575. margin-top: 0 !important;
  576. padding-bottom: 0 !important;
  577. .u-input {
  578. height: 100%;
  579. background: #F7F8FA;
  580. padding-left: 10rpx !important;
  581. padding-right: 85rpx !important;
  582. }
  583. .star {
  584. display: flex;
  585. align-items: center;
  586. margin: 0 10rpx;
  587. }
  588. .input-positon {
  589. position: relative;
  590. }
  591. .position-right {
  592. position: absolute;
  593. right: 20rpx;
  594. top: 0;
  595. width: 60rpx;
  596. height: 50rpx;
  597. bottom: 0;
  598. margin: auto;
  599. }
  600. }
  601. .picture {
  602. margin-top: 20rpx;
  603. background: #F5F6FA;
  604. width: 212rpx;
  605. height: 212rpx;
  606. border-radius: 20rpx;
  607. display: flex;
  608. flex-direction: column;
  609. justify-content: center;
  610. align-items: center;
  611. color: #6A7282;
  612. }
  613. .add-car {
  614. background: #FFFFFF;
  615. margin: 20rpx 50rpx;
  616. border-radius: 50rpx;
  617. display: flex;
  618. justify-content: center;
  619. align-items: center;
  620. padding: 20rpx 0;
  621. .icon {
  622. margin-right: 20rpx;
  623. }
  624. .car-text {
  625. font-size: 36rpx;
  626. font-weight: 700;
  627. color: #2772FB;
  628. }
  629. }
  630. .carlist-item {
  631. margin-top: 20rpx;
  632. padding: 0 20rpx 20rpx 20rpx;
  633. background: white;
  634. border-radius: 10rpx;
  635. position: relative;
  636. .del-car {
  637. position: absolute;
  638. top: 0;
  639. right: 0;
  640. width: 80rpx;
  641. height: 80rpx;
  642. }
  643. }
  644. .content2,
  645. .content3 {
  646. .del-bank {
  647. position: absolute;
  648. top: 0;
  649. right: 0;
  650. width: 80rpx;
  651. height: 80rpx;
  652. }
  653. .picture {
  654. width: 100%;
  655. height: 440rpx;
  656. position: relative;
  657. .text {
  658. margin-top: 20rpx;
  659. }
  660. }
  661. .picture1 {
  662. background: url(../../static/images/mine/zm.png);
  663. background-size: 100% 100%;
  664. }
  665. .picture2 {
  666. background: url(../../static/images/mine/gh.png);
  667. background-size: 100% 100%;
  668. }
  669. .picture3 {
  670. background: url(../../static/images/mine/yhkzm.png);
  671. background-size: 100% 100%;
  672. }
  673. .xj-image {
  674. width: 100rpx;
  675. height: 100rpx;
  676. }
  677. .title {
  678. color: #999999;
  679. margin: 20rpx 0;
  680. }
  681. }
  682. .content3 {
  683. position: relative;
  684. background: white;
  685. margin: 20rpx 0 0 0;
  686. border-radius: 10rpx;
  687. padding: 20rpx;
  688. .khzh-styel {
  689. // width: 350rpx;
  690. }
  691. .type {
  692. background: #2772FB;
  693. border-radius: 10rpx;
  694. color: white;
  695. box-sizing: border-box;
  696. padding: 4rpx 10rpx;
  697. font-size: 26rpx;
  698. display: flex;
  699. justify-content: center;
  700. align-items: center;
  701. }
  702. .select-bankzh {
  703. width: 230rpx;
  704. height: 48rpx;
  705. }
  706. }
  707. .content4 {
  708. display: flex;
  709. justify-content: center;
  710. background: white;
  711. padding: 40rpx 20rpx 50rpx 20rpx;
  712. .next-btn {
  713. background: rgb(39, 114, 251);
  714. width: 90%;
  715. padding: 20rpx 20rpx;
  716. text-align: center;
  717. color: #fff;
  718. border-radius: 50rpx;
  719. }
  720. }
  721. .yzm {}
  722. .yzm-btn {
  723. background: #2772FB;
  724. color: white;
  725. height: 60rpx;
  726. }
  727. .preview-card-img {
  728. // /deep/uni-image>div,
  729. // uni-image>img {
  730. // transform: scale(1.5) rotate(-90deg);
  731. // }
  732. }
  733. .del-card {
  734. position: absolute;
  735. top: -10rpx;
  736. right: -6rpx;
  737. width: 80rpx;
  738. height: 80rpx;
  739. z-index: 9;
  740. }
  741. /deep/.u-radio{
  742. margin-right:10px;
  743. }
  744. </style>