From a82668225dfb683ba6bc56a7d31440a4c4711dd9 Mon Sep 17 00:00:00 2001 From: zhaoxiaoqiang <l287285524@qq.com> Date: Fri, 05 Aug 2022 01:15:26 +0800 Subject: [PATCH] 2323 --- src/views/user/login.vue | 568 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 294 insertions(+), 274 deletions(-) diff --git a/src/views/user/login.vue b/src/views/user/login.vue index ae7a3d3..aa38c5b 100644 --- a/src/views/user/login.vue +++ b/src/views/user/login.vue @@ -1,331 +1,351 @@ <!-- * @Author: 小明丶 - * @Date: 2019-08-15 10:20:56 + * @Date: 2020-05-23 11:05:09 * @LastEditors: zxq - * @LastEditTime: 2022-08-04 10:42:08 - * @Description: 登录页面 - --> + * @LastEditTime: 2022-07-08 14:54:57 + * @Description: 上传身份证 +--> <template> - <div class="login-page"> - <div class="logo-box"> - <div class="logo-img-box"> - <img src="../../../static/img/logo.png" alt="logo" class="logo-pic" /> + <div class="upload-IDcard-page"> + <v-navbar title="订单申请"></v-navbar> + <div class="steps-box"> + <div></div> + <div class="steps"> + <p></p> + <div class="step-1">1</div> + <div class="step-2">2</div> + <div class="step-3">3</div> </div> - <p>爱享学</p> </div> - <h-ipt - icon="iconxingming" - :maxlength="11" - type="text" - :getClose="true" - v-model="mblNo" - placeholder="请输入手机号" - class="myipt" - ></h-ipt> - <h-ipt icon="iconmima" :maxlength="6" v-model="verCode" placeholder="请输入短信验证码" class="myiptTwo"> - <template slot="right"> - <div> - <button - class="getcode" - :disabled="btnDis" - :style="btnDis?'color:#E6E6E6':'color:#62A0FF'" - @click="sendCode" - >{{btnText}}</button> - </div> - </template> - </h-ipt> - <div class="text-box"> - <van-checkbox v-model="checked" shape="round" icon-size="16px"> - <template #default> - <p class="xieyi"> - <span>我已阅读并同意</span> - <span @click.stop="showAgree(1)">《隐私政策》</span> - <span @click.stop="showAgree(2)">《用户注册服务协议》</span> - </p> - </template> - </van-checkbox> + <div class="tit-box"> + <p>身份证照片上传</p> + <p>请确保照片清晰可见,以便顺利申请</p> + </div> + <div class="idcard-box"> + <upLoadIdCard :cardBack="idCardMation.idBackUrl" :cardFont="idCardMation.idFrontUrl"></upLoadIdCard> + </div> + <div class="id-mation-box"> + <div class="tit"> + <p>请核对身份证信息</p> + </div> + <div class="mation"> + <h-cell v-model="idCardMation.usrIdName" isMust label="姓名"></h-cell> + <h-cell v-model="idCardMation.usrIdCard" isMust readonly label="身份证号"></h-cell> + <h-cell v-model="idCardMation.sex" readonly isMust label="性别"></h-cell> + <h-cell v-model="idCardMation.idCardAddr" isMust label="身份证地址"></h-cell> + <h-cell v-model="idDate" readonly isLink isMust label="有效期" @click.native="isShoTime = true"></h-cell> + </div> </div> <div class="btn-box"> - <button @click="loginBut">登录</button> + <button @click="goNext">下一步</button> </div> - <!-- <div class="idcard-box"> - <upLoadIdCard :cardBack="idCardMation.idBackUrl" :cardFont="idCardMation.idFrontUrl"></upLoadIdCard> - </div> --> + <van-popup v-model="isShoTime" position="bottom"> + <div class="text-center-g flex-around-g time-label"> + <p + class="flex-1-g" + :class="[timeIndex===0 ? 'active':'']" + @click="setTimeIndex(0)" + >开始:{{startDay}}</p> + <p + class="flex-1-g" + :class="[timeIndex===1 ? 'active':'']" + @click="setTimeIndex(1)" + >结束:{{endDay}}</p> + </div> + <van-datetime-picker + ref="timepicker" + item-height='45' + visible-item-count='4' + :show-toolbar="false" + v-model="currentDate" + @change="setTime" + :min-date="minDate" + :max-date="maxDate" + type="date" + /> + <van-button class="btn-time" @click="refreshData">确定</van-button> + </van-popup> </div> </template> - <script> -import { mapActions } from "vuex"; +import Bus from "../../bus"; import Vue from "vue"; -import { RadioGroup, Radio } from "vant"; -import { Checkbox, CheckboxGroup } from "vant"; +import { DatetimePicker } from "vant"; import { Popup } from "vant"; -import { Icon } from "vant"; -Vue.use(Icon); -Vue.use(Popup); -Vue.use(Checkbox); -Vue.use(CheckboxGroup); -Vue.use(Radio); -Vue.use(RadioGroup); +Vue.use(Popup); +Vue.use(DatetimePicker); export default { data() { return { - checked: false, //协议勾选 - radio: "", - //数据 - // 18108048791 1234qwer - mblNo: "", //用户手机号 - verCode: "", //验证码 - openId: 456, //微信openId - //点击显示密码为明文,眼睛的样式也是根据这个来判断的 - pwdType: "password", - test: false, - loginImg: "static/img/logo.png", - timer: "", - showSend: true, - btnText: "发送验证码", - btnDis: false, - miao: 60, - code: "", - ShowAgreen: false, //协议展示框 - Agreend: "", //协议 + readOnlyName: false, + readOnlyId: false, + readOnlySex: false, + minDate: new Date(1990, 0, 1), + maxDate: new Date(2030, 11, 31), + startDay: "", // 开始时间 + endDay: "", //结束时间 + timeIndex: 0, + isShoTime: false, + timePicker: null, + currentDate: new Date(1990, 0, 1), + idCardMation: {}, //身份证相关信息 + //idCardUserInfo:{},//身份证照片信息 }; }, - created() { - // 存储倒计时 - if(this.$route.query.whichPage && sessionStorage.beforeDate){ - this.miao = Math.round(new Date().getTime()/1000 - sessionStorage.beforeDate/1000) - if(this.miao < 60){ - this.getSecond(60 - this.miao) - }else{ - this.miao = 60 + computed: { + idDate() { + if ( + this.idCardMation.idCardValidBegin && + this.idCardMation.idCardValidEnd + ) { + return ( + this.idCardMation.idCardValidBegin + + "-" + + this.idCardMation.idCardValidEnd + ); } - } - if(sessionStorage.mblNo){ - this.mblNo = sessionStorage.mblNo - } - if(sessionStorage.verCode){ - this.verCode = sessionStorage.verCode - } + }, + // cardBack() { + // return this.idCardMation.idBackUrl; + // }, + // cardFont() { + // return this.idCardMation.idFrontUrl; + // } + }, + created() { + // this.$api.createInitIdInfo().then(res => { + // this.idCardMation = res.body; + // if (this.idCardMation.usrIdName) { + // this.readOnlyName = true; + // } + // if (this.idCardMation.usrIdCard) { + // this.readOnlyId = true; + // } + // if (this.idCardMation.sex) { + // this.readOnlySex = true; + // } + // }); + }, + beforeUpdate(){ + let _this = this + Bus.$on('getIdUserInfo',(msg)=>{ + _this.idCardMation = msg + }) }, methods: { - ...mapActions(["login", "getVercode"]), - //登录验证 - loginBut() { - let v = this.$tool; - if (v.checkValEmpty(this.mblNo)) { - v.toast("请输入手机号"); - return; + //设置时间 + setTime(picker, arr) { + if (!this.timepicker && picker) { + this.timePicker = picker; } - if (!v.checkPhone(this.mblNo)) { - v.toast("请输入正确手机号"); - return; - } - if (v.checkValEmpty(this.verCode)) { - v.toast("请输入验证码"); - return; - } - if (!this.checked) { - v.toast("请确认并勾选用户协议"); - return; - } - this.login({ - vm: this, - mblNo: this.mblNo, - verCode: this.verCode, - // openId: localStorage.axx_ins_client_openId - }); - }, - sendCode() { - let v = this.$tool; - if (v.checkValEmpty(this.mblNo)) { - v.toast("请输入手机号"); - return; - } - if (!v.checkPhone(this.mblNo)) { - v.toast("请输入正确手机号"); - return; - } - this.$api.getVerCode({ - mblNo: this.mblNo, - verCodeType: 1 - }).then(res=>{ - sessionStorage.beforeDate = new Date().getTime() - this.getSecond(60); - }) - }, - //发送验证码计时函数 - getSecond(wait) { - let _this = this; - let _wait = wait; - if (wait == 0) { - this.btnText = "获取验证码"; - wait = _wait; - this.btnDis = false; - clearTimeout(this.timer) + let v = arr ? arr : picker.getValues(), + time = v[0] + "." + v[1] + "." + v[2]; + if (this.timeIndex === 0) { + this.startDay = time; } else { - this.btnDis = true; - this.btnText = "验证码(" + wait + "s)"; - wait--; - this.timer = setTimeout(function() { - _this.getSecond(wait); - }, 1000); + this.endDay = time; } }, - // 展示协议 - showAgree(which) { - sessionStorage.mblNo = this.mblNo - sessionStorage.verCode = this.verCode - if(which == 1){ - this.$router.push({ - path:'/agreement', - query:{ - from:'login', - tit:'隐私协议', - agrUrl:'./static/ys.pdf' - } - }) - } - if(which == 2){ - this.$router.push({ - path:'/agreement', - query:{ - from:'login', - tit:'用户注册服务协议', - agrUrl:'./static/zc.pdf' - } - }) + setTimeIndex(index) { + this.timeIndex = index; + this.setPickerValue(); + }, + // 设置日期的值 + setPickerValue() { + if (this.timePicker) { + let timeArr = []; + if (this.timeIndex === 0) { + timeArr = this.startDay; + } else { + timeArr = this.endDay; + } + this.currentDate = new Date(timeArr); } }, - }, - - beforeRouteLeave (to, from, next) { - // ... - clearTimeout(this.timer) - next() + // 时间切换刷新统计数据 + refreshData() { + if (this.timePicker) { + let arr = this.timePicker.getValues(); + this.setTime(null, arr); + this.idCardMation.idCardValidBegin = this.startDay; + this.idCardMation.idCardValidEnd = this.endDay; + } + this.isShoTime = false; + }, + // 下一步 + goNext() { + let v = this.$tool; + if(v.checkValEmpty(this.idCardMation.idFrontUrl)){ + v.toast('请上传身份证正面') + return + } + if(v.checkValEmpty(this.idCardMation.idBackUrl)){ + v.toast('请上传身份证反面') + return + } + if(v.checkValEmpty(this.idCardMation.idCardAddr)){ + v.toast('请输入身份证详细地址') + return + } + // if(!v.checkValEmpty(this.idCardMation.idCardAddr)){ + // v.toast('请输入正确的身份证详细地址') + // return + // } + this.$api.saveIdInfo({...this.idCardMation,}).then(res => { + let str = location.host + //保存成功后获取人脸识别地址 + // this.$api.getFaceUrl({ + // callbackUrl:`https://${str}/aic_cus/#/order-handling/face-recognition` + // }).then(res=>{ + // window.location.href = res.body.faceUrl + // }) + this.$router.push({ + path: "/order-handling/face-recognition", + query: {isFaceBack:'1'} + }); + }); + } } }; </script> <style lang="less" scoped> -.login-page { - padding-top: 42px; - box-sizing: border-box; - .logo-box { +.upload-IDcard-page { + & { + min-height: 100vh; + } + .steps-box { & { - text-align: center; - font-size: 18px; - margin-bottom: 30px; + display: flex; } - img { - width: 55px; - height: 83px; + div { + width: 50%; } - .logo-img-box { - display: inline-block; - width: 100px; - height: 100px; + .steps { + height: 65px; + position: relative; + p { + border-bottom: 1px dashed #b3b3b3; + height: 32px; + } + .step-1 { + text-align: center; + line-height: 30px; + color: #fff; + width: 30px; + height: 30px; + background: rgba(81, 148, 254, 1); + box-shadow: 0px 0px 8px 0px rgba(81, 148, 254, 0.64); + border-radius: 50%; + position: absolute; + left: -15px; + top: 19px; + } + .step-2 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 55px; + top: 19px; + } + .step-3 { + text-align: center; + line-height: 28px; + width: 28px; + height: 28px; + background: rgba(255, 255, 255, 1); + border: 1px solid rgba(113, 123, 133, 1); + border-radius: 50%; + position: absolute; + left: 130px; + top: 19px; + } + } + } + .tit-box { + & { + width: 343px; + height: 75px; background: rgba(255, 255, 255, 1); - box-shadow: 0px 0px 12px 0px rgba(34, 105, 209, 0.2); - border-radius: 15px; + box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1); + border-radius: 5px; + margin: auto; box-sizing: border-box; - padding-top: 11px; + padding: 16px 17px; } - p { - margin-top: 16px; - font-size: 17px; + p:nth-of-type(1) { + margin-bottom: 10px; + font-size: 16px; font-family: PingFang SC; font-weight: 500; color: rgba(51, 51, 51, 1); } - } - .myipt { - margin-top: 51px; - } - .myiptTwo { - margin-top: 20px; - margin-bottom: 17px; - } - .getcode { - font-size: 13px; - font-family: PingFang SC; - font-weight: 500; - text-decoration: underline; - color: rgba(98, 160, 255, 1); - outline: none; - height: 30px; - border: 0; - background: #fff; - } - .text-box { - & { - width: 100%; - padding: 0 10%; - box-sizing: border-box; + p:nth-of-type(2) { + font-size: 12px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(153, 153, 153, 1); } - .xieyi { - span:nth-of-type(1) { - font-size: 12px; - font-family: PingFang SC; - font-weight: 500; - color: rgba(153, 153, 153, 1); - } - span:nth-of-type(2) { - font-size: 12px; - font-family: PingFang SC; - font-weight: 500; - color: #5194fe; - } - span:nth-of-type(3) { - font-size: 12px; - font-family: PingFang SC; - font-weight: 500; - color: #5194fe; - } + } + .idcard-box { + & { + margin-top: 29px; + } + } + .id-mation-box { + & { + box-sizing: border-box; + padding-left: 17px; + margin-top: 27px; + } + .tit { + font-size: 14px; + font-family: PingFang SC; + font-weight: 500; + color: rgba(51, 51, 51, 1); + } + .mation { + box-sizing: border-box; + padding: 0 26px; } } .btn-box { - & { - width: 100%; - text-align: center; - margin-top: 37px; - } + text-align: center; + margin-top: 32px; + padding-bottom: 37px; button { - width: 80%; + width: 320px; height: 44px; - background: linear-gradient( - 90deg, - rgba(82, 142, 255, 1), - rgba(105, 167, 255, 1) - ); - box-shadow: 0px 8px 15px 0px rgba(91, 152, 255, 0.28); + background: rgba(81, 148, 254, 1); border-radius: 22px; - outline: none; - border: 0; color: #fff; + border: 0; + outline: none; } } - .agreenBox { - width: 80vw; - height: 70vh; - padding: 60px 20px 30px 20px; - position: relative; - } + .time-label { + .lh(65px); + color: @c-text-999; - .agreen-html { - width: 100%; - height: 100%; - overflow: scroll; - box-sizing: border-box; - } - - .close-agreen { - .lh(30px); - .flex(center, center); - - .van-icon { - font-size: @font-16; + .active { + color: @c-text-default; } + } + .btn-time { + display: block; + text-align: center; + line-height: 40px; + width: 320px; + height: 40px; + background-color: @c-bg-default; + color: @c-text-fff; + border-radius: 22px; + margin: 15px auto; } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0