@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<view class="checkModal">
|
||||||
|
<view class="topModal" @click.stop="closeModal"></view>
|
||||||
|
<view class="checkArea" >
|
||||||
|
<view class="checkBox">
|
||||||
|
<view class="checkTitle">
|
||||||
|
{{'选择国家地/地区'}}
|
||||||
|
</view>
|
||||||
|
<scroll-view scroll-y="true" class="checkList">
|
||||||
|
<view v-for="item in data.areaList" :key="item.countryCode" @click="checked(item)" class="checkItem">
|
||||||
|
<text>{{item.countryName}}</text>
|
||||||
|
<text>{{item.countryCode}}</text>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'CheckArea',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
default: () => {},
|
||||||
|
type: Object,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
closeModal() {
|
||||||
|
this.$emit('closeModal', 'area');
|
||||||
|
},
|
||||||
|
checked(item) {
|
||||||
|
this.$emit('checkedCode', item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.checkModal {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
z-index: 9;
|
||||||
|
background-color: rgba(0, 0, 0, 0.4);
|
||||||
|
|
||||||
|
.topModal {
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkArea {
|
||||||
|
width: 100vw;
|
||||||
|
position: absolute;
|
||||||
|
top: 34vh;
|
||||||
|
left: 0;
|
||||||
|
animation: fade-in 0.6s;
|
||||||
|
|
||||||
|
.checkBox {
|
||||||
|
width: 100vw;
|
||||||
|
height: 66vh;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 48upx 48upx 0 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
|
||||||
|
.checkTitle {
|
||||||
|
height: 96upx;
|
||||||
|
line-height: 96upx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 36upx;
|
||||||
|
}
|
||||||
|
.checkList {
|
||||||
|
height: calc(66vh - 96upx);
|
||||||
|
padding-bottom: 48rpx;
|
||||||
|
.checkItem {
|
||||||
|
height: 48upx;
|
||||||
|
line-height: 48upx;
|
||||||
|
font-size: 32upx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 24upx;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fade-in {
|
||||||
|
0% {
|
||||||
|
top: 100vh
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
top:34vh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,140 @@
|
|||||||
|
<template>
|
||||||
|
<view class="checkCode">
|
||||||
|
<view class="back-btn" @click="closeModal">
|
||||||
|
<image src="@/static/icons/left_back@3x.png"></image>
|
||||||
|
</view>
|
||||||
|
<view class="wrapper">
|
||||||
|
<view class="tips">
|
||||||
|
<view class="tips_title">{{tips.title}}</view>
|
||||||
|
<view class="tips_text">{{tips.text}} {{data.area}} {{data.mobile}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="numBox">
|
||||||
|
<uni-code-input v-model="data.mobileCheckCode" mode="line" :space="12" :focus="true" borderColor="rgba(0, 0, 0, 0.1)"
|
||||||
|
hairline :maxlength="6" @finish="finish"></uni-code-input>
|
||||||
|
</view>
|
||||||
|
<view class="cutdownBox">
|
||||||
|
<view v-if="time>0" class="time">{{time}}s</view>
|
||||||
|
<view v-else @click="regetCode" class="regetBtn">重新获取</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
|
||||||
|
import uniCodeInput from '@/components/uni-code-input/uni-code-input.vue';
|
||||||
|
export default {
|
||||||
|
name: 'CheckCode',
|
||||||
|
components: {
|
||||||
|
uniCodeInput
|
||||||
|
// uniLoadMore
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tips: {
|
||||||
|
title: '输入验证码',
|
||||||
|
text: '验证码已发送至'
|
||||||
|
},
|
||||||
|
time: 60,
|
||||||
|
resetTime: 60,
|
||||||
|
timer: null,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
default: () => {},
|
||||||
|
type: Object,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.cutdown()
|
||||||
|
},
|
||||||
|
destroyed() {
|
||||||
|
this.timer && clearInterval(this.timer)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
closeModal() {
|
||||||
|
this.$emit('closeModal', 'code');
|
||||||
|
},
|
||||||
|
cutdown() {
|
||||||
|
this.timer && clearInterval(this.timer)
|
||||||
|
this.timer = setInterval(
|
||||||
|
() => {
|
||||||
|
this.time--
|
||||||
|
}, 1000)
|
||||||
|
},
|
||||||
|
regetCode() {
|
||||||
|
// 调用接口
|
||||||
|
this.time = this.resetTime
|
||||||
|
this.cutdown()
|
||||||
|
this.$emit('regetCode')
|
||||||
|
},
|
||||||
|
finish(e) {
|
||||||
|
console.log('输入结束,当前值为:' + e);
|
||||||
|
this.$emit('login', this.data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.checkCode {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.back-btn {
|
||||||
|
position: absolute;
|
||||||
|
left: 40upx;
|
||||||
|
padding-top: var(--status-bar-height);
|
||||||
|
top: 40upx;
|
||||||
|
font-size: 40upx;
|
||||||
|
color: $font-color-dark;
|
||||||
|
z-index: 9;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 40rpx;
|
||||||
|
height: 40rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.wrapper {
|
||||||
|
position: relative;
|
||||||
|
padding-top: 200upx;
|
||||||
|
|
||||||
|
.tips {
|
||||||
|
width: 100%;
|
||||||
|
height: 136upx;
|
||||||
|
padding: 0 48rpx;
|
||||||
|
|
||||||
|
.tips_title {
|
||||||
|
font-size: 64upx;
|
||||||
|
margin-bottom: 26upx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips_text {
|
||||||
|
font-size: 28upx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.numBox {
|
||||||
|
height: 80rpx;
|
||||||
|
margin: 80rpx 0 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cutdownBox {
|
||||||
|
height: 40rpx;
|
||||||
|
padding: 48rpx;
|
||||||
|
color: rgba(0, 0, 0, .95);
|
||||||
|
|
||||||
|
.time {
|
||||||
|
color: rgba(0, 0, 0, .4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,137 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="container">
|
|
||||||
<view class="left-bottom-sign"></view>
|
|
||||||
<view class="back-btn yticon icon-zuojiantou-up" @click="navBack"></view>
|
|
||||||
<view class="right-top-sign"></view>
|
|
||||||
<!-- 设置白色背景防止软键盘把下部绝对定位元素顶上来盖住输入框等 -->
|
|
||||||
<view class="wrapper">
|
|
||||||
<view class="empty">
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
onLoad() {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
navBack() {
|
|
||||||
uni.navigateBack();
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang='scss'>
|
|
||||||
page {
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty {
|
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100vh;
|
|
||||||
padding-bottom: 100upx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
background: #fff;
|
|
||||||
|
|
||||||
image {
|
|
||||||
width: 420upx;
|
|
||||||
height: 420upx;
|
|
||||||
margin-bottom: 30upx;
|
|
||||||
}
|
|
||||||
.empty-tips {
|
|
||||||
display: flex;
|
|
||||||
font-size: $font-sm+16upx;
|
|
||||||
color: $font-color-disabled;
|
|
||||||
|
|
||||||
.navigator {
|
|
||||||
color: $uni-color-primary;
|
|
||||||
margin-left: 0upx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
padding-top: 115px;
|
|
||||||
position: relative;
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
overflow: hidden;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
position: relative;
|
|
||||||
z-index: 90;
|
|
||||||
background: #fff;
|
|
||||||
padding-bottom: 40upx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.back-btn {
|
|
||||||
position: absolute;
|
|
||||||
left: 40upx;
|
|
||||||
z-index: 9999;
|
|
||||||
padding-top: var(--status-bar-height);
|
|
||||||
top: 40upx;
|
|
||||||
font-size: 40upx;
|
|
||||||
color: $font-color-dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left-top-sign {
|
|
||||||
font-size: 120upx;
|
|
||||||
color: $page-color-base;
|
|
||||||
position: relative;
|
|
||||||
left: -16upx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-top-sign {
|
|
||||||
position: absolute;
|
|
||||||
top: 80upx;
|
|
||||||
right: -30upx;
|
|
||||||
z-index: 95;
|
|
||||||
|
|
||||||
&:before,
|
|
||||||
&:after {
|
|
||||||
display: block;
|
|
||||||
content: "";
|
|
||||||
width: 400upx;
|
|
||||||
height: 80upx;
|
|
||||||
background: #b4f3e2;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
transform: rotate(50deg);
|
|
||||||
border-radius: 0 50px 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
position: absolute;
|
|
||||||
right: -198upx;
|
|
||||||
top: 0;
|
|
||||||
transform: rotate(-50deg);
|
|
||||||
border-radius: 50px 0 0 0;
|
|
||||||
/* background: pink; */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.left-bottom-sign {
|
|
||||||
position: absolute;
|
|
||||||
left: -270upx;
|
|
||||||
bottom: -320upx;
|
|
||||||
border: 100upx solid #d0d1fd;
|
|
||||||
border-radius: 50%;
|
|
||||||
padding: 180upx;
|
|
||||||
}
|
|
||||||
</style>
|
|
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<web-view :src="url" :webview-styles="webviewStyles"></web-view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
url: '',
|
||||||
|
webviewStyles: {}
|
||||||
|
|
||||||
|
};
|
||||||
|
},
|
||||||
|
onLoad: function(option) {
|
||||||
|
const item = JSON.parse(decodeURIComponent(option.item));
|
||||||
|
const {
|
||||||
|
url,
|
||||||
|
webviewStyles
|
||||||
|
} = item
|
||||||
|
this.url = url
|
||||||
|
this.webviewStyles = webviewStyles ? webviewStyles : {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
|
||||||
|
</style>
|
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 610 B |
After Width: | Height: | Size: 232 B |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 349 B |
After Width: | Height: | Size: 448 B |
After Width: | Height: | Size: 414 KiB |
After Width: | Height: | Size: 37 KiB |
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"light": {
|
||||||
|
"navigationBarTextStyle": "black",
|
||||||
|
"navigationBarBackgroundColor": "#F7F7F7",
|
||||||
|
"backgroundColor": "#F7F7F7",
|
||||||
|
|
||||||
|
"tabBarColor": "#7A7E83",
|
||||||
|
"tabBarSelectedColor": "#3cc51f",
|
||||||
|
"tabBarBorderStyle": "black",
|
||||||
|
"tabBarBackgroundColor": "#F7F7F7"
|
||||||
|
|
||||||
|
},
|
||||||
|
"dark": {
|
||||||
|
"navigationBarTextStyle": "white",
|
||||||
|
"navigationBarBackgroundColor": "#1F1F1F",
|
||||||
|
"backgroundColor": "#1F1F1F",
|
||||||
|
|
||||||
|
"tabBarColor": "#cacaca",
|
||||||
|
"tabBarSelectedColor": "#51A937",
|
||||||
|
"tabBarBorderStyle": "white",
|
||||||
|
"tabBarBackgroundColor": "#1F1F1F"
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +1,15 @@
|
|||||||
// appConfig.js
|
// appConfig.js
|
||||||
|
|
||||||
//配置API请求的基础路径
|
//配置API请求的基础路径
|
||||||
// export const API_BASE_URL = 'http://localhost:8085';
|
export const API_BASE_URL = 'http://43.248.137.154:8085';
|
||||||
export const API_BASE_URL = 'https://portal-api.macrozheng.com';
|
export const API_USER_URL = 'http://39.103.180.196:9012';
|
||||||
|
|
||||||
|
// export const API_BASE_URL = 'https://portal-api.macrozheng.com';
|
||||||
//是否启用支付宝支付
|
//是否启用支付宝支付
|
||||||
export const USE_ALIPAY = false;
|
export const USE_ALIPAY = true;
|
||||||
|
|
||||||
|
// 是否启用微信登录
|
||||||
|
export const USE_WECHAT_LOGIN = false;
|
||||||
|
|
||||||
|
// 是否启用Apple登录
|
||||||
|
export const USE_APPLE_LOGIN = false;
|