租房小程序前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

300 lines
9.2 KiB

<template>
<view class="u-page">
<!-- 已登录状态 -->
<view v-if="isLoggedIn" class="se-pt-30 se-pb-60 se-px-40 se-bgc-green se-c-white se-pos">
<view class="se-flex">
<image @click="onHead" :src="userInfo.headImage" class="se-br-p-50 se-bgc-f9 se-w-120 se-h-120" mode="">
</image>
<view class="se-ml-20 se-flex se-flex-v-sa se-flex-ai-fs">
<view class="se-flex" style="align-items: center;">
<text class="se-fw-6 se-fs-30">{{userInfo.nickName?userInfo.nickName:'暂无昵称'}}</text>
<!-- 会员状态 -->
<view class="" v-if="vipInfo.title" style="display: flex;background-color: #fff;
color: #0f0;
font-size: 24rpx;
align-items: center;
border-radius: 20rpx;
padding: 4rpx 10rpx;">
{{vipInfo.title}}
</view>
</view>
<view class="se-fs-24 se-display-ib" v-if="userInfo.phone">
<text>手机号:</text>
<text class="se-ml-20">{{userInfo.phone}}</text>
</view>
</view>
</view>
</view>
<!-- 未登录状态 -->
<view v-else class="se-pt-30 se-pb-60 se-px-40 se-bgc-green se-c-white se-pos">
<view class="se-flex se-flex-v-c se-flex-h-c se-py-60">
<view class="se-ta-c">
<image class="se-w-120 se-h-120 se-br-p-50 se-bgc-f9" src="@/static/image/header.png" mode=""></image>
<view class="se-mt-20 se-fs-30 se-fw-6">未登录</view>
<view class="se-mt-10 se-fs-24">登录后享受更多服务</view>
<view @click="goToLogin" class="se-mt-30 se-br-40 se-bgc-white se-c-green se-py-15 se-px-40 se-fs-28 se-fw-6">
立即登录
</view>
</view>
</view>
</view>
<!-- <view class="se-pos-cb se-flex se-flex-h-sb se-w-vw-82 se-br-10 se-bgc-white se-py-30 se-px-20"
style="bottom: -90rpx;">
<view class="se-flex se-flex-v-c se-flex-1">
<image src="@/static/image/46892@2x.png" class="se-a-80" mode=""></image>
<view @click="onNavigateTo()" class=" se-ta-c se-fw-6 se-br-30 se-mt-10 se-py-5 se-px-22 se-c-black se-fs-22 ">
我的钱包
</view>
</view>
<view class="se-flex se-flex-v-c se-flex-1 ">
<image src="@/static/image/47077@2x.png" class="se-a-80" mode=""></image>
<view @click="onNavigateTo()" class=" se-ta-c se-fw-6 se-br-30 se-mt-10 se-py-5 se-px-22 se-c-black se-fs-22 ">
我的预约
</view>
</view>
<view class="se-flex se-flex-v-c se-flex-1 ">
<image src="@/static/image/47065@2x.png" class="se-a-80" mode=""></image>
<view @click="onNavigateTo()" class=" se-ta-c se-fw-6 se-br-30 se-mt-10 se-py-5 se-px-22 se-c-black se-fs-22 ">
我的收藏
</view>
</view>
<view class="se-flex se-flex-v-c se-flex-1 ">
<image src="@/static/image/46896@2x.png" class="se-a-80" mode=""></image>
<view @click="onNavigateTo()" class=" se-ta-c se-fw-6 se-br-30 se-mt-10 se-py-5 se-px-22 se-c-black se-fs-22 ">
需求发布
</view>
</view>
</view> -->
<view class="se-m-30 se-mt-30 se-pl-30 se-pr-20 se-br-20 se-bgc-white">
<!-- 需要登录的功能 -->
<template v-if="isLoggedIn">
<!-- <view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onBrokerAccount">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/home4734.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">经纪人账号</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onLandlord">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/home4734.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">房东中心</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onBrokerCenter">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/47100.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">经纪人中心</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view> -->
</template>
<!-- 需要登录的功能 -->
<!-- <template v-if="isLoggedIn">
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onMyPublishedHouses">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/home4734.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">我发布的房源</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
</template> -->
<!-- 通用功能 -->
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-b" @click="onCustomerService">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/user49384.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">在线客服</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
<view class="se-py-30 se-px-20 se-flex se-flex-h-sb" @click="onVersion">
<view class="se-flex se-flex-ai-c">
<image class="se-a-30" src="@/static/image/47186.png" mode=""></image>
<text class="se-ml-20 se-fs-24 se-fw-5">关于我们</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
<!-- 退出登录按钮 - 仅登录时显示 -->
<view v-if="isLoggedIn" class="se-py-30 se-px-20 se-flex se-flex-h-sb se-b-t" @click="onLogOut">
<view class="se-flex se-flex-ai-c">
<text class="se-fs-24 se-fw-5">退出登录</text>
</view>
<view class="se-flex se-flex-ai-c">
<uv-icon name="arrow-right"></uv-icon>
</view>
</view>
</view>
</view>
</template>
<script>
import configList from '@/mixins/configList.js'
export default {
mixins: [configList],
data() {
return {
token: '',
}
},
computed: {
// 检查是否已登录
isLoggedIn() {
return this.token && this.token.length > 0
}
},
onLoad() {
this.checkLoginStatus()
},
onShow() {
this.checkLoginStatus()
if (this.isLoggedIn) {
this.$store.commit('getUserInfo')
}
},
methods: {
// 检查登录状态
checkLoginStatus() {
this.token = uni.getStorageSync('token') || ''
},
// 去登录页面
goToLogin() {
uni.navigateTo({
url: "/pages/auth/index"
})
},
// 点击头像
onHead() {
if (!this.isLoggedIn) {
this.goToLogin()
return
}
uni.navigateTo({
url: "/pages/login/index?back=" + 1
})
},
// 需要登录验证的方法
checkLoginAndNavigate(url, title = '该功能') {
if (!this.isLoggedIn) {
uni.showToast({
title: title + '需要登录',
icon: 'none'
})
setTimeout(() => {
this.goToLogin()
}, 1500)
return
}
uni.navigateTo({
url: url
})
},
openMemberPage() {
this.checkLoginAndNavigate("/pages_subpack/member/index", "会员中心")
},
onLandlord() {
this.checkLoginAndNavigate("/pages_subpack/landlord-center/index", "房东中心")
},
onBrokerCenter() {
this.checkLoginAndNavigate("/pages_subpack/broker-center/index", "经纪人中心")
},
onVersion() {
uni.navigateTo({
url: "/pages_subpack/version/index"
})
},
onBrokerAccount() {
this.checkLoginAndNavigate("/pages_subpack/broker-account/index", "经纪人账号")
},
// 我发布的房源
onMyPublishedHouses() {
this.checkLoginAndNavigate("/pages_subpack/my-published-houses/index", "我发布的房源")
},
onLogOut() {
if (!this.isLoggedIn) {
uni.showToast({
title: '您还未登录',
icon: 'none'
})
return
}
uni.showModal({
title: "温馨提示",
content: "确定退出当前登录",
cancelText: "取消",
confirmText: "确定",
success: (res) => {
console.info(res)
if (res.confirm == true) {
uni.removeStorageSync("userInfo")
uni.removeStorageSync("token")
uni.removeStorageSync("sessionKey")
uni.removeStorageSync("vipInfo")
// 清除本地状态
this.token = ''
this.userInfo = {}
this.vipInfo = {}
uni.showToast({
title: '退出成功',
icon: 'success'
})
// 可以选择跳转到登录页或刷新当前页
// uni.navigateTo({
// url: "/pages/auth/index"
// })
}
}
})
},
onCustomerService() {
let that = this
let obj = that.$utils.getkeyContent('phone')
if (uni.canIUse('makePhoneCall')) {
uni.makePhoneCall({
phoneNumber: this.configList.phone, // 电话号码
success: function() {
console.log('拨打电话成功');
},
fail: function() {
console.log('拨打电话失败');
}
});
} else {
console.log('你的设备不支持拨打电话功能');
}
}
}
}
</script>
<style>
page {
background-color: #f5f5f5 !important;
}
.se-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
gap: 10rpx;
padding-bottom: 4rpx;
}
</style>