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.
 
 
 

289 lines
6.0 KiB

<template>
<view class="people-list-container">
<!-- 温馨提示 -->
<view class="tip-container">
<text class="tip-text">温馨提示您在祥安E家登记了以下住户信息</text>
</view>
<!-- 地址信息 -->
<view class="address-container" v-if="peopleList.length">
<text class="address-text">{{ peopleList[0].villageName }}-{{
peopleList[0].buildingName
}}-{{ peopleList[0].unitName }}-{{ peopleList[0].roomNumber }}
</text>
</view>
<!-- 住户信息卡片 -->
<view class="resident-card" v-for="(item, index) in peopleList" :key="index">
<!-- 姓名和业主标识 -->
<view class="resident-header">
<text class="resident-name">{{ item.name }}</text>
<view class="owner-tag">
<text class="owner-text">{{ ownerType[item.ownerType] }}</text>
</view>
</view>
<!-- 联系信息 -->
<view class="contact-info">
<view class="info-row">
<text class="info-label">联系电话</text>
<text class="info-value">{{ item.phone }}</text>
</view>
<!-- <view class="info-row">-->
<!-- <text class="info-label">身份证号</text>-->
<!-- <text class="info-value">450**********2130</text>-->
<!-- </view>-->
<view class="info-row">
<text class="info-label">认证时间</text>
<text class="info-value">{{ dayjs(item.createTime).format('YYYY-MM-DD HH:mm:ss') }}</text>
</view>
</view>
<u-button type="error" shape="circle" v-if="isOwner" @click="del(item)">删除</u-button>
</view>
<!-- 添加家人按钮 -->
<!-- <view class="add-family-btn" @click="addFamily">-->
<!-- <text class="add-family-text">添加家人</text>-->
<!-- </view>-->
</view>
</template>
<script>
import {delPeopleReq, peopleListReq} from "@/api/room";
import dayjs from "dayjs";
import {userInfoReq} from "@/api/user";
export default {
name: "peopleList",
data() {
return {
peopleList: [],
ownerType: [
'',
'业主',
'家属',
'租客',
'工作人员',
],
userData: null,
baseRoomRoomCode: null,
isOwner: false,
delLoading: false,
}
},
methods: {
dayjs,
goBack() {
uni.navigateBack()
},
async getPeopleList(baseRoomRoomCode) {
const {data} = await peopleListReq({baseRoomRoomCode})
this.peopleList = data.map(item => {
item.phoneOrigin = item.phone
item.phone = item.phone.replace(/(.{3}).*(.{4})/, '$1****$2')
return item
})
await this.getUserData()
},
async getUserData() {
const {data} = await userInfoReq()
this.userData = data
if (this.peopleList.length) {
this.peopleList.map(item => {
console.log(item.ownerType, item.phoneOrigin, data.phone)
if (item.ownerType === 1 && item.phoneOrigin === data.phone)
this.isOwner = true
})
}
},
addFamily() {
},
del(item) {
uni.showModal({
title: '提示',
content: '确定要删除该住户吗?',
success: (res) => {
if (res.confirm) {
this.delLoading = true
delPeopleReq(item.id)
.then(() => {
this.$toast('删除成功')
})
.finally(() => {
this.delLoading = false
this.getPeopleList(this.baseRoomRoomCode)
})
}
}
})
}
},
onLoad({baseRoomRoomCode}) {
this.baseRoomRoomCode = baseRoomRoomCode
this.getPeopleList(baseRoomRoomCode)
}
}
</script>
<style lang="scss" scoped>
.people-list-container {
min-height: 100vh;
background-color: #f5f5f5;
padding: 20rpx;
}
.nav-bar {
display: flex;
align-items: center;
justify-content: center;
position: relative;
height: 88rpx;
background-color: #fff;
border-bottom: 1rpx solid #eee;
}
.nav-back {
position: absolute;
left: 30rpx;
width: 60rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: center;
}
.nav-back-icon {
font-size: 40rpx;
color: #333;
font-weight: bold;
}
.nav-title {
font-size: 36rpx;
color: #333;
font-weight: 500;
}
.tip-container {
margin: 30rpx;
padding: 30rpx;
background-color: #fff3cd;
border-radius: 12rpx;
border-left: 6rpx solid #ffc107;
}
.tip-text {
font-size: 28rpx;
color: #856404;
line-height: 1.5;
}
.address-container {
margin: 0 30rpx 30rpx;
padding: 30rpx;
background-color: #fff;
border-radius: 12rpx;
}
.address-text {
font-size: 32rpx;
color: #333;
font-weight: 500;
}
.resident-card {
margin: 0 30rpx 20rpx;
padding: 40rpx 30rpx;
background-color: #fff;
border-radius: 12rpx;
}
.resident-header {
display: flex;
align-items: center;
margin-bottom: 40rpx;
}
.resident-name {
font-size: 36rpx;
color: #333;
font-weight: 600;
margin-right: 20rpx;
}
.owner-tag {
padding: 8rpx 16rpx;
background-color: #ffc107;
border-radius: 20rpx;
}
.owner-text {
font-size: 24rpx;
color: #fff;
}
.contact-info {
margin-bottom: 40rpx;
}
.info-row {
display: flex;
align-items: center;
margin-bottom: 24rpx;
}
.info-row:last-child {
margin-bottom: 0;
}
.info-label {
font-size: 30rpx;
color: #666;
width: 180rpx;
}
.info-value {
font-size: 30rpx;
color: #333;
flex: 1;
}
.notice-container {
padding-top: 30rpx;
border-top: 1rpx solid #eee;
}
.notice-text {
display: block;
font-size: 26rpx;
color: #999;
line-height: 1.6;
margin-bottom: 16rpx;
}
.notice-text:last-child {
margin-bottom: 0;
}
.add-family-btn {
position: fixed;
bottom: 60rpx;
left: 30rpx;
right: 30rpx;
height: 96rpx;
background: linear-gradient(135deg, #ffc107 0%, #ff9800 100%);
border-radius: 48rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8rpx 24rpx rgba(255, 193, 7, 0.3);
}
.add-family-text {
font-size: 32rpx;
color: #333;
font-weight: 600;
}
</style>