暂时提交

This commit is contained in:
2026-07-24 10:46:00 +08:00
parent 070f3bab4f
commit 9bf70e785e
15 changed files with 1133 additions and 630 deletions

View File

@@ -9,18 +9,18 @@
<view class="user-info">
<view class="user-name">
<text class="name-text">{{user.userName || '用户0564'}}</text>
<text class="auth-tag">{{user.oaAuth ? '已认证' : '未认证'}}</text>
<image :src="staticHost + '/public/static/center/' + (user.userType === '0' && user.oaAuth ? 'personal-actived' : 'personal') + '.png'" class="user-type-icon" mode="widthFix"></image>
<image :src="staticHost + '/public/static/center/' + (user.userType === '1' && user.oaAuth ? 'org-actived' : 'org') + '.png'" class="user-type-icon" mode="widthFix"></image>
</view>
<view class="user-type">用户类型{{user.userType ==='0' ? '个人' : '组织'}}</view>
</view>
<view class="msg-setting">
<view class="u-relative msg-icon" @click="toMessage()">
<u-icon name="chat" size="48" color="#333"></u-icon>
<image :src="staticHost + '/public' + '/static/center/msg.png'" class="msg-icon-img" mode="widthFix"></image>
<view v-if="unreadMsgCount > 0" class="badge">
{{ unreadMsgCount > 99 ? '99+' : unreadMsgCount }}
</view>
</view>
<u-icon name="setting" size="48" color="#333" @click="toSetting()"></u-icon>
</view>
</view>
@@ -28,95 +28,135 @@
<!-- 我的合同和我的预约 -->
<view class="contract-appointment">
<view class="card" @click="clickNav('/pages-biz/contract/contract')">
<view class="card-title">我的合同</view>
<view class="card-main">
<view class="card-content">
<view class="card-left">
<view class="card-title">
我的合同
<u-icon name="arrow-right" color="#2979ff" size="28" class="arrow-icon"></u-icon>
</view>
<view class="card-info">
<view class="card-type">待签署合同</view>
<view class="card-number">{{unsignContractNum}}</view>
<view class="card-type">份待签署合同</view>
</view>
<view class="card-icon">
<image :src="staticHost + '/public' + '/static/icon/sign.png'" mode="widthFix"></image>
</view>
</view>
<view class="card-right">
<image class="card-icon" :src="staticHost + '/public' + '/static/center/contract-center.png'" mode="widthFix"></image>
</view>
</view>
<view class="card" @click="clickNav('/pages-biz/reserve/reserveRecords')">
<view class="card-title">我的预约</view>
<view class="card-main">
<view class="card-content">
<view class="card-left">
<view class="card-title">
我的预约
<u-icon name="arrow-right" color="#2979ff" size="28" class="arrow-icon"></u-icon>
</view>
<view class="card-info">
<view class="card-type">预约中</view>
<view class="card-number">{{handlingReserveNum}}</view>
<view class="card-type">个预约中</view>
</view>
<view class="card-icon">
<image :src="staticHost + '/public' + '/static/icon/sign.png'" mode="widthFix"></image>
</view>
</view>
<view class="card-right">
<image class="card-icon" :src="staticHost + '/public' + '/static/center/reserve-center.png'" mode="widthFix"></image>
</view>
</view>
</view>
<!-- 订单信息 -->
<view class="my-service">
<view class="service-title">订单信息</view>
<view class="service-title">常用功能</view>
<view class="service-list">
<view class="service-item" @click="clickNav('/pages-biz/bill/payHistory')">
<view class="service-item" @click="clickNav('/pages-biz/contract/contract')">
<view class="service-icon">
<image :src="staticHost + '/public' + '/static/icon/bill.png'"></image>
<image :src="staticHost + '/public' + '/static/center/contract.png'"></image>
</view>
<view class="service-name">账单</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/myrent/myLease')">
<view class="service-icon">
<image :src="staticHost + '/public' + '/static/icon/myrent.png'"></image>
</view>
<view class="service-name">租赁资产</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/wae/wae')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/icon/wae.png'"></image>
<view v-if="unpaidWaeCount > 0" class="badge">
{{ unpaidWaeCount > 99 ? '99+' : unpaidWaeCount }}
</view>
</view>
<view class="service-name">水电费待付</view>
<view class="service-name">我的合同</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/unpaid/unpaid')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/icon/unpaid.png'"></image>
<view v-if="unpaidRentCount > 0" class="badge">
<view class="service-icon">
<image :src="staticHost + '/public' + '/static/center/rentbill.png'"></image>
<!-- <view v-if="unpaidRentCount > 0" class="badge">
{{ unpaidRentCount > 99 ? '99+' : unpaidRentCount }}
</view>
</view> -->
</view>
<view class="service-name">金待付</view>
<view class="service-name">赁账单</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/wae/wae')">
<view class="service-icon">
<image :src="staticHost + '/public' + '/static/center/wae.png'"></image>
<!-- <view v-if="unpaidWaeCount > 0" class="badge">
{{ unpaidWaeCount > 99 ? '99+' : unpaidWaeCount }}
</view> -->
</view>
<view class="service-name">水电账单</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/bill/payHistory')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/center/payhistory.png'"></image>
</view>
<view class="service-name">收支记录</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/reserve/reserveRecords')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/center/reserve.png'"></image>
</view>
<view class="service-name">看房预约</view>
</view>
<view class="service-item" @click="clickNav('/pages-assets/discharge/leaseCancelList')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/center/discharge.png'"></image>
</view>
<view class="service-name">退租申请</view>
</view>
<view class="service-item" @click="clickNav('/pages-assets/fallback/fallback')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/center/fallback.png'"></image>
</view>
<view class="service-name">我要留言</view>
</view>
<view class="service-item" @click="clickNav('/pages-biz/unpaid/unpaidMargin')">
<view class="service-icon badge-wrapper">
<image :src="staticHost + '/public' + '/static/icon/unpaidMargin.png'"></image>
<view v-if="unpaidMargin > 0" class="badge">
{{ unpaidMargin > 99 ? '99+' : unpaidMargin }}
</view>
<image :src="staticHost + '/public' + '/static/center/repair.png'"></image>
</view>
<view class="service-name">保证金待付</view>
<view class="service-name">维修需求</view>
</view>
</view>
</view>
</view>
<!-- 辅助工具 -->
<!-- 其他功能 -->
<view class="common-tools">
<view class="tools-title">辅助工具</view>
<view class="tools-title">其他功能</view>
<view class="tools-list">
<view class="tool-item" @click="clickNav('/pages-assets/fallback/fallback')">
<view class="tool-icon">
<image :src="staticHost + '/public' + '/static/icon/fallback.png'" mode="widthFix"></image>
<view class="tool-item" @click="clickNav('/pages-biz/profile/profile')">
<image class="tool-icon" :src="staticHost + '/public' + '/static/center/auth.png'" mode="widthFix"></image>
<view class="tool-center">
<text class="tool-name">实名认证</text>
<text class="tool-desc">个人实名信息认证</text>
</view>
<view class="tool-name">留言板</view>
<text class="auth-tag">{{user.oaAuth ? '已认证' : '未认证'}}</text>
<u-icon name="arrow-right" color="#999" size="28"></u-icon>
</view>
<!-- 新增计算器 -->
<view class="tool-item" @click="clickNav('/pages-biz/tool/calculator')">
<view class="tool-icon">
<image :src="staticHost + '/public/static/icon/calculator.png'" mode="widthFix"></image>
</view>
<view class="tool-name">计算器</view>
<image class="tool-icon" :src="staticHost + '/public/static/center/caculator.png'" mode="widthFix"></image>
<view class="tool-center">
<text class="tool-name">计算器</text>
<text class="tool-desc">便捷工具</text>
</view>
<u-icon name="arrow-right" color="#999" size="28"></u-icon>
</view>
<view class="tool-item" @click="toSetting()">
<image class="tool-icon" :src="staticHost + '/public/static/center/setting.png'" mode="widthFix"></image>
<view class="tool-center">
<text class="tool-name">设置</text>
<text class="tool-desc">小程序相关设置</text>
</view>
<u-icon name="arrow-right" color="#999" size="28"></u-icon>
</view>
</view>
</view>
</view>
@@ -185,12 +225,12 @@
try {
// await this.$checkToken(this.$getToken())
this.loadUserInfo()
this.countHandlingReserve()
this.countUnHandleContract()
this.countUnpayRentBills()
this.countUnpayWaeBills()
this.countUnreadMsg()
this.countUnpaidRentMargin()
// this.countHandlingReserve()
// this.countUnHandleContract()
// this.countUnpayRentBills()
// this.countUnpayWaeBills()
// this.countUnreadMsg()
// this.countUnpaidRentMargin()
} catch (e) {
return
}
@@ -349,15 +389,21 @@
.name-text {
font-size: 38rpx;
font-weight: 500;
font-weight: 700;
color: #2D2B2C;
margin-right: 16rpx;
}
.user-type-icon {
width: 34rpx;
height: 34rpx;
margin-right: 8rpx;
}
.auth-tag {
font-size: 26rpx;
color: #86868C;
padding: 4rpx 12rpx;
padding: 8rpx 12rpx;
}
.user-type {
@@ -381,7 +427,7 @@
.contract-appointment {
display: flex;
gap: 30rpx;
padding: 20rpx;
padding: 15rpx;
}
.card {
@@ -389,59 +435,66 @@
background-color: #fff;
border-radius: 10rpx;
padding: 24rpx;
display: flex;
flex-direction: column;
}
.card-title {
font-size: 30rpx;
font-weight: 500;
color: #222222;
}
.card-main {
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
min-height: 160rpx;
}
.card-content {
.card-left {
flex: 1;
}
.card-number {
font-size: 48rpx;
font-weight: 600;
color: #EC712E;
margin-bottom: 8rpx;
.card-title {
display: flex;
align-items: center;
font-size: 35rpx;
font-weight: 700;
color: #222222;
margin-bottom: 16rpx;
}
.arrow-icon {
margin-left: 5rpx;
}
.card-info {
display: flex;
flex-direction: column;
}
.card-type {
font-size: 26rpx;
color: #86868C;
margin-bottom: 8rpx;
}
.card-number {
font-size: 48rpx;
font-weight: 600;
color: #258AE6;
}
.card-right {
display: flex;
align-items: center;
}
.card-icon {
position: absolute;
right: 0;
bottom: -20rpx;
}
.card-icon image {
width: 120rpx;
height: 111rpx;
max-height: 100rpx;
}
/* 我的服务 */
.my-service {
margin-top: 50rpx;
padding: 30rpx 40rpx;
margin-bottom: 30rpx;
}
.service-title {
font-size: 30rpx;
font-weight: 500;
font-size: 40rpx;
font-weight: 700;
color: #222222;
margin-bottom: 30rpx;
}
@@ -464,7 +517,7 @@
}
.service-icon image {
width: 80rpx;
width: 70rpx;
height: 70rpx;
}
@@ -481,40 +534,49 @@
}
.tools-title {
font-size: 30rpx;
font-weight: 500;
font-size: 40rpx;
font-weight: 700;
color: #222222;
margin-bottom: 30rpx;
}
.tools-list {
margin-top: 50rpx;
margin-left: -20rpx;
display: flex;
flex-flow: row wrap;
background-color: #fff;
border-radius: 16rpx;
overflow: hidden;
}
.tool-item {
width: 25%;
margin-bottom: 40rpx;
display: flex;
flex-direction: column;
align-items: center;
padding: 28rpx 24rpx;
&:active {
background-color: #f8f8f8;
}
}
.tool-icon {
margin-bottom: 16rpx;
width: 48rpx;
height: 48rpx;
margin-right: 20rpx;
}
.tool-icon image {
width: 47rpx;
height: 47rpx;
.tool-center {
flex: 1;
display: flex;
flex-direction: column;
}
.tool-name {
font-size: 30rpx;
color: #333;
margin-bottom: 6rpx;
}
.tool-desc {
font-size: 24rpx;
color: #222222;
color: #999;
}
.badge-wrapper {
position: relative;
@@ -548,4 +610,9 @@
.msg-icon {
position: relative;
}
.msg-icon-img {
width: 48rpx;
height: 48rpx;
}
</style>

View File

@@ -1,7 +1,7 @@
<template>
<view class="index">
<image :src="staticHost + '/public/static/index/index_bg.png'" mode="aspectFill" class="bg"></image>
<float-guide :initX="280" :initY="400" :videoSrc="staticHost + '/public/static/index/guide.mp4'" />
<!-- <float-guide :initX="280" :initY="400" :videoSrc="staticHost + '/public/static/index/guide.mp4'" /> -->
<!-- 搜索栏 -->
<view class="index-title" :style="{ top: capsuleTop + 'px', height: capsuleHeight + 'px', lineHeight: capsuleHeight + 'px' }">
新望资产
@@ -301,44 +301,83 @@
if (this.loadStatus !== 'more') return;
this.loadStatus = 'loading';
let recommendType = this.recommendTabs[this.activeRecommendTab].type;
let layoutList = this.activeFilterTabs.map(i => this.filterTabs[i].value);
this.$u.post('/assets/queryPage', {
assetsType: type,
pageNo: this.pageNo,
pageSize: this.pageSize,
assetsStatus: '闲置中',
recommendType: recommendType,
layout: layoutList.length > 0 ? layoutList.join(',') : null
}).then(result => {
let rows = result.data.result || [];
if (this.pageNo === 1 && rows.length === 0) {
this.flowList = [];
this.loadStatus = 'nomore';
return;
}
rows.forEach(row => {
if (row.coverImgUrl) {
row.coverImgUrl = this.$config.staticUrl + row.coverImgUrl
} else {
row.coverImgUrl = this.$config.staticUrl + this.defaultImgUrl
}
})
this.flowList = this.flowList.concat(rows);
if (rows.length < this.pageSize) {
this.loadStatus = 'nomore';
} else {
this.pageNo++;
this.loadStatus = 'more';
}
// TODO: 接口联调时取消注释,删除 mock 数据
// let recommendType = this.recommendTabs[this.activeRecommendTab].type;
// let layoutList = this.activeFilterTabs.map(i => this.filterTabs[i].value);
// this.$u.post('/assets/queryPage', {
// assetsType: type,
// pageNo: this.pageNo,
// pageSize: this.pageSize,
// assetsStatus: '闲置中',
// recommendType: recommendType,
// layout: layoutList.length > 0 ? layoutList.join(',') : null
// }).then(result => {
// let rows = result.data.result || [];
// if (this.pageNo === 1 && rows.length === 0) {
// this.flowList = [];
// this.loadStatus = 'nomore';
// return;
// }
// rows.forEach(row => {
// if (row.coverImgUrl) {
// row.coverImgUrl = this.$config.staticUrl + row.coverImgUrl
// } else {
// row.coverImgUrl = this.$config.staticUrl + this.defaultImgUrl
// }
// })
// this.flowList = this.flowList.concat(rows);
// if (rows.length < this.pageSize) {
// this.loadStatus = 'nomore';
// } else {
// this.pageNo++;
// this.loadStatus = 'more';
// }
// }).catch(err => {
// console.log("获取资产信息失败:", err);
// this.loadStatus = 'more';
// }).finally(() => {
// uni.stopPullDownRefresh();
// });
}).catch(err => {
console.log("获取资产信息失败:", err);
this.loadStatus = 'more';
}).finally(() => {
// Mock 静态数据
const mockData = [
{
assetsNo: 'ASSET-001',
assetsName: '东山大道435-2-1-104号',
assetsType: '住宅',
footPrint: 120,
coverImgUrl: this.$config.staticUrl + this.defaultImgUrl
},
{
assetsNo: 'ASSET-002',
assetsName: '夷陵大道418号商铺',
assetsType: '商铺',
footPrint: 85,
coverImgUrl: this.$config.staticUrl + this.defaultImgUrl
},
{
assetsNo: 'ASSET-003',
assetsName: '解放路88号写字楼',
assetsType: '写字楼',
footPrint: 200,
coverImgUrl: this.$config.staticUrl + this.defaultImgUrl
},
{
assetsNo: 'ASSET-004',
assetsName: '沿江大道168号住房',
assetsType: '住宅',
footPrint: 95,
coverImgUrl: this.$config.staticUrl + this.defaultImgUrl
}
];
setTimeout(() => {
if (this.pageNo === 1) this.flowList = [];
this.flowList = this.flowList.concat(mockData);
this.loadStatus = 'nomore';
uni.stopPullDownRefresh();
});
}, 500);
},
clickImage(assetsNo) {
console.log(assetsNo)
@@ -383,22 +422,30 @@
});
},
getNoticecList() {
let url = "/notice/pageQuery";
this.$u.post(url, {
pageNo: 1,
pageSize: 10
}).then(obj => {
if (obj.flag) {
let data = obj.data.result
if (data) {
data.filter(item => {
this.noticeList.push((item.noticeTitle || item.noticeContent))
})
}
}
}).catch(err => {
console.log("获取招商公告失败:", err)
});
// TODO: 接口联调时取消注释,删除 mock 数据
// let url = "/notice/pageQuery";
// this.$u.post(url, {
// pageNo: 1,
// pageSize: 10
// }).then(obj => {
// if (obj.flag) {
// let data = obj.data.result
// if (data) {
// data.filter(item => {
// this.noticeList.push((item.noticeTitle || item.noticeContent))
// })
// }
// }
// }).catch(err => {
// console.log("获取招商公告失败:", err)
// });
// Mock 静态数据
this.noticeList = [
'东山大道435号房屋招租公告',
'夷陵大道418号商铺招租',
'2026年第三季度资产招租计划'
];
},
onBannerTap(item) {
if (item.url) {
@@ -585,7 +632,7 @@
.filter-item.active {
background: #d4e2ef;
color: #258AE6;
color: #0088FE;
}
.demo-warter {
@@ -613,7 +660,7 @@
.item-price {
font-size: 32rpx;
color: #258AE6;
color: #0088FE;
margin-bottom: 10rpx;
}
@@ -669,7 +716,7 @@
width: 100%;
height: 88rpx;
line-height: 88rpx;
background: linear-gradient(135deg, #258AE6, #79b5ff);
background: linear-gradient(135deg, #0088FE, #79b5ff);
color: #fff;
font-size: 30rpx;
font-weight: 500;