|
|
|
|
@ -11,76 +11,40 @@
|
|
|
|
|
</view>
|
|
|
|
|
<div class="main">
|
|
|
|
|
<view class="form">
|
|
|
|
|
<uv-form
|
|
|
|
|
labelAlign="right"
|
|
|
|
|
labelWidth="50"
|
|
|
|
|
labelPosition="top"
|
|
|
|
|
:model="userInfo"
|
|
|
|
|
:rules="rules"
|
|
|
|
|
ref="form"
|
|
|
|
|
>
|
|
|
|
|
<uv-form labelAlign="right" labelWidth="50" labelPosition="top" :model="userInfo" :rules="rules"
|
|
|
|
|
ref="form">
|
|
|
|
|
<uv-form-item prop="phone">
|
|
|
|
|
<div class="formLabel">
|
|
|
|
|
<img class="img" src="/static/imgs/phone.png" alt="" />
|
|
|
|
|
手机号
|
|
|
|
|
</div>
|
|
|
|
|
<uv-input
|
|
|
|
|
v-model="userInfo.phone"
|
|
|
|
|
color="#000"
|
|
|
|
|
border="bottom"
|
|
|
|
|
:placeholderStyle="{ color: '#666778' }"
|
|
|
|
|
placeholder="请输入用户名"
|
|
|
|
|
></uv-input>
|
|
|
|
|
<uv-input v-model="userInfo.phone" color="#000" border="bottom"
|
|
|
|
|
:placeholderStyle="{ color: '#666778' }" placeholder="请输入用户名"></uv-input>
|
|
|
|
|
</uv-form-item>
|
|
|
|
|
<uv-form-item prop="password">
|
|
|
|
|
<div class="formLabel">
|
|
|
|
|
<img class="img" src="/static/imgs/code.png" alt="" />
|
|
|
|
|
验证码
|
|
|
|
|
</div>
|
|
|
|
|
<uv-input
|
|
|
|
|
v-model="userInfo.password"
|
|
|
|
|
color="#000"
|
|
|
|
|
border="bottom"
|
|
|
|
|
:placeholderStyle="{ color: '#666778' }"
|
|
|
|
|
placeholder="请输入验证码"
|
|
|
|
|
>
|
|
|
|
|
<uv-input v-model="userInfo.password" color="#000" border="bottom"
|
|
|
|
|
:placeholderStyle="{ color: '#666778' }" placeholder="请输入验证码">
|
|
|
|
|
<template v-slot:suffix>
|
|
|
|
|
<uv-code
|
|
|
|
|
ref="codeRef"
|
|
|
|
|
@change="codeChange"
|
|
|
|
|
seconds="20"
|
|
|
|
|
changeText="X秒重新获取"
|
|
|
|
|
></uv-code>
|
|
|
|
|
<uv-code ref="codeRef" @change="codeChange" seconds="20" changeText="X秒重新获取"></uv-code>
|
|
|
|
|
<text style="color: #4d82fd" @click="getCode">{{ tips }}</text>
|
|
|
|
|
</template>
|
|
|
|
|
</uv-input>
|
|
|
|
|
</uv-form-item>
|
|
|
|
|
</uv-form>
|
|
|
|
|
</view>
|
|
|
|
|
<uv-button
|
|
|
|
|
@click="login"
|
|
|
|
|
customStyle="margin-top:30px"
|
|
|
|
|
text="登录"
|
|
|
|
|
color="#3F70FF"
|
|
|
|
|
></uv-button>
|
|
|
|
|
<uv-button @click="login" customStyle="margin-top:30px" text="登录" color="#3F70FF"></uv-button>
|
|
|
|
|
<div class="wechatBox" v-if="showWechatLogin">
|
|
|
|
|
<uv-divider text="第三方登录"></uv-divider>
|
|
|
|
|
<uv-icon
|
|
|
|
|
name="weixin-circle-fill"
|
|
|
|
|
color="#5fc157"
|
|
|
|
|
size="50"
|
|
|
|
|
@click="wechatLogin"
|
|
|
|
|
></uv-icon>
|
|
|
|
|
<uv-icon name="weixin-circle-fill" color="#5fc157" size="50" @click="wechatLogin"></uv-icon>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 微信登录绑定手机号弹窗 -->
|
|
|
|
|
<uv-popup
|
|
|
|
|
ref="popup"
|
|
|
|
|
mode="center"
|
|
|
|
|
:closeOnClickOverlay="false"
|
|
|
|
|
:round="10"
|
|
|
|
|
>
|
|
|
|
|
<uv-popup ref="popup" mode="center" :closeOnClickOverlay="false" :round="10">
|
|
|
|
|
<view class="bind-phone-modal">
|
|
|
|
|
<view class="modal-header">
|
|
|
|
|
<view class="modal-title">绑定手机号</view>
|
|
|
|
|
@ -88,37 +52,17 @@
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
<view class="modal-form">
|
|
|
|
|
<uv-form
|
|
|
|
|
:model="bindPhoneInfo"
|
|
|
|
|
:rules="bindPhoneRules"
|
|
|
|
|
ref="bindPhoneForm"
|
|
|
|
|
>
|
|
|
|
|
<uv-form :model="bindPhoneInfo" :rules="bindPhoneRules" ref="bindPhoneForm">
|
|
|
|
|
<uv-form-item prop="phone">
|
|
|
|
|
<uv-input
|
|
|
|
|
v-model="bindPhoneInfo.phone"
|
|
|
|
|
placeholder="请输入手机号"
|
|
|
|
|
type="number"
|
|
|
|
|
maxlength="11"
|
|
|
|
|
border="surround"
|
|
|
|
|
></uv-input>
|
|
|
|
|
<uv-input v-model="bindPhoneInfo.phone" placeholder="请输入手机号" type="number" maxlength="11"
|
|
|
|
|
border="surround"></uv-input>
|
|
|
|
|
</uv-form-item>
|
|
|
|
|
<uv-form-item prop="code">
|
|
|
|
|
<uv-input
|
|
|
|
|
v-model="bindPhoneInfo.code"
|
|
|
|
|
placeholder="请输入验证码"
|
|
|
|
|
border="surround"
|
|
|
|
|
>
|
|
|
|
|
<uv-input v-model="bindPhoneInfo.code" placeholder="请输入验证码" border="surround">
|
|
|
|
|
<template v-slot:suffix>
|
|
|
|
|
<uv-code
|
|
|
|
|
ref="bindCodeRef"
|
|
|
|
|
@change="bindCodeChange"
|
|
|
|
|
seconds="60"
|
|
|
|
|
changeText="X秒重新获取"
|
|
|
|
|
></uv-code>
|
|
|
|
|
<text
|
|
|
|
|
style="color: #4d82fd; font-size: 12px"
|
|
|
|
|
@click="getBindCode"
|
|
|
|
|
>
|
|
|
|
|
<uv-code ref="bindCodeRef" @change="bindCodeChange" seconds="60"
|
|
|
|
|
changeText="X秒重新获取"></uv-code>
|
|
|
|
|
<text style="color: #4d82fd; font-size: 12px" @click="getBindCode">
|
|
|
|
|
{{ bindCodeTips }}
|
|
|
|
|
</text>
|
|
|
|
|
</template>
|
|
|
|
|
@ -135,11 +79,7 @@
|
|
|
|
|
>
|
|
|
|
|
取消
|
|
|
|
|
</uv-button> -->
|
|
|
|
|
<uv-button
|
|
|
|
|
type="primary"
|
|
|
|
|
@click="confirmBindPhone"
|
|
|
|
|
:loading="bindingPhone"
|
|
|
|
|
>
|
|
|
|
|
<uv-button type="primary" @click="confirmBindPhone" :loading="bindingPhone">
|
|
|
|
|
确认绑定
|
|
|
|
|
</uv-button>
|
|
|
|
|
</view>
|
|
|
|
|
@ -149,38 +89,45 @@
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import { ref, onMounted } from "vue";
|
|
|
|
|
import {
|
|
|
|
|
import {
|
|
|
|
|
ref,
|
|
|
|
|
onMounted
|
|
|
|
|
} from "vue";
|
|
|
|
|
import {
|
|
|
|
|
HOME_PATH,
|
|
|
|
|
LOGIN_PATH,
|
|
|
|
|
isTabBarPath,
|
|
|
|
|
removeQueryString,
|
|
|
|
|
} from "@/router";
|
|
|
|
|
import { useAuthStore, useUserStore } from "@/store";
|
|
|
|
|
import { onLoad } from "@dcloudio/uni-app";
|
|
|
|
|
|
|
|
|
|
import RPC from "@/utils/request";
|
|
|
|
|
|
|
|
|
|
const authStore = useAuthStore();
|
|
|
|
|
const userStore = useUserStore();
|
|
|
|
|
|
|
|
|
|
// 环境判断
|
|
|
|
|
const showWechatLogin = ref(false);
|
|
|
|
|
|
|
|
|
|
// 微信登录绑定手机号相关
|
|
|
|
|
// const showBindPhoneModal = ref(false);
|
|
|
|
|
const popup = ref(null);
|
|
|
|
|
const bindingPhone = ref(false);
|
|
|
|
|
const bindCodeTips = ref("获取验证码");
|
|
|
|
|
const bindCodeRef = ref(null);
|
|
|
|
|
const bindPhoneForm = ref(null);
|
|
|
|
|
const bindPhoneInfo = ref({
|
|
|
|
|
} from "@/router";
|
|
|
|
|
import {
|
|
|
|
|
useAuthStore,
|
|
|
|
|
useUserStore
|
|
|
|
|
} from "@/store";
|
|
|
|
|
import {
|
|
|
|
|
onLoad
|
|
|
|
|
} from "@dcloudio/uni-app";
|
|
|
|
|
|
|
|
|
|
import RPC from "@/utils/request";
|
|
|
|
|
|
|
|
|
|
const authStore = useAuthStore();
|
|
|
|
|
const userStore = useUserStore();
|
|
|
|
|
|
|
|
|
|
// 环境判断
|
|
|
|
|
const showWechatLogin = ref(false);
|
|
|
|
|
|
|
|
|
|
// 微信登录绑定手机号相关
|
|
|
|
|
// const showBindPhoneModal = ref(false);
|
|
|
|
|
const popup = ref(null);
|
|
|
|
|
const bindingPhone = ref(false);
|
|
|
|
|
const bindCodeTips = ref("获取验证码");
|
|
|
|
|
const bindCodeRef = ref(null);
|
|
|
|
|
const bindPhoneForm = ref(null);
|
|
|
|
|
const bindPhoneInfo = ref({
|
|
|
|
|
phone: "",
|
|
|
|
|
code: "",
|
|
|
|
|
});
|
|
|
|
|
const bindPhoneRules = ref({
|
|
|
|
|
phone: [
|
|
|
|
|
{
|
|
|
|
|
});
|
|
|
|
|
const bindPhoneRules = ref({
|
|
|
|
|
phone: [{
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请输入手机号",
|
|
|
|
|
trigger: ["blur", "change"],
|
|
|
|
|
@ -196,14 +143,14 @@ const bindPhoneRules = ref({
|
|
|
|
|
message: "请输入验证码",
|
|
|
|
|
trigger: ["blur", "change"],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const tips = ref("获取验证码");
|
|
|
|
|
const codeChange = (text) => {
|
|
|
|
|
const tips = ref("获取验证码");
|
|
|
|
|
const codeChange = (text) => {
|
|
|
|
|
tips.value = text;
|
|
|
|
|
};
|
|
|
|
|
const codeRef = ref(null);
|
|
|
|
|
const getCode = () => {
|
|
|
|
|
};
|
|
|
|
|
const codeRef = ref(null);
|
|
|
|
|
const getCode = () => {
|
|
|
|
|
if (!userInfo.phone) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "请填写手机号",
|
|
|
|
|
@ -232,41 +179,40 @@ const getCode = () => {
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const form = ref(null);
|
|
|
|
|
const userInfo = ref({
|
|
|
|
|
const form = ref(null);
|
|
|
|
|
const userInfo = ref({
|
|
|
|
|
phone: "",
|
|
|
|
|
password: "",
|
|
|
|
|
});
|
|
|
|
|
const rules = ref({
|
|
|
|
|
phone: [
|
|
|
|
|
{
|
|
|
|
|
});
|
|
|
|
|
const rules = ref({
|
|
|
|
|
phone: [{
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请输入手机号",
|
|
|
|
|
trigger: ["blur", "change"],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
pattern: /^1[3-9]\d{9}$/,
|
|
|
|
|
message: "请输入正确的手机号",
|
|
|
|
|
trigger: ["blur", "change"],
|
|
|
|
|
},
|
|
|
|
|
// {
|
|
|
|
|
// pattern: /^1[3-9]\d{9}$/,
|
|
|
|
|
// message: "请输入正确的手机号",
|
|
|
|
|
// trigger: ["blur", "change"],
|
|
|
|
|
// },
|
|
|
|
|
],
|
|
|
|
|
password: {
|
|
|
|
|
required: true,
|
|
|
|
|
message: "请填写验证码",
|
|
|
|
|
trigger: ["blur", "change"],
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
let redirect = HOME_PATH;
|
|
|
|
|
onLoad((options) => {
|
|
|
|
|
});
|
|
|
|
|
let redirect = HOME_PATH;
|
|
|
|
|
onLoad((options) => {
|
|
|
|
|
if (options.redirect && removeQueryString(options.redirect) !== LOGIN_PATH) {
|
|
|
|
|
redirect = decodeURIComponent(options.redirect);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 检查运行环境
|
|
|
|
|
const checkEnvironment = () => {
|
|
|
|
|
// 检查运行环境
|
|
|
|
|
const checkEnvironment = () => {
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
// 微信小程序环境
|
|
|
|
|
showWechatLogin.value = true;
|
|
|
|
|
@ -283,10 +229,10 @@ const checkEnvironment = () => {
|
|
|
|
|
// App环境,不显示微信登录
|
|
|
|
|
showWechatLogin.value = false;
|
|
|
|
|
// #endif
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 微信登录
|
|
|
|
|
const wechatLogin = () => {
|
|
|
|
|
// 微信登录
|
|
|
|
|
const wechatLogin = () => {
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
|
|
// 微信小程序登录
|
|
|
|
|
// uni.login({
|
|
|
|
|
@ -333,10 +279,10 @@ const wechatLogin = () => {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 获取绑定手机号验证码
|
|
|
|
|
const getBindCode = () => {
|
|
|
|
|
// 获取绑定手机号验证码
|
|
|
|
|
const getBindCode = () => {
|
|
|
|
|
if (!bindPhoneInfo.value.phone) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "请输入手机号",
|
|
|
|
|
@ -392,15 +338,15 @@ const getBindCode = () => {
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 绑定验证码倒计时回调
|
|
|
|
|
const bindCodeChange = (text) => {
|
|
|
|
|
// 绑定验证码倒计时回调
|
|
|
|
|
const bindCodeChange = (text) => {
|
|
|
|
|
bindCodeTips.value = text;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// H5微信登录方法
|
|
|
|
|
const wechatH5Login = () => {
|
|
|
|
|
// H5微信登录方法
|
|
|
|
|
const wechatH5Login = () => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
// 构建微信授权URL
|
|
|
|
|
const appId = "YOUR_WECHAT_APP_ID"; // 替换为你的微信公众号AppID
|
|
|
|
|
@ -419,7 +365,8 @@ const wechatH5Login = () => {
|
|
|
|
|
handleWechatH5Callback(code);
|
|
|
|
|
} else {
|
|
|
|
|
// 跳转到微信授权页面
|
|
|
|
|
const authUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;
|
|
|
|
|
const authUrl =
|
|
|
|
|
`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${redirectUri}&response_type=code&scope=${scope}&state=${state}#wechat_redirect`;
|
|
|
|
|
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: "正在跳转微信授权...",
|
|
|
|
|
@ -429,10 +376,10 @@ const wechatH5Login = () => {
|
|
|
|
|
window.location.href = authUrl;
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 处理微信H5授权回调
|
|
|
|
|
const handleWechatH5Callback = async (code) => {
|
|
|
|
|
// 处理微信H5授权回调
|
|
|
|
|
const handleWechatH5Callback = async (code) => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
try {
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
@ -464,8 +411,7 @@ const handleWechatH5Callback = async (code) => {
|
|
|
|
|
const url = new URL(window.location);
|
|
|
|
|
url.searchParams.delete("code");
|
|
|
|
|
url.searchParams.delete("state");
|
|
|
|
|
window.history.replaceState(
|
|
|
|
|
{},
|
|
|
|
|
window.history.replaceState({},
|
|
|
|
|
document.title,
|
|
|
|
|
url.pathname + url.search
|
|
|
|
|
);
|
|
|
|
|
@ -479,10 +425,10 @@ const handleWechatH5Callback = async (code) => {
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 初始化微信JS-SDK(可选,用于更高级的功能)
|
|
|
|
|
const initWechatJSSDK = () => {
|
|
|
|
|
// 初始化微信JS-SDK(可选,用于更高级的功能)
|
|
|
|
|
const initWechatJSSDK = () => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
// 如果需要使用微信JS-SDK的其他功能,可以在这里初始化
|
|
|
|
|
// 需要先引入微信JS-SDK:https://res.wx.qq.com/open/js/jweixin-1.6.0.js
|
|
|
|
|
@ -506,10 +452,10 @@ const initWechatJSSDK = () => {
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// #endif
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 确认绑定手机号
|
|
|
|
|
const confirmBindPhone = async () => {
|
|
|
|
|
// 确认绑定手机号
|
|
|
|
|
const confirmBindPhone = async () => {
|
|
|
|
|
try {
|
|
|
|
|
await bindPhoneForm.value.validate();
|
|
|
|
|
|
|
|
|
|
@ -549,19 +495,19 @@ const confirmBindPhone = async () => {
|
|
|
|
|
console.error("绑定手机号失败:", error);
|
|
|
|
|
bindingPhone.value = false;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// 关闭绑定手机号弹窗
|
|
|
|
|
const closeBindPhoneModal = () => {
|
|
|
|
|
// 关闭绑定手机号弹窗
|
|
|
|
|
const closeBindPhoneModal = () => {
|
|
|
|
|
popup.value.close();
|
|
|
|
|
bindPhoneInfo.value = {
|
|
|
|
|
phone: "",
|
|
|
|
|
code: "",
|
|
|
|
|
};
|
|
|
|
|
bindCodeTips.value = "获取验证码";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const login = async () => {
|
|
|
|
|
const login = async () => {
|
|
|
|
|
await form.value.validate();
|
|
|
|
|
console.log(userInfo.value);
|
|
|
|
|
// RPC.post('/account/login', {
|
|
|
|
|
@ -580,16 +526,37 @@ const login = async () => {
|
|
|
|
|
// url: redirect,
|
|
|
|
|
// });
|
|
|
|
|
// })
|
|
|
|
|
authStore.setAccessToken("accessToken");
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
RPC.post('/login', {
|
|
|
|
|
username: userInfo.value.phone,
|
|
|
|
|
password: userInfo.value.password,
|
|
|
|
|
}, {
|
|
|
|
|
custom: {
|
|
|
|
|
loading: true,
|
|
|
|
|
loadingText: '正在登录...'
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
authStore.setAccessToken(res.token);
|
|
|
|
|
RPC.post('/user/info', {
|
|
|
|
|
token: res.token,
|
|
|
|
|
})
|
|
|
|
|
.then((res) => {
|
|
|
|
|
userStore.setUserInfo(res)
|
|
|
|
|
uni.$uv.route({
|
|
|
|
|
type: isTabBarPath(redirect) ? "switchTab" : "redirectTo",
|
|
|
|
|
url: redirect,
|
|
|
|
|
});
|
|
|
|
|
}, 800);
|
|
|
|
|
};
|
|
|
|
|
})
|
|
|
|
|
.finally(() => {
|
|
|
|
|
loading.value = false
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
.catch(() => {
|
|
|
|
|
loading.value = false
|
|
|
|
|
})
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
checkEnvironment();
|
|
|
|
|
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
@ -603,19 +570,17 @@ onMounted(() => {
|
|
|
|
|
// 可选:初始化微信JS-SDK
|
|
|
|
|
// initWechatJSSDK();
|
|
|
|
|
// #endif
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.container {
|
|
|
|
|
.container {
|
|
|
|
|
height: 100vh;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
background: linear-gradient(
|
|
|
|
|
124.92deg,
|
|
|
|
|
background: linear-gradient(124.92deg,
|
|
|
|
|
rgba(77, 130, 253, 1) 7.66%,
|
|
|
|
|
rgba(85, 184, 254, 1) 89.55%
|
|
|
|
|
);
|
|
|
|
|
rgba(85, 184, 254, 1) 89.55%);
|
|
|
|
|
|
|
|
|
|
.header {
|
|
|
|
|
height: 15vh;
|
|
|
|
|
@ -636,16 +601,19 @@ onMounted(() => {
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
border-radius: 20px 20px 0 0;
|
|
|
|
|
padding: 7vw;
|
|
|
|
|
|
|
|
|
|
.formLabel {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 4px;
|
|
|
|
|
|
|
|
|
|
.img {
|
|
|
|
|
width: 20px;
|
|
|
|
|
height: 20px;
|
|
|
|
|
margin-right: 6px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.wechatBox {
|
|
|
|
|
position: fixed;
|
|
|
|
|
width: 100%;
|
|
|
|
|
@ -665,9 +633,9 @@ onMounted(() => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.bind-phone-modal {
|
|
|
|
|
.bind-phone-modal {
|
|
|
|
|
width: 320px;
|
|
|
|
|
padding: 24px;
|
|
|
|
|
|
|
|
|
|
@ -704,14 +672,14 @@ onMounted(() => {
|
|
|
|
|
flex: 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.wechatBox {
|
|
|
|
|
.wechatBox {
|
|
|
|
|
.uv-divider {
|
|
|
|
|
margin-bottom: 30px;
|
|
|
|
|
width: 90%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|