|
@@ -0,0 +1,822 @@
|
|
|
+<script setup lang="ts">
|
|
|
+import * as baseInfo from "@/api/record";
|
|
|
+import { baseIMGUrl } from "@/api/request";
|
|
|
+import { ref } from "vue";
|
|
|
+import TabBarTopHome from "@/components/TabBarTopHome.vue";
|
|
|
+
|
|
|
+import { LogonApi } from "@/api/api/login/index";
|
|
|
+import { MineApi } from "@/api/api/mine/index";
|
|
|
+import { onLoad, onShow } from "@dcloudio/uni-app";
|
|
|
+import TabBar from "@/components/TabBar.vue";
|
|
|
+
|
|
|
+const userInfo = ref({} as any);
|
|
|
+const noLogin = ref(true);
|
|
|
+
|
|
|
+const isMessage = ref(false);
|
|
|
+const messageText = ref("");
|
|
|
+const defaultHeadUrl = ref(
|
|
|
+ "https://houseoss.4dkankan.com/project/bjfljtl/img/bottomInco/defaultHead.png"
|
|
|
+);
|
|
|
+
|
|
|
+const top = uni.getMenuButtonBoundingClientRect().top;
|
|
|
+const height = uni.getMenuButtonBoundingClientRect().height;
|
|
|
+
|
|
|
+// 提交留言信息
|
|
|
+const submitMessage = async () => {
|
|
|
+ if (messageText.value.length < 5 || messageText.value.length > 200) {
|
|
|
+ uni.showToast({
|
|
|
+ title: "请输入5-200字!",
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ const res: any = await MineApi.submitMeg(
|
|
|
+ messageText.value,
|
|
|
+ userInfo.value.nickName
|
|
|
+ );
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ isMessage.value = false;
|
|
|
+ uni.showToast({
|
|
|
+ title: "留言成功",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const others = ref([] as any);
|
|
|
+
|
|
|
+// const others = [
|
|
|
+// {
|
|
|
+// name: "大众点评",
|
|
|
+// icon: "https://hbimg.b0.upaiyun.com/2736424c8c107adaf0917de571b2dfb48b76555514d3d-gUTXtZ_fw658",
|
|
|
+// appid: "wx734c1ad7b3562129",
|
|
|
+// path: "packages/trip/mpvue-pages/pages/poi/poi?poiId=FnKeGux84asrPKr6&shopuuid=FnKeGux84asrPKr6&mode=subpackage&from=list",
|
|
|
+// },
|
|
|
+// {
|
|
|
+// name: "携程",
|
|
|
+// icon: "https://down.51rc.com/imagefolder/Logo/L11040000/11037518_b20190326102751.gif",
|
|
|
+// appid: "wx0e6ed4f51db9d078",
|
|
|
+// path: "pages/gs/sight/newDetail?sightId=1487166&fcpGUID=fcp_navigateTo_5&pubRouteBegin=1688348640703",
|
|
|
+// },
|
|
|
+// ];
|
|
|
+
|
|
|
+const contentTotleNum = ref(0);
|
|
|
+const antiqueTotleNum = ref(0);
|
|
|
+
|
|
|
+// 获取文物收藏totle数
|
|
|
+const antiqueTotle = async () => {
|
|
|
+ const res: any = await MineApi.getGoodstList(PageListInfo.value);
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ antiqueTotleNum.value = res.data.data.total;
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: res.data.msg,
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 获取内容收藏totle数
|
|
|
+const contentTotle = async () => {
|
|
|
+ const res: any = await MineApi.getContentList(PageListInfo);
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ contentTotleNum.value = res.data.data.total;
|
|
|
+ } else {
|
|
|
+ uni.showToast({
|
|
|
+ title: res.data.msg,
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const goTo = async (path: String) => {
|
|
|
+ const ress: any = await MineApi.checkToken();
|
|
|
+ if (ress.data.data) {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: path,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ console.log("输出mineNow");
|
|
|
+
|
|
|
+ uni.showToast({
|
|
|
+ title: "身份过期,请重新登录",
|
|
|
+ icon: "none",
|
|
|
+ });
|
|
|
+ uni.removeStorage({
|
|
|
+ key: "JTL_token",
|
|
|
+ });
|
|
|
+ uni.removeStorage({
|
|
|
+ key: "JTL_userInfo",
|
|
|
+ });
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.reLaunch({
|
|
|
+ url: "/pages/mine/index",
|
|
|
+ });
|
|
|
+ }, 1000);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const isShowCode = ref(false);
|
|
|
+const codePath = ref("");
|
|
|
+const goToMini = (app: String, path: String) => {
|
|
|
+ // 抖音和小红书,直接打开图片让用户保存图片
|
|
|
+
|
|
|
+ console.log(app, path);
|
|
|
+ if (app == "other") {
|
|
|
+ // codePath.value = path
|
|
|
+ // isShowCode.value = true
|
|
|
+ // uni.showToast({
|
|
|
+ // title: '保存图片到相册,并打开软件扫一扫',
|
|
|
+ // });
|
|
|
+ uni.previewImage({
|
|
|
+ current: 0,
|
|
|
+ urls: [path],
|
|
|
+ showmenu: true,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ uni.navigateToMiniProgram({
|
|
|
+ appId: app,
|
|
|
+ path: path,
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+// 打开微信授权确认框
|
|
|
+const openUserProfile = () => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ uni.getUserProfile({
|
|
|
+ lang: "zh_CN",
|
|
|
+ desc: "获取你的昵称、头像、地区及性别",
|
|
|
+ success: (res) => {
|
|
|
+ resolve(res);
|
|
|
+ },
|
|
|
+ // 失败回调
|
|
|
+ fail: (err) => {
|
|
|
+ reject(err);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 获得weixin Code
|
|
|
+const getWxCode = () => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ uni.login({
|
|
|
+ success(res) {
|
|
|
+ //这里就是code,可以打印看下
|
|
|
+ resolve(res.code);
|
|
|
+ },
|
|
|
+ fail(err) {
|
|
|
+ reject(err);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 用户名和用户头像
|
|
|
+const userNickName = ref("");
|
|
|
+const userHeadUrl = ref("");
|
|
|
+const userInfoData = ref({} as any);
|
|
|
+
|
|
|
+// 完善信息——头像昵称填写(需要用户手动填入微信信息,微信小程序目前已经不允许API调用的方式获取用户信息)
|
|
|
+const preInfo = () => {
|
|
|
+ // console.log('完善信息')
|
|
|
+ uni.navigateTo({
|
|
|
+ url: "perfectInfo/index",
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const getUserInfo = async () => {
|
|
|
+ const res: any = await MineApi.getUserInfo();
|
|
|
+ console.log();
|
|
|
+};
|
|
|
+
|
|
|
+// 授权触发事件
|
|
|
+const wxLogin = () => {
|
|
|
+ if (noLogin.value) {
|
|
|
+ let p1 = getWxCode();
|
|
|
+ let p2 = openUserProfile();
|
|
|
+ p1.then((code) => {
|
|
|
+ return code;
|
|
|
+ }).then((code) => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ p2.then(async (res: any) => {
|
|
|
+ // userInfoData.value = res.userInfo
|
|
|
+ // // 获得用户名和用户头像
|
|
|
+ userNickName.value = res.userInfo.nickName;
|
|
|
+ userHeadUrl.value = res.userInfo.avatarUrl;
|
|
|
+ resolve({
|
|
|
+ code,
|
|
|
+ iv: res.iv,
|
|
|
+ encryptedData: res.encryptedData,
|
|
|
+ });
|
|
|
+ }).catch((err) => {
|
|
|
+ reject(err);
|
|
|
+ });
|
|
|
+ }).then((res: any) => {
|
|
|
+ // 得到code 拉token
|
|
|
+ LogonApi.login(res.code).then((res: any) => {
|
|
|
+ if (res.data.code === 0) {
|
|
|
+ setTimeout(() => {
|
|
|
+ // 更新用户信息
|
|
|
+ MineApi.updateUser({
|
|
|
+ avatarUrl: userInfoData.value.avatarUrl,
|
|
|
+ city: userInfoData.value.city,
|
|
|
+ country: userInfoData.value.country,
|
|
|
+ gender: userInfoData.value.gender ? "女" : "男",
|
|
|
+ nickName: userInfoData.value.nickName,
|
|
|
+ phone: "",
|
|
|
+ province: userInfoData.value.province,
|
|
|
+ });
|
|
|
+ }, 1000);
|
|
|
+ // 改为登录状态
|
|
|
+ noLogin.value = false;
|
|
|
+ // 存放token
|
|
|
+ uni.setStorageSync("JTL_token", res.data.data.token);
|
|
|
+ // 存放登录用户信息
|
|
|
+ userInfo.value = res.data.data.wxUser;
|
|
|
+ uni.setStorageSync("JTL_userInfo", res.data.data.wxUser);
|
|
|
+
|
|
|
+ antiqueTotle();
|
|
|
+ contentTotle();
|
|
|
+ // 判断头像和用户名是否为空,前往头像手动上传页面
|
|
|
+ if (
|
|
|
+ userInfo.value.nickName == "" ||
|
|
|
+ userInfo.value.avatarUrl == ""
|
|
|
+ ) {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.showToast({
|
|
|
+ title: "授权成功,请完善个人信息",
|
|
|
+ });
|
|
|
+ }, 300);
|
|
|
+ preInfo();
|
|
|
+ } else {
|
|
|
+ setTimeout(() => {
|
|
|
+ uni.showToast({
|
|
|
+ title: "授权成功",
|
|
|
+ });
|
|
|
+ }, 300);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ // 如果当前为登录状态的那么就是修改/完善个人信息
|
|
|
+ preInfo();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 检查登录缓存
|
|
|
+const checkToken = async () => {
|
|
|
+ const ress: any = await MineApi.checkToken();
|
|
|
+ if (ress.data.data) {
|
|
|
+ noLogin.value = false;
|
|
|
+ const res: any = await MineApi.getUserInfo();
|
|
|
+ userInfo.value = res.data.data;
|
|
|
+ if (userInfo.value.avatarUrl === "") {
|
|
|
+ userInfo.value.avatarUrl = defaultHeadUrl.value;
|
|
|
+ }
|
|
|
+ antiqueTotle();
|
|
|
+ contentTotle();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const PageListInfo = ref({
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ searchKey: "",
|
|
|
+});
|
|
|
+
|
|
|
+// 景泰蓝艺术博物馆经纬数据
|
|
|
+const locatioData = {
|
|
|
+ longitude: 116.413699,
|
|
|
+ latitude: 39.864144,
|
|
|
+};
|
|
|
+
|
|
|
+// 点击位置 景泰蓝博物馆位置地图
|
|
|
+const openMap = () => {
|
|
|
+ uni.openLocation({
|
|
|
+ latitude: locatioData.latitude,
|
|
|
+ longitude: locatioData.longitude,
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+// 获取三方平台
|
|
|
+const getTripartiteList = async () => {
|
|
|
+ const res: any = await MineApi.tripartiteList();
|
|
|
+ if (res.data.code == 0) {
|
|
|
+ others.value = res.data.data;
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+onLoad(async (option) => {
|
|
|
+ // 自动跳转后自动清除定时器
|
|
|
+ const key = uni.getStorageSync("FIRST_KEY");
|
|
|
+ if (key) {
|
|
|
+ uni.removeStorage({
|
|
|
+ key: "FIRST_KEY",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ checkToken();
|
|
|
+ getTripartiteList();
|
|
|
+});
|
|
|
+const page = ref("");
|
|
|
+onShow(async () => {
|
|
|
+ page.value = "/pages/mine/index";
|
|
|
+ const pages = getCurrentPages();
|
|
|
+ let currentPage = pages[pages.length - 1];
|
|
|
+
|
|
|
+ console.log("触发了", currentPage.route);
|
|
|
+ // 检查是否登录
|
|
|
+ const ress: any = await MineApi.checkToken();
|
|
|
+ if (ress.data.data) {
|
|
|
+ const res: any = await MineApi.getUserInfo();
|
|
|
+ userInfo.value = res.data.data;
|
|
|
+ antiqueTotle();
|
|
|
+ contentTotle();
|
|
|
+ }
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <view class="all">
|
|
|
+ <TabBarTopHome title="我的" />
|
|
|
+
|
|
|
+ <view
|
|
|
+ style="
|
|
|
+ padding-left: 10px;
|
|
|
+ padding-right: 10px;
|
|
|
+ max-height: 100vh;
|
|
|
+ overflow: hidden;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <view class="head" @tap="wxLogin">
|
|
|
+ <image
|
|
|
+ @error="
|
|
|
+ () => {
|
|
|
+ userInfo.avatarUrl = '';
|
|
|
+ }
|
|
|
+ "
|
|
|
+ :src="
|
|
|
+ noLogin
|
|
|
+ ? defaultHeadUrl
|
|
|
+ : userInfo.avatarUrl != '' || userInfo.avatarUrl.includes('https')
|
|
|
+ ? userInfo.avatarUrl
|
|
|
+ : defaultHeadUrl
|
|
|
+ "
|
|
|
+ mode="scaleToFill"
|
|
|
+ />
|
|
|
+ <view class="username"
|
|
|
+ >{{
|
|
|
+ noLogin
|
|
|
+ ? "请点击登录"
|
|
|
+ : userInfo.nickName != ""
|
|
|
+ ? userInfo.nickName
|
|
|
+ : "点击完善信息"
|
|
|
+ }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="content">
|
|
|
+ <view class="content-item" @tap="goTo('culturalRelic/index')">
|
|
|
+ <view class="content-item-left"
|
|
|
+ ><span>文物收藏</span>
|
|
|
+ <view v-if="!noLogin">{{ antiqueTotleNum }}</view>
|
|
|
+ </view>
|
|
|
+ <image
|
|
|
+ v-if="!noLogin"
|
|
|
+ :src="baseInfo.baseIMGUrl + '/bottomInco/right.png'"
|
|
|
+ mode="scaleToFill"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view class="content-item" @tap="goTo('content/index')">
|
|
|
+ <view class="content-item-left"
|
|
|
+ ><span>内容收藏</span>
|
|
|
+ <view v-if="!noLogin">{{ contentTotleNum }}</view>
|
|
|
+ </view>
|
|
|
+ <image
|
|
|
+ v-if="!noLogin"
|
|
|
+ :src="baseInfo.baseIMGUrl + '/bottomInco/right.png'"
|
|
|
+ mode="scaleToFill"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view
|
|
|
+ class="content-item"
|
|
|
+ @tap="
|
|
|
+ () => {
|
|
|
+ isMessage = true;
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <view>我要留言</view>
|
|
|
+ <view class="content-item-right">
|
|
|
+ <view> 填写留言 </view>
|
|
|
+ <image
|
|
|
+ :src="baseInfo.baseIMGUrl + '/bottomInco/right.png'"
|
|
|
+ mode="scaleToFill"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="content-item content-last" style="">
|
|
|
+ <view class="last1">三方平台评论</view>
|
|
|
+ <view class="last2"
|
|
|
+ ><view class="others" v-for="item in others" :key="item.name">
|
|
|
+ <image
|
|
|
+ @tap="
|
|
|
+ goToMini(item.appId, item.name === '京东' ? '' : item.patch)
|
|
|
+ "
|
|
|
+ :src="baseIMGUrl + item.icon"
|
|
|
+ mode="scaleToFill"
|
|
|
+ /> </view
|
|
|
+ ></view>
|
|
|
+ </view>
|
|
|
+ <view class="position-box">
|
|
|
+ <image
|
|
|
+ :src="baseInfo.baseIMGUrl + '/data/C1Visit/home/4.png'"
|
|
|
+ mode="widthFix"
|
|
|
+ @tap="openMap"
|
|
|
+ />
|
|
|
+ <view class="info-box">
|
|
|
+ <view>中国景泰蓝艺术博物馆</view>
|
|
|
+ <view>中国北京市东城区安乐林路10号</view>
|
|
|
+ <view>开放时间:09:00-16:30 电话:010-67211677</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 登录界面
|
|
|
+ <view class="login-box" v-if="noLogin">
|
|
|
+ <view class="center">
|
|
|
+ <view class="head">
|
|
|
+ <image :src="userInfo.head" mode="scaleToFill" />
|
|
|
+ </view>
|
|
|
+ <view class="form-box">
|
|
|
+ <view class="input-box">
|
|
|
+ <input placeholder="请输入账号" type="text" v-model="userInfo.username">
|
|
|
+ </view>
|
|
|
+ <view class="input-box">
|
|
|
+ <input placeholder="请输入密码" type="password" v-model="userInfo.password">
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="login-btn">
|
|
|
+ 登 录
|
|
|
+ </view>
|
|
|
+ <view class="others">
|
|
|
+ <view>新建账号</view>
|
|
|
+ <view>忘记密码</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view> -->
|
|
|
+
|
|
|
+ <!-- 留言弹框 -->
|
|
|
+ <view
|
|
|
+ class="message-box"
|
|
|
+ v-if="isMessage"
|
|
|
+ :style="{ height: `calc(100% + ${top + height}px)` }"
|
|
|
+ >
|
|
|
+ <view class="pop-box">
|
|
|
+ <textarea
|
|
|
+ name="message"
|
|
|
+ id="message"
|
|
|
+ v-model="messageText"
|
|
|
+ cols="30"
|
|
|
+ rows="10"
|
|
|
+ placeholder="请输入留言内容,5-200个字"
|
|
|
+ minlength="5"
|
|
|
+ maxlength="200"
|
|
|
+ ></textarea>
|
|
|
+ <view class="btns">
|
|
|
+ <view
|
|
|
+ class="btn-item"
|
|
|
+ @tap="
|
|
|
+ () => {
|
|
|
+ isMessage = false;
|
|
|
+ messageText = '';
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >取消</view
|
|
|
+ >
|
|
|
+ <view class="btn-item" @tap="submitMessage">确定</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 二维码图片 -->
|
|
|
+ <!-- <view class="code-box" v-if="isShowCode" @click="isShowCode = false" >
|
|
|
+ <image id="code-image" :src="codePath" mode="widthFix"></image>
|
|
|
+ <view>长按保存图片在相册,打开软件扫一扫</view>
|
|
|
+ </view> -->
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <TabBar :page="page" />
|
|
|
+</template>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+::-webkit-scrollbar {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+
|
|
|
+.all {
|
|
|
+ min-width: 100vw;
|
|
|
+ height: calc(100vh - 150rpx);
|
|
|
+ background: #f7f1e6;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-top: 9vh;
|
|
|
+
|
|
|
+ .head {
|
|
|
+ height: 17vh;
|
|
|
+ margin: auto;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: top;
|
|
|
+
|
|
|
+ .username {
|
|
|
+ color: rgba(0, 0, 0, 0.7);
|
|
|
+ padding-top: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ image {
|
|
|
+ height: 10vh;
|
|
|
+ width: 10vh;
|
|
|
+ border-radius: 50px;
|
|
|
+ margin: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ view {
|
|
|
+ margin: auto;
|
|
|
+ font-weight: bold;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: -10%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100vh - 200rpx);
|
|
|
+ border-radius: 20px 20px 0 0;
|
|
|
+ box-shadow: 0px -3px 15px 0px rgba(0, 0, 0, 0.3);
|
|
|
+ padding: 15px 30px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ background-size: cover;
|
|
|
+ background-image: url("https://houseoss.4dkankan.com/project/bjfljtl/img/data/E1Mine/bg.png");
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: flex-start;
|
|
|
+
|
|
|
+ &-item {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ height: 7.5vh;
|
|
|
+ border-bottom: 1px solid rgba(107, 107, 107, 0.192);
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 20px;
|
|
|
+ height: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &-left {
|
|
|
+ display: flex;
|
|
|
+ justify-content: left;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+ view {
|
|
|
+ margin-left: 5vw;
|
|
|
+ height: 20px;
|
|
|
+ width: 20px;
|
|
|
+ border-radius: 50px;
|
|
|
+ background-color: #e07c67;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 20px;
|
|
|
+ color: white;
|
|
|
+ font-size: 26rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-right {
|
|
|
+ display: flex;
|
|
|
+ justify-content: right;
|
|
|
+
|
|
|
+ view {
|
|
|
+ margin-right: 5px;
|
|
|
+ color: rgba(54, 54, 54, 0.705);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .position-box {
|
|
|
+ // box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.4);
|
|
|
+ flex: 1;
|
|
|
+ margin-left: -30px;
|
|
|
+ margin-right: -30px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ // position: absolute;
|
|
|
+ width: calc(100vw - 20px);
|
|
|
+ margin-bottom: 210rpx;
|
|
|
+ // bottom: 150rpx;
|
|
|
+
|
|
|
+ .info-box {
|
|
|
+ width: 100%;
|
|
|
+ background: #ffffff80;
|
|
|
+ margin-top: -24rpx;
|
|
|
+ padding: 20px 10px 5%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ font-size: 10px;
|
|
|
+ line-height: 16px;
|
|
|
+ color: #000000b9;
|
|
|
+ }
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-last {
|
|
|
+ margin-top: 2vh;
|
|
|
+ border-bottom: none;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: self-start;
|
|
|
+ height: auto;
|
|
|
+ .last1 {
|
|
|
+ width: 25%;
|
|
|
+ }
|
|
|
+ .last2 {
|
|
|
+ width: 74%;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ image {
|
|
|
+ margin-bottom: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .others {
|
|
|
+ image {
|
|
|
+ width: 5vh;
|
|
|
+ height: 5vh;
|
|
|
+ border-radius: 5px;
|
|
|
+ margin-left: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .login-box {
|
|
|
+ position: absolute;
|
|
|
+ width: 100vw;
|
|
|
+ height: 100vh;
|
|
|
+ backdrop-filter: blur(30px);
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .center {
|
|
|
+ width: 70%;
|
|
|
+ // background: gold;
|
|
|
+ height: 70%;
|
|
|
+ margin: auto;
|
|
|
+
|
|
|
+ .head {
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+
|
|
|
+ image {
|
|
|
+ height: 10vh;
|
|
|
+ width: 10vh;
|
|
|
+ border-radius: 50px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .form-box {
|
|
|
+ width: 100%;
|
|
|
+ margin-top: 20px;
|
|
|
+
|
|
|
+ .input-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 7vh;
|
|
|
+ margin-top: 10px;
|
|
|
+ background: #e07b675e;
|
|
|
+ border-radius: 5px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ // padding: 0 10px;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ input {
|
|
|
+ width: 90%;
|
|
|
+ margin: auto;
|
|
|
+ color: #00000093;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .login-btn {
|
|
|
+ width: 100%;
|
|
|
+ height: 8vh;
|
|
|
+ border-radius: 7px;
|
|
|
+ box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5);
|
|
|
+ background: #e07c67;
|
|
|
+ color: white;
|
|
|
+ font-size: 18px;
|
|
|
+ line-height: 8vh;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .others {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ margin-top: 30px;
|
|
|
+
|
|
|
+ view {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #00000056;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .message-box {
|
|
|
+ position: absolute;
|
|
|
+ width: 100vw;
|
|
|
+ top: 0;
|
|
|
+ margin-left: -10px;
|
|
|
+ // margin-top: 80px;
|
|
|
+ background: #00000056;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+
|
|
|
+ .pop-box {
|
|
|
+ width: 75%;
|
|
|
+ height: 50%;
|
|
|
+ background: #ffffff;
|
|
|
+ border-radius: 10px;
|
|
|
+ padding: 20px;
|
|
|
+ margin: auto;
|
|
|
+ box-sizing: border-box;
|
|
|
+
|
|
|
+ textarea {
|
|
|
+ width: 100%;
|
|
|
+ height: 80%;
|
|
|
+ background: rgba(240, 239, 239, 0.61);
|
|
|
+ border: 1px rgba(233, 233, 233, 0.623) solid;
|
|
|
+ border-radius: 10px;
|
|
|
+ padding: 10px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ font-size: 14px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .btns {
|
|
|
+ width: 100%;
|
|
|
+ height: 15%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ margin-top: 20px;
|
|
|
+
|
|
|
+ .btn-item {
|
|
|
+ width: 45%;
|
|
|
+ height: 100%;
|
|
|
+ background: #dda59a;
|
|
|
+ border-radius: 5px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ color: white;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .code-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ background: #00000056;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ z-index: 1;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 80%;
|
|
|
+ object-fit: contain;
|
|
|
+ }
|
|
|
+
|
|
|
+ view {
|
|
|
+ color: white;
|
|
|
+ margin-top: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|