提交 4768d314 编写于 作者: 张敬贤's avatar 张敬贤

add

上级 cf121fb2
......@@ -35,3 +35,38 @@ export const getPubKey = (param) => {
},
});
};
// /tis/insurance / login
export const insuranceLogin = (data) => {
return request({
method: 'post',
url: '/tis/insurance/login',
data: data,
withCredentials: true,
});
};
// / 获取type=的协议名称
export const getProtocolContentByType = (type) => {
return request({
method: 'get',
url: `/smartcontract/protocol/content?type=${type}`,
withCredentials: true,
});
};
// 获取type=的协议内容
export const getProtocolNameByType = (type) => {
return request({
method: 'get',
url: `/smartcontract/protocol/name?type=${type}`,
withCredentials: true,
});
};
//
export const getPrototypes = (projectEquityNo) => {
return request({
method: 'get',
url: `tis/insurance/prototypes?projectEquityNo=${projectEquityNo}`,
withCredentials: true,
});
};
......@@ -25,65 +25,46 @@ export default {
})
},
mounted() {
const _this = this;
const imgScode = $('#imgScode');
console.log(imgScode);
$('#imgScode').imgcode({
frontimg: 'data:image/png;base64,' + _this.imgCodeData.slidingImage,
backimg: 'data:image/png;base64,' + _this.imgCodeData.backImage,
yHeight: _this.imgCodeData.yHeight,
refreshcallback: function () {
// 刷新验证码
console.log('refreshcallback');
_this.refreshImg(undefined);
},
closecallback: function () {
// 关闭弹框
console.log('closecallback');
_this.$emit('closeSlideCheckpageDialog');
},
callback: function (msg) {
console.log('callback');
const $this = this;
_this.getMsgCode($this, msg, _this.imgCodeData, undefined);
}
});
console.log(this.imgCodeData);
// const {slidingImage, backImage, yHeight} = this.imgCodeData;
this.initImgCode(this.imgCodeData);
},
methods: {
...mapActions('home', ['setNeedTimer']),
getImg(type) {
//
const _this = this;
const data = {
mobile: this.mobile,
jigsawVersion: 'v1'
};
sendEncryptRequest(data, params => {
checkNeedImgCode(params).then(res => {
// eslint-disable-next-line
this.initImgCode(res.data, type);
});
});
},
initImgCode(data, type) {
const _this = this;
$('#imgScode').imgcode({
frontimg: 'data:image/png;base64,' + res.data.slidingImage,
backimg: 'data:image/png;base64,' + res.data.backImage,
yHeight: res.data.yHeight,
frontimg: 'data:image/png;base64,' + data.slidingImage,
backimg: 'data:image/png;base64,' + data.backImage,
yHeight:data.yHeight,
refreshcallback: function () {
// 刷新验证码
_this.refreshImg(type);
_this.getImg(type);
},
closecallback: function () {
// 关闭弹框
_this.$emit('closeSlideCheckpageDialog');
},
callback: function (msg) {
const $this = this;
_this.getMsgCode($this, msg, res.data, type);
_this.getMsgCode(_this, msg, data, type);
}
});
});
});
},
refreshImg(type) {
const _this = this;
// const _this = this;
const data = {
mobile: this.mobile,
jigsawVersion: 'v1'
......@@ -91,23 +72,24 @@ export default {
sendEncryptRequest(data, params => {
checkNeedImgCode(params).then(res => {
// eslint-disable-next-line
$('#imgScode').imgcode({
frontimg: 'data:image/png;base64,' + res.data.slidingImage,
backimg: 'data:image/png;base64,' + res.data.backImage,
yHeight: res.data.yHeight,
refreshcallback: function () {
// 刷新验证码
_this.getImg(type);
},
closecallback: function () {
// 关闭弹框
_this.$emit('closeSlideCheckpageDialog');
},
callback: function (msg) {
const $this = this;
_this.getMsgCode($this, msg, res.data, type);
}
});
this.initImgCode(res.data, type);
// $('#imgScode').imgcode({
// frontimg: 'data:image/png;base64,' + res.data.slidingImage,
// backimg: 'data:image/png;base64,' + res.data.backImage,
// yHeight: res.data.yHeight,
// refreshcallback: function () {
// // 刷新验证码
// _this.getImg(type);
// },
// closecallback: function () {
// // 关闭弹框
// _this.$emit('closeSlideCheckpageDialog');
// },
// callback: function (msg) {
// const $this = this;
// _this.getMsgCode($this, msg, res.data, type);
// }
// });
});
});
},
......
......@@ -126,6 +126,11 @@ const routerConfig = [
name: 'login',
component: () => import('@/views/login/index.vue'),
},
{
path: '/protocol',
name: 'protocol',
component: () => import('@/views/login/protocol.vue'),
},
];
router.beforeEach(async (to, from, next) => {
headerConfigByMeta(to);
......
<template>
<div class="insurance-login">
<van-form @submit="onSubmit">
<van-form
class="insurance-login-form"
>
<template v-if="!need">
<div>
<div class="login-form-label">
<span>*</span>领取人手机号
</div>
<div class="login-form-tips">
<van-icon name="warning-o" />为保证筛查准确性,请本人填写相关信息和联系方式
</div>
<van-field
v-model="formData.mobile"
v-model="formData.mobilePhone"
name="手机号"
label="手机号"
clearable
placeholder="手机号"
:rules="[{ required: true, message: '请填写手机号' }]"
:rules="[{ required: true, message: '请输入手机号' }]"
/>
<div
class="login-form-message"
>
<van-field
v-model="formData.sms"
v-model="formData.checkCode"
center
clearable
label="短信验证码"
placeholder="请输入短信验证码"
>
<template #button>
placeholder="请输入验证码"
:rules="[{ required: true, message: '请输入验证码' }]"
/>
<van-button
size="small"
type="primary"
class="message-btn"
:class="{'send-btn' : isSend}"
native-type="button"
@click="getCode"
>
发送验证码
{{ isSend ? `${second}S后重发` : "获取验证码" }}
</van-button>
</div>
</div>
</template>
</van-field>
<template v-else>
<div>
<div class="login-form-label">
<span>*</span>领取人姓
</div>
<van-field
v-model="formData.username"
v-if="need"
v-model="formData.patientName"
clearable
name="领取人姓名"
label="领取人姓名"
placeholder="请输入领取人姓名"
:rules="[{ required: true, message: '请输入领取人姓名' }]"
/>
<div class="login-form-label">
<span>*</span>领取人身份
</div>
<van-field
v-model="formData.idcard"
name="身份证"
label="身份证"
v-if="need"
v-model="formData.idCard"
clearable
name="领取人身份证"
placeholder="请输入领取人身份证"
:rules="[{ required: true, message: '请输入领取人身份证' }]"
/>
<div style="margin: 16px;">
<van-button
round
block
type="info"
native-type="submit"
</div>
</template>
<div
class="login-form-submit"
@click="submit"
>
提交
</van-button>
领取/查看权益
</div>
</van-form>
<slideToCheck
v-if="showCheckDialog"
:mobile="formData.mobile"
:mobile="formData.mobilePhone"
@closeSlideCheckpageDialog="closeSlideCheckpageDialog"
@refreshGetMsg="refreshGetMsg"
/>
<div
v-if="need"
class="insurance-login-agreement"
>
<van-checkbox
v-model="checked"
>
我已阅读并同意 <span @click="goProtocol(42)">《云鹊健康用户协议》</span> 和 <span @click="goProtocol(5)">《云鹊隐私声明》</span>
</van-checkbox>
</div>
</div>
</template>
<script>
import { mapActions } from 'vuex';
import { sendEncryptRequest } from '@/utils/encrypt';
import { checkNeedImgCode, getMessageCode } from '@/api/login';
import { checkNeedImgCode, getMessageCode, insuranceLogin, getPrototypes } from '@/api/login';
import { signDetection} from '@/api/detection.js';
import slideToCheck from '@/components/slide-check/index';
export default {
components: {
......@@ -70,38 +109,73 @@ export default {
data() {
return {
formData: {
username: '',
mobile: '13783339953',
idcard: '',
sms:''
patientName: '',
mobilePhone: '13783339933',
idCard: '',
checkCode:''
},
need:false,
checked:false,
timer:null,
isSend: false,
showCheckDialog:false
second: 60,
sixThen: 60,
showCheckDialog: false,
prototypeId:'',
prototypeLogId:'',
};
},
computed: {
},
mounted() {
const {projectEquityNo} = this.$route.query;
this.projectEquityNo = projectEquityNo;
this.getPrototypes(projectEquityNo);
},
methods: {
...mapActions('home', ['setImgCodeData', 'setNeedTimer']),
closeSlideCheckpageDialog() {
this.showCheckDialog = false;
},
getPrototypes(projectEquityNo) {
getPrototypes(projectEquityNo).then(res => {
console.log(res);
});
},
getCode() {
// if (this.isSend) {
// return;
// }
// if (!this.formData.mobile) {
// this.$toast('手机号不能为空');
// return;
// }
// if (!phoneFun(this.formData.mobile)) {
// this.$toast('手机号不正确');
// return;
// }
// this.showLoading = true;
this.checkControlStatus();
},
refreshGetMsg() {
this.$toast({
message: '验证码已发送',
icon: 'passed',
});
this.isSend = true;
this.second--;
this.timer = setInterval(() => {
this.second--;
if (this.second <= 0) {
clearInterval(this.timer);
this.second = this.sixThen;
this.isSend = false;
}
}, 1000);
},
signDetection(protocolType, patientId) {
const obj = {
protocolType,
patientId
};
signDetection(obj).then(res => {
if (res.code !== '000000') {
return this.$toast(res.message);
}
});
},
checkControlStatus() {
const data = {
mobile: this.formData.mobile,
mobile: this.formData.mobilePhone,
jigsawVersion: 'v1',
};
sendEncryptRequest(data, (params) => {
......@@ -121,8 +195,51 @@ export default {
});
});
},
submit() {
if (this.need && !this.checked) {
this.$toast('请勾选同意底部协议后进行登录');
return;
}
// {
// "checkCode": "string",
// "idCard": "string",
// "mobilePhone": "string",
// "patientName": "string",
// "projectEquityNo": "string",
// "prototypeId": 0,
// "prototypeLogId": 0
// }
const data = {
checkCode: this.formData.checkCode,
idCard: this.formData.checkCidCardode,
mobilePhone: this.formData.mobilePhone,
patientName: this.formData.patientName,
projectEquityNo:this.projectEquityNo,
};
insuranceLogin(data).then(res => {
if (res.code == '000000') {
if (res.data.status == '0') {
this.need = true;
this.$dialog.alert({
title: '温馨提示',
message: '您尚未领取过本权益,需要完善相关信息',
theme: 'round-button',
confirmButtonColor:'#00bda5'
});
}
}
});
},
phoneFun() {
},
goProtocol(type) {
this.$router.push({
path: '/protocol',
query: {
type
}
});
}
}
};
......@@ -131,5 +248,135 @@ export default {
<style lang="scss" scoped>
.insurance-login{
height: 100vh;
overflow: hidden;
background-image: url('~@/assets/images/bg-login.png');
background-repeat: no-repeat;
background-size: 100% 276px;
.insurance-login-form{
margin:246px auto 160px auto;
padding: 24px 19px;
background: #fff;
width: 317px;
background: linear-gradient(180deg, #FFFFFF 0%, #FFFFFF 100%);
box-shadow: 0px 18px 12px 0px #EBF9F8;
border-radius: 40px;
border: 1px solid rgba(0,189,165,0.33);
.login-form-label{
display: flex;
align-items: center;
height: 16px;
font-size: 15px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #02120F;
line-height: 16px;
margin-bottom: 10px;
span{
margin-right: 3px;
color: #FB602D;
}
}
.login-form-tips{
height: 16px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height: 16px;
margin-bottom: 18px;
.van-icon{
margin-right: 4px;
}
}
.login-form-bottom{
height: 10px;
}
.login-form-message{
display: flex;
justify-content: space-between;
.van-field{
width: 170px;
}
.message-btn{
width: 130px;
height: 44px;
border-radius: 6px;
background: #00BDA5 ;
border: 1px solid #00BDA5;
font-size: 16px;
line-height: 44px;
}
}
.login-form-submit{
width: 240px;
height: 64px;
margin: 0 auto;
background: linear-gradient(271deg, #15CBB6 0%, #19C6B2 44%, #32ECCD 100%);
box-shadow: 0px 7px 7px 0px rgba(43,225,197,0.26), inset 0px 3px 7px 0px rgba(243,255,255,0.48), inset 0px -3px 8px 0px rgba(97,184,169,0.5);
border-radius: 66px;
border-image: linear-gradient(274deg, rgba(157, 254, 239, 1), rgba(226, 255, 250, 1)) 2 2;
font-size: 21px;
font-family: PingFangSC-Semibold, PingFang SC;
text-align: center ;
font-weight: 600;
color: #FFFFFF;
line-height: 64px;
margin-bottom: 15px;
}
.van-field {
overflow: visible;
padding: 0;
margin-bottom: 15px;
/deep/.van-field__value{
}
/deep/ .van-field__body{
height: 44px;
background: #F7F8F9;
align-items: center;
padding: 0 12px;
border-radius: 6px;
}
/deep/ .van-field__error-message{
padding-left: 12px;
}
&::after{
display: none;
}
}
}
.insurance-login-agreement{
display: flex;
justify-content: center;
align-items: center;
height: 21px;
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #999999;
line-height:21px;
span{
color: #00BDA5;
}
/deep/ .van-checkbox__icon{
height: 12px;
width: 12px;
}
/deep/ .van-checkbox__icon .van-icon{
height: 12px;
width: 12px;
font-size: 12px;
line-height: 12px;
}
/deep/ .van-checkbox__icon--checked .van-icon{
background: #00BDA5;
border-color: #00BDA5
}
/deep/ .van-checkbox__label{
margin-left: 4px;
}
}
}
</style>
<template>
<div class="protocol">
<div class="protocol-name">
{{ name }}
</div>
<div
class="protocol-content"
v-html="content"
/>
</div>
</template>
<script>
import { getProtocolContentByType, getProtocolNameByType} from '@/api/login';
export default {
data() {
return {
name: '',
content: '',
title:''
};
},
mounted() {
const { type } = this.$route.query;
this.title = type == 5 ? '云鹊隐私声明' : '云鹊健康用户协议';
document.querySelector('title').innerHTML = this.title;
this.getProtocolNameByType(type);
this.getProtocolContentByType(type);
},
methods: {
getProtocolContentByType(type) {
getProtocolContentByType(type).then(res => {
console.log(res);
this.content = res.data;
console.log('1 ', this.content);
});
},
getProtocolNameByType(type) {
getProtocolNameByType(type).then(res => {
console.log(res);
this.name = res.data;
});
},
}
};
</script>
<style lang="scss" scoped>
.protocol{
height: 100vh;
overflow: auto;
background: #fff;
}
.protocol-name{
height: 20px;
font-size: 20px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #02120F;
line-height: 20px;
text-align: center;
margin: 15px 0;
}
.protocol-content{
font-size: 15px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #02120F;
line-height: 23px;
width: 345px;
margin: 0 auto 50px auto;
}
</style>
......@@ -36,7 +36,7 @@ module.exports = {
port: 8083,
proxy: {
'/proxy': {
target: 'https://test1-sc.yunqueyi.com/',
target: 'https://dev-sc.yunqueyi.com/',
// target: 'https://test1-sc.yunqueyi.com/',
// target: 'https://uat-sc.yunqueyi.com/',
// http://10.241.65.90:3000/mock/1071/cs/route/removeUser
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册