租房新通知

This commit is contained in:
A1300399510
2025-02-24 18:58:33 +08:00
parent 1457029a1e
commit 6e511ab2ef
9 changed files with 276 additions and 142 deletions

View File

@@ -168,7 +168,6 @@ watchEffect(() => {
let carouselIndex = ref(0) // 轮播图的索引
const carouselChange = value => {
console.log("value", value)
carouselIndex.value = value
}
</script>

View File

@@ -4,19 +4,18 @@
<div class="header flexflex">
<img class="header-icon" src="@/assets/img/user/inform-icon.png" />
<img class="header-text" src="@/assets/img/user/inform-text.png" />
<img class="circle" src="@/assets/img/user/big-circle.svg">
<img class="circle" src="@/assets/img/user/small-circle.svg">
<img class="white-cross" @click="emit('close')" src="@/assets/img/publicImage/white-cross.svg">
<img class="circle" src="@/assets/img/user/big-circle.svg" />
<img class="circle" src="@/assets/img/user/small-circle.svg" />
<img class="white-cross" @click="emit('close')" src="@/assets/img/publicImage/white-cross.svg" />
</div>
<div class="attention flexacenter" v-if="issubscribe == 0">
<div class="attention-text">关注寄托服务号第一时间收到消息通知</div>
<el-popover placement="bottom" popper-class="flexcenter" :width="160" trigger="click"
popper-style="border-radius: 14px;padding: 20px;">
<el-popover placement="bottom" popper-class="flexcenter" :width="160" trigger="click" popper-style="border-radius: 14px;padding: 20px;">
<template #reference>
<div class="attention-btn flexcenter">关注</div>
</template>
<img class="QR-code" :src="qrcode" alt="">
<img class="QR-code" :src="qrcode" alt="" />
</el-popover>
</div>
@@ -27,118 +26,171 @@
<template v-for="(item, index) in list" :key="index">
<!-- event: certapplication 群发 middlemanauth 中介 tenementcertified 个人 tenementreport 举报 -->
<div class="item flexflex" v-if="item['event'] == 'certapplication'">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png">
<div class="time">{{ item['timestamp'] }}</div>
<div class="text">{{ item['message'] }}</div>
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false"
popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flexcenter" v-if="item['data'] && item['data']['url']">
去认证<img class="green-arrow" src="@/assets/img/publicImage/green-arrow.svg">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png" />
<div class="time">{{ item["timestamp"] }}</div>
<div class="text">{{ item["message"] }}</div>
<div class="footer-list flexflex">
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter" v-if="item['data'] && item['data']['url']">{{ item.data.type == "intermediary" ? "身份" : "房源" }}认证<img class="green-arrow" src="@/assets/img/user/arrow-circular-blue.svg" /></div>
</template>
<div v-if="item['data']['url']?.indexOf('middlemanAuth') != -1" class="btn-qrcode">
<authentication-info :type="2" style="height: 217px;"></authentication-info>
</div>
</template>
<!-- <img v-if="item['data']['url'].indexOf('middlemanAuth') != -1" style="width: 360px;"
src="@/assets/img/publicImage/mediation-authentication-code.svg">
<img v-else style="width: 360px;" src="@/assets/img/publicImage/housing-certification-code.svg"> -->
<div v-if="item['data']['url'].indexOf('middlemanAuth') != -1" class="btn-qrcode">
<authentication-info :type="2" style="height: 217px ;"></authentication-info>
<!-- <img class="bj" src="@/assets/img/publicImage/mediation-authentication-bj.jpg">
<img class="QR-code" src="https://app.gter.net/tenement/pc/api/qrcode?type=middlemanAuth"> -->
</div>
<div v-else class="btn-qrcode flexcenter">
<authentication-info :type="1" style="height: 217px ;"></authentication-info>
<!-- <img class="bj" src="@/assets/img/publicImage/housing-certification-bj.jpg">
<img class="QR-code" src="https://app.gter.net/tenement/pc/api/qrcode?type=propertyAuth"> -->
</div>
</el-popover>
<div v-else class="btn-qrcode flexcenter">
<authentication-info :type="1" style="height: 217px;"></authentication-info>
</div>
</el-popover>
<el-popover placement="bottom" popper-class="consult-popover flexcenter" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter helper">
<img class="green-arrow" src="@/assets/img/user/WeChat-icon-blue.svg" />
添加小助手
</div>
</template>
<div class="consult-pop flexacenter">
<div class="consult-title flexacenter">欢迎联系 <b>方同学的小助手</b> 咨询</div>
<div class="consult-QRcode flexcenter">
<img class="consult-QRcode-img" :src="wechat['wechatqrcode']" />
</div>
<div class="consult-hint">微信扫码添加好友</div>
</div>
</el-popover>
</div>
</div>
<div class="item flexflex" v-else-if="item['event'] == 'middlemanauth'">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png">
<div class="time">{{ item['timestamp'] }}</div>
<div class="text">{{ item['message'] }}</div>
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false"
popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flexcenter"
v-if="item.data && item.data['middlemanauthstatus'] == 0 && item.data.url">
去认证<img class="green-arrow" src="@/assets/img/publicImage/green-arrow.svg">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png" />
<div class="time">{{ item["timestamp"] }}</div>
<div class="text">{{ item["message"] }}</div>
<div class="footer-list flexflex">
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter" v-if="item.data && item.data['middlemanauthstatus'] == 0 && item.data.url">身份认证<img class="green-arrow" src="@/assets/img/user/arrow-circular-blue.svg" /></div>
</template>
<div class="btn-qrcode flexcenter">
<authentication-info :type="2" style="height: 217px;"></authentication-info>
</div>
</template>
<div class="btn-qrcode flexcenter">
<authentication-info :type="2" style="height: 217px ;"></authentication-info>
<!-- <img class="bj" src="@/assets/img/publicImage/mediation-authentication-bj.jpg">
<img class="QR-code" src="https://app.gter.net/tenement/pc/api/qrcode?type=middlemanAuth"> -->
</div>
<!-- <img style="width: 360px;" src="@/assets/img/publicImage/mediation-authentication-code.svg"> -->
</el-popover>
</div>
<div class="item flexflex" v-else-if="item['event'] == 'tenementcertified'">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png">
<div class="time">{{ item['timestamp'] }}</div>
<div class="text">{{ item['message'] }}</div>
<div class="info flexacenter" v-if="item['data']">
<img class="soldOut" v-if="item['data']['status'] != 1" src="@/assets/img/user/u75.png" alt="">
<img class="img-icon" v-if="item['data']['isimage'] == 1"
src="@/assets/img/publicImage/img-icon.png">
<div class="title flex1 ellipsis">{{ item['data']['subject'] }}</div>
<div class="id">房源ID{{ item['data']['id'] }}</div>
</el-popover>
<el-popover placement="bottom" popper-class="consult-popover flexcenter" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter helper">
<img class="green-arrow" src="@/assets/img/user/WeChat-icon-blue.svg" />
添加小助手
</div>
</template>
<div class="consult-pop flexacenter">
<div class="consult-title flexacenter">欢迎联系 <b>方同学的小助手</b> 咨询</div>
<div class="consult-QRcode flexcenter">
<img class="consult-QRcode-img" :src="wechat['wechatqrcode']" />
</div>
<div class="consult-hint">微信扫码添加好友</div>
</div>
</el-popover>
</div>
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false"
popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flexcenter"
v-if="item.data && item.data['tenementcertifiedstatus'] == 0 && item.data.url">
去认证<img class="green-arrow" src="@/assets/img/publicImage/green-arrow.svg">
</div>
</template>
<div class="btn-qrcode flexcenter">
<authentication-info :type="1" style="height: 217px ;"></authentication-info>
<!-- <img class="bj" src="@/assets/img/publicImage/housing-certification-bj.jpg">
<img class="QR-code" src="https://app.gter.net/tenement/pc/api/qrcode?type=propertyAuth"> -->
</div>
<!-- <img style="width: 360px;" src="@/assets/img/publicImage/housing-certification-code.svg"> -->
</el-popover>
</div>
<div class="item flexflex" v-else>
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png">
<div class="time">{{ item['timestamp'] }}</div>
<div class="text">{{ item['message'] }}</div>
<div class="text" v-for="item in item['data']['reportnummessage']">- {{ item }}</div>
<div class="item flexflex" v-else-if="item['event'] == 'tenementcertified'">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png" />
<div class="time">{{ item["timestamp"] }}</div>
<div class="text">{{ item["message"] }}</div>
<div class="info flexacenter" v-if="item['data']">
<img class="soldOut" v-if="item['data']['status'] != 1" src="@/assets/img/user/u75.png" alt="">
<img class="img-icon" v-if="item['data']['isimage'] == 1"
src="@/assets/img/publicImage/img-icon.png">
<div class="title flex1 ellipsis"
@click="goDetail(item['data']['uniqid'], item['data']['status'])">{{
item['data']['subject'] }}</div>
<div class="id">房源ID{{ item['data']['id'] }}</div>
<img class="soldOut" v-if="item['data']['status'] != 1" src="@/assets/img/user/u75.png" alt="" />
<img class="img-icon" v-if="item['data']['isimage'] == 1" src="@/assets/img/publicImage/img-icon.png" />
<div class="title flex1 ellipsis">{{ item["data"]["subject"] }}</div>
<div class="id" v-if="item['data']['id']">房源ID{{ item["data"]["id"] }}</div>
</div>
<div class="footer-list flexflex">
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter" v-if="item.data && item.data['tenementcertifiedstatus'] == 0 && item.data.url">房源认证<img class="green-arrow" src="@/assets/img/user/arrow-circular-blue.svg" /></div>
</template>
<div class="btn-qrcode flexcenter">
<authentication-info :type="1" style="height: 217px;"></authentication-info>
</div>
</el-popover>
<el-popover placement="bottom" popper-class="consult-popover flexcenter" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter helper">
<img class="green-arrow" src="@/assets/img/user/WeChat-icon-blue.svg" />
添加小助手
</div>
</template>
<div class="consult-pop flexacenter">
<div class="consult-title flexacenter">欢迎联系 <b>方同学的小助手</b> 咨询</div>
<div class="consult-QRcode flexcenter">
<img class="consult-QRcode-img" :src="wechat['wechatqrcode']" />
</div>
<div class="consult-hint">微信扫码添加好友</div>
</div>
</el-popover>
</div>
</div>
<div class="item flexflex" v-else-if="item['event'] == 'overduenotice'">
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png" />
<div class="time">{{ item["timestamp"] }}</div>
<div class="text">{{ item["message"] }}</div>
<div class="footer-list flexflex">
<el-popover placement="bottom" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter">{{ item.data.type == "intermediary" ? "身份认证" : "房源认证" }}<img class="green-arrow" src="@/assets/img/user/arrow-circular-blue.svg" /></div>
</template>
<div class="btn-qrcode flexcenter">
<authentication-info :type="item.data.type == 'intermediary' ? 2 : 1" style="height: 217px;"></authentication-info>
</div>
</el-popover>
<el-popover placement="bottom" popper-class="consult-popover flexcenter" :width="464" trigger="click" :show-arrow="false" popper-style="background: transparent;padding:0;box-shadow: none;border: none;">
<template #reference>
<div class="footer flex1 flexcenter helper">
<img class="green-arrow" src="@/assets/img/user/WeChat-icon-blue.svg" />
添加小助手
</div>
</template>
<div class="consult-pop flexacenter">
<div class="consult-title flexacenter">欢迎联系 <b>方同学的小助手</b> 咨询</div>
<div class="consult-QRcode flexcenter">
<img class="consult-QRcode-img" :src="wechat['wechatqrcode']" />
</div>
<div class="consult-hint">微信扫码添加好友</div>
</div>
</el-popover>
</div>
</div>
<div class="item flexflex" v-else>
<img class="new" v-if="item['isread'] == 0" src="@/assets/img/user/new.png" />
<div class="time">{{ item["timestamp"] }}</div>
<div class="text">{{ item["message"] }}</div>
<div class="text" v-for="(item, index) in item['data']['reportnummessage']" :key="index">- {{ item }}</div>
<div class="info flexacenter" v-if="item['data']">
<img class="soldOut" v-if="item['data']['status'] != 1" src="@/assets/img/user/u75.png" alt="" />
<img class="img-icon" v-if="item['data']['isimage'] == 1" src="@/assets/img/publicImage/img-icon.png" />
<div class="title flex1 ellipsis" @click="goDetail(item['data']['uniqid'], item['data']['status'])">{{ item["data"]["subject"] }}</div>
<div class="id" v-if="item['data']['id']">房源ID{{ item["data"]["id"] }}</div>
</div>
</div>
</template>
</div>
</div>
</div>
</template>
<script setup>
import emptyDuck from '@/components/public/empty-duck.vue'
import { onMounted, getCurrentInstance, ref, onUnmounted, defineEmits } from 'vue'
import { useRouter } from 'vue-router';
import authenticationInfo from '../seachModule/authenticationInfo.vue';
import store from '../../store/index';
import emptyDuck from "@/components/public/empty-duck.vue"
import { onMounted, getCurrentInstance, ref, toRefs, onUnmounted, defineEmits } from "vue"
import { useStore } from "vuex"
import { useRouter } from "vue-router"
import authenticationInfo from "../seachModule/authenticationInfo.vue"
import store from "../../store/index"
if (store.state.user) store.state.user['messagenum'] = 0
if (store.state.user) store.state.user["messagenum"] = 0
const emit = defineEmits(['close'])
const emit = defineEmits(["close"])
const router = useRouter();
const router = useRouter()
const usestore = useStore()
const { wechat } = toRefs(usestore.state)
const { proxy } = getCurrentInstance()
@@ -146,7 +198,6 @@ onMounted(() => {
init()
})
let show = ref(false) //是否展示
let qrcode = ref("") // 关注二维码
@@ -157,42 +208,46 @@ let page = 1 // 页数
const init = () => {
if (page == 0 || state.value) return
state.value = true
proxy.$post("/tenement/pc/api/user/messageList", {
page
}).then((res) => {
if (res.code != 200) {
emit('close')
return
}
let data = res.data
qrcode.value = data['qrcode']
issubscribe.value = data['issubscribe']
list.value = list.value.concat(data['data'])
page = data['page'] * data['limit'] < data['count'] ? page + 1 : 0
show.value = true
}).catch((err) => {
emit('close')
}).finally(() => {
state.value = false
})
proxy
.$post("/tenement/pc/api/user/messageList", {
page,
})
.then(res => {
if (res.code != 200) {
emit("close")
return
}
let data = res.data
qrcode.value = data["qrcode"]
issubscribe.value = data["issubscribe"]
list.value = list.value.concat(data["data"])
page = data["page"] * data["limit"] < data["count"] ? page + 1 : 0
show.value = true
})
.catch(err => {
emit("close")
})
.finally(() => {
state.value = false
})
}
const handleScroll = (event) => {
const handleScroll = event => {
if (page == 0 || state.value) return
const scrollContainer = event.target; // 获取滚动容器元素
const scrollHeight = scrollContainer.scrollHeight; // 元素内容的总高度
const scrollTop = scrollContainer.scrollTop; // 滚动条距离滚动容器顶部的距离
const clientHeight = scrollContainer.clientHeight; // 可见区域的高度
const scrollContainer = event.target // 获取滚动容器元素
const scrollHeight = scrollContainer.scrollHeight // 元素内容的总高度
const scrollTop = scrollContainer.scrollTop // 滚动条距离滚动容器顶部的距离
const clientHeight = scrollContainer.clientHeight // 可见区域的高度
if (scrollHeight - scrollTop === clientHeight) init()
};
}
// 点击跳转详情页
const goDetail = (uniqid, status) => {
if (status != 1) return
router.push(`/detail?id=${uniqid}`);
router.push(`/detail?id=${uniqid}`)
}
</script>
<style lang="less" scoped>
@@ -264,7 +319,7 @@ const goDetail = (uniqid, status) => {
-webkit-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196);
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.0784313725490196);
font-size: 14px;
color: #7F7F7F;
color: #7f7f7f;
justify-content: space-between;
padding-left: 16px;
padding-right: 8px;
@@ -274,7 +329,7 @@ const goDetail = (uniqid, status) => {
height: 36px;
background-color: rgba(253, 218, 85, 1);
border-radius: 54px;
font-family: 'PingFangSC-Regular', 'PingFang SC', sans-serif;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-size: 14px;
color: #000000;
@@ -319,11 +374,10 @@ const goDetail = (uniqid, status) => {
color: #aaaaaa;
font-size: 13px;
padding: 18px 16px 14px;
}
.text {
color: #7F7F7F;
color: #7f7f7f;
line-height: 24px;
font-size: 14px;
padding: 0 16px;
@@ -362,18 +416,30 @@ const goDetail = (uniqid, status) => {
}
.id {
color: #AAAAAA;
color: #aaaaaa;
font-size: 13px;
}
}
.footer {
&:not(:last-of-type) {
border-right: 1px solid #ebebeb;
}
border-top: 1px solid #ebebeb;
font-size: 14px;
color: #50E3C2;
// color: #50e3c2;
color: #266cbf;
height: 45px;
cursor: pointer;
&.helper {
.green-arrow {
width: 18px;
height: 18px;
margin-right: 10px;
}
}
.green-arrow {
margin-left: 10px;
width: 14px;
@@ -408,4 +474,65 @@ const goDetail = (uniqid, status) => {
transform: translateX(-50%);
}
}
</style>
.el-popover.el-popper.consult-popover {
.consult-pop {
width: 300px;
height: 300px;
border-radius: 10px;
padding-top: 45px;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
-moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.101960784313725);
-webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.101960784313725);
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.101960784313725);
background-color: #fff;
flex-direction: column;
.consult-title {
font-size: 15px;
color: #555555;
margin-bottom: 24px;
b {
color: #000;
font-weight: 650;
margin: 0 5px;
}
}
.consult-QRcode {
width: 120px;
height: 120px;
border-radius: 20px;
-moz-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.101960784313725);
-webkit-box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.101960784313725);
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.101960784313725);
margin-bottom: 20px;
background: #fff;
.consult-QRcode-img {
width: 100px;
height: 100px;
}
}
.consult-hint {
margin-bottom: 6px;
}
.consult-hint,
.consult-remark {
font-size: 13px;
color: #555555;
line-height: 18px;
}
.consult-remark {
b {
font-weight: 650;
color: #000000;
}
}
}
}
</style>