怎加了陪诊师页
This commit is contained in:
@@ -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'
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"navigationBarTitleText": "陪诊师团队",
|
||||
"usingComponents": {
|
||||
"t-icon": "tdesign-miniprogram/icon/icon"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<view class="page-bg">
|
||||
<view class="container">
|
||||
|
||||
<!-- 头部:小色带 + 深墨标题 + 一句定位(内页规范,与陪诊指南、联系我们同构) -->
|
||||
<view class="page-header">
|
||||
<view class="header-accent"></view>
|
||||
<text class="header-title">陪诊师团队</text>
|
||||
<text class="header-subtitle">每位都实名上岗,从业信息可核对</text>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{ loading }}" class="state">
|
||||
<text class="state-text">加载中…</text>
|
||||
</view>
|
||||
|
||||
<view wx:elif="{{ attendants.length === 0 }}" class="state">
|
||||
<text class="state-text">暂无陪诊师信息</text>
|
||||
</view>
|
||||
|
||||
<view wx:else class="list">
|
||||
<view class="staff-card" wx:for="{{ attendants }}" wx:key="id">
|
||||
|
||||
<view class="staff-head">
|
||||
<!-- 头像兜底:无头像时用浅橙衬底 + 姓氏首字,避免破图。
|
||||
整页沿用「浅橙衬底承载标识」的语言,不额外引入色相 -->
|
||||
<image
|
||||
wx:if="{{ item.avatar }}"
|
||||
class="staff-avatar"
|
||||
src="{{ item.avatar }}"
|
||||
mode="aspectFill"
|
||||
/>
|
||||
<view wx:else class="staff-avatar staff-avatar-fallback">
|
||||
<text class="staff-avatar-text">{{ item.initial }}</text>
|
||||
</view>
|
||||
|
||||
<view class="staff-main">
|
||||
<view class="staff-name-row">
|
||||
<text class="staff-name">{{ item.name }}</text>
|
||||
<view class="staff-badge" wx:if="{{ item.qualificationVerified }}">
|
||||
<t-icon name="check" size="22rpx" color="#9A3412" />
|
||||
<text class="staff-badge-text">资质已核验</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="staff-meta">
|
||||
<text class="staff-meta-text">从业 {{ item.workYears }} 年</text>
|
||||
<view class="meta-sep"></view>
|
||||
<text class="staff-meta-text">已服务 {{ item.orderCount }} 次</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 擅长场景:浅橙标签,最多 3 个 -->
|
||||
<view class="staff-tags" wx:if="{{ item.specialtyTags.length > 0 }}">
|
||||
<text
|
||||
class="staff-tag"
|
||||
wx:for="{{ item.specialtyTags }}"
|
||||
wx:for-item="tag"
|
||||
wx:key="*this"
|
||||
>{{ tag }}</text>
|
||||
</view>
|
||||
|
||||
<!-- 服务区域 / 语言:单行小字,用细竖线分隔(不用中点字符) -->
|
||||
<view class="staff-area" wx:if="{{ item.areaText || item.langText }}">
|
||||
<text class="staff-area-text" wx:if="{{ item.areaText }}">服务区域 {{ item.areaText }}</text>
|
||||
<view class="area-sep" wx:if="{{ item.areaText && item.langText }}"></view>
|
||||
<text class="staff-area-text" wx:if="{{ item.langText }}">语言 {{ item.langText }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 说明:交代字段口径,同时暗示「不展示联系方式」是有意为之,而非信息缺失 -->
|
||||
<view class="notice" wx:if="{{ !loading }}">
|
||||
<text class="notice-text">以上为陪同人员信息公示,用于核对身份与从业信息,不含联系方式。</text>
|
||||
</view>
|
||||
|
||||
<view class="footer-space"></view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user