From c09bd2ed6168512dc5c8956cb5a54eba9d4422b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E6=96=87=E6=B6=9B?= <1909118034@qq.com>
Date: Thu, 8 May 2025 17:08:37 +0800
Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E5=82=AC=E7=BC=B4=E4=BC=98?=
=?UTF-8?q?=E5=8C=96(home)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pagesB/call/index.vue | 111 ++++++++++++++++++++++--------
unocss/a-hua-unocss/index.scss | 121 +++++++++++++++++----------------
2 files changed, 145 insertions(+), 87 deletions(-)
diff --git a/pagesB/call/index.vue b/pagesB/call/index.vue
index 51c5a1e..5c121b6 100644
--- a/pagesB/call/index.vue
+++ b/pagesB/call/index.vue
@@ -169,16 +169,16 @@
¥{{bill.amount}}
- 账单期间:
- {{bill.period}}
+ 创建时间:
+ {{bill.overdueTime}}
- 逾期时间:
- {{bill.overdueTime}}
+ 缴费时间段:
+ {{bill.period}}
电话催缴
+ @click="prepareCaller(selectedHouse)">电话催缴
@@ -194,6 +194,11 @@
+
+
+
@@ -309,7 +314,7 @@
}
floorGroups[floor].houses.push({
- id: house.house_id,
+ id: String(house.house_id), // 使用字符串ID
number: house.house_name,
unpaid: (house.estate || []).length + (house.meter || []).length,
owner: house.owner && house.owner.length > 0 ? house.owner[0].owner_name : '未知',
@@ -412,42 +417,94 @@
id: '',
number: '',
unpaid: 0,
- owner: '',
+ owner: [],
phone: '',
bills: []
});
+ // 电话催缴动作面板
+ const showPhoneActionSheet = ref(false);
+ const phoneActions = ref([]);
+
// 显示房屋详情
const showHouseDetailFunc = (house) => {
selectedHouse.value = house;
showHouseDetail.value = true;
};
- // 电话催缴
- const callOwner = (house) => {
- console.log(house);
- if (!house.phone) {
- Toast.fail('没有可用的联系电话');
+ // 准备并显示电话催缴动作面板
+ const prepareCaller = (house) => {
+ // 显示加载状态
+ uni.showLoading({
+ title: '获取联系人...',
+ mask: true
+ });
+
+ // 找到原始房屋数据
+ if (!activeBuilding.value || !activeUnitId.value) {
+ uni.hideLoading();
+ Toast.fail('无法获取房屋信息');
return;
}
- uni.makePhoneCall({
- phoneNumber: house.phone,
- success: () => {
- console.log('拨打电话成功');
- },
- fail: () => {
- Toast.fail('拨打电话失败');
- }
- });
+ const region = village.value.regions?.find(r => String(r.region_id) === activeBuilding.value);
+ if (!region) {
+ uni.hideLoading();
+ Toast.fail('未找到楼栋信息');
+ return;
+ }
+
+ const cell = region.cells?.find(c => String(c.cell_id) === activeUnitId.value);
+ if (!cell) {
+ uni.hideLoading();
+ Toast.fail('未找到单元信息');
+ return;
+ }
+
+ // 找到对应的房屋
+ const originalHouse = cell.houses.find(h => String(h.house_id) === String(house.id));
+ if (!originalHouse || !originalHouse.owner) {
+ uni.hideLoading();
+ Toast.fail('未找到该房屋业主信息');
+ return;
+ }
+
+ // 生成业主电话列表
+ if (originalHouse.owner.length === 0) {
+ uni.hideLoading();
+ Toast.fail('该房屋暂无业主联系方式');
+ return;
+ }
+
+ // 更新selectedHouse的owner字段
+ selectedHouse.value.owner = originalHouse.owner;
+
+ // 生成动作列表
+ phoneActions.value = originalHouse.owner.map(owner => ({
+ name: `${owner.owner_name || '未知'}${owner.sex === 0 ? '(先生)' : owner.sex === 1 ? '(女士)' : ''}`,
+ subname: owner.mobile || '无电话',
+ disabled: !owner.mobile,
+ color: !owner.mobile ? '#999999' : ''
+ }));
+
+ // 隐藏加载状态
+ setTimeout(() => {
+ uni.hideLoading();
+ // 显示动作面板
+ showPhoneActionSheet.value = true;
+ }, 300);
};
- // 发送通知
- const sendReminder = (house) => {
- Toast.success('已发送催缴通知');
- setTimeout(() => {
- showHouseDetail.value = false;
- }, 1500);
+ // 电话催缴 - 选择后执行
+ const handlePhoneSelect = (item, index) => {
+ const owner = item.item.subname;
+ if (!owner) {
+ Toast.error('无效的联系电话');
+ return;
+ }
+ uni.makePhoneCall({
+ phoneNumber: owner,
+ });
};
// 刷新按钮点击处理
diff --git a/unocss/a-hua-unocss/index.scss b/unocss/a-hua-unocss/index.scss
index 9a27de5..4ede0b4 100644
--- a/unocss/a-hua-unocss/index.scss
+++ b/unocss/a-hua-unocss/index.scss
@@ -1,75 +1,45 @@
-.li-items-center{align-items:center}
-.items-center{align-items:center}
-.li-justify-center{justify-content:center}
-.justify-end{justify-content:end}
-.justify-center{justify-content:center}
-.li-justify-between{justify-content:space-between}
-.justify-between{justify-content:space-between}
.li-bg-white{background-color:rgb(255,255,255)}
.li-flex{display:flex}
-.li-flex-col{flex-direction:column}
-.li-h-130{height:130rpx}
-.li-h-160{height:160rpx}
-.li-h-58{height:58rpx}
-.li-justify-around{justify-content:space-around}
-.li-ml-22{margin-left:22rpx}
-.li-ml-25{margin-left:25rpx}
-.li-ml-35{margin-left:35rpx}
-.li-mt-10{margin-top:10rpx}
-.li-mt-12{margin-top:12rpx}
-.li-mt-14{margin-top:14rpx}
-.li-mt-15{margin-top:15rpx}
-.li-mt-20{margin-top:20rpx}
-.li-mt-30{margin-top:30rpx}
-.li-mx-auto{margin-left:auto;margin-right:auto}
-.li-px-25{padding-left:25rpx;padding-right:25rpx}
-.li-px-30{padding-left:30rpx;padding-right:30rpx}
-.li-px-40{padding-left:40rpx;padding-right:40rpx}
-.li-py-25{padding-top:25rpx;padding-bottom:25rpx}
-.li-rd-10{border-radius:10rpx}
-.li-rd-15{border-radius:15rpx}
-.li-text-010B3E-color{color:rgb(1,11,62)}
-.li-text-22{font-size:22rpx}
-.li-text-26{font-size:26rpx}
-.li-text-28{font-size:28rpx}
-.li-text-30{font-size:30rpx}
-.li-text-343333-color{color:rgb(52,51,51)}
-.li-text-AFB2B8-color{color:rgb(175,178,184)}
-.li-text-B1B0B0-color{color:rgb(177,176,176)}
-.li-w-130{width:130rpx}
-.li-w-310{width:310rpx}
-.li-w-58{width:58rpx}
-.li-w-full-70{width:70%}
-.li-w-full-88{width:88%}
.li-flex-center{display:flex;align-items:center;justify-content:center}
.li-h-100{height:100rpx}
+.li-items-center{align-items:center}
+.li-justify-between{justify-content:space-between}
.li-ml-20{margin-left:20rpx}
.li-ml-200{margin-left:200rpx}
+.li-ml-25{margin-left:25rpx}
.li-ml-30{margin-left:30rpx}
.li-mr-10{margin-right:10rpx}
.li-mr-30{margin-right:30rpx}
+.li-mt-10{margin-top:10rpx}
+.li-mt-20{margin-top:20rpx}
.li-mt-300-important{margin-top:300rpx !important}
.li-pt-2{padding-top:2rpx}
+.li-px-30{padding-left:30rpx;padding-right:30rpx}
.li-py-20{padding-top:20rpx;padding-bottom:20rpx}
.li-rd-full-50{border-radius:50%}
.li-text-25{font-size:25rpx}
+.li-text-26{font-size:26rpx}
+.li-text-30{font-size:30rpx}
.li-text-35{font-size:35rpx}
.li-text-38{font-size:38rpx}
.li-text-42{font-size:42rpx}
.li-text-46{font-size:46rpx}
+.li-text-B1B0B0-color{color:rgb(177,176,176)}
.li-w-100{width:100rpx}
.li-w-full-80{width:80%}
.bg-0070F0{background-color:rgb(0,112,240)}
.bg-FFFFFF{background-color:rgb(255,255,255)}
.bg-f9f9f9{background-color:rgb(249,249,249)}
.border-4-white{border-style:solid;border-color:rgb(255,255,255);border-width:4rpx}
+.li-flex-col{flex-direction:column}
.li-font-bold{font-weight:bold}
.li-h-240{height:240rpx}
.li-h-250{height:250rpx}
.li-h-50{height:50rpx}
.li-h-60{height:60rpx}
.li-items-end{align-items:end}
+.li-justify-center{justify-content:center}
.li-justify-start{justify-content:start}
.li-mb-2{margin-bottom:2rpx}
.li-ml-4{margin-left:4rpx}
@@ -77,9 +47,11 @@
.li-mr-20{margin-right:20rpx}
.li-mr-50{margin-right:50rpx}
.li-mt-26{margin-top:26rpx}
+.li-mt-30{margin-top:30rpx}
.li-mt-60{margin-top:60rpx}
.li-mx-20{margin-left:20rpx;margin-right:20rpx}
.li-mx-40{margin-left:40rpx;margin-right:40rpx}
+.li-mx-auto{margin-left:auto;margin-right:auto}
.li-pb-10{padding-bottom:10rpx}
.li-pb-14{padding-bottom:14rpx}
.li-pb-20{padding-bottom:20rpx}
@@ -105,6 +77,7 @@
.li-w-60{width:60rpx}
.li-w-full-94{width:94%}
.li-font-550{font-weight:550}
+.li-h-130{height:130rpx}
.li-h-68{height:68rpx}
.li-mt-100{margin-top:100rpx}
.li-mt-28{margin-top:28rpx}
@@ -115,10 +88,37 @@
.li-rd-40{border-radius:40rpx}
.li-text-2EA1EA-color{color:rgb(46,161,234)}
.li-text-a5a5a5-color{color:rgb(165,165,165)}
+.li-w-130{width:130rpx}
.li-w-150{width:150rpx}
.li-w-420{width:420rpx}
.li-w-full-85{width:85%}
.li-w-full-90{width:90%}
+.items-center{align-items:center}
+.justify-end{justify-content:end}
+.justify-center{justify-content:center}
+.justify-between{justify-content:space-between}
+.li-h-160{height:160rpx}
+.li-h-58{height:58rpx}
+.li-justify-around{justify-content:space-around}
+.li-ml-22{margin-left:22rpx}
+.li-ml-35{margin-left:35rpx}
+.li-mt-12{margin-top:12rpx}
+.li-mt-14{margin-top:14rpx}
+.li-mt-15{margin-top:15rpx}
+.li-px-25{padding-left:25rpx;padding-right:25rpx}
+.li-px-40{padding-left:40rpx;padding-right:40rpx}
+.li-py-25{padding-top:25rpx;padding-bottom:25rpx}
+.li-rd-10{border-radius:10rpx}
+.li-rd-15{border-radius:15rpx}
+.li-text-010B3E-color{color:rgb(1,11,62)}
+.li-text-22{font-size:22rpx}
+.li-text-28{font-size:28rpx}
+.li-text-343333-color{color:rgb(52,51,51)}
+.li-text-AFB2B8-color{color:rgb(175,178,184)}
+.li-w-310{width:310rpx}
+.li-w-58{width:58rpx}
+.li-w-full-70{width:70%}
+.li-w-full-88{width:88%}
.li-mb-8{margin-bottom:8rpx}
.li-ml-15{margin-left:15rpx}
.li-ml-6{margin-left:6rpx}
@@ -161,14 +161,15 @@
.li-font-400{font-weight:400}
.li-m-30{margin:30rpx}
.li-text-595959-color{color:rgb(89,89,89)}
+.li-mt-100-important{margin-top:100rpx !important}
+.li-mt-8{margin-top:8rpx}
+.li-text-999-color{color:rgb(153,153,153)}
.li-mb-30{margin-bottom:30rpx}
.li-ml-10{margin-left:10rpx}
.li-mr-200{margin-right:200rpx}
.li-mr-4{margin-right:4rpx}
-.li-mt-100-important{margin-top:100rpx !important}
.li-mt-4{margin-top:4rpx}
.li-mt-50{margin-top:50rpx}
-.li-mt-8{margin-top:8rpx}
.li-py-40{padding-top:40rpx;padding-bottom:40rpx}
.li-text-0070F0-color{color:rgb(0,112,240)}
.li-text-333-color{color:rgb(51,51,51)}
@@ -176,7 +177,6 @@
.li-text-44{font-size:44rpx}
.li-text-48{font-size:48rpx}
.li-text-90{font-size:90rpx}
-.li-text-999-color{color:rgb(153,153,153)}
.li-text-center{text-align:center}
.li-text-white{color:rgb(255,255,255)}
.li-w-500{width:500rpx}
@@ -190,42 +190,43 @@
.li-h-90{height:90rpx}
.li-text-47{font-size:47rpx}
.li-w-90{width:90rpx}
-.li-flex-1{flex:1}
-.li-flex-wrap{flex-wrap:wrap}
-.li-mt-25{margin-top:25rpx}
-.li-mt-5{margin-top:5rpx}
-.li-text-999999-color{color:rgb(153,153,153)}
-.li-w-160{width:160rpx}
.li-block{display:block}
.li-items-baseline{align-items:baseline}
.li-mr-15{margin-right:15rpx}
+.li-mt-5{margin-top:5rpx}
.li-opacity-100{undefined:1}
.li-rd-12{border-radius:12rpx}
.li-rd-16{border-radius:16rpx}
.li-text-0a4696-color{color:rgb(10,70,150)}
+.li-flex-1{flex:1}
+.li-flex-wrap{flex-wrap:wrap}
+.li-mt-25{margin-top:25rpx}
+.li-text-999999-color{color:rgb(153,153,153)}
+.li-w-160{width:160rpx}
.li-line-clamp-2{overflow:hidden;display:-webkit-box;line-clamp:2;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.li-w-full-96{width:96%}
.li-mt-200{margin-top:200rpx}
.li-pt-6{padding-top:6rpx}
-.li-opacity-80{undefined:0.8}
-.li-pb-40{padding-bottom:40rpx}
+
+.li-my-10{margin-top:10rpx;margin-bottom:10rpx}
+.li-p-20{padding:20rpx}
.li-px-20{padding-left:20rpx;padding-right:20rpx}
.li-py-10{padding-top:10rpx;padding-bottom:10rpx}
-.li-py-100{padding-top:100rpx;padding-bottom:100rpx}
.li-py-60{padding-top:60rpx;padding-bottom:60rpx}
-.li-rd-30{border-radius:30rpx}
+.li-rd-8{border-radius:8rpx}
+.li-text-dddddd-color{color:rgb(221,221,221)}
+.li-text-ff9900-color{color:rgb(255,153,0)}
+
+.li-flex-row-reverse{flex-direction:row-reverse}
+.li-opacity-80{undefined:0.8}
+.li-pb-40{padding-bottom:40rpx}
+.li-py-100{padding-top:100rpx;padding-bottom:100rpx}
.li-text-100{font-size:100rpx}
.li-text-3e9bff-color{color:rgb(62,155,255)}
.li-text-50{font-size:50rpx}
.li-text-52c41a-color{color:rgb(82,196,26)}
.li-text-ff4d4f-color{color:rgb(255,77,79)}
-.li-my-10{margin-top:10rpx;margin-bottom:10rpx}
-.li-p-20{padding:20rpx}
-.li-rd-8{border-radius:8rpx}
-.li-text-dddddd-color{color:rgb(221,221,221)}
-.li-text-ff9900-color{color:rgb(255,153,0)}
-