<template> <view class="content"> <view class="top"> <!-- <view class="touxiang"> <image src="../../static/logo.png" mode=""></image> </view> --> <view class="dalan">你好,</view> <view class="dalan">欢迎登陆商户端</view> <view class="box-box"> <!-- <view class="bb-top" v-if="shopinfo == 0" @click="shopinfo = 1"> <view class="bb-bai"> <text>商户登录</text> </view> <view class="bb-hui"> <text>员工登录</text> </view> </view> <view class="bb-top" v-if="shopinfo == 1" @click="shopinfo = 0"> <view class="bb-hui"> <text>商户登录</text> </view> <view class="bb-bai"> <text>员工登录</text> </view> </view> --> <view class="bb-top" > <view class="bb-bai" :class="{'shendu' : shopinfo == 0}" @click="shopinfo = 0"> <text>商户登录</text> </view> <view class="bb-bai" :class="{'shendu' : shopinfo == 1}" @click="shopinfo = 1"> <text>官方登录</text> </view> <view class="bb-bai" :class="{'shendu' : shopinfo == 2}" @click="shopinfo = 2"> <text>员工登录</text> </view> </view> <view class="bb-baibox"> <view class="inputs" v-if="activeid == 0"> <input type="text" v-model="tel" placeholder="请输入手机号"> </view> <view class="inputs" v-if="activeid == 1"> <input type="text" v-model="tel" placeholder="请输入手机号"> </view> <view class="inputs" style="justify-content: space-between; " v-if="activeid == 1"> <input type="text" v-model="yzm" placeholder="请输入验证码"> <button class="jsq" :disabled="isButtonDisabled" @click="sendVerificationCode">{{ buttonText }}</button> </view> <view class="inputs" v-if="activeid == 0"> <input type="password" v-model="wrod" placeholder="请输入密码"> </view> <view class="twotap" > <view :class="{'blck':activeid == index}" v-for="(item,index) in qh " :key="index" @click="getxz(index)">{{item.text}}</view> <view @click="getxz1()">忘记密码</view> </view> <view class="anniulanan" @click="getlogin()"> <text>登录</text> </view> </view> </view> </view> <view class="dbottom"> <view class="axquan" v-if="yd == false" @click="yd = true"></view> <view class="axquanl" v-if="yd == true" @click="yd = false"> <uni-icons type="checkmarkempty" color="#ffffff" size="14"></uni-icons> </view> <text>请您认真阅读</text> <text class="lan">《用户协议》</text> <text>和</text> <text class="lan">《隐私政策》</text> </view> </view> </template> <script> import request from '../../utils/request'; import {setToken,setTenantId, getToken} from '@/utils/auth.js' import { getTenantIdByWebsite } from '@/api/login.js' export default{ data(){ return{ phoneNumber: "", shopinfo:0, yd:false, isButtonDisabled: false, countdownTime: 60, qh:[ {text:'密码登录'}, {text:'验证码登录'}, // {text:'忘记密码'} ], tel:'', yzm:'', wrod:'', activeid:0, tenantCode: 'lanan' } }, mounted(){ getTenantIdByWebsite(this.tenantCode).then(res => { const tenantId = res.data; if (tenantId && tenantId >= 0) { setTenantId(tenantId) } }) }, onLoad() { }, computed: { buttonText() { if (this.isButtonDisabled) { return `${this.countdownTime}s 后重新发送`; } else { return "获取验证码"; } }, }, methods:{ //登录请求 getlogin(){ if(this.yd == false){ uni.showToast({ title:'请仔细阅读用户协议与隐私政策!', icon:'none' }) return } if(this.tel == ''){ uni.showToast({ title:'输入框不能为空!', icon:'none' }) return } if(this.activeid == 0){ const data ={ username:this.tel, password:this.wrod, type:0 } request({ url: '/rescue/loginJcApp', method: 'post', data: data }).then((res)=>{ console.log('密码请求',res); if(res.code == 200){ setToken(res.data.accessToken) this.userinfo() } }) } if(this.activeid == 1){ const data ={ phone:this.tel, code:this.yzm, type:1 } request({ url: '/rescue/loginApp', method: 'post', data: data }).then((res)=>{ console.log('验证码请求',res); if(res.code == 200){ setToken(res.data.accessToken) this.userinfo() } }) } }, userinfo(){ uni.setStorageSync("chooseIdx",this.shopinfo) if(this.shopinfo == 0){ uni.showLoading({ title: '加载中' }); console.log('商户'); request({ url: '/getJcPartnerInfo', method: 'get', }).then((res)=>{ if(res.code == 500){ uni.showToast({ title:"信息有误" }) return } if(res.code == 200){ uni.setStorageSync('userinfo',res.user) uni.setStorageSync('roleSelect','shop') uni.hideLoading(); this.goselect() } }) } if(this.shopinfo == 2){ uni.showLoading({ title: '加载中' }); console.log('员工'); request({ url: '/getJcWorkerInfo', method: 'get', }).then((res)=>{ if(res.code == 200){ uni.setStorageSync('staffinfo',res.user) uni.setStorageSync('partnerId',res.partnerInfo.partnerId) uni.setStorageSync('roleSelect','worker') uni.hideLoading(); uni.redirectTo({ url:'/pages/staff/staff' }) } }) } if(this.shopinfo == 1){ uni.showLoading({ title: '加载中' }); console.log('官方'); request({ url: '/rescue/getJcgfInfo', method: 'get', }).then((res)=>{ if(res.code == 200){ // uni.setStorageSync('staffinfo',res.user) // uni.setStorageSync('partnerId',res.partnerInfo.partnerId) uni.setStorageSync('roleSelect','jcgf') uni.setStorageSync('userinfo',res.user) console.log(res); uni.hideLoading(); uni.redirectTo({ url:'/pages/authority/authority' }) } }) } }, getxz(index){ this.activeid = index }, getxz1(){ uni.navigateTo({ url:'/pages/Login/modify' }) }, goregister(){ uni.navigateTo({ url:'/pages/login/register' }) }, goforgot(){ uni.navigateTo({ url:'/pages/login/forgot' }) }, goselect(){ console.log('执行'); uni.reLaunch({ url:'/pages/index/synthesis' }) }, // 验证码方法 sendVerificationCode() { let reg = /^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$/; if (!reg.test(this.tel)) { uni.showToast({ icon: 'none', title: '请输入正确的11位手机号' }) this.tel = ''; return false; } if (this.isButtonDisabled) { return; // 如果按钮已禁用,则直接返回 } const data = { phone:this.tel, } request({ url: '/loginSmsCode', method: 'post', params: data }).then((res)=>{ console.log('验证码',res); if(res.code == 200){ uni.showToast({ title:'验证码已发送 请注意查收', icon:'none' }) }else{ uni.showToast({ title:'网络不佳请稍后再试', icon:'none' }) } }) this.disableButton(); // 禁用按钮 this.startCountdown(); // 启动倒计时 }, disableButton() { this.isButtonDisabled = true; }, enableButton() { this.isButtonDisabled = false; }, startCountdown() { let countdown = setInterval(() => { this.countdownTime--; if (this.countdownTime === 0) { clearInterval(countdown); this.enableButton(); // 启用按钮 } }, 1000); }, } } </script> <style scoped lang="scss"> .jsq{ border: none !important; font-size: 12px; height: 30px; font-weight: 400; color: #0078FF; } button { border: none !important; background: none !important; margin: 0px; display: block; } button:focus { color: #0078FF; outline: none; box-shadow: none; } .content{ box-sizing: border-box; background: linear-gradient(180deg, rgba(13,46,141,0.2) 0%, rgba(255,255,255,0) 100%); } .top{ box-sizing: border-box; padding: 0px 27px; padding-top: 100px; // background-color:lightseagreen; background-image: url('../../static/detection/loginbj.png'); background-size: cover; // background-position: center; width: 100%; height: calc(100vh); } .touxiang{ width: 88px; height: 88px; border-radius: 10px; background: #D7D7D7; margin: 0 auto; margin-bottom: 40px; overflow: hidden; image{ width: 100%; height: 100%; } } .twotap{ margin-top: 10px; width: 100%; display: flex; align-items: center; view{ font-size: 12px; font-family: Microsoft YaHei; font-weight: 400; color: #666666; margin-right: 38.5px; } } .blck{ color: #333333 !important; font-weight: bold !important; } .inputs{ height: 54px; box-sizing: border-box; padding: 16px 0px; display: flex; align-items: center; border-bottom: 2px solid #E8E8E8 ; // margin-top: 20px; } .wjworb{ margin-top: 5px; width: 100%; display: flex; font-size: 12px; color: #0078FF; justify-content: flex-end; align-items: center; } .dl{ width: 90%; height: 44px; background: linear-gradient(-46deg, #0853C4 0%, #4282D8 80%); border-radius: 5px; margin: 0 auto; font-size: 16px; color: #FFFFFF; display: flex; justify-content: center; align-items: center; margin-top: 22px; } .hging{ width: 100%; text-align: center; font-size: 14px; font-weight: 400; color: #636363; margin-top: 20px; } .wx{ width: 38px; height: 38px; overflow: hidden; box-sizing: border-box; margin: 0px auto; margin-top: 20px; image{ width: 100%; height: 100%; } } .hui{ font-size: 10px; width: 100%; text-align: center; font-weight: 400; color: #666666; } .dbottom{ display: flex; align-items: center; justify-content: center; width: 100%; text-align: center; font-size: 12px; color: #333333; margin-top: 40px; position: fixed; bottom: 25px; } .lan{ color: #0D2E8D; } .box-box{ width: 95%; margin: 20px auto; border-radius: 8px; overflow: hidden; } .bb-top{ height: 55px; width: 100%; display: flex; align-items: center; justify-content: space-between; background: #FFFFFF; } .bb-bai{ width: 33%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 17px; font-weight: bold; background: #FFFFFF; // color: #0D2E8D; color: #B5BACA; } .shendu{ color: #0D2E8D !important; } .bb-hui{ height: 100%; width: 50%; display: flex; align-items: center; justify-content: center; background: #B5BACA; font-size: 17px; font-weight: 400; color: #FFFFFF; } .bb-baibox{ box-sizing: border-box; width: 100%; padding: 15px; background-color: white; } .anniulanan{ width: 90%; height: 42px; margin: 20px auto; display: flex; align-items: center; justify-content: center; border-radius: 50px; background-color: #0D2E8D; color: white; } .dalan{ font-size: 25px; font-weight: bold; color: #0D2E8D; margin-left: 10px; } .axquan{ width: 14px; height: 14px; border-radius: 50%; border: 1px solid #AAAAAA; margin-right: 5px; } .axquanl{ width: 14px; height: 14px; border-radius: 50%; border: 1px solid #AAAAAA; margin-right: 5px; background-color: #0D2E8D; } </style>