重构完大部分页面了
This commit is contained in:
+11
-6
@@ -18,7 +18,9 @@
|
||||
|
||||
**四处硬编码走不了变量,改色须一并手改**(逐文件见 §7.3):`t-icon` 的 `color`、`app.json` 的 `tabBar.selectedColor`、首页 base64 线图标的 `stroke`、着色的位图(`images/home-ink.png`)。
|
||||
|
||||
迁移进度:`home/index`、`escort/itemlist` 两页副本已删;`itemdetail`、`attendantlist`、`guide`、`mine/contact` 四页仍各带副本(停在旧值 `#C2410C`),待重构时按同一方式删。
|
||||
**`t-icon` 的 `name` 必须命中 tdesign 图标名表**(`miniprogram_npm/tdesign-miniprogram/icon/icon.wxss` 里的 `.t-icon-{name}`),写错不报错、只是渲染为空:`list` 并不存在(只有 `list-numbered`、`list-bug` 等),`info-circle`、`error-circle`、`user-business`、`chart-bar` 等均存在。
|
||||
|
||||
迁移进度:`home/index`、`escort/itemlist`、`escort/guide` 三页副本已删;`itemdetail`、`attendantlist`、`mine/contact` 三页仍各带副本(停在旧值 `#C2410C`),待重构时按同一方式删。
|
||||
|
||||
### 2.1 第一色:暖橙色阶
|
||||
|
||||
@@ -67,8 +69,9 @@
|
||||
- 线是切分工具,不表意,不上主色或状态色。浅橙底上必须用 `--sep`(`--brand-line` 落 `--brand-soft` 上仅 1.16:1,肉眼看不出)。
|
||||
- `--paper` 与 `--brand-soft` 明度差仅约 1.03:1,浅橙块落纸面须靠 **2rpx `--brand-line` 描边**托形,不加阴影。
|
||||
- **白卡一律走中性阴影** `--shadow-card: 0 2rpx 10rpx rgba(63, 43, 25, 0.07)`,圆角 28rpx。彩色(暖橙)阴影不得用在 `--white` 面上;它只允许用于实心 CTA、品牌印记等小体量元素(`--shadow-cta: 0 2rpx 8rpx rgba(184, 82, 10, 0.16)`)。
|
||||
- 例外(已登记):`escort/itemlist` 三个服务分组做成**通栏白底块**——`--white` + 上下各 2rpx `--line` + `--shadow-card`,**圆角 0**;做法 `margin: 36rpx -32rpx 0` + `padding: 28rpx 32rpx`,行宽仍为 686rpx(若内缩,最长名称「VIP 5次 半天陪诊」会折行)。圆角必须为 0,否则满宽块的圆角会切在屏幕边上。页首 `.notice` 仍是内缩 28rpx 圆角白卡。
|
||||
- 例外(已登记):`escort/itemlist` 两个服务分组做成**通栏白底块**——`--white` + 上下各 2rpx `--line` + `--shadow-card`,**圆角 0**;做法 `margin: 36rpx -32rpx 0` + `padding: 28rpx 32rpx`,行宽仍为 686rpx(若内缩,卡的左右内距会白吃 48rpx 行宽,长名称 + 右区更易挤出)。圆角必须为 0,否则满宽块的圆角会切在屏幕边上。页首 `.notice` 仍是内缩 28rpx 圆角白卡。
|
||||
- 例外(已登记):`escort/itemlist` 页脚做**浅橙收口卡**(`--brand-soft` + 2rpx `--brand-line` + 28rpx 圆角 + 去阴影),与首页 `.quick-item-full` 同源,补回该页"暖色只剩线、没有面"的那一档。
|
||||
- 例外(已登记):`mine/about` 的「联系我们」做成**浅橙入口卡**(`--brand-soft` + 2rpx `--brand-line` + 28rpx 圆角 + 去阴影,同首页 `.quick-item-full` 配方),是该页尾部唯一的暖色面。卡内**不再平铺联系方式**——热线/微信/邮箱/工作时间四项与 `mine/contact` 页逐项重合,平铺即"同一意图两个入口";只留「联系我们」+ 一行摘要(「人工客服」,与首页同卡同文案)+ muted chevron,整卡可点跳 `mine/contact`。另注:该页品牌印记(`home-w.png` 白色线稿)必须落 `--brand-strong` 实心底,不能用 `--brand-soft`,白色线稿在浅橙底上看不见。
|
||||
- 例外(已登记):`mine/mine` 的菜单与「退出登录」做成**通栏白底块**(`--white` + 上下各 2rpx `--line` + `--shadow-card`,圆角 0)。其中「退出登录」是**动作而非导航**,与菜单行不同族:单独一块、一行居中、**无图标无 chevron**、字色 `--muted`。状态色不得用于按钮(§三),退出因此不走红/橙,区分只靠结构与位置。
|
||||
|
||||
---
|
||||
@@ -116,17 +119,19 @@
|
||||
|
||||
| 范围 | 现状 | 替换为 |
|
||||
|---|---|---|
|
||||
| `mine/about.wxss` | `#D4A853`、`#FF8500`、`#22A45D` | `--brand-strong` / `--brand-ink` |
|
||||
| `mine/addressedit.wxml`(`switch` 属性) | 旧金色 | `#B8520A`(属性值需硬编码) |
|
||||
| `health/profilelist.js`(`confirmColor`) | 旧金色 | `#B8520A` |
|
||||
| `health/profilelist.wxss`、`profileedit.wxss` | `#D4A853` 系 | 暖橙令牌 |
|
||||
| `escort/agreement.wxss` | 底 `#FAF6F1`、`#D4A853` 系 | `--paper` / `--brand-soft` / 暖橙令牌 |
|
||||
| `hospital/contact.wxss`、`hospital/ranking.wxss` | 底 `#F5F7F6`、字 `#1F2937`、绿灰系 | 整体并入暖橙体系 |
|
||||
|
||||
已完成(2026-10-04):`mine/mine.wxss`、`pages/ai/aichat.wxss` 已按本节并入暖橙体系。
|
||||
已完成(2026-10-06):`escort/guide` 已按本节并入暖橙体系——`.wxss` 里的 page 级令牌副本(停在旧值 `#C2410C` / `#9A3412`)整块删除,改用 `app.wxss` 唯一来源;`.wxml` 四处 `t-icon` 硬编码随之改值(三个卡片头图标 `#FFFFFF`→`#9B4508`、底部客服 `call` `#9A3412`→`#9B4508`)。同页三处收口:卡片头标识由「实心橙方块 + 白图标」改「`--brand-soft` + 2rpx `--brand-line` 描边 + 暖橙图标」,实心块只留底部 CTA 一处(§2.1);CTA 阴影由 `0 6rpx 16rpx rgba(194,65,12,.22)` 收为 `--shadow-cta`;三处 `font-weight: 600` 改 `700`(中文系统字体只有 400/700 两档)。内容同步:服务流程与 `services.js` 各服务的 flow 对齐(预约 → 沟通信息 → 支付费用 → 准备资料 → 全程陪诊 → 服务完成),删去不在任何 flow 里的「选择陪诊师」;温馨提示的改期句统一为「如需改期或取消,请至少提前4小时联系客服」。
|
||||
|
||||
已完成(2026-10-06):`escort/agreement.wxss` 已按本节并入暖橙体系——底 `#FAF6F1` 转 `--paper`,顶部白→暖白渐变去掉(直接落纸面),#`D4A853` 系连三处同色渐变与同色大阴影一并换掉:文件图标衬底转 `--brand-strong` + `--shadow-cta`(白色图标需深底),章节序号转「`--brand-soft` 衬底 + 2rpx `--brand-line` 描边 + `--brand-ink` 字」(全页实心块只留顶部一个),圆点转 `--brand-strong`;冷灰文字 `#1F2937`/`#4B5563`/`#6B7280` 转 `--ink`/`--ink-2`/`--muted`,冷线 `#F0E6D8`/`#E5E7EB` 转 `--line`/`--sep`(浅橙底上用 `--sep`);正文块改通栏白底块(上下 2rpx `--line` + 圆角 0 + `--shadow-card`)。违约金表表头不再铺色(`--brand-line` 只作描边)。另删 7 条死规则 `flow-steps`/`flow-step`/`step-badge`/`step-info`/`step-title`/`step-desc`/`step-line`——WXML 无任何引用。
|
||||
|
||||
已完成(2026-10-04):`escort/recordlist`、`escort/recorddetail` 已按本节并入暖橙体系——两页删去旧金色副本与全部渐变,状态一律走 §三 四档;`recorddetail` 另在 `page{ }` 登记 `--shadow-bar`(底栏上向阴影,不在全局色板内)。两页 `json` 原本 `usingComponents` 为空却已用 `t-icon`/`t-loading`,一并补注册。
|
||||
|
||||
已完成(2026-10-06):`mine/about.wxss` 已按本节并入暖橙体系——灰金 `#D4A853`、亮橙 `#FF8500`、冷灰底 `#F5F5F5`、品牌区与印记的两处渐变、6×28rpx 的渐变竖条全部换掉:底色转 `--paper`,印记转 `--brand-strong` + `--shadow-cta`(白色线稿需深底),竖条转 8×34rpx 实色 `--brand-strong`。同页两处违规一并修正:`.icp` 由 22rpx 提到 24rpx(硬约束 1 最小字号),元信息与标签统一 `--muted`、正文统一 `--ink-2`。死代码 `.version`(页面已无版本号展示)删除。白卡按 §2.3 补 2rpx `--line` 发丝边 + `--shadow-card` + 28rpx 圆角。同页「联系我们」由平铺的四项联系方式收成一张入口卡(配方见 §2.3 例外)——那四项与 `mine/contact` 逐项重合,平铺属"同一意图两个入口",且该页每行还少一个「拨打/复制」动作词。
|
||||
|
||||
### 5.2 系统级(不在页面里,最易漏)
|
||||
|
||||
| 位置 | 现状 | 应改为 |
|
||||
@@ -195,6 +200,6 @@
|
||||
| 10 | `images/ai-ink.png` | 整图纯色(AI客服选中态位图) | `#9B4508` | `#8A4B08`(位图需重上色,不能按文本替换) |
|
||||
| 11 | `images/home-ink.png` | 整图纯色(「我的」默认头像位图,由灰色 `home.png` 重上色) | `#9B4508` | `#8A4B08`(同上) |
|
||||
|
||||
**无需回滚**:其余页面从未迁移。仍定义旧值 `#C2410C` / `#9A3412` 的是 `itemdetail`、`attendantlist`、`guide`、`mine/contact` 四页八文件(各含 `.wxss` 令牌与 `.wxml` 里 `t-icon` 硬编码),本就是回滚后的目标态;`agreement`、`recordlist`、`recorddetail`、`mine/*` 等页走更早的金色体系(`#D4A853`),见 §5.1。
|
||||
**无需回滚**:其余页面从未迁移。仍定义旧值 `#C2410C` / `#9A3412` 的是 `itemdetail`、`attendantlist`、`mine/contact` 三页六文件(各含 `.wxss` 令牌与 `.wxml` 里 `t-icon` 硬编码),本就是回滚后的目标态(`guide` 已于 2026-10-06 迁移,见 §5.1);`agreement`、`recordlist`、`recorddetail`、`mine/*` 等页走更早的金色体系(`#D4A853`),见 §5.1。
|
||||
|
||||
注:`custom-tab-bar` 未选中灰硬编码 `#7A7068` 是独立历史遗留项(应改 `#6F655C`,见 §5.2),与本次主色调整无关。
|
||||
@@ -43,8 +43,8 @@ doc/
|
||||
| `pages/escort/recorddetail` | 订单详情 |
|
||||
| `pages/escort/agreement` | 用户协议 |
|
||||
| `pages/escort/guide` | 服务指南 |
|
||||
| `pages/health/profilelist` | 健康档案列表 |
|
||||
| `pages/health/profileedit` | 档案编辑 |
|
||||
| `pages/health/profilelist` | 就诊人列表 |
|
||||
| `pages/health/profileedit` | 就诊人编辑 |
|
||||
| `pages/mine/mine` | 我的 |
|
||||
| `pages/mine/about` | 关于 |
|
||||
| `pages/mine/contact` | 联系我们 |
|
||||
|
||||
@@ -75,50 +75,5 @@ Page({
|
||||
title: '暖橙陪诊服务协议',
|
||||
path: '/pages/escort/agreement'
|
||||
}
|
||||
},
|
||||
|
||||
// 复制客服邮箱
|
||||
onCopyEmail() {
|
||||
wx.setClipboardData({
|
||||
data: 'service@huashengtec.com',
|
||||
success: () => {
|
||||
wx.showToast({
|
||||
title: '邮箱已复制',
|
||||
icon: 'success',
|
||||
duration: 1500
|
||||
})
|
||||
},
|
||||
fail: () => {
|
||||
wx.showToast({
|
||||
title: '复制失败',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 拨打客服电话
|
||||
onCallPhone() {
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: '18618162956',
|
||||
fail: () => {
|
||||
wx.showToast({
|
||||
title: '拨号失败',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 处理联系人行点击
|
||||
onContactTap(e) {
|
||||
const action = e.currentTarget.dataset.action
|
||||
if (action === 'copyEmail') {
|
||||
this.onCopyEmail()
|
||||
} else if (action === 'callPhone') {
|
||||
this.onCallPhone()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -41,16 +41,6 @@
|
||||
<block wx:if="{{item.type === 'paragraph'}}">
|
||||
<text class="paragraph">{{item.content}}</text>
|
||||
</block>
|
||||
|
||||
<!-- contact 类型 -->
|
||||
<block wx:if="{{item.type === 'contact'}}">
|
||||
<view class="contact-info">
|
||||
<view wx:for="{{item.contacts}}" wx:for-item="contact" wx:key="text" class="contact-row" bindtap="onContactTap" data-action="{{contact.action}}">
|
||||
<t-icon name="{{contact.icon}}" size="28rpx" class="contact-icon" />
|
||||
<text class="contact-text">{{contact.text}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
+45
-118
@@ -1,6 +1,12 @@
|
||||
/* pages/escort/agreement.wxss */
|
||||
/* pages/escort/agreement.wxss
|
||||
配色走 app.wxss 的暖橙令牌(DESIGN.md §二)。
|
||||
原 #FAF6F1 底、#D4A853 系(含三处同色渐变与同色大阴影)、
|
||||
#1F2937/#4B5563/#6B7280/#9CA3AF/#E5E7EB 冷灰文字、#F0E6D8 冷线,
|
||||
已按 §5.1 与 §四(禁渐变、禁灰金亮橙)收口。
|
||||
另删除死规则 .flow-steps/.flow-step/.step-badge/.step-info/.step-title/
|
||||
.step-desc/.step-line——WXML 里没有任何元素引用(本页无流程步骤) */
|
||||
page {
|
||||
background-color: #FAF6F1;
|
||||
background-color: var(--paper);
|
||||
}
|
||||
|
||||
.container {
|
||||
@@ -8,24 +14,25 @@ page {
|
||||
padding-bottom: 48rpx;
|
||||
}
|
||||
|
||||
/* 顶部标题区 */
|
||||
/* 顶部标题区:不铺卡面、直接落纸面(同首页 hero),去掉原白→暖白渐变 */
|
||||
.header-section {
|
||||
background: linear-gradient(180deg, #FFFFFF 0%, #FFF8F0 100%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 48rpx 32rpx 40rpx;
|
||||
}
|
||||
|
||||
/* 文件图标是全页唯一实心块:白色图标需要深底才看得见,
|
||||
故走 --brand-strong(同首页品牌印记的白色线稿),阴影用 --shadow-cta */
|
||||
.header-icon-wrap {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
background: linear-gradient(135deg, #D4A853 0%, #D4A853 100%);
|
||||
background: var(--brand-strong);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 8rpx 24rpx rgba(212, 168, 83, 0.25);
|
||||
box-shadow: var(--shadow-cta);
|
||||
}
|
||||
|
||||
.header-icon {
|
||||
@@ -35,23 +42,26 @@ page {
|
||||
.header-title {
|
||||
font-size: 40rpx;
|
||||
font-weight: 700;
|
||||
color: #1F2937;
|
||||
color: var(--ink);
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
|
||||
.header-subtitle {
|
||||
font-size: 26rpx;
|
||||
color: #9CA3AF;
|
||||
color: var(--muted);
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
|
||||
/* 协议内容卡片 */
|
||||
/* 协议正文:通栏白底块(上下各 2rpx 发丝线 + 圆角 0),
|
||||
与陪诊服务列表页的分组、我的页菜单组同一语言 */
|
||||
.agreement-card {
|
||||
background: #FFFFFF;
|
||||
background: var(--white);
|
||||
border-top: 2rpx solid var(--line);
|
||||
border-bottom: 2rpx solid var(--line);
|
||||
box-shadow: var(--shadow-card);
|
||||
padding: 32rpx;
|
||||
}
|
||||
|
||||
/* 章节 */
|
||||
.section {
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
@@ -64,18 +74,21 @@ page {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #1F2937;
|
||||
font-weight: 700;
|
||||
color: var(--ink);
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
/* 序号走「浅橙衬底 + 2rpx 描边 + 暖陶土字」,与全站图标衬底同语言;
|
||||
不用实心主色——全页实心块只留顶部那一个(DESIGN.md §2.1) */
|
||||
.section-number {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
background: linear-gradient(135deg, #D4A853 0%, #D4A853 100%);
|
||||
color: #FFFFFF;
|
||||
background: var(--brand-soft);
|
||||
border: 2rpx solid var(--brand-line);
|
||||
color: var(--brand-ink);
|
||||
font-size: 24rpx;
|
||||
font-weight: 600;
|
||||
font-weight: 700;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -91,11 +104,10 @@ page {
|
||||
.paragraph {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
color: #4B5563;
|
||||
color: var(--ink-2);
|
||||
line-height: 1.8;
|
||||
}
|
||||
|
||||
/* 列表项 */
|
||||
.list-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
@@ -109,7 +121,7 @@ page {
|
||||
.list-dot {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
background: #D4A853;
|
||||
background: var(--brand-strong);
|
||||
border-radius: 50%;
|
||||
margin-top: 14rpx;
|
||||
margin-right: 16rpx;
|
||||
@@ -118,128 +130,44 @@ page {
|
||||
|
||||
.list-text {
|
||||
font-size: 28rpx;
|
||||
color: #4B5563;
|
||||
color: var(--ink-2);
|
||||
line-height: 1.7;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
/* 流程步骤 */
|
||||
.flow-steps {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.flow-step {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
.step-badge {
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
background: linear-gradient(135deg, #D4A853 0%, #D4A853 100%);
|
||||
color: #FFFFFF;
|
||||
font-size: 24rpx;
|
||||
font-weight: 600;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.step-info {
|
||||
flex: 1;
|
||||
padding-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.step-title {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: #1F2937;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
.step-desc {
|
||||
display: block;
|
||||
font-size: 26rpx;
|
||||
color: #6B7280;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.step-line {
|
||||
width: 2rpx;
|
||||
height: 40rpx;
|
||||
background: #E5E7EB;
|
||||
margin-left: 21rpx;
|
||||
margin-top: 4rpx;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
/* 联系信息 */
|
||||
.contact-info {
|
||||
margin-top: 20rpx;
|
||||
background: #FAF6F1;
|
||||
border-radius: 16rpx;
|
||||
padding: 24rpx;
|
||||
}
|
||||
|
||||
.contact-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.contact-row:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.contact-icon {
|
||||
color: #D4A853;
|
||||
margin-right: 12rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.contact-text {
|
||||
font-size: 28rpx;
|
||||
color: #4B5563;
|
||||
}
|
||||
|
||||
/* 退订违约金表格 */
|
||||
/* 违约金表:卡内的浅橙块,靠 2rpx --brand-line 描边托形、不加阴影 */
|
||||
.refund-table {
|
||||
margin-top: 20rpx;
|
||||
background: #FAF6F1;
|
||||
border-radius: 16rpx;
|
||||
background: var(--brand-soft);
|
||||
border: 2rpx solid var(--brand-line);
|
||||
border-radius: 20rpx;
|
||||
/* 表格行自带内距,容器不再重复给 */
|
||||
padding: 0;
|
||||
overflow: hidden;
|
||||
border: 1rpx solid #F0E6D8;
|
||||
}
|
||||
|
||||
/* 浅橙底上的分隔线必须用 --sep(--brand-line 落浅橙底只有 1.16:1,看不见) */
|
||||
.table-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 20rpx 24rpx;
|
||||
border-bottom: 1rpx solid #F0E6D8;
|
||||
border-bottom: 2rpx solid var(--sep);
|
||||
}
|
||||
|
||||
.table-row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.table-row.header {
|
||||
background: #FFF8F0;
|
||||
}
|
||||
|
||||
/* 表头不铺色(--brand-line 只作描边,不当填充),靠字重与主色区分 */
|
||||
.table-row.header .table-cell {
|
||||
font-weight: 600;
|
||||
color: #1F2937;
|
||||
font-weight: 700;
|
||||
color: var(--brand-ink);
|
||||
}
|
||||
|
||||
.table-cell {
|
||||
flex: 1;
|
||||
font-size: 26rpx;
|
||||
color: #4B5563;
|
||||
color: var(--ink-2);
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
}
|
||||
@@ -248,7 +176,6 @@ page {
|
||||
flex: 1.2;
|
||||
}
|
||||
|
||||
/* 底部信息 */
|
||||
.footer-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -259,6 +186,6 @@ page {
|
||||
|
||||
.footer-text {
|
||||
font-size: 24rpx;
|
||||
color: #9CA3AF;
|
||||
color: var(--muted);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
+43
-22
@@ -1,45 +1,65 @@
|
||||
// pages/escort/guide.js
|
||||
|
||||
// 人工客服电话:与首页、关于我们保持一致
|
||||
const SERVICE_PHONE = '18618162956'
|
||||
|
||||
Page({
|
||||
data: {
|
||||
// 服务流程:与 itemdetail 的「服务流程」同构,这里只描述通用环节
|
||||
// 服务流程:与 services.js 各服务的 flow 对齐,步骤名与顺序以「全天陪诊 / 半天陪诊」为准
|
||||
// (预约 → 沟通信息 → 支付费用 → 准备资料 → 全程陪诊 → 服务完成)。
|
||||
// 原第 3 步「选择陪诊师」不在 services.js 的任何 flow 里,陪诊师安排属服务前事项而非流程环节,已移除
|
||||
steps: [{
|
||||
title: '线上预约',
|
||||
desc: '选择服务项目,填写就诊医院、科室与时间'
|
||||
title: '预约',
|
||||
desc: '选择服务项目,填写就诊医院、科室与时间。线上、电话、微信均可预约'
|
||||
},
|
||||
{
|
||||
title: '需求确认',
|
||||
desc: '客服电话核对就诊信息与特殊需求'
|
||||
// 服务执行人一律用陪诊师:核对就诊信息属服务前确认,客服只负责订单变更与投诉
|
||||
title: '沟通信息',
|
||||
desc: '陪诊师与您确认就诊信息与特殊需求'
|
||||
},
|
||||
{
|
||||
title: '陪诊师接单',
|
||||
desc: '按需求匹配陪诊师,出发前与您联系'
|
||||
title: '支付费用',
|
||||
desc: '通过微信支付服务费用'
|
||||
},
|
||||
{
|
||||
title: '全程陪同',
|
||||
desc: '取号、缴费、检查、取药全程有人陪'
|
||||
// 与 services.js id 1/2 的第 4 步同名;具体材料清单交给下方「就诊前准备」卡,不在这里重复
|
||||
title: '准备资料',
|
||||
desc: '按就诊项目备齐资料,清单见下方「就诊前准备」'
|
||||
},
|
||||
{
|
||||
// 全站动作词用「协助」;不得写「代办挂号」(含选科选医,擦 8.2 第4条红线)
|
||||
title: '全程陪诊',
|
||||
desc: '陪诊师协助取号、缴费、检查、取药等流程'
|
||||
},
|
||||
{
|
||||
title: '服务完成',
|
||||
desc: '确认服务结果,客服回访并处理售后'
|
||||
desc: '确认本次就诊各项已完成,客服回访并处理售后'
|
||||
}
|
||||
],
|
||||
// 就诊前准备:到院前建议提前备齐的材料
|
||||
// 就诊前准备:到院前建议提前办妥或备齐的事项
|
||||
preparations: [
|
||||
'就诊人身份证、医保卡(或电子医保凭证)',
|
||||
'既往病历、检查报告与影像资料',
|
||||
'需要空腹的项目,就诊当天请勿进食进水',
|
||||
'长期服用的药物清单,方便医生了解用药情况',
|
||||
// 异地就医未备案,现场可能无法直接结算,故提到资料前面
|
||||
'异地就医的,请提前办理医保异地就医备案',
|
||||
// 挂号含选科选医,属 8.2 第 4 条红线,陪诊师不代挂号,故写清由您自己先办
|
||||
// (与 services.js id 4「尚未开单的,请您先挂号」同一口径)
|
||||
'需要挂号的,请先挂好号;挂号涉及选科选医,陪诊师不代为挂号',
|
||||
// 材料项按陪诊师发来的模板归纳成一条:原「既往病历、检查报告与影像资料」
|
||||
// 与「长期服用的药物清单」都在这条里(历史检查单 / CT 等影像资料 / 用药情况),
|
||||
// 同一批东西不在清单里出现两次
|
||||
'按陪诊师提供的模板准备就医信息、用药情况、历史检查单、CT 等影像资料与就医诉求',
|
||||
// 原「需要空腹的项目,就诊当天请勿进食进水」是替医院下医嘱;
|
||||
// 要求来源交回医院,与 id 4「请提前了解…要求」同口径
|
||||
'部分检查要求空腹(禁食禁水),请以医院的检查前通知为准',
|
||||
'提前与陪诊师确认医院、院区与集合地点'
|
||||
],
|
||||
// 温馨提示:通用提醒,不涉及具体退款或收费规则
|
||||
tips: [
|
||||
'建议比预约时间提前 10-15 分钟到达集合点',
|
||||
'建议比预约时间提前10-15分钟到达集合点',
|
||||
'贵重物品与重要证件请自行随身保管',
|
||||
'就诊时间或需求有变化,请尽早联系客服调整'
|
||||
// 9.1.1 收费标准须公示:各服务页都有这条,指南作为总说明反而缺
|
||||
'服务费不包含挂号费、检查费、药费等医疗费用,需在医院另行缴纳',
|
||||
// 8.2 不应签署具有法律效力的医疗文书
|
||||
'具有法律效力的医疗文书(手术、麻醉、特殊检查知情同意书等)需您本人或家属签署,陪诊师不代签',
|
||||
// 全站统一时限,与服务页 notices、协议第 2 节一致(原「请尽早联系客服调整」没给时限,等于缺公示)
|
||||
'如需改期或取消,请至少提前4小时联系客服'
|
||||
]
|
||||
},
|
||||
|
||||
@@ -50,10 +70,11 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
// 兜底出口:仍有疑问可直接拨打客服电话
|
||||
// 兜底出口:仍有疑问去「联系我们」页,本页不直接拨号
|
||||
// (那一页有电话、邮箱与工作时间,并可分别「拨打」「复制」)
|
||||
goToContact() {
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: SERVICE_PHONE
|
||||
wx.navigateTo({
|
||||
url: '/pages/mine/contact'
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
+11
-5
@@ -12,8 +12,12 @@
|
||||
<!-- ① 服务流程:下单到完成的通用环节 -->
|
||||
<view class="card">
|
||||
<view class="card-head">
|
||||
<!-- 卡片头标识走全站「浅橙衬底 + 暖橙图标」语言,实心橙只留给底部 CTA(DESIGN.md §2.1)。
|
||||
t-icon 的 color 读不到 CSS 变量,硬编码对应 --brand-ink #9B4508 -->
|
||||
<view class="card-mark">
|
||||
<t-icon name="list" size="26rpx" color="#FFFFFF" />
|
||||
<!-- 图标名须能在 tdesign 的 icon.wxss 里找到 .t-icon-{name},否则渲染为空:
|
||||
原 name="list" 并不存在(只有 list-numbered / list-bug 等),故换成 list-numbered -->
|
||||
<t-icon name="list-numbered" size="26rpx" color="#9B4508" />
|
||||
</view>
|
||||
<text class="card-title">服务流程</text>
|
||||
</view>
|
||||
@@ -28,11 +32,13 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- ② 就诊前准备:到院前建议备齐的材料 -->
|
||||
<!-- ② 就诊前准备:到院前建议提前办妥或备齐的事项 -->
|
||||
<view class="card">
|
||||
<view class="card-head">
|
||||
<view class="card-mark">
|
||||
<t-icon name="info-circle" size="26rpx" color="#FFFFFF" />
|
||||
<!-- 原 info-circle 只是个「信息」圆标,与「准备清单」无关;
|
||||
换成 task-checked(勾选清单),与卡内逐条勾对的读法一致 -->
|
||||
<t-icon name="task-checked" size="26rpx" color="#9B4508" />
|
||||
</view>
|
||||
<text class="card-title">就诊前准备</text>
|
||||
</view>
|
||||
@@ -48,7 +54,7 @@
|
||||
<view class="card">
|
||||
<view class="card-head">
|
||||
<view class="card-mark">
|
||||
<t-icon name="error-circle" size="26rpx" color="#FFFFFF" />
|
||||
<t-icon name="error-circle" size="26rpx" color="#9B4508" />
|
||||
</view>
|
||||
<text class="card-title">温馨提示</text>
|
||||
</view>
|
||||
@@ -66,7 +72,7 @@
|
||||
<t-icon name="chevron-right" size="28rpx" color="#FFFFFF" />
|
||||
</view>
|
||||
<view class="guide-help" bindtap="goToContact">
|
||||
<t-icon name="call" size="28rpx" color="#9A3412" />
|
||||
<t-icon name="call" size="28rpx" color="#9B4508" />
|
||||
<text class="guide-help-text">还有疑问?联系人工客服</text>
|
||||
</view>
|
||||
|
||||
|
||||
+14
-22
@@ -1,23 +1,10 @@
|
||||
/* pages/escort/guide.wxss
|
||||
内页规范:小色带 + 白底,不用整块主色面板;
|
||||
卡片沿用首页「发丝边 + 紧阴影」,与首页保持同一套视觉语言 */
|
||||
卡片沿用首页「发丝边 + 紧阴影」,与首页保持同一套视觉语言。
|
||||
本页原有的 page 级令牌副本(停在旧值 #C2410C / #9A3412)已按
|
||||
DESIGN.md §5.1 删掉,改用 app.wxss 的唯一来源(#B8520A / #9B4508),
|
||||
与首页、陪诊服务列表页同色 */
|
||||
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; /* 与首页同一档。原 #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.07);
|
||||
|
||||
background-color: var(--paper);
|
||||
}
|
||||
|
||||
@@ -75,11 +62,14 @@ page {
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
/* 卡片头标识:浅橙衬底 + 2rpx 描边托形(同全站「浅橙衬底承载标识」),
|
||||
不再用实心橙——全页实心块只留底部 CTA 一处(DESIGN.md §2.1) */
|
||||
.card-mark {
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
border-radius: 12rpx;
|
||||
background: var(--brand-strong);
|
||||
background: var(--brand-soft);
|
||||
border: 2rpx solid var(--brand-line);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -122,9 +112,10 @@ page {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
/* 中文系统字体只有 400/700 两档,写 600 真机会随机落回 400 或 700 */
|
||||
.step-title {
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
font-weight: 700;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
@@ -166,7 +157,8 @@ page {
|
||||
padding: 26rpx;
|
||||
border-radius: 999rpx;
|
||||
background: var(--brand-strong);
|
||||
box-shadow: 0 6rpx 16rpx rgba(194, 65, 12, 0.22);
|
||||
/* 全站 CTA 阴影统一为小偏移小模糊的 --shadow-cta(原 0 6rpx 16rpx/22% 是旧色值的大阴影) */
|
||||
box-shadow: var(--shadow-cta);
|
||||
transition: transform 0.15s ease;
|
||||
}
|
||||
|
||||
@@ -176,7 +168,7 @@ page {
|
||||
|
||||
.guide-cta-text {
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
font-weight: 700;
|
||||
color: var(--white);
|
||||
letter-spacing: 2rpx;
|
||||
margin-right: 6rpx;
|
||||
@@ -200,7 +192,7 @@ page {
|
||||
.guide-help-text {
|
||||
margin-left: 12rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 600;
|
||||
font-weight: 700;
|
||||
color: var(--brand-ink);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Page({
|
||||
},
|
||||
totalPrice: '0.00',
|
||||
showOrderPopup: false,
|
||||
profiles: [], // 健康档案里已保存的就诊人
|
||||
profiles: [], // 已保存的就诊人
|
||||
selectedProfileId: '', // 当前选中的就诊人档案 ID,为空表示手动填写
|
||||
patientName: '',
|
||||
patientPhone: '',
|
||||
@@ -147,7 +147,7 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
// 跳转到健康档案新增就诊人
|
||||
// 跳转到就诊人页新增
|
||||
goToAddProfile() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/health/profileedit'
|
||||
|
||||
@@ -91,7 +91,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 选择就诊人:从健康档案一键带入姓名与电话 -->
|
||||
<!-- 选择就诊人:从已保存的就诊人一键带入姓名与电话 -->
|
||||
<view class="order-row column">
|
||||
<text class="order-label">选择就诊人</text>
|
||||
<scroll-view class="patient-scroll" scroll-x wx:if="{{profiles.length > 0}}">
|
||||
|
||||
+20
-38
@@ -1,9 +1,10 @@
|
||||
// 服务按"要办的事"分三组,而不是照后端返回顺序平铺。
|
||||
// 服务按"要办的事"分两组,而不是照后端返回顺序平铺。
|
||||
// 组内是能直接比较的同质选项,组间是完全不同的决定;
|
||||
// 标题只回答"这一组是什么"(陪同就医 / 就医代办 / 多次使用,统一 4 字),
|
||||
// 标题只回答"这一组是什么"(陪同就医 / 就医代办,统一 4 字),
|
||||
// "什么情况该选这一组"整句交给下面的 note——标题与副题各管一头。
|
||||
// 前两组刻意走国标口径:GB/T 47801—2026 的标题即《社会化陪同就医服务》,
|
||||
// 3.1 定义与 3.5「陪同就医服务人员」都用「陪同就医」这个词。
|
||||
// 第一组刻意走国标口径:GB/T 47801—2026 的标题即《社会化陪同就医服务》,
|
||||
// 3.1 定义与 3.5「陪同就医服务人员」都用「陪同就医」这个词;
|
||||
// 全天 / 半天 / 夜间三项同为按时长的"人陪着"服务,故归在一组。
|
||||
// 第二组不叫「代办跑腿」——组内第四项的服务名就叫「跑腿服务」(services.js id 6),
|
||||
// 拿成员名当组名,另外三项会读成"剩下的";用「就医代办」则不与任何一项重名,
|
||||
// 也与组内已有的「出入院代办」共用同一个动作词。
|
||||
@@ -13,31 +14,20 @@
|
||||
const SERVICE_GROUPS = [{
|
||||
key: 'accompany',
|
||||
title: '陪同就医',
|
||||
note: '不熟悉医院流程、上班脱不开身、不便独自就诊的情况都适合,就诊当天有人全程陪着。',
|
||||
ids: [1, 2] // 全天陪诊 / 半天陪诊
|
||||
note: '不熟悉医院流程、上班脱不开身、不便独自就诊、需要夜间陪诊的情况都适合,就诊当天有人全程陪着。',
|
||||
ids: [1, 2, 7] // 全天陪诊 / 半天陪诊 / 夜间陪诊
|
||||
},
|
||||
{
|
||||
key: 'errand',
|
||||
title: '就医代办',
|
||||
note: '代问诊、预约检查时间、取报告、办手续、开药等跑腿服务都可以代劳,本人不必到场。',
|
||||
ids: [3, 4, 5, 6] // 代问诊 / 检查预约 / 出入院代办 / 跑腿服务
|
||||
},
|
||||
{
|
||||
key: 'pack',
|
||||
// 这一组本来就是"买法"(一次买多次),不是第三类服务。
|
||||
// 前两组的标题是服务类型,这组 4 字里只能承认它是"用法"——
|
||||
// 「多次使用」与它们字数、句法齐平,同屏看不出接缝(备选「长期使用」)。
|
||||
// 沿革:这里放过「打算长期使用」,因与另外两组的"要办的事"不同轴被改回口语,
|
||||
// 现在三组标题统一改成 4 字短语,它也就不再是异类
|
||||
title: '多次使用',
|
||||
note: '需要多次复诊或长期治疗时,一次买多次,省去反复下单的麻烦。',
|
||||
ids: [7, 8] // VIP 5次 半天陪诊 / VIP 5次代买药
|
||||
// 注:条目改单行横排后名称不再被半栏宽度挤压,这两个"VIP 5次 XXX"已恢复原名,
|
||||
// "买多次"由名称自己交代;组标题与副题仍负责讲清"什么情况选这一组"
|
||||
// 「开药」已改为「取药」:国标 8.1 只列「领取药物」,开药属开具处方的医疗行为,
|
||||
// 会擦 8.2「提供医疗建议」「代替选择用药方案」;取药是凭已有处方代领,口径与 id 8 一致
|
||||
note: '代问诊、预约检查时间、取报告、办手续、取药等跑腿服务都可以代劳,本人不必到场。',
|
||||
ids: [3, 4, 5, 6, 8] // 代问诊 / 检查预约 / 出入院代办 / 跑腿服务 / 取药快递
|
||||
}
|
||||
]
|
||||
|
||||
// 规格签:把"这一单买的是什么"从说明句里提出来,八条口径一致——
|
||||
// 规格签:把"这一单买的是什么"从说明句里提出来,各行口径一致——
|
||||
// 按时长计费的服务标出时长,按次计费的标"按次"。id 对应 services.js,取不到就不显示
|
||||
const UNIT_BY_ID = {
|
||||
1: '8小时/次',
|
||||
@@ -45,26 +35,16 @@ const UNIT_BY_ID = {
|
||||
3: '按次',
|
||||
4: '按次',
|
||||
5: '按次',
|
||||
6: '1小时/次',
|
||||
6: '2小时/次',
|
||||
7: '4小时/次',
|
||||
8: '按次'
|
||||
}
|
||||
|
||||
// 价目表上的价格去掉无意义的 .00(八条都是整元),扫起来更快
|
||||
// 价目表上的价格去掉无意义的 .00(各行都是整元),扫起来更快
|
||||
function formatPrice(value) {
|
||||
return String(value == null ? '' : value).replace(/\.00$/, '')
|
||||
}
|
||||
|
||||
// 说明句里与规格签重复的时长要去掉,免得同一格写两遍:
|
||||
// ① 开头的"X小时服务/次,"(全天陪诊 / 半天陪诊)
|
||||
// ② 句中的"每次X小时,"(VIP 5次 半天陪诊)
|
||||
// 规格签只回答"这一单每次买多久",不写"5次装"——"买几次"由名称承担
|
||||
function toLedgerDesc(subtitle) {
|
||||
return String(subtitle || '')
|
||||
.replace(/^[一二三四五六七八九十\d]+小时[^,]*,/, '')
|
||||
.replace(/每次[一二三四五六七八九十\d]+小时,/g, '')
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
groups: []
|
||||
@@ -95,9 +75,12 @@ Page({
|
||||
serviceMap[service.id] = service
|
||||
})
|
||||
|
||||
// 取到服务后再加工成列表页要用的字段:desc 去掉与规格签重复的时长前缀,
|
||||
// unit 补规格签,price 去掉 .00;最后空组不展示,
|
||||
// 免得留下一个没有服务、只有标题的分组
|
||||
// 取到服务后再加工成列表页要用的字段:unit 补规格签,price 去掉 .00。
|
||||
// 说明句不再加工,直接用 subtitle 原文——原先按「第一个逗号」剥时长前缀,
|
||||
// 副标题一旦写成「八小时服务/次(早8点-中午12点,下午1点-晚上5点),…」,
|
||||
// 括号里的逗号会先被匹配上,行内只剩「下午1点-晚上5点),专业陪诊师全程陪同」,
|
||||
// 开头半个括号、括号不配对。行内允许折行,不靠截文案来压行数。
|
||||
// 最后空组不展示,免得留下一个没有服务、只有标题的分组
|
||||
const groups = SERVICE_GROUPS
|
||||
.map((group) => ({
|
||||
key: group.key,
|
||||
@@ -108,7 +91,6 @@ Page({
|
||||
.filter(Boolean)
|
||||
.map((srv) => ({
|
||||
...srv,
|
||||
desc: toLedgerDesc(srv.subtitle),
|
||||
unit: UNIT_BY_ID[srv.id] || '',
|
||||
price: formatPrice(srv.price)
|
||||
}))
|
||||
|
||||
+12
-10
@@ -3,11 +3,11 @@
|
||||
|
||||
<!-- 页首分两层:
|
||||
① 纸面上一行「短横色标 + 一句引导」——导航栏已经写着「陪诊服务」,
|
||||
所以这里不写页名,只让用户动手挑(下面三组就是可选项);
|
||||
所以这里不写页名,只让用户动手挑(下面两组就是可选项);
|
||||
记号沿用详情页页首那一支(64×8rpx 短横 + 22rpx 间距),
|
||||
两页共用同一套页面级抬头语言;
|
||||
② 一张说明白卡:城市与费用披露 → 发丝线 → 两个入口。
|
||||
卡首不放短横色标——短横是页面级记号,区块级留给三个组头的竖条。
|
||||
卡首不放短横色标——短横是页面级记号,区块级留给两个组头的竖条。
|
||||
先给一句引导再读披露,首屏是"引导 → 声明 → 清单"三层。
|
||||
卡面走"白卡 + 发丝边 + 紧阴影"(中性 --shadow-card,与首页白卡同值),
|
||||
把首屏从纸面上拎起来;形状仍是内缩圆角卡,不改成通栏白条 -->
|
||||
@@ -17,7 +17,7 @@
|
||||
</view>
|
||||
|
||||
<view class="notice">
|
||||
<text class="notice-text">目前已开通北京、上海、天津。费用仅含人工服务费,不含就医费用。</text>
|
||||
<text class="notice-text">目前已开通北京、天津。费用仅含人工服务费,不含就医费用。</text>
|
||||
<view class="notice-hr"></view>
|
||||
<view class="notice-links">
|
||||
<view class="notice-link" bindtap="goToGuide">
|
||||
@@ -32,8 +32,8 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 服务按"要办的事"分三组,每组一块通栏白底:组头(竖条 + 36rpx 标题 +
|
||||
一句副题)→ 通栏章线 → 清单,整页由此读成三张一体的价目表。
|
||||
<!-- 服务按"要办的事"分两组,每组一块通栏白底:组头(竖条 + 36rpx 标题 +
|
||||
一句副题)→ 通栏章线 → 清单,整页由此读成两张一体的价目表。
|
||||
白底做成"通栏截面":左右 -32rpx 顶到屏幕两侧,左右内距复用容器的 32rpx,
|
||||
行的可用宽度因此仍是 686rpx、一分未变(原理详见 itemlist.wxss 的 .group)。
|
||||
副题(原来压在组末的浅橙说明砖)搬到标题下并剥成扁平小字:
|
||||
@@ -42,13 +42,15 @@
|
||||
条目一律一条一行:规则线而已,卡只到"组"这一级。
|
||||
每行分两层,不是左右两栏:
|
||||
第一层 = 名称 +(规格签 · 价格 · 预约),四样同一横向中线,右区整体贴右边缘;
|
||||
第二层 = 说明,独占一行、满宽 686rpx。
|
||||
第二层 = 说明,直接放 subtitle 原文(不截任何前缀)、满宽 686rpx,允许折行。
|
||||
价格从右栏提回名称行,是为了与名称同基线(原先两栏垂直居中,
|
||||
两行的行里价格会掉到说明那一行的高度);说明因此拿到满宽,
|
||||
「磁共振预约、CT预约、彩超等其他预约」与「送资料/代排队/买药/取报告等一小时陪诊服务」
|
||||
这两条不再折行。
|
||||
带时段的副标题(全天 / 半天陪诊)会折成两行,属预期:说明按原文完整给出,
|
||||
行高由内容决定,不再靠截文案来换行数。
|
||||
规格签放在价格左边而不是名称右边:时长与价格本来是一对(规格决定价格),
|
||||
紧挨着读成「4小时/次 ¥300」;八行的签右侧也因此对齐成一列。
|
||||
紧挨着读成「4小时/次 ¥300」;各行的签右侧也因此对齐成一列。
|
||||
项间分隔线是虚线,横跨整行、拉到卡的内边缘;末行不画,收口交给卡底 -->
|
||||
<view class="group" wx:for="{{ groups }}" wx:key="key">
|
||||
|
||||
@@ -76,14 +78,14 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 第二层:说明独占一行,满宽 686rpx -->
|
||||
<text class="row-desc">{{ srv.desc }}</text>
|
||||
<!-- 第二层:说明,放 subtitle 原文、满宽 686rpx,允许折行(不截前缀) -->
|
||||
<text class="row-desc">{{ srv.subtitle }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
|
||||
<!-- 页脚:翻完三组仍未决定的兜底出口。
|
||||
<!-- 页脚:翻完两组仍未决定的兜底出口。
|
||||
做成一张浅橙收口卡——与首页「常用功能」区块尾部的「联系我们」卡
|
||||
(.quick-item-full)同源:--brand-soft 底 + 2rpx --brand-line 描边 + 去阴影。
|
||||
首页每个区块都收在暖色卡上,本页原先四张白面一张暖色面都没有,
|
||||
|
||||
+18
-18
@@ -4,13 +4,13 @@
|
||||
下面接说明白卡(城市与费用披露 → 发丝线 → 两个入口)。
|
||||
先给一句引导再读披露,首屏是"引导 → 声明 → 清单"三层,
|
||||
而不是一上来就撞条款;也让首屏从纸面上拎起一个落点,而不是三段裸字
|
||||
- 八条服务按"要办的事"分三组,每组是一块通栏白底:组头(竖条 + 36rpx 标题 +
|
||||
一句 28rpx 的副题)→ 通栏章线 → 清单,整页读起来像三张一体的价目表;
|
||||
- 八条服务按"要办的事"分两组,每组是一块通栏白底:组头(竖条 + 36rpx 标题 +
|
||||
一句 28rpx 的副题)→ 通栏章线 → 清单,整页读起来像两张一体的价目表;
|
||||
组与组之间是 36rpx 纸面留白,卡的边界由各自的发丝边与紧阴影承担
|
||||
- 三块白底做成"通栏截面":负外边距 -32rpx 顶到屏幕两侧,左右内距直接复用
|
||||
- 两块白底做成"通栏截面":负外边距 -32rpx 顶到屏幕两侧,左右内距直接复用
|
||||
页面容器已有的 32rpx——行的可用宽度因此仍是 686rpx,一分未变、零折行风险。
|
||||
这是"白底 card"敢做的唯一方式:若卡内缩 32rpx 再自带 24rpx 内距,
|
||||
内容宽会掉到 638rpx,最长名称「VIP 5次 半天陪诊」(249rpx) 当场折行(详见 .group)。
|
||||
内容宽会掉到 638rpx,长名称与右区更易挤到折行(详见 .group)。
|
||||
代价是形不再是"浮起的小卡"而是"一条白色章节带",圆角因此为 0
|
||||
(满宽块的圆角会切在屏幕边上);与页首 .notice 那张内缩圆角卡是两种角色两种形
|
||||
- 副题是扁平小字,不用浅橙砖:浅橙砖会和下一组的强组头贴在一起,
|
||||
@@ -18,7 +18,7 @@
|
||||
让"卡顶 → 组头 → 章线 → 行"这条读法不断
|
||||
- 条目一律一条一行:只有规则线没有卡片(卡只到"组"这一级)。
|
||||
原先是 2×2 价目表,但半栏只有 317rpx——说明句要折行、名称要被迫缩短,
|
||||
而这份数据里真正能横向比价的只有第一组(全天/半天)两格,代价不值,故改单行
|
||||
而这份数据里真正能横向比价的只有第一组(全天/半天/夜间)三格,代价不值,故改单行
|
||||
- 每行分两层,不是左右两栏:上层「名称 +(规格签 · 价格 · 预约)」一行、
|
||||
四样同一横向中线、右区整体贴右边缘;下层说明独占、满宽 686rpx。
|
||||
价格因此与名称同基线,说明也因此从 436rpx 拿到满宽
|
||||
@@ -69,11 +69,11 @@ page {
|
||||
|
||||
/* ===== 页首引导:纸面上一行 =====
|
||||
页名已经在导航栏的「陪诊服务」上,所以这行不写页名,只让用户动手挑——
|
||||
下面三组就是可选项,对着自己的情况挑一行就行。
|
||||
下面两组就是可选项,对着自己的情况挑一行就行。
|
||||
记号沿用详情页页首那一支:64×8rpx 短横色标(--brand-strong)+ 22rpx 间距,
|
||||
两页共用同一套"页面级抬头"语言。短横是页面级的记号,区块级留给三个组头的竖条——
|
||||
两页共用同一套"页面级抬头"语言。短横是页面级的记号,区块级留给两个组头的竖条——
|
||||
本页原先那条 .notice-tick(48×6rpx)是同一支记号走散了的版本,已一并删掉。
|
||||
字号 32rpx/700/--ink:本页是价目单,真正的主结构是三个 36rpx 的组标题,
|
||||
字号 32rpx/700/--ink:本页是价目单,真正的主结构是两个 36rpx 的组标题,
|
||||
这行是导语,刻意压在组标题下一档、不跟它抢层级;但比 28rpx 的副题档重,
|
||||
落在纸面上仍读得出"页面从这里开始"。
|
||||
位置在说明卡之上、纸面上:先给一句引导,再读卡里的城市与费用披露,
|
||||
@@ -178,8 +178,8 @@ page {
|
||||
目的只有一个——让白面变宽而不让行宽变宽:行仍落在容器原有的 686rpx 上。
|
||||
这是唯一可行解,因为这一行已经没有余量:
|
||||
686 − 16(右区外边距) − 122(最长签) − 12 − 104(价格槽) − 24 − 128(按钮)
|
||||
= 280rpx 可用,最长名称 249rpx,只剩 31rpx;
|
||||
卡只要自带 24rpx 左右内距就吃掉 48rpx,最长那条名称当场折行。
|
||||
= 280rpx 可用;现最长名称「出入院代办」约 160rpx,余量约 120rpx。
|
||||
卡若内缩 32rpx 再自带 24rpx 内距,仍会白吃 48rpx 行宽、压缩名称余量,故继续走通栏。
|
||||
代价是圆角为 0——满宽块的圆角会切在屏幕边上,留下纸色缺口。
|
||||
组界:卡与卡之间只留 36rpx 纸面。原先是 68rpx 的"两条通栏线夹白",
|
||||
现在两侧各有发丝边与阴影托形,不需要那么宽的留白来分段;
|
||||
@@ -259,7 +259,7 @@ page {
|
||||
既不抢名称的重心,也不走 --brand-strong。
|
||||
这是本页对 DESIGN.md §2.1「价格数字」用途的例外,已在页首注释登记。
|
||||
min-width 104rpx + justify-content:flex-end 是"固定槽":
|
||||
八行的价格右边缘对齐成一列,同时把左边规格签的右边缘也钉在同一位置。
|
||||
各行的价格右边缘对齐成一列,同时把左边规格签的右边缘也钉在同一位置。
|
||||
不固定的话,3 位数价格(约 80rpx)与 4 位数(约 100rpx)差 18rpx,
|
||||
签会跟着左右抖——那种"差不多对齐"比明显不对齐更难看 */
|
||||
.price {
|
||||
@@ -285,8 +285,8 @@ page {
|
||||
|
||||
/* ===== 规格签:暖橙小字(按用户要求去掉左竖条) =====
|
||||
沿革:整圈描边 → 4rpx 左竖条 + 浅橙底(色标式)→ 现在只剩字 + 一层极浅的底。
|
||||
去竖条的原因:页面上已经有一套竖条语言——三个组头的 8×36rpx 实心竖条。
|
||||
每行再插一道 4rpx 小竖条,全页竖向重音就从 3 处涨到 11 处,与组头抢同一个记号。
|
||||
去竖条的原因:页面上已经有一套竖条语言——两个组头的 8×36rpx 实心竖条。
|
||||
每行再插一道 4rpx 小竖条,全页竖向重音就从 2 处涨到 10 处,与组头抢同一个记号。
|
||||
签退回纯文字后,每行的竖条只剩组头一处,记号重新变回"章"级。
|
||||
代价要记住:底仍是 --brand-soft,它落在白卡上只有 1.08:1(纸面上 1.02:1),
|
||||
实际都看不出来——签现在是"暖橙字 + 一层几乎不可见的暖底",
|
||||
@@ -295,7 +295,7 @@ page {
|
||||
若日后想要一个看得见的签形,两条路:
|
||||
① 底换 --brand-line(白卡上 1.26:1,比现在明显);② 底整个删掉,承认它就是一段暖色小字。
|
||||
位置在价格左边(与价格成对、整体右对齐),因此补 flex-shrink:0
|
||||
与 white-space:nowrap,保证八行的签不被压扁、右边缘对齐成一列 */
|
||||
与 white-space:nowrap,保证各行的签不被压扁、右边缘对齐成一列 */
|
||||
.unit-chip {
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
@@ -317,7 +317,7 @@ page {
|
||||
/* 一行分两层,不是左右两栏:
|
||||
第一层 .row-head —— 名称在左;右区(规格签 → 价格 → 预约)整体贴右边缘,
|
||||
四样对齐在同一横向中线上;
|
||||
第二层 .row-desc —— 说明独占一行,满宽 686rpx。
|
||||
第二层 .row-desc —— 说明单独成行(放 subtitle 原文,内容可折行),满宽 686rpx。
|
||||
为什么把价格从右栏提回名称行、说明改成独占一行:
|
||||
① 价格与名称同基线,扫价格时眼睛不用跨行去找。原先两栏是行内垂直居中,
|
||||
两行的行里价格会落到说明那一行的高度上,名称与价格被拆开;
|
||||
@@ -346,7 +346,7 @@ page {
|
||||
}
|
||||
|
||||
/* 第一层:名称 + 右区。名称 flex:1 吸走全部余量,右区因此被顶到右边缘,
|
||||
八行的签、价格、按钮自然各成一列,不用给任何一列写死宽度 */
|
||||
各行的签、价格、按钮自然各成一列,不用给任何一列写死宽度 */
|
||||
.row-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -358,7 +358,7 @@ page {
|
||||
可用宽度约 280rpx:
|
||||
686 − 16(本行右区外边距) − 122(最长签「8小时/次」,已去左竖条)
|
||||
− 12 − 104(价格固定槽) − 24(与按钮的间距,按用户要求由 12 加到 24) − 128(按钮)。
|
||||
最长名称「VIP 5次 半天陪诊」约 249rpx,余量约 31rpx。
|
||||
最长名称「出入院代办」约 160rpx,余量约 120rpx。
|
||||
真机若仍折行,下一顺位是把 .price-num 从 32rpx 降到 28rpx(约让出 8rpx) */
|
||||
.row-name {
|
||||
flex: 1;
|
||||
@@ -371,7 +371,7 @@ page {
|
||||
|
||||
/* 右区:规格签 → 价格 → 预约,三段整体贴右边缘,同一横向中线。
|
||||
签之所以摆在价格左边而不是名称右边:时长与价格本来就是一对(规格决定价格),
|
||||
紧挨着读成「4小时/次 ¥300」;同时八行的签右侧能借此对齐成一列。
|
||||
紧挨着读成「4小时/次 ¥300」;同时各行的签右侧能借此对齐成一列。
|
||||
签若跟名称走,它的右边缘会随名称长短在 96~249rpx 之间游走,不成列 */
|
||||
.row-side {
|
||||
display: flex;
|
||||
|
||||
@@ -19,6 +19,12 @@ const TYPE_MAP = {
|
||||
other: '其他'
|
||||
}
|
||||
|
||||
// 左右滑动切换状态页的手势参数(单位 px)
|
||||
const SWIPE_THRESHOLD = 50 // 抬手后触发切换的最小横向位移
|
||||
const DRAG_MAX = 120 // 跟手位移上限,避免内容被拖出屏幕
|
||||
const DRAG_FACTOR = 0.5 // 跟手阻尼系数,拖 2px 内容走 1px
|
||||
const AXIS_LOCK = 8 // 方向锁定阈值,超过后才判定手势方向
|
||||
|
||||
// 支付状态:已支付走「已完成」档;未支付 / 退款中复用主色浅档提示待处理;
|
||||
// 已退款走中性档(--muted 字 + --sep 描边 + 透明底,见 §三 禁用/中性写法)
|
||||
const PAYMENT_STATUS_MAP = {
|
||||
@@ -36,6 +42,11 @@ Page({
|
||||
page: 1,
|
||||
pageSize: 10,
|
||||
statusFilter: '',
|
||||
// 供筛选条 scroll-into-view 使用,滑动切换后把选中胶囊滚入可视区
|
||||
tabIntoView: '',
|
||||
// 跟手位移(px)与拖动标记:拖动中内容随手左右移动,松手后弹回
|
||||
dragX: 0,
|
||||
dragging: false,
|
||||
statusTabs: [
|
||||
{ value: '', label: '全部', count: 0 },
|
||||
{ value: 'pending', label: '待确认', count: 0 },
|
||||
@@ -173,11 +184,78 @@ Page({
|
||||
},
|
||||
|
||||
onTabChange(e) {
|
||||
const status = e.currentTarget.dataset.value
|
||||
this.setData({ statusFilter: status })
|
||||
this.switchStatusTab(Number(e.currentTarget.dataset.index))
|
||||
},
|
||||
|
||||
// 统一的状态页切换入口:点胶囊与左右滑动都走这里
|
||||
switchStatusTab(index) {
|
||||
const tab = this.data.statusTabs[index]
|
||||
if (!tab || tab.value === this.data.statusFilter) return
|
||||
this.setData({
|
||||
statusFilter: tab.value,
|
||||
tabIntoView: `tab-${index}`
|
||||
})
|
||||
this.loadRecords(true)
|
||||
},
|
||||
|
||||
// 左右滑动切换状态页:拖动阶段实时跟手,抬手阶段判断是否成手势
|
||||
onTouchStart(e) {
|
||||
const touch = e.touches[0]
|
||||
this.touchStart = { x: touch.clientX, y: touch.clientY }
|
||||
this.touchAxis = ''
|
||||
this.dragValue = 0
|
||||
},
|
||||
|
||||
onTouchMove(e) {
|
||||
const start = this.touchStart
|
||||
if (!start) return
|
||||
|
||||
const touch = e.touches[0]
|
||||
const deltaX = touch.clientX - start.x
|
||||
const deltaY = touch.clientY - start.y
|
||||
|
||||
// 首次移动时锁定方向:纵向手势交给页面滚动,不做横向跟手
|
||||
if (!this.touchAxis) {
|
||||
if (Math.abs(deltaX) <= AXIS_LOCK && Math.abs(deltaY) <= AXIS_LOCK) return
|
||||
this.touchAxis = Math.abs(deltaX) > Math.abs(deltaY) ? 'x' : 'y'
|
||||
}
|
||||
if (this.touchAxis !== 'x') return
|
||||
|
||||
// 阻尼跟手 + 位移上限:内容在有限范围内随手平移,形成可拖拽的实感
|
||||
const dragX = Math.round(Math.max(-DRAG_MAX, Math.min(DRAG_MAX, deltaX * DRAG_FACTOR)))
|
||||
if (dragX === this.dragValue) return
|
||||
this.dragValue = dragX
|
||||
this.setData({ dragging: true, dragX })
|
||||
},
|
||||
|
||||
onTouchEnd(e) {
|
||||
const start = this.touchStart
|
||||
const axis = this.touchAxis
|
||||
this.touchStart = null
|
||||
this.touchAxis = ''
|
||||
if (!start) return
|
||||
|
||||
const touch = e.changedTouches[0]
|
||||
const deltaX = touch.clientX - start.x
|
||||
const deltaY = touch.clientY - start.y
|
||||
|
||||
// 松手先把内容弹回原位,回弹由 .container 的 transition 承担
|
||||
if (this.data.dragging || this.data.dragX !== 0) {
|
||||
this.dragValue = 0
|
||||
this.setData({ dragging: false, dragX: 0 })
|
||||
}
|
||||
|
||||
if (axis !== 'x') return
|
||||
// 横向位移要足够大、且明显大于纵向,才算切换手势,
|
||||
// 避免与列表纵向滚动、卡片点按互相干扰
|
||||
if (Math.abs(deltaX) < SWIPE_THRESHOLD || Math.abs(deltaX) < Math.abs(deltaY) * 1.5) return
|
||||
|
||||
const tabs = this.data.statusTabs
|
||||
const currentIndex = tabs.findIndex(tab => tab.value === this.data.statusFilter)
|
||||
// 左滑看下一个状态,右滑回上一个状态
|
||||
this.switchStatusTab(deltaX < 0 ? currentIndex + 1 : currentIndex - 1)
|
||||
},
|
||||
|
||||
onTapRecord(e) {
|
||||
const id = e.currentTarget.dataset.id
|
||||
wx.navigateTo({
|
||||
|
||||
@@ -5,13 +5,21 @@
|
||||
未选中 = 纸面安静胶囊(透明底 + 发丝边 + --muted 字)。
|
||||
胶囊必须带文字标签,颜色只做强化(DESIGN.md §四.8) -->
|
||||
<view class="tabs-bar">
|
||||
<scroll-view class="tabs-scroll" scroll-x show-scrollbar="{{false}}">
|
||||
<!-- scroll-into-view 让左右滑动切换后,选中胶囊自动滚入可视区 -->
|
||||
<scroll-view
|
||||
class="tabs-scroll"
|
||||
scroll-x
|
||||
scroll-with-animation
|
||||
scroll-into-view="{{tabIntoView}}"
|
||||
show-scrollbar="{{false}}"
|
||||
>
|
||||
<view class="tabs">
|
||||
<view
|
||||
id="tab-{{index}}"
|
||||
class="tab {{statusFilter === item.value ? 'active' : ''}}"
|
||||
wx:for="{{statusTabs}}"
|
||||
wx:key="value"
|
||||
data-value="{{item.value}}"
|
||||
data-index="{{index}}"
|
||||
bindtap="onTabChange"
|
||||
>
|
||||
<text class="tab-label">{{item.label}}</text>
|
||||
@@ -21,7 +29,14 @@
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
<view class="container">
|
||||
<!-- 记录区承载左右滑动手势:横向拖动时内容跟手平移做反馈,纵向滑动仍交给页面滚动 -->
|
||||
<view
|
||||
class="container {{dragging ? 'dragging' : ''}}"
|
||||
style="transform: translateX({{dragX}}px);"
|
||||
bindtouchstart="onTouchStart"
|
||||
bindtouchmove="onTouchMove"
|
||||
bindtouchend="onTouchEnd"
|
||||
>
|
||||
|
||||
<!-- 记录列表:一单一卡。
|
||||
卡内只留可扫读的四段:类型 + 状态 → 时间 → 就诊信息 → 费用 + 支付状态。
|
||||
@@ -65,7 +80,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 底部:费用 + 支付状态 + 进详情页的显性暗示 -->
|
||||
<!-- 底部:费用 + 支付状态。原右侧的 chevron 已去,支付胶囊贴右边缘对齐 -->
|
||||
<view class="card-foot">
|
||||
<view class="fee">
|
||||
<text class="fee-sym">¥</text>
|
||||
@@ -76,7 +91,6 @@
|
||||
class="pay-chip"
|
||||
style="background: {{item.paymentStatusBg}}; color: {{item.paymentStatusColor}}; border-color: {{item.paymentStatusBorder}};"
|
||||
>{{item.paymentStatusText}}</view>
|
||||
<t-icon name="chevron-right" size="28rpx" color="#6F655C" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
- 卡内四段:类型 + 状态 → 时间 → 就诊信息 → 费用 + 支付状态;
|
||||
长文本(需求、陪诊记录)交给详情页,保证每张卡一眼看完
|
||||
- 形状锁定:卡 28rpx、状态胶囊 10rpx、筛选胶囊 999rpx
|
||||
- 左右滑动切换状态页:记录区横向拖动时跟手平移(有阻尼与上限),
|
||||
松手弹回;拖动中关过渡保即时响应,松手后由过渡做回弹
|
||||
- 字号阶梯:费用 34 / 类型 30 / 就诊信息 28 / 时间 · 胶囊 24(rpx),
|
||||
全页最小 24rpx(12px),达可读下限 */
|
||||
page {
|
||||
@@ -22,6 +24,13 @@ page {
|
||||
|
||||
.container {
|
||||
padding: 0 32rpx calc(40rpx + env(safe-area-inset-bottom));
|
||||
/* 左右滑动切换的视觉反馈:跟手期间由 .dragging 关闭过渡做到即时响应,
|
||||
松手后恢复过渡,内容弹回原位 */
|
||||
transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
}
|
||||
|
||||
.container.dragging {
|
||||
transition: none;
|
||||
}
|
||||
|
||||
/* ===== 顶部筛选:吸顶横滑 ===== */
|
||||
@@ -197,7 +206,6 @@ page {
|
||||
|
||||
/* 支付状态胶囊:比订单状态轻一档(无底色的中性档只留字与描边) */
|
||||
.pay-chip {
|
||||
margin-right: 12rpx;
|
||||
padding: 4rpx 14rpx;
|
||||
border: 2rpx solid transparent;
|
||||
border-radius: 10rpx;
|
||||
|
||||
@@ -17,7 +17,7 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
// 拉取当前登录用户的健康档案(就诊人)列表
|
||||
// 拉取当前登录用户的就诊人列表
|
||||
loadProfiles() {
|
||||
this.setData({
|
||||
loading: true
|
||||
@@ -41,7 +41,7 @@ Page({
|
||||
})
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log('获取健康档案失败', err)
|
||||
console.log('获取就诊人失败', err)
|
||||
wx.showToast({
|
||||
title: '网络请求失败',
|
||||
icon: 'none'
|
||||
@@ -122,7 +122,7 @@ Page({
|
||||
this.loadProfiles()
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log('删除健康档案失败', err)
|
||||
console.log('删除就诊人失败', err)
|
||||
wx.showToast({
|
||||
title: '网络请求失败',
|
||||
icon: 'none'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"navigationBarTitleText": "健康档案",
|
||||
"navigationBarTitleText": "就诊人",
|
||||
"usingComponents": {
|
||||
"t-icon": "tdesign-miniprogram/icon/icon"
|
||||
},
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<!-- 空状态 -->
|
||||
<view class="empty-state" wx:if="{{!loading && profiles.length === 0}}">
|
||||
<t-icon name="file-safety" size="120rpx" color="#D1D5DB" />
|
||||
<text class="empty-text">还没有健康档案</text>
|
||||
<text class="empty-text">还没有就诊人</text>
|
||||
<text class="empty-subtext">添加就诊人后,下单时可一键带入信息</text>
|
||||
</view>
|
||||
|
||||
|
||||
+9
-8
@@ -10,13 +10,14 @@ const SERVICE_UI = {
|
||||
4: { name: '检查预约' },
|
||||
5: { name: '出入院代办' },
|
||||
6: { name: '跑腿服务' },
|
||||
7: { name: '陪诊套餐' },
|
||||
8: { name: '买药套餐' }
|
||||
7: { name: '夜间陪诊' },
|
||||
8: { name: '取药快递' }
|
||||
}
|
||||
|
||||
// 陪诊服务的展示顺序(两行共 8 项)。
|
||||
// 陪诊服务的展示顺序(共 8 项,4 列 × 2 行正好排满)。
|
||||
// 陪同就医三项(全天 / 半天 / 夜间)连排在前,与列表页的分组顺序一致;
|
||||
// 全天 / 半天是核心营收项,靠排在前两位形成隐性推荐位
|
||||
const SERVICE_ORDER = [1, 2, 3, 4, 5, 6, 7, 8]
|
||||
const SERVICE_ORDER = [1, 2, 7, 3, 4, 5, 8, 6]
|
||||
|
||||
// 计入"待服务订单"的订单状态:待确认 / 已确认 / 进行中
|
||||
const PENDING_ORDER_STATUS = ['pending', 'confirmed', 'in_progress']
|
||||
@@ -26,20 +27,20 @@ const SERVICE_PHONE = '18618162956'
|
||||
|
||||
Page({
|
||||
data: {
|
||||
escortServices: [], // 陪诊服务(来自后端,最多 8 项,宫格展示)
|
||||
escortServices: [], // 陪诊服务(来自后端,按 SERVICE_ORDER 展示)
|
||||
pendingCount: 0, // 待服务订单数,大于 0 时首页顶部展示状态条
|
||||
quickEntries: [{
|
||||
id: 'records',
|
||||
name: '预约记录',
|
||||
// 横排布局后文字区变窄,右侧又补了 chevron(文字区约 179rpx),desc 控制在 7 字内避免折行
|
||||
desc: '查看进度与历史',
|
||||
// 日历:与「健康档案」的人形图标形成明显形态差异(原先两个都是"文档+勾",缩小后难分辨)
|
||||
// 日历:与「就诊人」的人形图标形成明显形态差异(原先两个都是"文档+勾",缩小后难分辨)
|
||||
icon: 'calendar-1',
|
||||
url: '/pages/escort/recordlist'
|
||||
},
|
||||
{
|
||||
id: 'health',
|
||||
name: '健康档案',
|
||||
name: '就诊人',
|
||||
// 原「管理家人就诊信息」8 字 + 右侧箭头会折行,收到 6 字
|
||||
desc: '管理家人信息',
|
||||
icon: 'user-checked',
|
||||
@@ -174,7 +175,7 @@ Page({
|
||||
})
|
||||
},
|
||||
|
||||
// 常用功能:预约记录、健康档案
|
||||
// 常用功能:预约记录、就诊人
|
||||
onQuickEntryTap(e) {
|
||||
const entry = e.currentTarget.dataset.item
|
||||
if (!entry || !entry.url) {
|
||||
|
||||
+16
-6
@@ -351,19 +351,29 @@ page {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNC41IDIwLjVWNi41YTIgMiAwIDAgMSAyLTJoMTFhMiAyIDAgMCAxIDIgMnYxNCIvPjxwYXRoIGQ9Ik0yLjUgMjAuNWgxOSIvPjxwYXRoIGQ9Ik0xMiA4LjZ2NU05LjUgMTEuMWg1Ii8+PC9zdmc+");
|
||||
}
|
||||
|
||||
/* 6 跑腿服务:包裹箱 */
|
||||
/* 6 跑腿服务:单据 + 对勾(**线形描边**,stroke 1.5,与 1~5/7/8 同档,不填充)。
|
||||
语义定位:本项卖的是"**跑腿代办**"——你交代的事我替你办妥,**不是"快"**。
|
||||
(副题里的"一小时"是时长规格,不是速度承诺,不能拿它当图形依据)
|
||||
母题沿革(均已废弃,勿回退):
|
||||
① 奔跑人形——躯干前倾,60rpx 下读成"要摔倒";
|
||||
② 直立人 + 手持文件(粗轮廓 + 部分填充)——填充占比不足 15%,四肢描边仍主导观感,整体还是线稿;
|
||||
③ 实心闪电——重量与其余 7 枚线形图标脱节,被否;
|
||||
④ 线形闪电——形状本身没问题,但闪电只表"快",与本项"代办"的实际卖点不符,被否。
|
||||
与 4「检查预约」(日历 + 对勾)的区分点:本图是**右上折角**的单据(顶部无挂耳、无横贯分隔线),
|
||||
4 是**顶部两个挂耳**的日历。两者不同行不同列,60rpx 下靠"折角 vs 挂耳"一眼分开。
|
||||
备选(同样不撞车、同样线形):运动鞋侧面——直接读"跑腿" */
|
||||
.assist-icon-6 {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMjAuNSA4LjJ2Ny42YTEuNiAxLjYgMCAwIDEtLjg0IDEuNDJsLTYuOSAzLjhhMS42IDEuNiAwIDAgMS0xLjUyIDBsLTYuOS0zLjhBMS42IDEuNiAwIDAgMSAzLjUgMTUuOFY4LjJhMS42IDEuNiAwIDAgMSAuODQtMS40Mmw2LjktMy44YTEuNiAxLjYgMCAwIDEgMS41MiAwbDYuOSAzLjhBMS42IDEuNiAwIDAgMSAyMC41IDguMloiLz48cGF0aCBkPSJNMy45IDcuMyAxMiAxMS43bDguMS00LjRNMTIgMTEuN1YyMSIvPjwvc3ZnPg==");
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTQgMy41SDZhMiAyIDAgMCAwLTIgMnYxM2EyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOS41WiIvPjxwYXRoIGQ9Ik0xNCAzLjV2Nmg2Ii8+PHBhdGggZD0ibTguOCAxNC40IDIuMiAyLjIgNC40LTQuOCIvPjwvc3ZnPg==");
|
||||
}
|
||||
|
||||
/* 7 陪诊套餐:礼盒 */
|
||||
/* 7 夜间陪诊:弯月,与 1/2 的"表盘"区分开,一眼读出"夜间" */
|
||||
.assist-icon-7 {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSIzIiB5PSI3LjUiIHdpZHRoPSIxOCIgaGVpZ2h0PSI0LjUiIHJ4PSIxLjIiLz48cGF0aCBkPSJNNC41IDEydjcuNUExLjUgMS41IDAgMCAwIDYgMjFoMTJhMS41IDEuNSAwIDAgMCAxLjUtMS41VjEyIi8+PHBhdGggZD0iTTEyIDcuNVYyMSIvPjxwYXRoIGQ9Ik0xMiA3LjVIOS4yYTIuMyAyLjMgMCAxIDEgMC00LjZDMTAuNyAyLjkgMTIgNy41IDEyIDcuNVoiLz48cGF0aCBkPSJNMTIgNy41aDIuOGEyLjMgMi4zIDAgMSAwIDAtNC42QzEzLjMgMi45IDEyIDcuNSAxMiA3LjVaIi8+PC9zdmc+");
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTIgM2E2IDYgMCAwIDAgOSA5IDkgOSAwIDEgMS05LTlaIi8+PC9zdmc+");
|
||||
}
|
||||
|
||||
/* 8 买药套餐:45° 斜置胶囊 + 中缝,避免原横置胶囊被误读为"链接"图标 */
|
||||
/* 8 取药快递:送货小车,与 6 的"闪电"(表速度)分工开,一眼读出"寄送" */
|
||||
.assist-icon-8 {
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cmVjdCB4PSI0LjIiIHk9IjguMiIgd2lkdGg9IjE1LjYiIGhlaWdodD0iNy42IiByeD0iMy44IiB0cmFuc2Zvcm09InJvdGF0ZSgtNDUgMTIgMTIpIi8+PHBhdGggZD0iTTkuMyA5LjNsNS40IDUuNCIvPjwvc3ZnPg==");
|
||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjQjg1MjBBIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMTQgMThWNmEyIDIgMCAwIDAtMi0ySDRhMiAyIDAgMCAwLTIgMnYxMWExIDEgMCAwIDAgMSAxaDIiLz48cGF0aCBkPSJNMTUgMThIOSIvPjxwYXRoIGQ9Ik0xOSAxOGgyYTEgMSAwIDAgMCAxLTF2LTMuNjVhMSAxIDAgMCAwLS4yMi0uNjI0bC0zLjQ4LTQuMzVBMSAxIDAgMCAwIDE3LjUyIDhIMTQiLz48Y2lyY2xlIGN4PSIxNyIgY3k9IjE4IiByPSIyIi8+PGNpcmNsZSBjeD0iNyIgY3k9IjE4IiByPSIyIi8+PC9zdmc+");
|
||||
}
|
||||
|
||||
/* 宫格项名统一走 28rpx 标题档(与 .quick-name 同级)。
|
||||
|
||||
+4
-58
@@ -77,65 +77,11 @@ Page({
|
||||
|
||||
},
|
||||
|
||||
// 复制内容到剪贴板
|
||||
onCopy(e) {
|
||||
const content = e.currentTarget.dataset.content;
|
||||
wx.setClipboardData({
|
||||
data: content,
|
||||
success: () => {
|
||||
wx.showToast({
|
||||
title: '已复制',
|
||||
icon: 'success',
|
||||
duration: 1500
|
||||
});
|
||||
},
|
||||
fail: () => {
|
||||
wx.showToast({
|
||||
title: '复制失败',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 拨打电话
|
||||
onCallPhone(e) {
|
||||
const phone = e.currentTarget.dataset.phone;
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: phone,
|
||||
fail: () => {
|
||||
wx.showToast({
|
||||
title: '拨号失败',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 点击用户协议
|
||||
onTapAgreement() {
|
||||
// 跳转「联系我们」页:本页不再平铺联系方式,四项内容与那一页重合,
|
||||
// 且那一页每行还带「拨打」「复制」动作词,是更完整的一份
|
||||
goToContact() {
|
||||
wx.navigateTo({
|
||||
url: '/pages/escort/agreement'
|
||||
});
|
||||
},
|
||||
|
||||
// 点击隐私政策
|
||||
onTapPrivacy() {
|
||||
wx.showToast({
|
||||
title: '功能开发中',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
});
|
||||
},
|
||||
|
||||
// 点击更新日志
|
||||
onTapUpdateLog() {
|
||||
wx.showToast({
|
||||
title: '功能开发中',
|
||||
icon: 'none',
|
||||
duration: 1500
|
||||
url: '/pages/mine/contact'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
+19
-51
@@ -9,63 +9,31 @@
|
||||
<text class="app-slogan">温暖陪伴,专业守护</text>
|
||||
</view>
|
||||
|
||||
<!-- 功能列表 -->
|
||||
<view class="menu-list">
|
||||
<view class="menu-item" hover-class="menu-item-hover" bindtap="onTapAgreement">
|
||||
<text class="menu-text">用户协议</text>
|
||||
<t-icon name="chevron-right" class="menu-arrow" size="36rpx" />
|
||||
</view>
|
||||
<view class="menu-item" hover-class="menu-item-hover" bindtap="onTapPrivacy">
|
||||
<text class="menu-text">隐私政策</text>
|
||||
<t-icon name="chevron-right" class="menu-arrow" size="36rpx" />
|
||||
</view>
|
||||
<view class="menu-item" hover-class="menu-item-hover" bindtap="onTapUpdateLog">
|
||||
<text class="menu-text">更新日志</text>
|
||||
<t-icon name="chevron-right" class="menu-arrow" size="36rpx" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 公司简介 -->
|
||||
<!-- 公司简介。三处按国标口径收口:
|
||||
① 公司身份用「运营」而非「旗下/开发」——9.1.1 要求公示服务提供者基本情况,
|
||||
「开发」只表明技术开发方,会把服务提供者写糊;
|
||||
② 「陪护」改「陪诊」,与产品名、协议名和国标「陪同就医服务」同一口径;
|
||||
③ 服务清单删去「住院陪护」——协议「服务范围」明确「不包含医院陪护」,
|
||||
同段自相矛盾;动作词统一为「协助」(项目约定,不写「代办挂号」),
|
||||
「取药代办」改「代取药品」与 id 8 一致;「全流程」也一并去掉,
|
||||
因为协议有急诊就医/插队加号/医院陪护/急诊留观陪护四项排除,「全流程」与排除项冲突 -->
|
||||
<view class="intro-section">
|
||||
<view class="section-title">关于我们</view>
|
||||
<text class="intro-text">暖橙陪诊是北京奕华盛科技旗下专注于医疗健康陪护服务的平台。我们致力于为患者提供专业、温暖、便捷的陪诊服务,让就医不再孤单。
|
||||
<text class="intro-text">暖橙陪诊是由北京奕华盛科技运营的医疗健康陪诊服务平台。我们致力于为您提供专业、温暖、便捷的陪诊服务,让就医不再孤单。
|
||||
|
||||
我们的服务涵盖挂号陪同、就诊引导、检查陪护、取药代办、住院陪护等全流程就医陪伴,由经过专业培训的陪诊师团队为您提供贴心服务。</text>
|
||||
我们的服务涵盖协助取号、陪同就诊、检查陪护、代取药品与检查报告、出入院代办等就医陪伴环节,由经过专业培训的陪诊师团队为您提供贴心服务。</text>
|
||||
</view>
|
||||
|
||||
<!-- 联系方式 -->
|
||||
<view class="contact-section">
|
||||
<view class="section-title">联系我们</view>
|
||||
<view class="contact-list">
|
||||
<view class="contact-item" bindtap="onCopy" data-content="service@huashengtec.com">
|
||||
<view class="contact-label">客服邮箱</view>
|
||||
<view class="contact-value-wrap">
|
||||
<text class="contact-value">service@huashengtec.com</text>
|
||||
<t-icon name="mail" class="contact-icon" size="32rpx" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="contact-item" bindtap="onCallPhone" data-phone="18618162956">
|
||||
<view class="contact-label">客服热线</view>
|
||||
<view class="contact-value-wrap">
|
||||
<text class="contact-value">18618162956</text>
|
||||
<t-icon name="call" class="contact-icon" size="32rpx" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="contact-item">
|
||||
<view class="contact-label">微信联系</view>
|
||||
<view class="contact-value-wrap">
|
||||
<text class="contact-value">18618162956</text>
|
||||
<t-icon name="logo-wechat-stroke" class="contact-icon" size="32rpx" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="contact-item">
|
||||
<view class="contact-label">工作时间</view>
|
||||
<view class="contact-value-wrap">
|
||||
<text class="contact-value">周一至周日 08:00 - 20:00</text>
|
||||
<t-icon name="calendar-1" class="contact-icon" size="32rpx" />
|
||||
</view>
|
||||
</view>
|
||||
<!-- 联系方式:收成入口,不再平铺四项。
|
||||
四项内容与「联系我们」页逐项重合(热线 / 微信 / 邮箱 / 工作时间),
|
||||
而那一页是超集——每行右侧还带「拨打」「复制」动作词。
|
||||
同一意图只保留一个入口,本页只负责把人送过去。
|
||||
整卡可点,右侧 chevron 是显性点击暗示 -->
|
||||
<view class="contact-section" hover-class="contact-section-hover" bindtap="goToContact">
|
||||
<view class="contact-main">
|
||||
<text class="contact-name">联系我们</text>
|
||||
</view>
|
||||
<t-icon name="chevron-right" class="contact-arrow" size="36rpx" />
|
||||
</view>
|
||||
|
||||
<!-- 底部版权 -->
|
||||
|
||||
+66
-96
@@ -1,6 +1,9 @@
|
||||
/* pages/mine/about.wxss */
|
||||
/* pages/mine/about.wxss
|
||||
配色全部走 app.wxss 的暖橙令牌(DESIGN.md §二)。
|
||||
原灰金 #D4A853 / 亮橙 #FF8500 / 冷灰底 #F5F5F5 / 两处渐变 / 6×28rpx 的渐变竖条,
|
||||
已按 §5.1 与 §四(禁渐变、禁灰金亮橙)收口 */
|
||||
page {
|
||||
background-color: #F5F5F5;
|
||||
background-color: var(--paper);
|
||||
}
|
||||
|
||||
.container {
|
||||
@@ -8,24 +11,27 @@ page {
|
||||
padding-bottom: 48rpx;
|
||||
}
|
||||
|
||||
/* 品牌信息区 */
|
||||
/* 品牌信息区:不铺卡面、直接落在纸面上(同首页 hero),去掉原白→暖白渐变。
|
||||
纸面本身已是暖白,再叠一层自近白到近白只是噪音,且渐变属硬约束禁止项 */
|
||||
.brand-section {
|
||||
background: linear-gradient(180deg, #FFFFFF 0%, #FFF8F0 100%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
padding: 64rpx 32rpx 48rpx;
|
||||
}
|
||||
|
||||
/* 品牌印记:全页唯一实心块。白色线稿(home-w.png)需要深底才看得见,
|
||||
故衬底走 --brand-strong 而非 --brand-soft;阴影用 --shadow-cta 这一档
|
||||
暖橙阴影(DESIGN.md §2.3:只给实心 CTA、品牌印记这类小体量元素) */
|
||||
.logo-wrap {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
background: linear-gradient(135deg, #D4A853 0%, #D4A853 100%);
|
||||
background: var(--brand-strong);
|
||||
border-radius: 36rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0 8rpx 24rpx rgba(255, 133, 0, 0.2);
|
||||
box-shadow: var(--shadow-cta);
|
||||
}
|
||||
|
||||
.logo {
|
||||
@@ -36,68 +42,34 @@ page {
|
||||
.app-name {
|
||||
font-size: 40rpx;
|
||||
font-weight: 700;
|
||||
color: #1A1A1A;
|
||||
color: var(--ink);
|
||||
margin-top: 24rpx;
|
||||
}
|
||||
|
||||
.app-slogan {
|
||||
font-size: 28rpx;
|
||||
color: #D4A853;
|
||||
margin-top: 12rpx;
|
||||
font-weight: 500;
|
||||
color: var(--brand-ink);
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
|
||||
.version {
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
/* 功能列表 */
|
||||
.menu-list {
|
||||
margin: 24rpx 22rpx 0;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 32rpx;
|
||||
border-bottom: 1rpx solid #F0F0F0;
|
||||
}
|
||||
|
||||
.menu-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.menu-item-hover {
|
||||
background-color: #F9F9F9;
|
||||
}
|
||||
|
||||
.menu-text {
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.menu-arrow {
|
||||
color: #CCCCCC;
|
||||
}
|
||||
|
||||
/* 简介区 */
|
||||
/* 简介区:白卡走「2rpx --line 发丝边 + 中性阴影 + 28rpx 圆角」(DESIGN.md §2.3) */
|
||||
.intro-section {
|
||||
margin: 24rpx 22rpx 0;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx;
|
||||
background: var(--white);
|
||||
border: 2rpx solid var(--line);
|
||||
border-radius: 28rpx;
|
||||
padding: 32rpx;
|
||||
box-shadow: var(--shadow-card);
|
||||
}
|
||||
|
||||
/* 区块标题:单竖条与全站同一套(8rpx 宽 × 34rpx 高、圆角 4rpx、--brand-strong)。
|
||||
原 6×28rpx 走的是灰金→亮橙渐变,换成实色主色。
|
||||
字重 600 改 700:中文系统字体通常只有 400/700 两档,600 在真机会随机落回一档 */
|
||||
.section-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #1A1A1A;
|
||||
font-weight: 700;
|
||||
color: var(--ink);
|
||||
margin-bottom: 20rpx;
|
||||
position: relative;
|
||||
padding-left: 20rpx;
|
||||
@@ -109,69 +81,67 @@ page {
|
||||
left: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 6rpx;
|
||||
height: 28rpx;
|
||||
background: linear-gradient(180deg, #D4A853 0%, #FF8500 100%);
|
||||
width: 8rpx;
|
||||
height: 34rpx;
|
||||
background: var(--brand-strong);
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.intro-text {
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
color: var(--ink-2);
|
||||
line-height: 1.8;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
/* 联系方式 */
|
||||
/* 联系方式:页面尾部的浅橙收口卡,与首页 .quick-item-full、陪诊服务列表页页脚同源。
|
||||
浅橙块靠 2rpx --brand-line 描边托形,不加阴影(DESIGN.md §2.3)。
|
||||
卡里不再平铺四项——那四项与「联系我们」页完全重合,这里只留一个入口,
|
||||
否则同一意图出现两个入口;行内也不再有点击,整块点击行为交给整卡 */
|
||||
.contact-section {
|
||||
margin: 24rpx 22rpx 0;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx;
|
||||
background: var(--brand-soft);
|
||||
border: 2rpx solid var(--brand-line);
|
||||
border-radius: 28rpx;
|
||||
padding: 32rpx;
|
||||
}
|
||||
|
||||
.contact-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.contact-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 1rpx solid #F5F5F5;
|
||||
}
|
||||
|
||||
.contact-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.contact-label {
|
||||
font-size: 26rpx;
|
||||
color: #999999;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.contact-value-wrap {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.contact-value {
|
||||
font-size: 30rpx;
|
||||
color: #333333;
|
||||
.contact-section-hover {
|
||||
background: var(--brand-line);
|
||||
}
|
||||
|
||||
.contact-main {
|
||||
flex: 1;
|
||||
word-break: break-all;
|
||||
min-width: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.contact-icon {
|
||||
color: #FF8500;
|
||||
.contact-name {
|
||||
font-size: 32rpx;
|
||||
font-weight: 700;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
/* 摘要:文案与首页同一张卡一致(人工客服),单行短句,不摊开具体号码 */
|
||||
.contact-desc {
|
||||
margin-top: 8rpx;
|
||||
font-size: 26rpx;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
/* t-icon 的 color 读不到 CSS 变量,只能硬编码,须与令牌同步(DESIGN.md §2.2);
|
||||
此处对应 --muted #6F655C。项目里 chevron 一律 muted,不抢暖橙焦点 */
|
||||
.contact-arrow {
|
||||
color: #6F655C;
|
||||
margin-left: 16rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* 底部版权 */
|
||||
/* 底部版权:元信息一律 --muted,它是全站文字对比度底线,不得再浅(§2.2);
|
||||
.icp 原 22rpx 低于中文最小字号 24rpx,按硬约束 1 提到 24rpx */
|
||||
.footer-section {
|
||||
margin-top: 48rpx;
|
||||
display: flex;
|
||||
@@ -182,10 +152,10 @@ page {
|
||||
|
||||
.copyright {
|
||||
font-size: 24rpx;
|
||||
color: #AAAAAA;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.icp {
|
||||
font-size: 22rpx;
|
||||
color: #CCCCCC;
|
||||
font-size: 24rpx;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
+3
-3
@@ -20,7 +20,7 @@ Page({
|
||||
},
|
||||
// 菜单分组:按"用途"而非"是不是陪诊"分,三组才立得住。
|
||||
// 图标与首页同目的地同图形(同一含义只对应一个表达,从色值延伸到图标):
|
||||
// 预约记录 calendar-1、健康档案 user-checked、联系我们 call 均与首页一致。
|
||||
// 预约记录 calendar-1、就诊人 user-checked、联系我们 call 均与首页一致。
|
||||
// requiresLogin 的组在未登录时整组隐藏——这些入口都依赖用户身份
|
||||
menuGroups: [{
|
||||
groupName: '我的服务',
|
||||
@@ -31,7 +31,7 @@ Page({
|
||||
icon: 'calendar-1',
|
||||
bindtap: 'onTapEscortRecord'
|
||||
}, {
|
||||
name: '健康档案',
|
||||
name: '就诊人',
|
||||
icon: 'user-checked',
|
||||
bindtap: 'onTapHealth'
|
||||
}, {
|
||||
@@ -199,7 +199,7 @@ Page({
|
||||
onLogout() {
|
||||
wx.showModal({
|
||||
title: '退出登录',
|
||||
content: '退出后需要重新授权手机号,才能查看预约记录与健康档案',
|
||||
content: '退出后需要重新授权手机号,才能查看预约记录与就诊人',
|
||||
confirmText: '退出',
|
||||
// confirmColor 是属性值,读不到 CSS 变量,取值须与令牌同步(DESIGN.md §5.1)
|
||||
confirmColor: '#B8520A',
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@
|
||||
"minifyWXSS": true,
|
||||
"localPlugins": false,
|
||||
"disableUseStrict": false,
|
||||
"condition": false,
|
||||
"condition": true,
|
||||
"swc": false,
|
||||
"disableSWC": true
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"libVersion": "3.15.2",
|
||||
"libVersion": "3.16.3",
|
||||
"projectname": "wxapp_escort",
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ const API = {
|
||||
getAttendants: (params) => request.get('/health/attendant', params),
|
||||
},
|
||||
|
||||
// 健康档案(就诊人):后端强制以 token 中的用户为准,无需传 userId
|
||||
// 就诊人:后端强制以 token 中的用户为准,无需传 userId
|
||||
healthProfile: {
|
||||
getMyProfiles: (params) => request.get('/health/health-profile/mine', params),
|
||||
getMyProfileById: (id) => request.get(`/health/health-profile/mine/${id}`),
|
||||
|
||||
Reference in New Issue
Block a user