feat: 初始化项目
@@ -1,9 +1 @@
|
||||
<p align="center">
|
||||
<a href="https://github.com/feige996/unibest">
|
||||
<img width="160" src="./src/static/logo.svg">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h1 align="center">
|
||||
<a href="https://github.com/feige996/unibest" target="_blank">x-4</a>
|
||||
</h1>
|
||||
<a href="https://hugo-x6.yhdmit.com/docs/api#/operations/index.invite" target="_blank">x-6 docs</a>
|
||||
|
||||
@@ -7,9 +7,6 @@ VITE_WX_APPID = 'wxa2abb91f64032a2b'
|
||||
# h5部署网站的base,配置到 manifest.config.ts 里的 h5.router.base
|
||||
VITE_APP_PUBLIC_BASE=/
|
||||
|
||||
VITE_SERVER_BASEURL = 'https://api.qmbz.cc'
|
||||
VITE_UPLOAD_BASEURL = 'https://api.qmbz.cc/api/common/upload'
|
||||
|
||||
# h5是否需要配置代理
|
||||
VITE_APP_PROXY=false
|
||||
VITE_APP_PROXY_PREFIX = '/api'
|
||||
|
||||
@@ -4,3 +4,6 @@ NODE_ENV = 'development'
|
||||
VITE_DELETE_CONSOLE = false
|
||||
# 是否开启sourcemap
|
||||
VITE_SHOW_SOURCEMAP = true
|
||||
|
||||
VITE_SERVER_BASEURL = 'https://hugo-x6.yhdmit.com'
|
||||
VITE_UPLOAD_BASEURL = 'https://hugo-x6.yhdmit.com/api/common/upload'
|
||||
|
||||
@@ -4,3 +4,6 @@ NODE_ENV = 'development'
|
||||
VITE_DELETE_CONSOLE = true
|
||||
# 是否开启sourcemap
|
||||
VITE_SHOW_SOURCEMAP = false
|
||||
|
||||
VITE_SERVER_BASEURL = 'https://api.qmbz.cc'
|
||||
VITE_UPLOAD_BASEURL = 'https://api.qmbz.cc/api/common/upload'
|
||||
|
||||
@@ -18,7 +18,7 @@ export default defineUniPages({
|
||||
},
|
||||
tabBar: {
|
||||
color: '#999999',
|
||||
selectedColor: '#0E57A2',
|
||||
selectedColor: '#BE805A',
|
||||
backgroundColor: '#ffffff',
|
||||
borderStyle: '#E7E7E7',
|
||||
height: '56px',
|
||||
@@ -32,17 +32,17 @@ export default defineUniPages({
|
||||
pagePath: 'pages/index/index',
|
||||
text: '首页',
|
||||
},
|
||||
{
|
||||
iconPath: 'static/tabbar/invest.png',
|
||||
selectedIconPath: 'static/tabbar/investHL.png',
|
||||
pagePath: 'pages/invest/index',
|
||||
text: '保障',
|
||||
},
|
||||
{
|
||||
iconPath: 'static/tabbar/house.png',
|
||||
selectedIconPath: 'static/tabbar/houseHL.png',
|
||||
pagePath: 'pages/invite/index',
|
||||
text: '社区',
|
||||
text: '邀请好友',
|
||||
},
|
||||
{
|
||||
iconPath: 'static/tabbar/invest.png',
|
||||
selectedIconPath: 'static/tabbar/investHL.png',
|
||||
pagePath: 'pages/invest/index',
|
||||
text: '房产集团',
|
||||
},
|
||||
{
|
||||
iconPath: 'static/tabbar/personal.png',
|
||||
|
||||
@@ -10,12 +10,7 @@ defineProps({
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div
|
||||
rounded-full
|
||||
p-4
|
||||
shadow-lg
|
||||
style="background: linear-gradient(45deg, #3b81f3 0%, #37e6ec 100%)"
|
||||
>
|
||||
<div rounded-full p-4 shadow-lg btn-gradient>
|
||||
<image
|
||||
block
|
||||
overflow-hidden
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<wd-popup
|
||||
v-model="showPopup"
|
||||
position="bottom"
|
||||
:safe-area-inset-bottom="true"
|
||||
custom-style="border-radius: 30px 30px 0 0"
|
||||
>
|
||||
<view class="py-15">
|
||||
<view class="grid grid-cols-3 gap-20 p-15">
|
||||
<view
|
||||
class="text-center rounded-full bg-#889BC61A py-10 text-#889BC6 text-15"
|
||||
v-for="(item, index) of payTypeList"
|
||||
@click="currPayTypeIndex = index"
|
||||
:key="item.value"
|
||||
:class="{
|
||||
'text-white btn-gradient': currPayTypeIndex === index,
|
||||
}"
|
||||
>
|
||||
{{ item.title }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="p-15">
|
||||
<view class="text-15 text-#333">个人所得税金额</view>
|
||||
<view class="text-15 p-15 bg-#F3F5F9 rounded-4 mt-12">400元</view>
|
||||
</view>
|
||||
<view
|
||||
class="text-15 btn-gradient mx-15 mt-100 text-white rounded-full py-15 text-center"
|
||||
@click="onSubmit"
|
||||
>
|
||||
立即缴纳
|
||||
</view>
|
||||
</view>
|
||||
</wd-popup>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const emits = defineEmits(['submit'])
|
||||
const showPopup = ref(false)
|
||||
const payTypeList = [
|
||||
{ title: '支付宝', value: 1 },
|
||||
{ title: '微信', value: 2 },
|
||||
{ title: '银联', value: 3 },
|
||||
{ title: '云闪付', value: 4 },
|
||||
]
|
||||
const currPayTypeIndex = ref(0)
|
||||
|
||||
const onSubmit = () => {
|
||||
emits('submit', payTypeList[currPayTypeIndex.value])
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
onShowPopup() {
|
||||
showPopup.value = true
|
||||
},
|
||||
})
|
||||
</script>
|
||||
@@ -1,15 +1,16 @@
|
||||
const baseUrl = import.meta.env.VITE_SERVER_BASEURL
|
||||
export const useCaptcha = () => {
|
||||
const t = ref(Date.now())
|
||||
import { getCaptchaAPI } from '@/service'
|
||||
|
||||
const codeUrl = computed(() => {
|
||||
return baseUrl + '/api/index/captcha?t=' + t.value
|
||||
})
|
||||
const refreshCode = () => {
|
||||
t.value = Date.now()
|
||||
export const useCaptcha = () => {
|
||||
const codeUrl = ref('')
|
||||
const codeKey = ref('')
|
||||
|
||||
const refreshCode = async () => {
|
||||
const res = await getCaptchaAPI()
|
||||
codeUrl.value = res.data.img
|
||||
codeKey.value = res.data.key
|
||||
}
|
||||
onMounted(() => {
|
||||
refreshCode()
|
||||
})
|
||||
return { codeUrl, t, refreshCode }
|
||||
return { codeUrl, codeKey, refreshCode }
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ const httpInterceptor = {
|
||||
// 3. 添加 token 请求头标识
|
||||
const userStore = useUserStore()
|
||||
if (userStore.token) {
|
||||
options.header.token = userStore.token
|
||||
options.header.Authorization = `Bearer ${userStore.token}`
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '资金明细',
|
||||
navigationBarTitleText: '股权流量提现明细',
|
||||
navigationBarBackgroundColor: '#fff',
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
@@ -18,7 +17,6 @@ const { list: assetList } = useListPageRequest(getMyAssetAPI)
|
||||
|
||||
<template>
|
||||
<view class="asset-page pt-15 relative">
|
||||
<NavBar />
|
||||
<!-- <view class="flex justify-around">
|
||||
<view
|
||||
v-for="(tabItem, index) in tabList"
|
||||
@@ -30,6 +28,13 @@ const { list: assetList } = useListPageRequest(getMyAssetAPI)
|
||||
<view class="text-14">{{ tabItem.label }}</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="text-white p-15 mt-15">
|
||||
<view class="text-17">流量提现汇总</view>
|
||||
<view class="text-30">
|
||||
100
|
||||
<text class="text-20">(元)</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="relative z-1 mt-10 main-content pt-30 pb-30 rounded-t-15">
|
||||
<view class="mb-15 px-25">资金明细</view>
|
||||
<template v-if="assetList.length">
|
||||
@@ -38,8 +43,8 @@ const { list: assetList } = useListPageRequest(getMyAssetAPI)
|
||||
v-for="item in assetList"
|
||||
:key="item.id"
|
||||
>
|
||||
<image src="/static/images/page-sub/invite-icon.png" class="w-48 h-48" />
|
||||
<view class="flex flex-col flex-1 ml-15">
|
||||
<!-- <image src="/static/images/page-sub/invite-icon.png" class="w-48 h-48" /> -->
|
||||
<view class="flex flex-col flex-1">
|
||||
<view class="text-14 text-#333">{{ item.memo }}</view>
|
||||
<view class="text-12 mt-4 text-#333">{{ item.createtime }}</view>
|
||||
</view>
|
||||
@@ -69,7 +74,7 @@ const { list: assetList } = useListPageRequest(getMyAssetAPI)
|
||||
.asset-page {
|
||||
background-image: url('@/static/images/assets-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top center;
|
||||
background-position: top -90px center;
|
||||
background-size: 100%;
|
||||
}
|
||||
.main-content {
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
navigationBarTitleText: '股权提现',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view class="min-h-screen pb-100">
|
||||
<NavBar title-color="#333"></NavBar>
|
||||
<view class="main-container w-345 h-100 mt-15 mx-auto flex p-15 items-center">
|
||||
<view class="flex-1">
|
||||
<view class="text-14 text-#ffffff99">可提现碧桂园股权</view>
|
||||
<view class="text-20 text-white">
|
||||
3521000
|
||||
<text class="text-14">(股)</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ml-50 text-right flex-1">
|
||||
<view class="text-14 text-#ffffff99">价值</view>
|
||||
<view class="text-20 text-white">3521000</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="p-15 mt-30 text-18 text-#333">提现信息</view>
|
||||
<view class="bg-white rounded-10 m-15 px-15" style="box-shadow: 0px 0px 10px 0px #0a44f51a">
|
||||
<view class="flex items-center text-14 text-#333 py-25">
|
||||
<view class="">银行卡号</view>
|
||||
<input class="text-14 text-#889BC6 text-right flex-1" placeholder="请输入银行卡号" />
|
||||
</view>
|
||||
<view class="flex items-center text-14 text-#333 py-25">
|
||||
<view class="">开户银行</view>
|
||||
<input class="text-14 text-#889BC6 text-right flex-1" placeholder="请输入开户银行" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view
|
||||
class="bg-white fixed bottom-0 left-0 right-0 px-15 py-10 shadow-[0_0_10px_rgba(10,68,245,0.1)]"
|
||||
>
|
||||
<view class="pb-safe">
|
||||
<view
|
||||
class="btn-gradient text-center text-white rounded-full text-14 px-30 py-10"
|
||||
@click="onSubmit"
|
||||
>
|
||||
立即提现
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<WithdrawalTaxPopup ref="withdrawalTaxPopupRef" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import WithdrawalTaxPopup from '@/components/WithdrawalTaxPopup.vue'
|
||||
import { submitWithdrawalAPI } from '@/service'
|
||||
import { useUserStore } from '@/store'
|
||||
import { showModal } from '@/utils'
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
const form = ref({
|
||||
money: '',
|
||||
})
|
||||
|
||||
const onWithdrawalDetail = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/withdrawal-detail/index',
|
||||
})
|
||||
}
|
||||
const withdrawalTaxPopupRef = ref(null)
|
||||
|
||||
const onSubmit = async () => {
|
||||
// if (!form.value.money) {
|
||||
// return uni.showToast({
|
||||
// title: '请输入提现金额',
|
||||
// icon: 'none',
|
||||
// })
|
||||
// }
|
||||
// await showModal('确认提现?')
|
||||
// await submitWithdrawalAPI(form.value)
|
||||
// await showModal('提交成功')
|
||||
// onWithdrawalDetail()
|
||||
withdrawalTaxPopupRef.value.onShowPopup()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.main-container {
|
||||
background-image: url('@/static/images/page-sub/withdrawal/main-bg.jpg');
|
||||
background-size: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,7 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '转盘抽奖',
|
||||
navigationBarTitleText: '抽奖',
|
||||
navigationBarBackgroundColor: '#fff',
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
@@ -10,135 +10,67 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import GridLottery from '@/components/GridLottery.vue'
|
||||
import { showModal } from '@/utils'
|
||||
|
||||
import lotteryIcon from '@/static/images/home/nav-2.png'
|
||||
|
||||
const list = [
|
||||
{
|
||||
id: 1,
|
||||
sort: 0,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
sort: 1,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
sort: 2,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
sort: 3,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
sort: 4,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
sort: 5,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
sort: 6,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
sort: 7,
|
||||
title: '\u6BDB\u5DFE',
|
||||
icon: lotteryIcon,
|
||||
},
|
||||
]
|
||||
|
||||
const gridLotteryRef = ref(null)
|
||||
const onStart = () => {
|
||||
// 中奖id,抽奖轮转时间毫秒
|
||||
gridLotteryRef.value.start(3, 10000)
|
||||
const onKefu = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/official-community/index',
|
||||
})
|
||||
}
|
||||
const onEnd = () => {
|
||||
console.log('onEnd')
|
||||
|
||||
const onLottery = () => {
|
||||
showModal('您有5次机会')
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<view class="min-h-screen lottery-page">
|
||||
<view class="min-h-screen lottery-page pb-50">
|
||||
<NavBar />
|
||||
<view class="mt-240 w-315 h-315 flex items-center justify-center mx-auto lottery-container">
|
||||
<grid-lottery
|
||||
:itemHeight="186"
|
||||
ref="gridLotteryRef"
|
||||
class="w-280 ml-8 mt-8"
|
||||
:list="list"
|
||||
@onStart="onStart"
|
||||
@onEnd="onEnd"
|
||||
>
|
||||
<!-- <view slot="lottery-item" slot-scope="slotProps">{{ slotProps }}</view> -->
|
||||
<template #lottery-item="{ data, index, currIndex }">
|
||||
<view class="text-26 text-center mt-500 text-#990E17 font-bold" @click="onLottery">
|
||||
您有
|
||||
<text class="text-36 text-white">5</text>
|
||||
次机会
|
||||
</view>
|
||||
<view class="text-25 text-center mt-50 text-#fff">中奖奖品</view>
|
||||
<view class="mt-10 text-#FFE1B1 text-14 underline text-center" @click="onKefu">
|
||||
中奖奖品请联系客服获取>>
|
||||
</view>
|
||||
<view class="mt-10 rounded-15 overflow-hidden mx-auto w-345 text-center">
|
||||
<view class="flex bg-#FBE6CA text-#990E17 text-15 py-12">
|
||||
<view class="flex-1">日期</view>
|
||||
<view class="flex-1">奖品</view>
|
||||
</view>
|
||||
<view
|
||||
class="overflow-hidden relative lottery-item flex flex-col items-center justify-center rounded-10 bg-[linear-gradient(180deg,#fffdf7,#fff1ca)] w-86 h-86"
|
||||
:class="{
|
||||
mask: currIndex !== index,
|
||||
}"
|
||||
class="flex bg-#F8CD96 text-#333333 text-15 py-12 border-t-solid border-t-#990E17 border-t-1"
|
||||
>
|
||||
<image :src="data.icon" class="w-30 h-30" />
|
||||
<view class="text-14 text-#333 mt-8">{{ data.title }}</view>
|
||||
<view class="flex-1">2025.01.058</view>
|
||||
<view class="flex-1">物业费3年</view>
|
||||
</view>
|
||||
</template>
|
||||
<template #start-button>
|
||||
<view
|
||||
class="w-86 flex flex-col items-center justify-center h-86 bg-[linear-gradient(180deg,#FF8282,#D73434)] text-#FBEDC6 text-25 rounded-10"
|
||||
class="flex bg-#F8CD96 text-#333333 text-15 py-12 border-t-solid border-t-#990E17 border-t-1"
|
||||
>
|
||||
<view>点击</view>
|
||||
<view>抽奖</view>
|
||||
<view class="flex-1">2025.01.058</view>
|
||||
<view class="flex-1">物业费3年</view>
|
||||
</view>
|
||||
</template>
|
||||
<template #activity-box>
|
||||
<view class="w-86 h-86 bg-red-500"></view>
|
||||
</template>
|
||||
</grid-lottery>
|
||||
<view
|
||||
class="flex bg-#F8CD96 text-#333333 text-15 py-12 border-t-solid border-t-#990E17 border-t-1"
|
||||
>
|
||||
<view class="flex-1">2025.01.058</view>
|
||||
<view class="flex-1">物业费3年</view>
|
||||
</view>
|
||||
<view
|
||||
class="flex bg-#F8CD96 text-#333333 text-15 py-12 border-t-solid border-t-#990E17 border-t-1"
|
||||
>
|
||||
<view class="flex-1">2025.01.058</view>
|
||||
<view class="flex-1">物业费3年</view>
|
||||
</view>
|
||||
<view class="text-16 mx-auto w-315 mb-15 font-bold text-#fff mt-30">抽奖规则</view>
|
||||
<view class="text-12 mx-auto w-315 mb-15 text-#fff mt-15">
|
||||
1. 每轮抽奖消耗10000认购点,每轮抽奖次数为3次,每轮抽奖结束后,消耗的认购点将恢复为0。
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<style scoped>
|
||||
.lottery-item {
|
||||
&.mask {
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
content: '';
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}
|
||||
.lottery-container {
|
||||
background-image: url('@/static/images/lottery-bar.png');
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
.lottery-page {
|
||||
background-color: #517aae;
|
||||
background-image: url('@/static/images/lottery-bg.png');
|
||||
background-color: #8c201f;
|
||||
background-image: url('@/static/images/lottery-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top;
|
||||
background-size: 100%;
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '我的房产',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="bg-#F7F7F7 min-h-screen pt-15">
|
||||
<view class="p-15 mb-15 mx-auto w-345 rounded-10 bg-white">
|
||||
<image
|
||||
class="w-315 h-189"
|
||||
src="@/static/images/page-sub/red-real-estate-certificate/example.jpg"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="flex items-center pt-15">
|
||||
<view class="flex-1">
|
||||
<view class="text-17 font-500">碧桂园精装房</view>
|
||||
<view class="text-14 text-#999999 mt-8">100(㎡)</view>
|
||||
</view>
|
||||
<view class="btn-gradient text-15 text-white py-8 px-20 rounded-full" @click="onTransfer">
|
||||
房产过户
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const onTransfer = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/room-transfer/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,38 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '红本房产证',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="bg-#F7F7F7 min-h-screen pt-15">
|
||||
<view class="p-15 mb-15 mx-auto w-345 rounded-10 bg-white">
|
||||
<image
|
||||
class="w-315 h-189"
|
||||
src="@/static/images/page-sub/red-real-estate-certificate/example.jpg"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view class="flex items-center pt-15">
|
||||
<view class="flex-1">
|
||||
<view class="text-17 font-500">碧桂园精装房</view>
|
||||
<view class="text-14 text-#999999 mt-8">100~150(m²)</view>
|
||||
</view>
|
||||
<view class="btn-gradient text-15 text-white py-8 px-20 rounded-full" @click="onSendMail">
|
||||
房本邮寄
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const onSendMail = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/room-mail/index',
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,45 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '房本邮寄',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="min-h-screen pt-15">
|
||||
<view
|
||||
class="px-15 py-10 mb-15 mx-auto w-345 rounded-10 bg-white"
|
||||
style="box-shadow: 0px 0px 10px 0px #0a44f51a"
|
||||
>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">手机号</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入手机号"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">邮寄地址</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入邮寄地址"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="mt-50 text-center py-12 rounded-full mx-15 text-15 text-white btn-gradient"
|
||||
@click="handleRegister"
|
||||
>
|
||||
邮寄
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup></script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -0,0 +1,114 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '房产过户',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="min-h-screen pt-15">
|
||||
<view class="text-18 p-15">申请人信息</view>
|
||||
<view
|
||||
class="px-15 py-10 mb-15 mx-auto w-345 rounded-10 bg-white"
|
||||
style="box-shadow: 0px 0px 10px 0px #0a44f51a"
|
||||
>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">申请人姓名</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入申请人姓名"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">身份证号码</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入身份证号码"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">联系电话</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入联系电话"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">家庭地址</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入家庭地址"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-18 p-15">过户人信息</view>
|
||||
<view
|
||||
class="px-15 py-10 mb-15 mx-auto w-345 rounded-10 bg-white"
|
||||
style="box-shadow: 0px 0px 10px 0px #0a44f51a"
|
||||
>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">过户人姓名</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入过户人姓名"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">身份证号码</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入身份证号码"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">联系电话</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入联系电话"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-14">家庭地址</view>
|
||||
<input
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入家庭地址"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex mt-50 pb-15">
|
||||
<view
|
||||
class="flex-1 text-center py-12 rounded-full mx-15 text-15 text-white btn-gradient"
|
||||
@click="handleRegister"
|
||||
>
|
||||
确认信息
|
||||
</view>
|
||||
<view
|
||||
class="flex-1 text-center py-12 rounded-full mx-15 text-15 text-white btn-gradient"
|
||||
@click="handleRegister"
|
||||
>
|
||||
邮寄
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup></script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
navigationBarTitleText: '提现',
|
||||
navigationBarTitleText: '流量提现',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
@@ -18,14 +18,13 @@
|
||||
</template>
|
||||
</NavBar>
|
||||
<view
|
||||
class="m-15 text-white flex rounded-tl-10 rounded-br-10 justify-between items-center p-15 bg-[linear-gradient(90deg,rgba(59,129,243,0.5),#3B81F3)]"
|
||||
class="m-15 text-white flex rounded-tl-10 rounded-br-10 justify-between items-center p-15 bg-[linear-gradient(90deg,#E4C096,#BE805A)]"
|
||||
>
|
||||
<view class="text-14">钱包余额</view>
|
||||
<view class="text-14">流量余额</view>
|
||||
<view class="text-17 font-bold">{{ userStore.userInfo?.money }}</view>
|
||||
</view>
|
||||
<view class="p-15 bg-white shadow-[0_-2px_3px_rgba(10,68,245,0.1)] rounded-10">
|
||||
<view class="mt-15">
|
||||
<view class="text-14 text-#333">提现金额</view>
|
||||
<view
|
||||
class="flex items-center text-14 mt-15 text-#333 p-16 shadow-[0_0_10px_rgba(10,68,245,0.1)] rounded-10"
|
||||
>
|
||||
@@ -35,14 +34,22 @@
|
||||
placeholder="请输入提现金额"
|
||||
class="text-14 text-#333 flex-1"
|
||||
/>
|
||||
<view class="text-12 text-#04A9F9" @click="form.money = userStore.userInfo?.money">
|
||||
<view class="text-12 text-gradient" @click="form.money = userStore.userInfo?.money">
|
||||
全部
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-14 text-#889BC6 mt-30">提现说明(TIPS)</view>
|
||||
<view class="text-12 text-#889BC6 mt-15">
|
||||
<view>1、如遇到系统结算繁忙,结算将会延迟到账</view>
|
||||
<view class="mt-4">2、提现将会提现至您的工商银行卡;</view>
|
||||
</view>
|
||||
<view class="mt-15">
|
||||
<view class="py-15 text-18 text-#333">提现信息</view>
|
||||
<view class="bg-white rounded-10 px-15" style="box-shadow: 0px 0px 10px 0px #0a44f51a">
|
||||
<view class="flex items-center text-14 text-#333 py-25">
|
||||
<view class="">银行卡号</view>
|
||||
<input class="text-14 text-#889BC6 text-right flex-1" placeholder="请输入银行卡号" />
|
||||
</view>
|
||||
<view class="flex items-center text-14 text-#333 py-25">
|
||||
<view class="">开户银行</view>
|
||||
<input class="text-14 text-#889BC6 text-right flex-1" placeholder="请输入开户银行" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -54,15 +61,17 @@
|
||||
class="btn-gradient text-center text-white rounded-full text-14 px-30 py-10"
|
||||
@click="onSubmit"
|
||||
>
|
||||
提现
|
||||
立即提现
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<WithdrawalTaxPopup ref="withdrawalTaxPopupRef" @submit="onTaxSubmit" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import WithdrawalTaxPopup from '@/components/WithdrawalTaxPopup.vue'
|
||||
import { submitWithdrawalAPI } from '@/service'
|
||||
import { useUserStore } from '@/store'
|
||||
import { showModal } from '@/utils'
|
||||
@@ -79,18 +88,24 @@ const onWithdrawalDetail = () => {
|
||||
})
|
||||
}
|
||||
|
||||
const withdrawalTaxPopupRef = ref(null)
|
||||
const onSubmit = async () => {
|
||||
if (!form.value.money) {
|
||||
return uni.showToast({
|
||||
title: '请输入提现金额',
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
// if (!form.value.money) {
|
||||
// return uni.showToast({
|
||||
// title: '请输入提现金额',
|
||||
// icon: 'none',
|
||||
// })
|
||||
// }
|
||||
|
||||
await showModal('确认提现?')
|
||||
await submitWithdrawalAPI(form.value)
|
||||
await showModal('提交成功')
|
||||
onWithdrawalDetail()
|
||||
// await showModal('确认提现?')
|
||||
// await submitWithdrawalAPI(form.value)
|
||||
// await showModal('提交成功')
|
||||
// onWithdrawalDetail()
|
||||
withdrawalTaxPopupRef.value.onShowPopup()
|
||||
}
|
||||
|
||||
function onTaxSubmit(item) {
|
||||
console.log(item)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
},
|
||||
"tabBar": {
|
||||
"color": "#999999",
|
||||
"selectedColor": "#0E57A2",
|
||||
"selectedColor": "#BE805A",
|
||||
"backgroundColor": "#ffffff",
|
||||
"borderStyle": "#E7E7E7",
|
||||
"height": "56px",
|
||||
@@ -29,17 +29,17 @@
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页"
|
||||
},
|
||||
{
|
||||
"iconPath": "static/tabbar/invest.png",
|
||||
"selectedIconPath": "static/tabbar/investHL.png",
|
||||
"pagePath": "pages/invest/index",
|
||||
"text": "保障"
|
||||
},
|
||||
{
|
||||
"iconPath": "static/tabbar/house.png",
|
||||
"selectedIconPath": "static/tabbar/houseHL.png",
|
||||
"pagePath": "pages/invite/index",
|
||||
"text": "社区"
|
||||
"text": "邀请好友"
|
||||
},
|
||||
{
|
||||
"iconPath": "static/tabbar/invest.png",
|
||||
"selectedIconPath": "static/tabbar/investHL.png",
|
||||
"pagePath": "pages/invest/index",
|
||||
"text": "房产集团"
|
||||
},
|
||||
{
|
||||
"iconPath": "static/tabbar/personal.png",
|
||||
@@ -55,7 +55,7 @@
|
||||
"type": "home",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "首页"
|
||||
"navigationBarTitleText": "云房产"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -72,14 +72,14 @@
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "保障"
|
||||
"navigationBarTitleText": "房产集团"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/invite/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "社区",
|
||||
"navigationBarTitleText": "邀请福利",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
@@ -128,9 +128,8 @@
|
||||
"path": "asset-detail/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "资金明细",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationStyle": "custom"
|
||||
"navigationBarTitleText": "股权流量提现明细",
|
||||
"navigationBarBackgroundColor": "#fff"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -148,6 +147,14 @@
|
||||
"navigationBarTitleText": "分包页面 标题"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "equity-withdrawal/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "股权提现"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "hot-news/index",
|
||||
"type": "page",
|
||||
@@ -201,11 +208,18 @@
|
||||
"path": "lottery/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "转盘抽奖",
|
||||
"navigationBarTitleText": "抽奖",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "my-room-certificate/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "我的房产"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "news/index",
|
||||
"type": "page",
|
||||
@@ -239,6 +253,27 @@
|
||||
"navigationBarBackgroundColor": "#fff"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "room-certificate/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "红本房产证"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "room-mail/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "房本邮寄"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "room-transfer/index",
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationBarTitleText": "房产过户"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "team/index",
|
||||
"type": "page",
|
||||
@@ -253,7 +288,7 @@
|
||||
"type": "page",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTitleText": "提现"
|
||||
"navigationBarTitleText": "流量提现"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -116,7 +116,7 @@ onLoad(() => {
|
||||
.login-container {
|
||||
box-sizing: border-box;
|
||||
min-height: 100vh;
|
||||
background-image: url('@/static/images/login-bg.png');
|
||||
background-image: url('@/static/images/login-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
@@ -3,91 +3,49 @@
|
||||
{
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
navigationBarTitleText: '首页',
|
||||
navigationBarTitleText: '云房产',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view class="home-page pb-50">
|
||||
<NavBar />
|
||||
<template v-if="userStore.userInfo?.banknum">
|
||||
<view class="main-container w-345 h-185 mx-auto rounded-14 px-20 pt-70 text-12">
|
||||
<Avatar class="absolute right-45 top-100 w-70 h-70" />
|
||||
<view>姓名:{{ userStore.userInfo?.realname }}</view>
|
||||
<view class="mt-10">社会保障号码:{{ userStore.userInfo?.banknum.substring(0, 4) }}</view>
|
||||
<view class="mt-15">中国工商银行卡号</view>
|
||||
<view class="mt-5 text-14 text-#333">
|
||||
<!-- 每四位数字插入空格 -->
|
||||
{{ userStore.userInfo?.banknum.replace(/(\d{4})(?=\d)/g, '$1 ') }}
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="main-container w-345 h-185 mx-auto rounded-14 px-20 pt-70 text-12">
|
||||
<view>姓名:***</view>
|
||||
<view class="mt-15">社会保障号码:***</view>
|
||||
<view class="mt-15">中国工商银行卡号:**************</view>
|
||||
</view>
|
||||
<view
|
||||
class="mt-15 btn-gradient w-345 h-45 leading-45 mx-auto text-white rounded-full text-center"
|
||||
@click="handleOpenAccount"
|
||||
>
|
||||
开通个人养老账号
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<view class="flex bg-white py-15 rounded-10 m-15 border-2 border-white border-solid">
|
||||
<view
|
||||
class="flex bg-white py-15 rounded-10 mx-15 mb-15 mt-280 border-2 border-white border-solid"
|
||||
style="box-shadow: 0px 4px 10px 0px #cbcbcb4d"
|
||||
>
|
||||
<view class="flex-1 flex flex-col items-center" @click="handleInvite">
|
||||
<image class="w-30 h-30" src="@/static/images/home/nav-1.png" mode="aspectFill" />
|
||||
<text class="mt-8 text-14 text-#333">社区</text>
|
||||
<text class="mt-8 text-14 text-#333">邀请好友</text>
|
||||
</view>
|
||||
<view class="flex-1 flex flex-col items-center" @click="handleDownload">
|
||||
<image class="w-30 h-30" src="@/static/images/home/nav-4.png" mode="aspectFill" />
|
||||
<text class="mt-8 text-14 text-#333">下载APP</text>
|
||||
</view>
|
||||
<view class="flex-1 flex flex-col items-center" @click="handleOfficialCommunity">
|
||||
<view class="flex-1 flex flex-col items-center" @click="handleLottery">
|
||||
<image class="w-30 h-30" src="@/static/images/home/nav-2.png" mode="aspectFill" />
|
||||
<text class="mt-8 text-14 text-#333">官方群聊</text>
|
||||
<text class="mt-8 text-14 text-#333">抽奖福利</text>
|
||||
</view>
|
||||
<view class="flex-1 flex flex-col items-center" @click="handleOfficialCommunity">
|
||||
<image class="w-30 h-30" src="@/static/images/home/nav-3.png" mode="aspectFill" />
|
||||
<text class="mt-8 text-14 text-#333">在线客服</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white pt-15 px-15 rounded-10 m-15">
|
||||
<view class="flex justify-between items-center">
|
||||
<view class="text-14 text-#333">最新时讯</view>
|
||||
<!-- <view class="text-12 text-#999" @click="handleNews">查看全部</view> -->
|
||||
</view>
|
||||
<swiper
|
||||
indicator-active-color="#3B81F3"
|
||||
indicator-color="rgba(0,0,0,0.1)"
|
||||
indicator-dots
|
||||
autoplay
|
||||
circular
|
||||
class="h-240 mt-10"
|
||||
>
|
||||
<swiper-item v-for="item in newsList" :key="item.id">
|
||||
<video class="w-full h-160" :src="item.image" mode="aspectFill" />
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
|
||||
<view class="bg-white py-15 px-15 rounded-10 m-15">
|
||||
<view class="flex justify-between items-center">
|
||||
<view class="text-14 text-#333">热点新闻</view>
|
||||
<view class="text-12 text-#999" @click="handleHotNews">查看全部</view>
|
||||
</view>
|
||||
<view class="text-30 text-gradient my-30 text-center font-bold">云房产集团</view>
|
||||
|
||||
<view class="bg-white w-345 mx-auto rounded-10">
|
||||
<view
|
||||
class="flex mt-15"
|
||||
class="mt-15"
|
||||
v-for="item in hotNewsList"
|
||||
:key="item.id"
|
||||
@click="handleNewsDetail(item.id)"
|
||||
>
|
||||
<image class="w-85 h-85 rounded-10" :src="item.image" mode="aspectFill" />
|
||||
<view class="ml-15 flex-1 flex flex-col justify-between">
|
||||
<view text-14>{{ item.name }}</view>
|
||||
<view class="text-12 text-#999">{{ item.source }}</view>
|
||||
<image class="w-345 h-207 rounded-10" :src="item.image" mode="aspectFill" />
|
||||
<view class="mt-10 flex-1 flex flex-col justify-between">
|
||||
<view class="text-14 text-#666">{{ item.name }}</view>
|
||||
<!-- <view class="text-12 text-#999">{{ item.source }}</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -162,6 +120,10 @@ const handleOfficialCommunity = () => {
|
||||
})
|
||||
}
|
||||
|
||||
const handleLottery = () => {
|
||||
uni.navigateTo({ url: '/pages-sub/lottery/index' })
|
||||
}
|
||||
|
||||
const handleDownload = () => {
|
||||
downloadAppAPI()
|
||||
}
|
||||
@@ -216,13 +178,9 @@ const handleOpenAccount = async () => {
|
||||
.home-page {
|
||||
min-height: 100vh;
|
||||
background-image: url('@/static/images/home/bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top;
|
||||
background-size: cover;
|
||||
}
|
||||
.main-container {
|
||||
background-image: url('@/static/images/home/main-bg.jpg');
|
||||
background-position: top;
|
||||
background-size: cover;
|
||||
background-size: 100%;
|
||||
}
|
||||
.notice-container {
|
||||
background-image: url('@/static/images/home/notice-bg.jpg');
|
||||
|
||||
@@ -3,47 +3,15 @@
|
||||
{
|
||||
style: {
|
||||
navigationStyle: 'custom',
|
||||
navigationBarTitleText: '保障',
|
||||
navigationBarTitleText: '房产集团',
|
||||
},
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view class="invest-page">
|
||||
<NavBar />
|
||||
<view class="py-20 flex flex-col mx-15 rounded-20 main-content text-white">
|
||||
<view class="text-14 pl-15">保险概览</view>
|
||||
<view class="flex mt-30">
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-14">全部</view>
|
||||
<view class="text-16 font-bold mt-15">
|
||||
{{ userStore.userInfo?.yanglao + userStore.userInfo?.yiliao }}份
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-14">养老</view>
|
||||
<view class="text-16 font-bold mt-15">{{ userStore.userInfo?.yanglao }}份</view>
|
||||
</view>
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-14">医疗</view>
|
||||
<view class="text-16 font-bold mt-15">{{ userStore.userInfo?.yiliao }}份</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <NavBar title-color="#46200B" /> -->
|
||||
|
||||
<view class="flex p-15 mt-15">
|
||||
<view
|
||||
v-for="item in tabList"
|
||||
:key="item.value"
|
||||
class="px-24 mr-15 bg-#DEEBFF text-#3B81F3 py-4 rounded-full text-14"
|
||||
:class="{ 'btn-gradient text-white': item.value === tabValue }"
|
||||
@click="tabValue = item.value"
|
||||
>
|
||||
{{ item.title }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view>
|
||||
<template v-if="tabValue === 1">
|
||||
<view class="pt-150">
|
||||
<view
|
||||
v-for="item in investmentList"
|
||||
:key="item.id"
|
||||
@@ -74,54 +42,20 @@
|
||||
</view>
|
||||
<view class="flex items-center mt-15">
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-15 text-#FF3B30">{{ item.dividend }}(%)</view>
|
||||
<view class="text-14 text-#999">日收益</view>
|
||||
<view class="text-15 text-#FF3B30">100~150²m</view>
|
||||
</view>
|
||||
<view class="text-#D9D9D9">|</view>
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-15 text-#FF3B30">{{ item.days }}(天)</view>
|
||||
<view class="text-14 text-#999">周期</view>
|
||||
<view class="text-15 text-#FF3B30">仅剩4969套</view>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="mt-15 px-30 text-center text-15 text-white rounded-full py-8 btn-gradient"
|
||||
@click="onInvest(item)"
|
||||
>
|
||||
购买({{ item.money }}元)
|
||||
免费领取
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template v-else>
|
||||
<view
|
||||
v-for="item in investmentList"
|
||||
:key="item.id"
|
||||
class="p-15 bg-white rounded-20 mx-auto w-345 relative mb-15"
|
||||
>
|
||||
<view class="flex">
|
||||
<image
|
||||
class="rounded-10 w-100 h-100"
|
||||
mode="aspectFill"
|
||||
:src="getImageUrl(item.leftimage)"
|
||||
/>
|
||||
<view class="flex-1 ml-15">
|
||||
<view class="text-15 text-#333 font-bold">{{ item.name }}</view>
|
||||
<view class="text-12 mt-15 text-#999" v-html="item.content" />
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="text-center text-15 text-white rounded-full py-8 border-#3B81F3 border-1 border-solid mt-15"
|
||||
>
|
||||
<text class="text-gradient" @click="onShowRights(item)">查看权益</text>
|
||||
</view>
|
||||
<view
|
||||
class="text-center text-15 text-white rounded-full py-8 btn-gradient mt-15"
|
||||
@click="onInvest(item)"
|
||||
>
|
||||
我要投保({{ item.money }}元)
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</view>
|
||||
<wd-popup
|
||||
v-model="showRightConfig.show"
|
||||
@@ -141,9 +75,6 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import AlipayIcon from '@/static/images/invest/alipay-icon.png'
|
||||
import WechatIcon from '@/static/images/invest/wechat-icon.png'
|
||||
import UnionpayIcon from '@/static/images/invest/unionpay-icon.png'
|
||||
import { getInvestmentListAPI, submitInvestAPI } from '@/service'
|
||||
import { useUserStore } from '@/store'
|
||||
import { getImageUrl, mergeStep, showModal } from '@/utils'
|
||||
@@ -231,9 +162,11 @@ const onInvest = mergeStep(async (item: any) => {
|
||||
.invest-page {
|
||||
min-height: 100vh;
|
||||
padding-bottom: 100px;
|
||||
background-image: url('@/static/images/home/bg.jpg');
|
||||
background-color: #3e2417;
|
||||
background-image: url('@/static/images/invest/bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top;
|
||||
background-size: cover;
|
||||
background-size: 100%;
|
||||
}
|
||||
.main-content {
|
||||
background: linear-gradient(90deg, #71a4f8 0%, #3b81f3 103.83%);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<route lang="json5">
|
||||
{
|
||||
style: {
|
||||
navigationBarTitleText: '社区',
|
||||
navigationBarTitleText: '邀请福利',
|
||||
navigationBarBackgroundColor: '#fff',
|
||||
navigationStyle: 'custom',
|
||||
},
|
||||
@@ -23,7 +23,7 @@ import { showModal } from '@/utils'
|
||||
const userStore = useUserStore()
|
||||
|
||||
const qrcodeValue =
|
||||
location.origin + '/#/pages/register/index?invite=' + userStore.userInfo?.invitecode
|
||||
location.origin + '/#/pages/register/index?invite_code=' + userStore.userInfo?.invitecode
|
||||
|
||||
const onCopy = (code: string) => {
|
||||
uni.setClipboardData({
|
||||
@@ -114,8 +114,8 @@ async function onGetReward(level) {
|
||||
|
||||
<template>
|
||||
<view class="pb-100 min-h-screen invite-page">
|
||||
<NavBar />
|
||||
<view class="flex items-center mt-228 mx-auto w-345 bg-#FFFFFFE5 p-15 rounded-20">
|
||||
<NavBar title-color="#46200B" />
|
||||
<view class="flex items-center mt-260 mx-auto w-345 bg-#FFFFFFE5 p-15 rounded-20">
|
||||
<view class="text-center">
|
||||
<view class="mt-15 rounded-10 overflow-hidden flex bg-#FFFFFF50 p-10 shadow">
|
||||
<VueQrcode
|
||||
@@ -144,13 +144,20 @@ async function onGetReward(level) {
|
||||
</view>
|
||||
<view class="mt-70 w-345 mx-auto">
|
||||
<view
|
||||
class="bg-#F3F8FF rounded-10 border-#3B81F3 border-2 border-solid p-15 flex items-start"
|
||||
class="bg-#F3F8FF rounded-10 border-#BE805A border-2 border-solid p-15 flex items-start"
|
||||
v-for="item of taskList"
|
||||
:key="item.title"
|
||||
>
|
||||
<view class="flex-1">
|
||||
<view class="text-15 text-#333 font-500">{{ item.title }}</view>
|
||||
<view class="text-12 text-#333 mt-8">{{ item.desc }}</view>
|
||||
<!-- <view class="text-12 text-#333 mt-8">{{ item.desc }}</view> -->
|
||||
<view class="text-12 text-#333 mt-8">
|
||||
赠送25000碧桂园股权
|
||||
<br />
|
||||
价值2500000万流量补贴30元
|
||||
<br />
|
||||
砸金蛋机会1次
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<view
|
||||
@@ -169,19 +176,6 @@ async function onGetReward(level) {
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-#FFFFFFE5 rounded-20 mt-30 w-345 mx-auto p-15 flex">
|
||||
<view class="flex-1 text-center">
|
||||
<view class="text-18 text-#333">团队人数</view>
|
||||
<view class="text-gradient text-18 mt-8">{{ inviteData.num }}</view>
|
||||
<view class="font-500 text-14 mt-4">直推人数</view>
|
||||
</view>
|
||||
<view class="flex-1 text-center">
|
||||
<!-- <view class="text-18 text-#333">我的佣金</view> -->
|
||||
<view class="text-18 text-#333 h-25"></view>
|
||||
<view class="text-gradient text-18 mt-8">{{ inviteData.performance }}</view>
|
||||
<view class="font-500 text-14 mt-4">直推业绩</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt-15 w-345 mx-auto">
|
||||
<view class="ml-15 text-18 text-white">团队成员({{ inviteData.num }}/人)</view>
|
||||
<view class="mt-15 bg-white px-15 pt-15 pb-4 rounded-10" v-for="item of list" :key="item.id">
|
||||
@@ -209,7 +203,7 @@ async function onGetReward(level) {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.invite-page {
|
||||
background-color: #000139;
|
||||
background-color: #3d2316;
|
||||
background-image: url('@/static/images/page-sub/invite-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-position: top -40px center;
|
||||
|
||||
@@ -8,21 +8,16 @@
|
||||
}
|
||||
</route>
|
||||
<template>
|
||||
<view class="login-container relative pt-44">
|
||||
<view class="login-container relative pt-220">
|
||||
<!-- <NavBar title-color="#333" /> -->
|
||||
<!-- <view class="text-28 pl-32 text-gradient" style="-webkit-background-clip: text">登录</view> -->
|
||||
<image
|
||||
class="w-100 mx-auto block h-100"
|
||||
src="@/static/images/login/logo.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<view class="pt-45">
|
||||
<view class="mx-15 px-15 shadow-[0_0_10px_rgba(10,68,245,0.1)] rounded-10">
|
||||
<view class="py-45 bg-white mx-15 rounded-10">
|
||||
<view class="mx-15 px-15">
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">手机号</view>
|
||||
<input
|
||||
type="text"
|
||||
v-model="formData.account"
|
||||
v-model="formData.mobile"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入手机号"
|
||||
@@ -42,7 +37,7 @@
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">验证码</view>
|
||||
<input
|
||||
v-model="formData.captcha"
|
||||
v-model="formData.verify_code"
|
||||
placeholder-class="text-#889BC6"
|
||||
type="text"
|
||||
class="text-right flex-1 text-14"
|
||||
@@ -82,27 +77,26 @@ import { useUserStore } from '@/store/user'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const formData = ref({
|
||||
account: '',
|
||||
mobile: '',
|
||||
password: '',
|
||||
captcha: '',
|
||||
verify_code: '',
|
||||
})
|
||||
|
||||
const { codeUrl, t: captchaT, refreshCode } = useCaptcha()
|
||||
const { codeUrl, codeKey, refreshCode } = useCaptcha()
|
||||
|
||||
let redirect = '/'
|
||||
onLoad((options) => {
|
||||
redirect = options.redirect ?? '/'
|
||||
})
|
||||
onShow(refreshCode)
|
||||
|
||||
const handleLogin = async () => {
|
||||
if (!formData.value.account || !formData.value.password) {
|
||||
if (!formData.value.mobile || !formData.value.password) {
|
||||
return uni.showToast({
|
||||
title: '请输入用户名和密码',
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
if (!formData.value.captcha) {
|
||||
if (!formData.value.verify_code) {
|
||||
return uni.showToast({
|
||||
title: '请输入验证码',
|
||||
icon: 'none',
|
||||
@@ -110,10 +104,8 @@ const handleLogin = async () => {
|
||||
}
|
||||
try {
|
||||
const {
|
||||
data: {
|
||||
userinfo: { token },
|
||||
},
|
||||
} = await loginUserAPI({ ...formData.value, t: captchaT.value })
|
||||
data: { token },
|
||||
} = await loginUserAPI({ ...formData.value, verify_key: codeKey.value })
|
||||
userStore.setToken(token)
|
||||
uni.reLaunch({
|
||||
url: redirect,
|
||||
@@ -149,7 +141,7 @@ onLoad(() => {
|
||||
box-sizing: border-box;
|
||||
min-height: 100vh;
|
||||
padding-bottom: 50px;
|
||||
background-image: url('@/static/images/login-bg.png');
|
||||
background-image: url('@/static/images/login-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
@@ -8,9 +8,8 @@
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="my-page">
|
||||
<NavBar />
|
||||
<view class="flex mt-50 text-white px-15 items-center">
|
||||
<view class="my-page pt-50">
|
||||
<view class="flex text-white px-15 items-center">
|
||||
<!-- <Avatar class="w-60 h-60" :src="getImageUrl(userStore.userInfo?.avatar)" /> -->
|
||||
<Avatar class="w-60 h-60" />
|
||||
<view class="ml-15 flex-1">
|
||||
@@ -19,64 +18,84 @@
|
||||
</view>
|
||||
<view class="text-12 mt-8">账号:{{ userStore.userInfo?.username }}</view>
|
||||
</view>
|
||||
<view
|
||||
<!-- <view
|
||||
class="flex border-#50D0FF border-1 border-solid items-center justify-center h-32 w-100 btn-gradient rounded-full text-center text-14 text-white"
|
||||
@click="handleSignIn"
|
||||
>
|
||||
<image class="w-30 h-26 mt-5" src="@/static/images/my/sign-icon.png" mode="widthFix" />
|
||||
<view class="ml-5">签到</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
|
||||
<image class="w-66 h-23 ml-15 mt-15" src="@/static/images/my/myEquity.png" mode="widthFix" />
|
||||
<view class="grid grid-cols-2 gap-10 px-15 mt-15">
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(0)">
|
||||
<view class="flex text-white text-12">我的余额</view>
|
||||
<view class="text-20 text-gradient font-bold">{{ userStore.userInfo?.money }}</view>
|
||||
<view class="flex text-white text-12">我的股权</view>
|
||||
<view class="text-15 text-#333 mt-4 font-bold">{{ userStore.userInfo?.money }}股</view>
|
||||
<view class="text-15 text-#333 font-bold">≈{{ userStore.userInfo?.money }}万</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-15 mt-8"
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-20 mt-8"
|
||||
@click.stop="handleEquityWithdrawal"
|
||||
>
|
||||
提现
|
||||
</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(0)">
|
||||
<view class="flex text-white text-12">碧桂园股权</view>
|
||||
<view class="text-15 text-#333 mt-4 font-bold">{{ userStore.userInfo?.money }}股</view>
|
||||
<view class="text-15 text-#333 font-bold">≈{{ userStore.userInfo?.money }}万</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-20 mt-8"
|
||||
@click.stop="handleEquityWithdrawal"
|
||||
>
|
||||
提现
|
||||
</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(0)">
|
||||
<view class="flex text-white text-12">雅居乐股权</view>
|
||||
<view class="text-15 text-#333 mt-4 font-bold">{{ userStore.userInfo?.money }}股</view>
|
||||
<view class="text-15 text-#333 font-bold">≈{{ userStore.userInfo?.money }}万</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-20 mt-8"
|
||||
@click.stop="handleEquityWithdrawal"
|
||||
>
|
||||
提现
|
||||
</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(0)">
|
||||
<view class="flex text-white text-12">恒大股权</view>
|
||||
<view class="text-15 text-#333 mt-4 font-bold">{{ userStore.userInfo?.money }}股</view>
|
||||
<view class="text-15 text-#333 font-bold">≈{{ userStore.userInfo?.money }}万</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-20 mt-8"
|
||||
@click.stop="handleEquityWithdrawal"
|
||||
>
|
||||
提现
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<image
|
||||
class="w-96 h-23 ml-15 mt-15"
|
||||
src="@/static/images/my/myFlowSubsidy.png"
|
||||
mode="widthFix"
|
||||
/>
|
||||
<view class="grid grid-cols-2 gap-10 px-15 mt-15">
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(0)">
|
||||
<view class="text-15 text-#333 mt-4 font-bold">{{ userStore.userInfo?.money }}元</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-20 mt-8"
|
||||
@click.stop="handleWithdrawal"
|
||||
>
|
||||
提现
|
||||
</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(2)">
|
||||
<view class="flex text-white text-12">养老金余额</view>
|
||||
<view class="text-20 text-gradient font-bold">{{ userStore.userInfo?.moneyold }}</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-15 mt-8"
|
||||
@click.stop="handleConvert(0)"
|
||||
>
|
||||
转至我的余额
|
||||
</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(1)">
|
||||
<view class="flex text-white text-12">社保金余额</view>
|
||||
<view class="text-20 text-gradient font-bold">{{ userStore.userInfo?.moneyjiu }}</view>
|
||||
</view>
|
||||
<view class="px-15 py-10 rounded-10 bg-#FFFFFF33" @click="handleAsset(3)">
|
||||
<view class="flex text-white text-12">团队佣金</view>
|
||||
<view class="text-20 text-gradient font-bold">{{ userStore.userInfo?.moneyyong }}</view>
|
||||
<view
|
||||
class="btn-gradient w-fit rounded-full text-center text-12 text-white py-2 px-15 mt-8"
|
||||
@click.stop="handleConvert(1)"
|
||||
>
|
||||
转至养老金
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mt-15 rounded-30 bg-white p-15">
|
||||
<image
|
||||
class="w-345 h-146 mx-auto block"
|
||||
src="@/static/images/my/recommend.jpg"
|
||||
mode="widthFix"
|
||||
@click="handleInvite"
|
||||
/>
|
||||
|
||||
<view class="mt-15 rounded-t-30 bg-white p-15 min-h-50vh">
|
||||
<view class="mt-15 grid grid-cols-2 gap-10">
|
||||
<view
|
||||
@click="item.handle"
|
||||
class="flex items-center justify-center rounded-tl-10 rounded-br-10 bg-[linear-gradient(45deg,#EFF7FF,#D1E8FF)] p-15 border border-#BEDCFF border-solid"
|
||||
class="flex items-center justify-center rounded-tl-10 rounded-br-10 bg-[linear-gradient(45deg,#FFF7F0,#FBE1D1)] p-15"
|
||||
v-for="item in commonList"
|
||||
:key="item.title"
|
||||
>
|
||||
@@ -127,11 +146,17 @@ const handleWithdrawalDetail = () => {
|
||||
})
|
||||
}
|
||||
|
||||
const handleEquityWithdrawal = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/equity-withdrawal/index',
|
||||
})
|
||||
}
|
||||
|
||||
const handleWithdrawal = () => {
|
||||
return showModal('暂未开放')
|
||||
// uni.navigateTo({
|
||||
// url: '/pages-sub/withdrawal/index',
|
||||
// })
|
||||
// return showModal('暂未开放')
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/withdrawal/index',
|
||||
})
|
||||
}
|
||||
|
||||
const handleTeam = () => {
|
||||
@@ -204,40 +229,53 @@ const handleInvestDetail = () => {
|
||||
|
||||
const commonList = [
|
||||
{
|
||||
title: '投保记录',
|
||||
title: '红本房产证',
|
||||
icon: CommonIcon5,
|
||||
handle: handleInvestDetail,
|
||||
handle: () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/room-certificate/index',
|
||||
})
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '资金明细',
|
||||
title: '我的房产',
|
||||
icon: CommonIcon8,
|
||||
handle: () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages-sub/my-room-certificate/index',
|
||||
})
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '股权提现明细',
|
||||
icon: CommonIcon6,
|
||||
handle: handleAssetDetail,
|
||||
},
|
||||
{
|
||||
title: '申请理赔',
|
||||
title: '流量提现明细',
|
||||
icon: CommonIcon7,
|
||||
handle: handleKefu,
|
||||
},
|
||||
{
|
||||
title: '我的社区',
|
||||
icon: CommonIcon4,
|
||||
handle: handleInvite,
|
||||
},
|
||||
{
|
||||
title: '在线客服',
|
||||
icon: CommonIcon9,
|
||||
handle: handleKefu,
|
||||
},
|
||||
{
|
||||
title: 'APP下载',
|
||||
icon: CommonIcon3,
|
||||
handle: downloadAppAPI,
|
||||
},
|
||||
{
|
||||
title: '官方群聊',
|
||||
icon: CommonIcon1,
|
||||
handle: handleKefu,
|
||||
handle: handleAssetDetail,
|
||||
},
|
||||
// {
|
||||
// title: '我的社区',
|
||||
// icon: CommonIcon4,
|
||||
// handle: handleInvite,
|
||||
// },
|
||||
// {
|
||||
// title: '在线客服',
|
||||
// icon: CommonIcon9,
|
||||
// handle: handleKefu,
|
||||
// },
|
||||
// {
|
||||
// title: 'APP下载',
|
||||
// icon: CommonIcon3,
|
||||
// handle: downloadAppAPI,
|
||||
// },
|
||||
// {
|
||||
// title: '官方群聊',
|
||||
// icon: CommonIcon1,
|
||||
// handle: handleKefu,
|
||||
// },
|
||||
]
|
||||
</script>
|
||||
|
||||
|
||||
@@ -13,15 +13,16 @@ import NavBar from '@/components/NavBar.vue'
|
||||
import { isLogged } from '@/interceptors/route'
|
||||
import { registerUserAPI } from '@/service'
|
||||
import { useUserStore } from '@/store/user'
|
||||
import { mergeStep } from '@/utils'
|
||||
import { mergeStep, showModal } from '@/utils'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const form = ref({
|
||||
username: '',
|
||||
mobile: '',
|
||||
// member_nickname: '',
|
||||
password: '',
|
||||
retpassword: '',
|
||||
invitecode: '',
|
||||
invite_code: '',
|
||||
verify_code: '',
|
||||
// tpassword: '',
|
||||
// rettpassword: '',
|
||||
})
|
||||
@@ -29,11 +30,13 @@ const form = ref({
|
||||
let redirect = '/'
|
||||
onLoad((options) => {
|
||||
redirect = options.redirect ?? '/'
|
||||
form.value.invitecode = options.invitecode ?? ''
|
||||
form.value.invite_code = options.invite_code ?? ''
|
||||
})
|
||||
|
||||
const { codeUrl, codeKey, refreshCode } = useCaptcha()
|
||||
|
||||
const handleRegister = mergeStep(async () => {
|
||||
if (!/^\d{11}$/.test(form.value.username)) {
|
||||
if (!/^\d{11}$/.test(form.value.mobile)) {
|
||||
uni.showToast({
|
||||
title: '请输入正确手机号(11位)',
|
||||
icon: 'none',
|
||||
@@ -55,22 +58,31 @@ const handleRegister = mergeStep(async () => {
|
||||
return
|
||||
}
|
||||
|
||||
if (!form.value.invitecode) {
|
||||
if (!form.value.invite_code) {
|
||||
uni.showToast({
|
||||
title: '请输入邀请码',
|
||||
icon: 'none',
|
||||
})
|
||||
return
|
||||
}
|
||||
const {
|
||||
data: {
|
||||
userinfo: { token },
|
||||
},
|
||||
} = await registerUserAPI(form.value)
|
||||
userStore.setToken(token)
|
||||
uni.reLaunch({
|
||||
url: redirect,
|
||||
if (!form.value.verify_code) {
|
||||
return uni.showToast({
|
||||
title: '请输入验证码',
|
||||
icon: 'none',
|
||||
})
|
||||
}
|
||||
|
||||
try {
|
||||
await registerUserAPI({ ...form.value, verify_key: codeKey.value })
|
||||
await showModal('注册成功', {
|
||||
confirmText: '立即登录',
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/index',
|
||||
})
|
||||
} catch {
|
||||
refreshCode()
|
||||
}
|
||||
})
|
||||
onLoad(async (options) => {
|
||||
if (isLogged()) {
|
||||
@@ -78,24 +90,19 @@ onLoad(async (options) => {
|
||||
url: redirect,
|
||||
})
|
||||
}
|
||||
form.value.invitecode = options.invite ?? ''
|
||||
form.value.invite_code = options.invite ?? ''
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<view class="login-container relative">
|
||||
<NavBar />
|
||||
<image
|
||||
class="mt-30 w-86 rounded-full mx-auto block h-86"
|
||||
src="@/static/images/login/logo.png"
|
||||
mode="aspectFit"
|
||||
/>
|
||||
<view class="pt-45">
|
||||
<view class="mx-15 bg-white px-15 shadow-[0_0_10px_rgba(10,68,245,0.1)] rounded-10">
|
||||
<view class="py-45 mt-180 mx-15 rounded-10 bg-white">
|
||||
<view class="mx-15 px-15">
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">手机号</view>
|
||||
<input
|
||||
v-model="form.username"
|
||||
v-model="form.mobile"
|
||||
type="text"
|
||||
placeholder-class="text-#889BC6"
|
||||
class="text-right flex-1 text-14"
|
||||
@@ -122,21 +129,27 @@ onLoad(async (options) => {
|
||||
placeholder="请再次输入登录密码"
|
||||
/>
|
||||
</view>
|
||||
<!-- <view class="flex items-center py-15">
|
||||
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">验证码</view>
|
||||
<input
|
||||
v-model="form.invitecode"
|
||||
v-model="form.verify_code"
|
||||
placeholder-class="text-#889BC6"
|
||||
type="text"
|
||||
class="text-right flex-1 text-14"
|
||||
placeholder="请输入验证码"
|
||||
/>
|
||||
<image class="w-60 h-24 ml-15 bg-gray-400" mode="aspectFit" />
|
||||
</view> -->
|
||||
<img
|
||||
:src="codeUrl"
|
||||
class="w-108 h-31 ml-15 bg-gray-400"
|
||||
mode="widthFix"
|
||||
@click="refreshCode"
|
||||
/>
|
||||
</view>
|
||||
<view class="flex items-center py-15">
|
||||
<view class="text-gradient">邀请码</view>
|
||||
<input
|
||||
v-model="form.invitecode"
|
||||
v-model="form.invite_code"
|
||||
placeholder-class="text-#889BC6"
|
||||
type="text"
|
||||
class="text-right flex-1 text-14"
|
||||
@@ -159,7 +172,7 @@ onLoad(async (options) => {
|
||||
box-sizing: border-box;
|
||||
min-height: 100vh;
|
||||
padding-bottom: 50px;
|
||||
background-image: url('@/static/images/register-bg.jpg');
|
||||
background-image: url('@/static/images/login-bg.jpg');
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { http } from '@/utils/http'
|
||||
|
||||
// 获取验证码
|
||||
export const getCaptchaAPI = () =>
|
||||
http<any>({
|
||||
url: '/api/user/captcha',
|
||||
})
|
||||
|
||||
// 注册用户
|
||||
export const registerUserAPI = (data) =>
|
||||
http({
|
||||
@@ -19,7 +25,7 @@ export const loginUserAPI = (data) =>
|
||||
// 获取用户信息
|
||||
export const getUserInfoAPI = () =>
|
||||
http({
|
||||
url: '/api/user/index',
|
||||
url: '/api/user/info',
|
||||
method: 'GET',
|
||||
})
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 951 B After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 867 B After Width: | Height: | Size: 892 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 734 KiB After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 371 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -15,6 +15,7 @@ interface NavigateToOptions {
|
||||
"/pages-sub/asset-detail/index" |
|
||||
"/pages-sub/convert/index" |
|
||||
"/pages-sub/demo/index" |
|
||||
"/pages-sub/equity-withdrawal/index" |
|
||||
"/pages-sub/hot-news/index" |
|
||||
"/pages-sub/introduction/index" |
|
||||
"/pages-sub/invest-detail/index" |
|
||||
@@ -22,10 +23,14 @@ interface NavigateToOptions {
|
||||
"/pages-sub/invest-result/index" |
|
||||
"/pages-sub/invite/index" |
|
||||
"/pages-sub/lottery/index" |
|
||||
"/pages-sub/my-room-certificate/index" |
|
||||
"/pages-sub/news/index" |
|
||||
"/pages-sub/news-detail/index" |
|
||||
"/pages-sub/official-community/index" |
|
||||
"/pages-sub/realname/index" |
|
||||
"/pages-sub/room-certificate/index" |
|
||||
"/pages-sub/room-mail/index" |
|
||||
"/pages-sub/room-transfer/index" |
|
||||
"/pages-sub/team/index" |
|
||||
"/pages-sub/withdrawal/index" |
|
||||
"/pages-sub/withdrawal-detail/index" |
|
||||
@@ -35,7 +40,7 @@ interface NavigateToOptions {
|
||||
interface RedirectToOptions extends NavigateToOptions {}
|
||||
|
||||
interface SwitchTabOptions {
|
||||
url: "/pages/index/index" | "/pages/invest/index" | "/pages/invite/index" | "/pages/my/index"
|
||||
url: "/pages/index/index" | "/pages/invite/index" | "/pages/invest/index" | "/pages/my/index"
|
||||
}
|
||||
|
||||
type ReLaunchOptions = NavigateToOptions | SwitchTabOptions;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
type IResData<T> = {
|
||||
code: number
|
||||
msg: string
|
||||
message: string
|
||||
data: T
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
import { CustomRequestOptions } from '@/interceptors/request'
|
||||
import { loginRoute } from '@/interceptors/route'
|
||||
import { useUserStore } from '@/store'
|
||||
import { mergeStep, showModal } from '.'
|
||||
|
||||
const realnameJump = mergeStep(async (message) => {
|
||||
if (location.href.includes('realname/index')) {
|
||||
return
|
||||
}
|
||||
await showModal(message, {
|
||||
confirmText: '立即认证',
|
||||
})
|
||||
uni.reLaunch({
|
||||
url: '/pages-sub/realname/index',
|
||||
})
|
||||
})
|
||||
|
||||
export const http = <T>(options: CustomRequestOptions) => {
|
||||
// 1. 返回 Promise 对象
|
||||
@@ -20,13 +33,16 @@ export const http = <T>(options: CustomRequestOptions) => {
|
||||
const data = res.data as IResData<T>
|
||||
if (data.code === 1) {
|
||||
resolve(data as IResData<T>)
|
||||
} else if (data.code === 401) {
|
||||
} else if (data.code === 1002) {
|
||||
realnameJump(data.message)
|
||||
reject(res)
|
||||
} else if (data.code === 1001) {
|
||||
const userStore = useUserStore()
|
||||
userStore.logout()
|
||||
!options.hideErrorToast &&
|
||||
(await uni.showModal({
|
||||
title: '提示',
|
||||
content: data.msg || '请求错误',
|
||||
content: data.message || '请求错误',
|
||||
showCancel: false,
|
||||
}))
|
||||
uni.reLaunch({
|
||||
@@ -38,7 +54,7 @@ export const http = <T>(options: CustomRequestOptions) => {
|
||||
!options.hideErrorToast &&
|
||||
(await uni.showModal({
|
||||
title: '提示',
|
||||
content: data.msg || '请求错误',
|
||||
content: data.message || '请求错误',
|
||||
showCancel: false,
|
||||
}))
|
||||
reject(res)
|
||||
@@ -52,7 +68,7 @@ export const http = <T>(options: CustomRequestOptions) => {
|
||||
!options.hideErrorToast &&
|
||||
(await uni.showModal({
|
||||
title: '提示',
|
||||
content: res.data.msg || '请求错误',
|
||||
content: res.data.message || '请求错误',
|
||||
showCancel: false,
|
||||
}))
|
||||
uni.reLaunch({
|
||||
@@ -65,7 +81,7 @@ export const http = <T>(options: CustomRequestOptions) => {
|
||||
!options.hideErrorToast &&
|
||||
(await uni.showModal({
|
||||
title: '提示',
|
||||
content: (res.data as IResData<T>).msg || '请求错误',
|
||||
content: (res.data as IResData<T>).message || '请求错误',
|
||||
showCancel: false,
|
||||
}))
|
||||
reject(res)
|
||||
|
||||
@@ -78,11 +78,11 @@ export default defineConfig({
|
||||
],
|
||||
['pt-safe', { 'padding-top': 'env(safe-area-inset-top)' }],
|
||||
['pb-safe', { 'padding-bottom': 'env(safe-area-inset-bottom)' }],
|
||||
['btn-gradient', { background: 'linear-gradient(90deg,#3B81F3,#50D0FF)' }],
|
||||
['btn-gradient', { background: 'linear-gradient(90deg,#E4C096,#BE805A)' }],
|
||||
[
|
||||
'text-gradient',
|
||||
{
|
||||
'background-image': 'linear-gradient(90deg,#3B81F3,#50D0FF)',
|
||||
'background-image': 'linear-gradient(180deg,#B2926B,#F5CB97)',
|
||||
'background-clip': 'text',
|
||||
color: 'transparent',
|
||||
},
|
||||
|
||||