676 lines
13 KiB
Plaintext
676 lines
13 KiB
Plaintext
/* pages/escort/itemdetail.wxss
|
|
设计方向:本页是"服务说明书",不是电商详情页。
|
|
- 去掉了顶部 420rpx 大图:占位图在 8 条服务间复用,既无法区分服务,又抢走首屏
|
|
- 结构重音只给一处:服务流程的时间轴橙色导轨(真序列,编号在此合法)
|
|
- 配色锁定首页/清单页的暖白纸面 + 单一暖橙;实心橙只给两个提交按钮
|
|
- 形状锁定:面板/卡片 28rpx、字段 12rpx、标签 10rpx、胶囊按钮 999rpx */
|
|
page {
|
|
--brand-strong: #C2410C; /* 实心块/按钮:白字 4.69:1;纸面上的文字 5.0:1,均过 AA */
|
|
--brand-soft: #FFF4E8; /* 浅橙衬底 */
|
|
--brand-line: #FFE0C2; /* 浅橙衬底描边 */
|
|
--brand-ink: #9A3412; /* 浅橙衬底上的文字:6.8:1,过 AA */
|
|
|
|
--ink: #2B2521;
|
|
--ink-2: #4A4038;
|
|
--muted: #6F655C; /* 纸面 5.28:1 / 白卡 5.69:1,过 AA 正文 */
|
|
--line: #ECE3D6; /* 米色发丝边:纸面 1.20:1 / 白卡 1.27:1 */
|
|
--paper: #FAF8F5;
|
|
--white: #FFFFFF;
|
|
|
|
--shadow-cta: 0 2rpx 8rpx rgba(194, 65, 12, 0.16);
|
|
/* 纸面 1.05:1 / 发丝边 1.27:1 都托不住固定栏,补一道小偏移小模糊的上向阴影 */
|
|
--shadow-bar: 0 -2rpx 8rpx rgba(63, 43, 25, 0.07);
|
|
|
|
background-color: var(--paper);
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
}
|
|
|
|
.page-bg {
|
|
min-height: 100vh;
|
|
background: var(--paper);
|
|
}
|
|
|
|
.container {
|
|
padding: 0 32rpx calc(40rpx + env(safe-area-inset-bottom));
|
|
}
|
|
|
|
/* ===== 头部:短横色标 + 深墨标题 ===== */
|
|
.page-header {
|
|
padding: 32rpx 0 0;
|
|
}
|
|
|
|
.header-accent {
|
|
width: 64rpx;
|
|
height: 8rpx;
|
|
border-radius: 4rpx;
|
|
background: var(--brand-strong);
|
|
}
|
|
|
|
.title-row {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
row-gap: 10rpx;
|
|
column-gap: 16rpx;
|
|
margin-top: 22rpx;
|
|
}
|
|
|
|
.header-title {
|
|
font-size: 48rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
letter-spacing: 1rpx;
|
|
line-height: 1.3;
|
|
}
|
|
|
|
/* 标签:浅橙衬底 + 暖陶土字,与首页/清单页同一口径 */
|
|
.header-tag {
|
|
flex-shrink: 0;
|
|
padding: 6rpx 18rpx;
|
|
border-radius: 10rpx;
|
|
background: var(--brand-soft);
|
|
border: 2rpx solid var(--brand-line);
|
|
color: var(--brand-ink);
|
|
font-size: 24rpx;
|
|
font-weight: 700;
|
|
letter-spacing: 1rpx;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.header-subtitle {
|
|
display: block;
|
|
margin-top: 12rpx;
|
|
font-size: 28rpx;
|
|
color: var(--muted);
|
|
letter-spacing: 1rpx;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* ===== 通用区块:靠发丝线切分,不靠白卡浮起来 ===== */
|
|
.section {
|
|
margin-top: 44rpx;
|
|
padding-top: 30rpx;
|
|
border-top: 2rpx solid var(--line);
|
|
}
|
|
|
|
.section-head {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 20rpx;
|
|
}
|
|
|
|
/* 区块标识:单竖条,与首页/清单页同规格 */
|
|
.section-bar {
|
|
width: 8rpx;
|
|
height: 34rpx;
|
|
border-radius: 4rpx;
|
|
background: var(--brand-strong);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.section-title {
|
|
margin-left: 16rpx;
|
|
font-size: 34rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
/* ===== 服务详情 ===== */
|
|
.detail-text {
|
|
display: block;
|
|
font-size: 28rpx;
|
|
color: var(--ink-2);
|
|
line-height: 1.85;
|
|
letter-spacing: 0.5rpx;
|
|
}
|
|
|
|
/* ===== 服务流程:时间轴(本页唯一的结构性重音) ===== */
|
|
.step-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.step {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
/* 导轨需要撑满整步高度,连接线才能真的连到下一步 */
|
|
.step-rail {
|
|
align-self: stretch;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
width: 44rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.step-dot {
|
|
width: 44rpx;
|
|
height: 44rpx;
|
|
box-sizing: border-box;
|
|
border-radius: 50%;
|
|
background: var(--brand-soft);
|
|
border: 2rpx solid var(--brand-line);
|
|
color: var(--brand-ink);
|
|
font-size: 24rpx;
|
|
font-weight: 700;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* 连接线:橙色导轨,用半透明暖橙而非实心,避免与圆点抢重音 */
|
|
.step-line {
|
|
flex: 1;
|
|
width: 2rpx;
|
|
min-height: 16rpx;
|
|
margin: 8rpx 0;
|
|
background: rgba(194, 65, 12, 0.28);
|
|
}
|
|
|
|
.step-body {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 20rpx;
|
|
padding-bottom: 30rpx;
|
|
}
|
|
|
|
.step:last-child .step-body {
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.step-title {
|
|
display: block;
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.step-desc {
|
|
display: block;
|
|
margin-top: 8rpx;
|
|
font-size: 26rpx;
|
|
color: var(--muted);
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* ===== 注意事项:与指南页同一套圆点语言 ===== */
|
|
.dot-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 18rpx;
|
|
}
|
|
|
|
.dot-item {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.dot {
|
|
width: 10rpx;
|
|
height: 10rpx;
|
|
border-radius: 50%;
|
|
background: var(--brand-strong);
|
|
margin-top: 14rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.dot-text {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 16rpx;
|
|
font-size: 28rpx;
|
|
color: var(--ink-2);
|
|
line-height: 1.65;
|
|
}
|
|
|
|
/* ===== 底部占位 + 下单栏 ===== */
|
|
.bottom-placeholder {
|
|
height: 150rpx;
|
|
}
|
|
|
|
.bottom-bar {
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 20rpx 32rpx;
|
|
padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
|
|
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
|
background: var(--white);
|
|
border-top: 2rpx solid var(--line);
|
|
box-shadow: var(--shadow-bar);
|
|
z-index: 100;
|
|
}
|
|
|
|
.price-info {
|
|
display: flex;
|
|
align-items: baseline;
|
|
}
|
|
|
|
.total-label {
|
|
margin-right: 8rpx;
|
|
font-size: 26rpx;
|
|
color: var(--muted);
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
.price-sym {
|
|
font-size: 28rpx;
|
|
font-weight: 700;
|
|
color: var(--brand-strong);
|
|
}
|
|
|
|
.total-price {
|
|
margin-left: 2rpx;
|
|
font-size: 44rpx;
|
|
font-weight: 700;
|
|
color: var(--brand-strong);
|
|
}
|
|
|
|
/* 主操作:实心暖橙胶囊,与首页/清单页 CTA 同形。
|
|
内边距把高度撑到约 86rpx(43pt),贴近 iOS 44pt 触控目标 */
|
|
.order-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-shrink: 0;
|
|
margin: 0;
|
|
padding: 22rpx 52rpx;
|
|
border: none;
|
|
border-radius: 999rpx;
|
|
background: var(--brand-strong);
|
|
box-shadow: var(--shadow-cta);
|
|
color: var(--white);
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
letter-spacing: 2rpx;
|
|
line-height: 1.4;
|
|
transition: transform 0.15s ease;
|
|
}
|
|
|
|
.order-btn::after {
|
|
border: none;
|
|
}
|
|
|
|
.order-btn:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
/* ===== 下单弹窗 ===== */
|
|
/* 遮罩用暖近黑而非纯黑,避免和暖色纸面打架 */
|
|
.popup-mask {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: rgba(43, 37, 33, 0.45);
|
|
z-index: 200;
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition: opacity 0.3s, visibility 0.3s;
|
|
}
|
|
|
|
.popup-mask.show {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
|
|
.popup-content {
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
max-height: 85vh;
|
|
background: var(--white);
|
|
border-radius: 32rpx 32rpx 0 0;
|
|
z-index: 201;
|
|
transform: translateY(100%);
|
|
transition: transform 0.3s ease-out;
|
|
}
|
|
|
|
.popup-content.show {
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.popup-header {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 30rpx 32rpx;
|
|
border-bottom: 2rpx solid var(--line);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.popup-title {
|
|
font-size: 32rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
/* 用 padding 撑热区到约 64rpx,再用更小的 right 抵消,图标视觉位置不变 */
|
|
.popup-close {
|
|
position: absolute;
|
|
right: 20rpx;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 12rpx;
|
|
}
|
|
|
|
.popup-body {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
max-height: 60vh;
|
|
width: auto;
|
|
padding: 28rpx 32rpx;
|
|
}
|
|
|
|
/* 弹窗内服务信息:浅橙衬底块,与页面的重点面板语言一致 */
|
|
.order-service-info {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 20rpx 24rpx;
|
|
margin-bottom: 8rpx;
|
|
border-radius: 20rpx;
|
|
background: var(--brand-soft);
|
|
border: 2rpx solid var(--brand-line);
|
|
}
|
|
|
|
/* 服务标记:暖橙 t-icon 直接落在浅橙面板上(--brand-ink 5.96:1)。
|
|
原占位图是全服务共用的白色线稿,白底白图等于隐形;
|
|
保留 96×96 定宽让标题列与旧版对齐,只换内容不挪版 */
|
|
.order-service-mark {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 96rpx;
|
|
height: 96rpx;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.order-service-text {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 20rpx;
|
|
}
|
|
|
|
.order-service-title {
|
|
display: block;
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.order-service-price {
|
|
display: block;
|
|
margin-top: 8rpx;
|
|
font-size: 28rpx;
|
|
font-weight: 700;
|
|
color: var(--brand-ink);
|
|
}
|
|
|
|
/* ===== 表单行 ===== */
|
|
/* 上下各 24rpx 内边距,行高约 87rpx,贴近 iOS 44pt 触控目标 */
|
|
.order-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 24rpx 0;
|
|
border-bottom: 2rpx solid var(--line);
|
|
}
|
|
|
|
.order-row:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.order-row.column {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.order-label {
|
|
flex-shrink: 0;
|
|
font-size: 28rpx;
|
|
color: var(--muted);
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
.order-input {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 24rpx;
|
|
text-align: right;
|
|
font-size: 28rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.input-placeholder {
|
|
color: var(--muted);
|
|
font-weight: 400;
|
|
}
|
|
|
|
/* 只读值(就诊人姓名/电话):与 .order-input 同形,仅去掉输入框语义 */
|
|
.order-value {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 24rpx;
|
|
text-align: right;
|
|
font-size: 28rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.order-value.placeholder {
|
|
color: var(--muted);
|
|
font-weight: 400;
|
|
}
|
|
|
|
/* picker 需要占满剩余宽度,值才能靠右对齐 */
|
|
.order-picker {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-left: 24rpx;
|
|
}
|
|
|
|
.picker-value {
|
|
display: block;
|
|
text-align: right;
|
|
font-size: 28rpx;
|
|
font-weight: 700;
|
|
color: var(--ink);
|
|
}
|
|
|
|
.picker-value.placeholder {
|
|
color: var(--muted);
|
|
font-weight: 400;
|
|
}
|
|
|
|
/* 备注文本域:字段用暖白纸面填充 + 发丝边,与白底弹窗拉开一层 */
|
|
.order-textarea {
|
|
width: 100%;
|
|
height: 160rpx;
|
|
box-sizing: border-box;
|
|
margin-top: 16rpx;
|
|
padding: 20rpx;
|
|
border-radius: 12rpx;
|
|
background: var(--paper);
|
|
border: 2rpx solid var(--line);
|
|
font-size: 28rpx;
|
|
color: var(--ink);
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.textarea-count {
|
|
align-self: flex-end;
|
|
margin-top: 10rpx;
|
|
font-size: 24rpx;
|
|
color: var(--muted);
|
|
}
|
|
|
|
/* ===== 就诊人选择 ===== */
|
|
.patient-scroll {
|
|
width: 100%;
|
|
margin-top: 16rpx;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.patient-chips {
|
|
display: inline-flex;
|
|
gap: 16rpx;
|
|
}
|
|
|
|
.patient-chip {
|
|
display: inline-flex;
|
|
flex-direction: column;
|
|
min-width: 180rpx;
|
|
padding: 16rpx 24rpx;
|
|
border-radius: 16rpx;
|
|
background: var(--paper);
|
|
border: 2rpx solid var(--line);
|
|
box-sizing: border-box;
|
|
transition: opacity 0.15s ease;
|
|
}
|
|
|
|
.patient-chip:active {
|
|
opacity: 0.7;
|
|
}
|
|
|
|
/* 选中态:浅橙衬底 + 实心橙描边(--brand-line 在浅橙底上只有 1.16:1,看不见) */
|
|
.patient-chip.active {
|
|
background: var(--brand-soft);
|
|
border-color: var(--brand-strong);
|
|
}
|
|
|
|
.patient-chip-name {
|
|
font-size: 26rpx;
|
|
font-weight: 700;
|
|
color: var(--ink-2);
|
|
}
|
|
|
|
.patient-chip.active .patient-chip-name {
|
|
color: var(--brand-ink);
|
|
}
|
|
|
|
.patient-chip-phone {
|
|
margin-top: 6rpx;
|
|
font-size: 22rpx;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.patient-chip-add {
|
|
justify-content: center;
|
|
}
|
|
|
|
.patient-chip-add .patient-chip-name {
|
|
color: var(--brand-ink);
|
|
}
|
|
|
|
/* 空态:整块可点,热区约 92rpx */
|
|
.add-profile-tip {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
margin-top: 16rpx;
|
|
padding: 22rpx 24rpx;
|
|
border-radius: 16rpx;
|
|
background: var(--brand-soft);
|
|
border: 2rpx solid var(--brand-line);
|
|
box-sizing: border-box;
|
|
transition: opacity 0.15s ease;
|
|
}
|
|
|
|
.add-profile-tip:active {
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.add-profile-tip-text {
|
|
flex: 1;
|
|
min-width: 0;
|
|
margin-right: 8rpx;
|
|
font-size: 24rpx;
|
|
font-weight: 700;
|
|
color: var(--brand-ink);
|
|
}
|
|
|
|
/* ===== 弹窗底部 ===== */
|
|
.popup-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 20rpx 32rpx;
|
|
padding-bottom: calc(20rpx + constant(safe-area-inset-bottom));
|
|
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
|
border-top: 2rpx solid var(--line);
|
|
background: var(--white);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.popup-price {
|
|
display: flex;
|
|
align-items: baseline;
|
|
}
|
|
|
|
.popup-price-label {
|
|
margin-right: 8rpx;
|
|
font-size: 26rpx;
|
|
color: var(--muted);
|
|
letter-spacing: 1rpx;
|
|
}
|
|
|
|
.popup-price-value {
|
|
margin-left: 2rpx;
|
|
font-size: 44rpx;
|
|
font-weight: 700;
|
|
color: var(--brand-strong);
|
|
}
|
|
|
|
.popup-submit-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-shrink: 0;
|
|
margin: 0;
|
|
padding: 22rpx 48rpx;
|
|
border: none;
|
|
border-radius: 999rpx;
|
|
background: var(--brand-strong);
|
|
box-shadow: var(--shadow-cta);
|
|
color: var(--white);
|
|
font-size: 30rpx;
|
|
font-weight: 700;
|
|
letter-spacing: 2rpx;
|
|
line-height: 1.4;
|
|
transition: transform 0.15s ease;
|
|
}
|
|
|
|
.popup-submit-btn::after {
|
|
border: none;
|
|
}
|
|
|
|
.popup-submit-btn:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.popup-content,
|
|
.popup-mask {
|
|
transition: none;
|
|
}
|
|
} |