From dfb102e3d9f1bf1196be041cd1f4a3f50727bdda Mon Sep 17 00:00:00 2001
From: zhaoxiaoqiang <287285524@qq.com>
Date: Wed, 17 Aug 2022 17:14:14 +0800
Subject: [PATCH] 好学付
---
src/views/user/login.vue | 601 +++++++++++++++++++++++++++---------------------------
1 files changed, 304 insertions(+), 297 deletions(-)
diff --git a/src/views/user/login.vue b/src/views/user/login.vue
index aa38c5b..c944dcf 100644
--- a/src/views/user/login.vue
+++ b/src/views/user/login.vue
@@ -1,351 +1,358 @@
<!--
* @Author: 小明丶
- * @Date: 2020-05-23 11:05:09
+ * @Date: 2019-08-15 10:20:56
* @LastEditors: zxq
- * @LastEditTime: 2022-07-08 14:54:57
- * @Description: 上传身份证
--->
+ * @LastEditTime: 2022-08-12 10:08:15
+ * @Description: 登录页面
+ -->
<template>
- <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 class="login-page">
+ <div class="logo-box">
+ <div class="logo-img-box">
+ <img src="../../../static/img/logo.png" alt="logo" class="logo-pic" />
</div>
+ <p>好学付</p>
</div>
- <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>
+ <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>
<div class="btn-box">
- <button @click="goNext">下一步</button>
+ <button @click="loginBut">登录</button>
</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 class="idcard-box">
+ <upLoadIdCard :cardBack="idCardMation.idBackUrl" :cardFont="idCardMation.idFrontUrl"></upLoadIdCard>
+ </div> -->
</div>
</template>
-<script>
-import Bus from "../../bus";
-import Vue from "vue";
-import { DatetimePicker } from "vant";
-import { Popup } from "vant";
+<script>
+import { mapActions } from "vuex";
+import Vue from "vue";
+import { RadioGroup, Radio } from "vant";
+import { Checkbox, CheckboxGroup } from "vant";
+import { Popup } from "vant";
+import { Icon } from "vant";
+Vue.use(Icon);
Vue.use(Popup);
-Vue.use(DatetimePicker);
+Vue.use(Checkbox);
+Vue.use(CheckboxGroup);
+Vue.use(Radio);
+Vue.use(RadioGroup);
+
export default {
data() {
return {
- 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:{},//身份证照片信息
+ 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: "", //协议
};
},
- computed: {
- idDate() {
- if (
- this.idCardMation.idCardValidBegin &&
- this.idCardMation.idCardValidEnd
- ) {
- return (
- this.idCardMation.idCardValidBegin +
- "-" +
- this.idCardMation.idCardValidEnd
- );
- }
- },
- // 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: {
- //设置时间
- setTime(picker, arr) {
- if (!this.timepicker && picker) {
- this.timePicker = picker;
+ // 存储倒计时
+ 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
}
- let v = arr ? arr : picker.getValues(),
- time = v[0] + "." + v[1] + "." + v[2];
- if (this.timeIndex === 0) {
- this.startDay = time;
- } else {
- this.endDay = time;
- }
- },
- 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);
- }
- },
- // 时间切换刷新统计数据
- 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'}
- });
+ }
+ if(sessionStorage.mblNo){
+ this.mblNo = sessionStorage.mblNo
+ }
+ if(sessionStorage.verCode){
+ this.verCode = sessionStorage.verCode
+ }
+
+ this.code = this.getUrlCode("code");
+ console.log('this.code:',this.code)
+ console.log('this.$route.query.whichPage:',this.$route.query.whichPage)
+ if (this.code && !this.$route.query.whichPage) {
+ this.$api.wechatUserInfo({ code: this.code}).then(res => {
+ console.log('res.body.openid:',res.body.openid)
+ localStorage.axx_ins_client_openId = res.body.openid;
+ localStorage.axx_ins_client_userMation = JSON.stringify(res.body);
});
}
+ },
+ methods: {
+ ...mapActions(["login", "getVercode", "openIdLogin"]),
+ //截取code值
+ getUrlCode(name) {
+ return (
+ decodeURIComponent(
+ (new RegExp("[?|&]" + name + "=" + "([^&;]+?)(&|#|;|$)").exec(
+ location.href
+ ) || [, ""])[1].replace(/\+/g, "%20")
+ ) || null
+ );
+ },
+ //登录验证
+ loginBut() {
+ let v = this.$tool;
+ if (v.checkValEmpty(this.mblNo)) {
+ v.toast("请输入手机号");
+ return;
+ }
+ 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,
+ });
+ },
+ 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);
+ })
+ // this.$store.dispatch("getVercode", {
+ // vm: this,
+ // mblNo: this.mblNo,
+ // verCodeType: 1
+ // });
+
+ },
+ //发送验证码计时函数
+ getSecond(wait) {
+ let _this = this;
+ let _wait = wait;
+ if (wait == 0) {
+ this.btnText = "获取验证码";
+ wait = _wait;
+ this.btnDis = false;
+ clearTimeout(this.timer)
+ } else {
+ this.btnDis = true;
+ this.btnText = "验证码(" + wait + "s)";
+ wait--;
+ this.timer = setTimeout(function() {
+ _this.getSecond(wait);
+ }, 1000);
+ }
+ },
+ // 展示协议
+ 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'
+ }
+ })
+ }
+ },
+ },
+
+ beforeRouteLeave (to, from, next) {
+ // ...
+
+ clearTimeout(this.timer)
+ next()
}
};
</script>
<style lang="less" scoped>
-.upload-IDcard-page {
- & {
- min-height: 100vh;
- }
- .steps-box {
+.login-page {
+ padding-top: 42px;
+ box-sizing: border-box;
+ .logo-box {
& {
- display: flex;
+ text-align: center;
+ font-size: 18px;
+ margin-bottom: 30px;
}
- div {
- width: 50%;
+ img {
+ width: 55px;
+ height: 83px;
}
- .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;
+ .logo-img-box {
+ display: inline-block;
+ width: 100px;
+ height: 100px;
background: rgba(255, 255, 255, 1);
- box-shadow: 0px 0px 10px 0px rgba(47, 103, 192, 0.1);
- border-radius: 5px;
- margin: auto;
+ box-shadow: 0px 0px 12px 0px rgba(34, 105, 209, 0.2);
+ border-radius: 15px;
box-sizing: border-box;
- padding: 16px 17px;
+ padding-top: 11px;
}
- p:nth-of-type(1) {
- margin-bottom: 10px;
- font-size: 16px;
+ p {
+ margin-top: 16px;
+ font-size: 17px;
font-family: PingFang SC;
font-weight: 500;
color: rgba(51, 51, 51, 1);
}
- p:nth-of-type(2) {
- font-size: 12px;
- font-family: PingFang SC;
- font-weight: 500;
- color: rgba(153, 153, 153, 1);
- }
}
- .idcard-box {
- & {
- margin-top: 29px;
- }
+ .myipt {
+ margin-top: 51px;
}
- .id-mation-box {
+ .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;
- 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;
+ .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;
+ }
}
}
.btn-box {
- text-align: center;
- margin-top: 32px;
- padding-bottom: 37px;
+ & {
+ width: 100%;
+ text-align: center;
+ margin-top: 37px;
+ }
button {
- width: 320px;
+ width: 80%;
height: 44px;
- background: rgba(81, 148, 254, 1);
+ 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);
border-radius: 22px;
- color: #fff;
- border: 0;
outline: none;
+ border: 0;
+ color: #fff;
}
}
- .time-label {
- .lh(65px);
- color: @c-text-999;
+ .agreenBox {
+ width: 80vw;
+ height: 70vh;
+ padding: 60px 20px 30px 20px;
+ position: relative;
+ }
- .active {
- color: @c-text-default;
- }
+ .agreen-html {
+ width: 100%;
+ height: 100%;
+ overflow: scroll;
+ box-sizing: border-box;
}
- .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;
+
+ .close-agreen {
+ .lh(30px);
+ .flex(center, center);
+
+ .van-icon {
+ font-size: @font-16;
+ }
}
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.8.0