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.
337 lines
9.3 KiB
337 lines
9.3 KiB
<template> |
|
<view id="page"> |
|
<view class="Width100 Box" :style="bgUrl1"> |
|
<view class="Content MarginAuto"> |
|
<image :src="$.imgSrc + '/scimg/logo1.png'" mode="aspectFit" class="Block Logo"></image> |
|
<view class="NavBox Width100 MarginT_60rpx"> |
|
<view class="Unit FloatL PositionR" v-for="(item,index) in navList" @click="chooseNav(item.type)"> |
|
<text class="Block" |
|
:class="currNav == item.type ? 'FontS_46rpx Color_1A1F39 FontBold':'FontS_42rpx Color_B4BAC9'"> |
|
{{ item.label }}</text> |
|
<view class="Line BG_0064FF PositionA" v-show="currNav == item.type"></view> |
|
</view> |
|
<view class="ClearB"></view> |
|
</view> |
|
<!-- <view class="TypeBox MarginT_60rpx" v-if="currNav == 1"> |
|
<view class="Unit FloatL" v-for="(item,index) in typeList" @click="chooseType(item.type)"> |
|
<view class="Point FloatL" v-show="currType == item.type"> |
|
<image :src="$.imgSrc + '/scimg/choose_y1.png'" mode="aspectFit" class="Block Width100 Height100"></image> |
|
</view> |
|
<view class="Point Border FloatL BorderR_50 InsideB" v-show="currType != item.type"></view> |
|
<text class="Block MarginL_20rpx FontS_32rpx FloatL">{{item.label}}</text> |
|
<view class="ClearB"></view> |
|
</view> |
|
<view class="ClearB"></view> |
|
</view> --> |
|
<view class="InputBox" :class="currNav == 1 ? 'MarginT_40rpx' : 'MarginT_80rpx'"> |
|
<view class="Input MarginT_40rpx BG_F6F7FB"> |
|
<!-- <view class="Num FloatL TextLeft MarginL_60rpx">--> |
|
<!-- <text class="InlineBlock FontS_34rpx Color_1A1F39 FontBold">+86</text>--> |
|
<!-- </view>--> |
|
<input type="text" placeholder="请输入用户名" v-model="logInData.phone" |
|
class="Height100 Input1 FloatL MarginL_60rpx FontS_32rpx"> |
|
<view class="ClearB"></view> |
|
</view> |
|
<view class="Input MarginT_40rpx BG_F6F7FB" v-if="currNav == 1"> |
|
<input type="text" v-model="logInData.validateCode" placeholder="请输入验证码" |
|
class="Height100 Input1 FloatL MarginL_60rpx FontS_32rpx"> |
|
<view class="CodeBox FloatR MarginR_60rpx" @click="getCode"> |
|
<text class="Block FontS_28rpx" |
|
:class="isCodeDisabled ? 'Color_B4BAC9':'Color_0064FF'">{{ btnText }}</text> |
|
</view> |
|
<view class="ClearB"></view> |
|
</view> |
|
<view class="Input MarginT_40rpx BG_F6F7FB"> |
|
<input type="password" v-model="logInData.password" placeholder="请输入您的密码" |
|
class="Height100 Input2 FloatL MarginL_60rpx FontS_32rpx"> |
|
<view class="ClearB"></view> |
|
</view> |
|
</view> |
|
<!-- <view class="Agree Width100 MarginT_60rpx" @click="chooseAgree"> |
|
<view class="Point FloatL" v-if="isAgree"> |
|
<image :src="$.imgSrc + '/scimg/choose_y1.png'" mode="aspectFit" class="Block Width100 Height100"></image> |
|
</view> |
|
<view class="Point Border FloatL BorderR_50 InsideB" v-else></view> |
|
<text class="Block FloatL MarginL_20rpx Color_605F72 FontS_26rpx">本人已同意</text> |
|
<text class="Block FloatL Color_0064FF FontS_26rpx" @click.stop="checkAgree(2)">《用户协议》</text> |
|
<text class="Block FloatL Color_605F72 FontS_26rpx">与</text> |
|
<text class="Block FloatL Color_0064FF FontS_26rpx" @click.stop="checkAgree(3)">《隐私协议》</text> |
|
<view class="ClearB"></view> |
|
</view> --> |
|
<button type="button" :disabled="isDisabled" |
|
class="Btn Block Width100 Color_FFFFFF FontS_36rpx FontBold" |
|
@click="confirmSub">{{ currNav == 1 ? '注册':'登录' }}</button> |
|
<text @click="findPsw" class="Block MarginT_40rpx TextCenter FontS_26rpx Color_0064FF" |
|
v-if="currNav == 2">找回密码?</text> |
|
</view> |
|
</view> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
// 组件 |
|
components: {}, |
|
data() { |
|
return { |
|
// 公用的js |
|
$: this.$, |
|
bgUrl1: '', // 登录信息背景图 |
|
isAgree: false, |
|
navList: [ |
|
// {type:1,label:'注册'}, |
|
{ |
|
type: 2, |
|
label: '登录' |
|
}, |
|
], |
|
currNav: 2, |
|
currType: 1, |
|
isDisabled: false, |
|
logInData: { |
|
phone: '', // |
|
validateCode: '', // |
|
password: '', // |
|
}, // |
|
btnText: '获取验证码', |
|
times: null, |
|
seconds: 60, |
|
isCodeDisabled: false, |
|
} |
|
}, |
|
// 页面加载 |
|
onLoad(e) { |
|
if (typeof(e.type) != 'undefined') { |
|
this.currNav = e.type |
|
} |
|
}, |
|
// 页面显示 |
|
onShow() { |
|
// 顶部背景图 |
|
this.bgUrl1 = "background-image:url('" + this.$.imgSrc + |
|
"/scimg/bg1.png');background-repeat: no-repeat;background-position: center top;background-size:100% 472rpx;" |
|
}, |
|
// 计算属性 |
|
computed: {}, |
|
// 方法 |
|
methods: { |
|
checkAgree(type) { |
|
let urlKey = 'portalTextType' |
|
this.$.open('/pages/logIn/agree?type=' + type) |
|
}, |
|
getCode() { |
|
if (!this.$.isEmpty(this.logInData.phone)) { |
|
this.$.toast('请输入手机号') |
|
return |
|
} |
|
let datas = { |
|
phone: this.logInData.phone, |
|
type: 2 |
|
} |
|
this.isCodeDisabled = true |
|
this.$request.globalRequest('/hyjg-admin/mapi/account/sendSmsCode', datas, 'POST').then(res => { |
|
if (res.code == 0) { |
|
this.timeDown() |
|
} else { |
|
this.$.toast(res.msg) |
|
this.isCodeDisabled = false |
|
} |
|
}) |
|
}, |
|
timeDown() { |
|
this.times = setInterval(() => { |
|
if (this.seconds > 0) { |
|
this.seconds-- |
|
this.btnText = this.seconds + 'S' |
|
} else { |
|
this.seconds = 60 |
|
this.isCodeDisabled = false |
|
this.btnText = '获取验证码' |
|
clearInterval(this.times) |
|
} |
|
}, 1000) |
|
}, |
|
// 提交 |
|
confirmSub() { |
|
// this.$.setData('token','1') |
|
// this.$.openTab('/pages/index/index') |
|
// return |
|
// this.$.open('/pages/logIn/userInfo') |
|
let url = '/hyjg-admin/mapi/account/register' |
|
if (!this.$.isEmpty(this.logInData.phone)) { |
|
this.$.toast('请填写用户名') |
|
return |
|
} |
|
if (!this.$.isEmpty(this.logInData.password)) { |
|
this.$.toast('请填写密码') |
|
return |
|
} |
|
// if(!this.isAgree){ |
|
// this.$.toast('请勾选用户协议和隐私协议') |
|
// return |
|
// } |
|
let datas = { |
|
nuserid: this.logInData.phone, |
|
cuserpwd: this.logInData.password, |
|
} |
|
url = '/hiddenDanger/auth/login' |
|
this.$.showLoading('登录中...') |
|
this.isDisabled = true |
|
this.$request.globalRequest(url, datas, 'POST').then(res => { |
|
if (res.code === 200) { |
|
this.$.toast('登录成功') |
|
this.$.setData('token', res.result.nuserid) |
|
this.$.setData('userInfo', { |
|
username: res.result.nuserid, |
|
role: res.result.role |
|
}) |
|
setTimeout(() => { |
|
this.$.hideLoading('登录中...') |
|
this.isDisabled = false |
|
this.$.openTab('/pages/index/index') |
|
}, 1500) |
|
} else { |
|
this.$.toast(res.message) |
|
this.isDisabled = false |
|
} |
|
}).catch(() => { |
|
this.isDisabled = false |
|
this.$.toast('连接服务器失败') |
|
}) |
|
}, |
|
// 找回密码 |
|
findPsw() { |
|
this.$.open('/pages/logIn/findPsw') |
|
}, |
|
chooseAgree() { |
|
this.isAgree = !this.isAgree |
|
}, |
|
chooseNav(type) { |
|
this.currNav = type |
|
}, |
|
chooseType(type) { |
|
this.currType = type |
|
}, |
|
// 跳转页面 |
|
skipPage(even) { |
|
this.$.open(even) |
|
}, |
|
}, |
|
onReady() {}, |
|
// 页面卸载 |
|
onUnload() { |
|
|
|
}, |
|
// 触发下拉刷新 |
|
onPullDownRefresh() { |
|
// 延迟关闭刷新动画 |
|
setTimeout(() => { |
|
uni.stopPullDownRefresh(); |
|
}, 1500); |
|
}, |
|
// 页面上拉触底事件的处理函数 |
|
onReachBottom() {}, |
|
} |
|
</script> |
|
|
|
<style> |
|
page { |
|
background: #FFFFFF; |
|
} |
|
</style> |
|
<style lang="scss" scoped> |
|
.Box { |
|
padding-top: var(--status-bar-height); |
|
|
|
.Content { |
|
width: calc(100% - 176rpx); |
|
padding: 132rpx 0rpx 180rpx 0rpx; |
|
|
|
.Logo { |
|
width: 150rpx; |
|
height: 150rpx; |
|
} |
|
|
|
.NavBox { |
|
.Unit { |
|
margin-right: 110rpx; |
|
|
|
.Line { |
|
left: 50%; |
|
transform: translateX(-50%); |
|
bottom: -26rpx; |
|
width: 74rpx; |
|
height: 10rpx; |
|
border-radius: 6rpx; |
|
} |
|
} |
|
} |
|
|
|
.TypeBox { |
|
.Unit { |
|
margin-right: 108rpx; |
|
|
|
.Point { |
|
width: 46rpx; |
|
height: 46rpx; |
|
} |
|
|
|
.Border { |
|
width: 46rpx; |
|
height: 46rpx; |
|
border: 4rpx solid #B3BACB; |
|
} |
|
} |
|
} |
|
|
|
.InputBox { |
|
.Input { |
|
height: 110rpx; |
|
border-radius: 56rpx; |
|
|
|
.CodeBox { |
|
text { |
|
line-height: 110rpx; |
|
} |
|
} |
|
|
|
.Num { |
|
width: 110rpx; |
|
border-right: 4rpx solid #DADADA; |
|
margin-top: 34rpx; |
|
} |
|
|
|
.Input1 { |
|
width: calc(100% - 260rpx); |
|
} |
|
|
|
.Input2 { |
|
width: calc(100% - 120rpx); |
|
} |
|
} |
|
} |
|
|
|
.Agree { |
|
.Point { |
|
width: 34rpx; |
|
height: 34rpx; |
|
} |
|
|
|
.Border { |
|
width: 34rpx; |
|
height: 34rpx; |
|
border: 2rpx solid #B3BACB; |
|
} |
|
} |
|
|
|
.Btn { |
|
margin-top: 196rpx; |
|
height: 108rpx; |
|
background: linear-gradient(90deg, #0064FF 0%, #2D99FD 100%); |
|
box-shadow: 0rpx 6rpx 10rpx 0rpx rgba(194, 218, 255, 1); |
|
border-radius: 54rpx; |
|
line-height: 108rpx; |
|
} |
|
} |
|
} |
|
</style> |