This commit is contained in:
lik
2026-05-31 17:44:06 +08:00
parent 350da5f33a
commit 13a61896db
12 changed files with 318 additions and 27 deletions

57
pages/hospital/contact.js Normal file
View File

@@ -0,0 +1,57 @@
const app = getApp()
Page({
data: {
hospitalContact: [],
loading: true,
},
onLoad(options) {
this.loadHospitalContact()
},
loadHospitalContact() {
const appData = app.globalData
if (appData.hospitalContact && appData.hospitalContact.length > 0) {
this.setData({
hospitalContact: appData.hospitalContact,
loading: false,
})
} else if (appData.hospitalContactReady) {
appData.hospitalContactReady.then((data) => {
this.setData({
hospitalContact: data || [],
loading: false,
})
}).catch(() => {
this.setData({
hospitalContact: [],
loading: false,
})
})
} else {
this.setData({
hospitalContact: [],
loading: false,
})
}
},
onCallPhone(e) {
const phone = e.currentTarget.dataset.phone
if (!phone) return
wx.makePhoneCall({
phoneNumber: phone,
fail: (err) => {
console.error('拨打电话失败', err)
},
})
},
onShareAppMessage() {
return {
title: '医院联系电话',
path: '/pages/hospital/contact',
}
},
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,38 @@
<view class="container">
<view class="header">
<text class="title">北京主要医院联系电话</text>
<text class="subtitle">持续更新中, 仅供参考</text>
</view>
<view wx:if="{{loading}}" class="loading">
<text>加载中...</text>
</view>
<view wx:elif="{{hospitalContact.length === 0}}" class="empty">
<text>暂无医院联系信息</text>
</view>
<view wx:else class="list">
<view
class="item"
wx:for="{{hospitalContact}}"
wx:key="id"
>
<view class="info">
<text class="name">{{item.name}}</text>
<view class="phones">
<view
class="phone-wrap"
wx:for="{{item.phone}}"
wx:for-item="phone"
wx:key="*this"
data-phone="{{phone}}"
bindtap="onCallPhone"
>
<text class="phone">{{phone}}</text>
</view>
</view>
</view>
</view>
</view>
</view>

133
pages/hospital/contact.wxss Normal file
View File

@@ -0,0 +1,133 @@
page {
background-color: #F5F7F6;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
.container {
min-height: 100vh;
padding-bottom: 32rpx;
}
/* 顶部导航栏 */
.nav-bar {
display: flex;
align-items: center;
padding: 120rpx 32rpx 20rpx 32rpx;
background: #FFFFFF;
}
.nav-logo {
display: flex;
align-items: center;
}
.logo-icon {
width: 56rpx;
height: 56rpx;
border-radius: 16rpx;
background: #FFFFFF;
padding: 4rpx;
}
.logo-text {
font-size: 36rpx;
font-weight: 700;
color: #1F2937;
margin-left: 16rpx;
}
/* Header区域 */
.header {
background: #FFFFFF;
padding: 24rpx 32rpx 40rpx 32rpx;
margin-bottom: 20rpx;
}
.title {
display: block;
font-size: 40rpx;
font-weight: 700;
color: #1F2937;
}
.subtitle {
display: block;
font-size: 26rpx;
color: #9CA3AF;
margin-top: 12rpx;
}
/* 加载和空状态 */
.loading,
.empty {
text-align: center;
padding: 120rpx 32rpx;
color: #9CA3AF;
font-size: 28rpx;
}
/* 列表区域 */
.list {
padding: 0 32rpx;
}
.item {
display: flex;
align-items: center;
justify-content: space-between;
background: #FFFFFF;
border-radius: 24rpx;
padding: 32rpx;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.06);
border: 2rpx solid #F0F0F0;
}
.info {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
}
.name {
font-size: 30rpx;
font-weight: 700;
color: #1F2937;
line-height: 1.4;
margin-bottom: 16rpx;
word-wrap: break-word;
}
.phones {
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: 12rpx;
}
.phone-wrap {
display: flex;
align-items: center;
gap: 12rpx;
padding: 12rpx 20rpx;
background: #F5F7F6;
border-radius: 12rpx;
width: fit-content;
}
.phone {
font-size: 28rpx;
color: #2D6A4F;
line-height: 1.4;
font-weight: 500;
}
.action {
margin-left: 24rpx;
flex-shrink: 0;
}
.icon {
font-size: 40rpx;
}