diff --git a/app.json b/app.json
index 69bba56..df6bab4 100644
--- a/app.json
+++ b/app.json
@@ -4,6 +4,7 @@
"pages/ai/aichat",
"pages/escort/itemdetail",
"pages/escort/itemlist",
+ "pages/escort/attendantlist",
"pages/escort/recordlist",
"pages/escort/agreement",
"pages/escort/recorddetail",
diff --git a/custom-tab-bar/index.wxss b/custom-tab-bar/index.wxss
index 4a6061d..ff1ef00 100644
--- a/custom-tab-bar/index.wxss
+++ b/custom-tab-bar/index.wxss
@@ -9,7 +9,8 @@
display: flex;
padding: 12rpx 0 calc(12rpx + env(safe-area-inset-bottom));
background: #FFFFFF;
- border-top: 2rpx solid #F0E9E0;
+ /* 与各页 --line 保持同一档(#ECE3D6):tabBar 是独立组件,读不到 page 上的 CSS 变量,只能硬编码 */
+ border-top: 2rpx solid #ECE3D6;
}
.tab-item {
diff --git a/pages/escort/attendantlist.js b/pages/escort/attendantlist.js
new file mode 100644
index 0000000..3399086
--- /dev/null
+++ b/pages/escort/attendantlist.js
@@ -0,0 +1,62 @@
+const API = require('../../utils/api.js')
+
+// 陪诊师公示列表:数据来自后端公开接口 /health/attendant
+// 该接口已做脱敏(不含手机号 / 身份证号 / 证书编号原文),
+// 前端不再做二次裁剪,只把后端字段整形为展示所需结构
+Page({
+ data: {
+ loading: true,
+ attendants: []
+ },
+
+ onLoad() {
+ this.loadAttendants()
+ },
+
+ loadAttendants() {
+ API.escort.getAttendants()
+ .then((res) => {
+ if (res.code !== 0) {
+ this.setData({ loading: false })
+ return
+ }
+
+ const list = (res.data && res.data.attendants) || []
+ this.setData({
+ loading: false,
+ attendants: list.map((item) => {
+ const specialties = item.specialties || []
+ const serviceAreas = item.serviceAreas || []
+ const languages = item.languages || []
+
+ return {
+ id: item.id,
+ name: item.name,
+ avatar: item.avatar,
+ // 头像兜底用的首字:姓名已脱敏为「姓 + 陪诊师」,取第一个字即可
+ initial: (item.name || '').slice(0, 1),
+ workYears: item.workYears || 0,
+ orderCount: item.orderCount || 0,
+ qualificationVerified: !!item.qualificationVerified,
+ // 擅长场景最多展示 3 个,避免长尾把卡片撑高
+ specialtyTags: specialties.slice(0, 3),
+ // 数组在 WXML 里不能直接拼展示,这里先转成文本
+ areaText: serviceAreas.join(' / '),
+ langText: languages.join(' / ')
+ }
+ })
+ })
+ })
+ .catch((err) => {
+ console.log('获取陪诊师列表失败', err)
+ this.setData({ loading: false })
+ })
+ },
+
+ onShareAppMessage() {
+ return {
+ title: '暖橙陪诊 · 陪诊师团队',
+ path: '/pages/escort/attendantlist'
+ }
+ }
+})
\ No newline at end of file
diff --git a/pages/escort/attendantlist.json b/pages/escort/attendantlist.json
new file mode 100644
index 0000000..83e920f
--- /dev/null
+++ b/pages/escort/attendantlist.json
@@ -0,0 +1,6 @@
+{
+ "navigationBarTitleText": "陪诊师团队",
+ "usingComponents": {
+ "t-icon": "tdesign-miniprogram/icon/icon"
+ }
+}
\ No newline at end of file
diff --git a/pages/escort/attendantlist.wxml b/pages/escort/attendantlist.wxml
new file mode 100644
index 0000000..cde52bb
--- /dev/null
+++ b/pages/escort/attendantlist.wxml
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+ 加载中…
+
+
+
+ 暂无陪诊师信息
+
+
+
+
+
+
+
+
+
+ {{ item.initial }}
+
+
+
+
+ {{ item.name }}
+
+
+ 资质已核验
+
+
+
+ 从业 {{ item.workYears }} 年
+
+ 已服务 {{ item.orderCount }} 次
+
+
+
+
+
+
+ {{ tag }}
+
+
+
+
+ 服务区域 {{ item.areaText }}
+
+ 语言 {{ item.langText }}
+
+
+
+
+
+
+ 以上为陪同人员信息公示,用于核对身份与从业信息,不含联系方式。
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/escort/attendantlist.wxss b/pages/escort/attendantlist.wxss
new file mode 100644
index 0000000..824aa30
--- /dev/null
+++ b/pages/escort/attendantlist.wxss
@@ -0,0 +1,229 @@
+/* pages/escort/attendantlist.wxss
+ 陪诊师公示页:与首页、陪诊指南页、联系我们页共用同一套暖橙 + 暖白令牌。
+ 注意 CSS 变量定义在页面级 page{} 里,不是全局——新页面需要自带一份 */
+page {
+ --brand-strong: #C2410C; /* 实心块/按钮:白字 4.69:1,过 AA 正文 */
+ --brand-soft: #FFF4E8; /* 图标衬底、标签底 */
+ --brand-line: #FFE0C2; /* 浅橙衬底描边 */
+ --brand-ink: #9A3412; /* 浅橙衬底上的文字/图标:6.8:1,过 AA */
+
+ --ink: #2B2521;
+ --ink-2: #4A4038;
+ --muted: #6F655C; /* 纸面 5.36:1 / 白卡 5.69:1,过 AA */
+ --line: #ECE3D6; /* 米色发丝边:纸面 1.20:1 / 白卡 1.27:1 */
+ --paper: #FAF8F5; /* 暖白纸面 */
+ --white: #FFFFFF;
+
+ --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.07);
+
+ background-color: var(--paper);
+}
+
+.page-bg {
+ min-height: 100vh;
+ background: var(--paper);
+}
+
+.container {
+ padding: 32rpx 32rpx 0;
+}
+
+/* ===== 头部:小色带 + 深墨标题 ===== */
+.page-header {
+ padding: 24rpx 0 8rpx;
+}
+
+.header-accent {
+ width: 64rpx;
+ height: 8rpx;
+ border-radius: 4rpx;
+ background: var(--brand-strong);
+}
+
+.header-title {
+ display: block;
+ margin-top: 20rpx;
+ font-size: 46rpx;
+ font-weight: 700;
+ color: var(--ink);
+ letter-spacing: 1rpx;
+}
+
+.header-subtitle {
+ display: block;
+ margin-top: 12rpx;
+ font-size: 26rpx;
+ color: var(--muted);
+ letter-spacing: 1rpx;
+}
+
+/* ===== 加载 / 空状态 ===== */
+.state {
+ padding: 120rpx 0;
+ text-align: center;
+}
+
+.state-text {
+ font-size: 26rpx;
+ color: var(--muted);
+}
+
+/* ===== 陪诊师卡片:发丝边 + 紧阴影,与首页白卡同语言 ===== */
+.list {
+ display: flex;
+ flex-direction: column;
+ margin-top: 32rpx;
+}
+
+.staff-card {
+ padding: 28rpx 26rpx;
+ border-radius: 28rpx;
+ background: var(--white);
+ border: 2rpx solid var(--line);
+ box-shadow: var(--shadow-card);
+}
+
+.staff-card + .staff-card {
+ margin-top: 24rpx;
+}
+
+.staff-head {
+ display: flex;
+ align-items: center;
+}
+
+.staff-avatar {
+ width: 96rpx;
+ height: 96rpx;
+ border-radius: 24rpx;
+ flex-shrink: 0;
+}
+
+/* 无头像兜底:浅橙衬底 + 姓氏首字。
+ box-sizing 必须显式声明,否则 2rpx 描边会把 96rpx 撑成 100rpx */
+.staff-avatar-fallback {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ background: var(--brand-soft);
+ border: 2rpx solid var(--brand-line);
+}
+
+.staff-avatar-text {
+ font-size: 36rpx;
+ font-weight: 700;
+ color: var(--brand-ink);
+}
+
+.staff-main {
+ /* min-width: 0 让长内容可收缩,避免把右侧徽标挤出行外 */
+ flex: 1;
+ min-width: 0;
+ margin-left: 20rpx;
+}
+
+.staff-name-row {
+ display: flex;
+ align-items: center;
+}
+
+.staff-name {
+ font-size: 32rpx;
+ font-weight: 700;
+ color: var(--ink);
+ letter-spacing: 1rpx;
+}
+
+/* 资质徽标:浅橙衬底 + 暖橙图标,不引入新的色相 */
+.staff-badge {
+ display: flex;
+ align-items: center;
+ flex-shrink: 0;
+ margin-left: 14rpx;
+ padding: 4rpx 12rpx;
+ border-radius: 8rpx;
+ background: var(--brand-soft);
+ border: 2rpx solid var(--brand-line);
+}
+
+.staff-badge-text {
+ margin-left: 4rpx;
+ /* 中文最小 24rpx(12px),低于此不达可读下限 */
+ font-size: 24rpx;
+ color: var(--brand-ink);
+}
+
+.staff-meta {
+ display: flex;
+ align-items: center;
+ margin-top: 10rpx;
+}
+
+.staff-meta-text {
+ font-size: 24rpx;
+ color: var(--muted);
+}
+
+/* 竖分隔线:与场景行、页脚同一档 #E5DACC,
+ 比 --line 深一档,保证在浅橙底与白卡上都看得见 */
+.meta-sep {
+ width: 2rpx;
+ height: 20rpx;
+ flex-shrink: 0;
+ margin: 0 14rpx;
+ background: #E5DACC;
+}
+
+/* ===== 擅长场景标签 ===== */
+.staff-tags {
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: 20rpx;
+}
+
+.staff-tag {
+ margin: 0 12rpx 12rpx 0;
+ padding: 6rpx 14rpx;
+ border-radius: 8rpx;
+ background: var(--brand-soft);
+ border: 2rpx solid var(--brand-line);
+ font-size: 24rpx;
+ color: var(--brand-ink);
+}
+
+/* ===== 服务区域 / 语言 ===== */
+.staff-area {
+ display: flex;
+ align-items: center;
+ padding-top: 16rpx;
+ border-top: 2rpx solid var(--line);
+}
+
+.staff-area-text {
+ font-size: 24rpx;
+ color: var(--muted);
+}
+
+.area-sep {
+ width: 2rpx;
+ height: 20rpx;
+ flex-shrink: 0;
+ margin: 0 14rpx;
+ background: #E5DACC;
+}
+
+/* ===== 底部说明 ===== */
+.notice {
+ margin-top: 32rpx;
+}
+
+.notice-text {
+ font-size: 24rpx;
+ line-height: 1.6;
+ color: var(--muted);
+}
+
+.footer-space {
+ height: 48rpx;
+}
\ No newline at end of file
diff --git a/pages/escort/guide.wxss b/pages/escort/guide.wxss
index d04059a..b2cfa5d 100644
--- a/pages/escort/guide.wxss
+++ b/pages/escort/guide.wxss
@@ -9,12 +9,14 @@ page {
--ink: #2B2521;
--ink-2: #4A4038;
- --muted: #7A7068; /* 白底 4.8:1,过 AA 正文 */
- --line: #F0E9E0; /* 米色发丝边 */
- --paper: #FAF6F0; /* 暖白纸面 */
+ --muted: #6F655C; /* 与首页同一档。原 #7A7068 在白卡上 4.8:1 达标,
+ 但 .header-subtitle 直接落在纸面上只有 4.49:1,不过 AA。
+ 改后:纸面 5.36:1 / 白卡 5.69:1 */
+ --line: #ECE3D6; /* 米色发丝边:纸面 1.20:1 / 白卡 1.27:1 */
+ --paper: #FAF8F5; /* 暖白纸面:R−B 由 10 降到 5,去掉"旧纸"的黄闷感 */
--white: #FFFFFF;
- --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.04);
+ --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.07);
background-color: var(--paper);
}
diff --git a/pages/home/index.js b/pages/home/index.js
index 2cb93eb..2da757c 100644
--- a/pages/home/index.js
+++ b/pages/home/index.js
@@ -159,6 +159,13 @@ Page({
});
},
+ // 介绍卡信任行:「实名专业陪诊师」→ 陪诊师公示页
+ goToAttendants() {
+ wx.navigateTo({
+ url: '/pages/escort/attendantlist'
+ });
+ },
+
// 点击陪诊服务,直达服务详情下单
goToServiceDetail(e) {
const id = e.currentTarget.dataset.id
diff --git a/pages/home/index.wxml b/pages/home/index.wxml
index 375e9b3..195f852 100644
--- a/pages/home/index.wxml
+++ b/pages/home/index.wxml
@@ -83,7 +83,13 @@
- 实名专业陪诊师
+
+
+ 实名专业陪诊师
+
+
熟悉医院流程
diff --git a/pages/home/index.wxss b/pages/home/index.wxss
index 2843307..f2b3bd2 100644
--- a/pages/home/index.wxss
+++ b/pages/home/index.wxss
@@ -26,11 +26,20 @@ page {
--muted: #6F655C; /* 纸面(--paper) 5.28:1 / 白卡 5.69:1,过 AA 正文。
原 #7A7068 在白卡上 4.83:1 达标,但落在暖白纸面上只有 4.49:1,压线不过 */
--faint: #A79C92; /* 仅用于非文字装饰 */
- --line: #F0E9E0; /* 米色发丝边 */
- --paper: #FAF6F0; /* 暖白纸面 */
+ --line: #ECE3D6; /* 米色发丝边。原 #F0E9E0 落在纸面上只有 1.12:1,等于"看得见但看不清",
+ 而白卡与纸面的填充差本身只有 1.08:1——边界全靠这条边,它必须站得住。
+ 压深一档后:纸面 1.20:1 / 白卡 1.27:1 */
+ --paper: #FAF8F5; /* 暖白纸面。原 #FAF6F0 的 R−B=10,黄度偏重,大面积铺开会被读成
+ "旧纸/发闷"而不是"暖白干净"(感知亮度受色饱和度影响,
+ 同明度下越黄越显沉)。压到 R−B=5,黄度减半,
+ 明度反而略升(L* 97.0 → 97.7),暖白身份保留 */
--white: #FFFFFF;
- --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.04);
+ /* 紧阴影:偏移与模糊半径不变(仍是"小偏移、小模糊"的锐利档),只提不透明度。
+ 原因:上面的纸面去黄后,白卡与纸面的填充差从 1.08:1 降到 1.06:1,
+ 卡片需要阴影来补回"浮在纸面上"的层级,否则整页更平。
+ 0.04 时阴影几乎不可见,提到 0.07 后边缘压深约等于那道填充差本身 */
+ --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.07);
/* 彩色阴影原为 0 6rpx 16rpx/22%:全页只有它与品牌印记两处彩色阴影,且都在首屏,
是首屏显重的主要来源,也与"小偏移、小模糊"的锐利阴影偏好相悖,故收小一档 */
--shadow-cta: 0 2rpx 8rpx rgba(194, 65, 12, 0.16);
@@ -236,6 +245,24 @@ page {
flex-shrink: 0;
}
+/* 信任行里唯一的可点项:「实名专业陪诊师」→ 陪诊师公示页。
+ 用 padding 16rpx 把热区撑到 56rpx(28px),再配等量负外边距抵消,
+ 信任行的行高与另两项保持完全不变 */
+.intro-trust-link {
+ display: flex;
+ align-items: center;
+ padding: 16rpx 0;
+ margin: -16rpx 0;
+}
+
+.intro-trust-link:active {
+ opacity: 0.6;
+}
+
+.intro-trust-link .intro-trust-item {
+ margin-right: 4rpx;
+}
+
/* ===== 通用区块 ===== */
.section {
margin-top: 56rpx;
diff --git a/pages/mine/contact.wxss b/pages/mine/contact.wxss
index a1196b0..b1b0163 100644
--- a/pages/mine/contact.wxss
+++ b/pages/mine/contact.wxss
@@ -7,12 +7,14 @@ page {
--brand-ink: #9A3412; /* 浅橙衬底上的文字/图标:6.8:1,过 AA */
--ink: #2B2521;
- --muted: #7A7068; /* 白底 4.8:1,过 AA 正文 */
- --line: #F0E9E0; /* 米色发丝边 */
- --paper: #FAF6F0; /* 暖白纸面 */
+ --muted: #6F655C; /* 与首页同一档。原 #7A7068 在白卡上 4.8:1 达标,
+ 但 .header-subtitle 直接落在纸面上只有 4.49:1,不过 AA。
+ 改后:纸面 5.36:1 / 白卡 5.69:1 */
+ --line: #ECE3D6; /* 米色发丝边:纸面 1.20:1 / 白卡 1.27:1 */
+ --paper: #FAF8F5; /* 暖白纸面:R−B 由 10 降到 5,去掉"旧纸"的黄闷感 */
--white: #FFFFFF;
- --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.04);
+ --shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.07);
background-color: var(--paper);
}
diff --git a/utils/api.js b/utils/api.js
index 0af6121..7986686 100644
--- a/utils/api.js
+++ b/utils/api.js
@@ -16,6 +16,8 @@ const API = {
updateRecord: (id, data) => request.put(`/health/escort-record/${id}`, data),
updateStatus: (id, data) => request.patch(`/health/escort-record/${id}/status`, data),
deleteRecord: (id) => request.delete(`/health/escort-record/${id}`),
+ // 陪诊师公示列表(公开接口,后端已做脱敏)
+ getAttendants: (params) => request.get('/health/attendant', params),
},
// 健康档案(就诊人):后端强制以 token 中的用户为准,无需传 userId