Files
wxapp_escort/pages/escort/itemdetail.wxml
T
2026-10-03 22:32:50 +08:00

198 lines
8.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<view class="page-bg">
<view class="container">
<!-- 头部:短横色标 + 深墨标题。原顶部 420rpx 大图已去掉:
服务图在多条服务间复用同一张占位图,既分不出是哪项服务,又白占掉大半首屏 -->
<view class="page-header">
<view class="header-accent"></view>
<view class="title-row">
<text class="header-title">{{ service.title }}</text>
<view class="header-tag" wx:if="{{ service.tag }}">{{ service.tag }}</view>
</view>
<text class="header-subtitle">{{ service.subtitle }}</text>
</view>
<!-- 服务详情 -->
<view class="section">
<view class="section-head">
<view class="section-bar"></view>
<text class="section-title">服务详情</text>
</view>
<text class="detail-text">{{ service.description }}</text>
</view>
<!-- 服务流程:这是真序列,编号在此处合法。橙色导轨是本页唯一的结构性重音,
实心橙仍只留给底部与弹窗的提交按钮 -->
<view class="section">
<view class="section-head">
<view class="section-bar"></view>
<text class="section-title">服务流程</text>
</view>
<view class="step-list">
<view class="step" wx:for="{{ service.flow }}" wx:key="index">
<view class="step-rail">
<view class="step-dot">{{ index + 1 }}</view>
<view class="step-line" wx:if="{{ index < service.flow.length - 1 }}"></view>
</view>
<view class="step-body">
<text class="step-title">{{ item.title }}</text>
<text class="step-desc">{{ item.desc }}</text>
</view>
</view>
</view>
</view>
<!-- 注意事项:与指南页同一套圆点语言 -->
<view class="section">
<view class="section-head">
<view class="section-bar"></view>
<text class="section-title">注意事项</text>
</view>
<view class="dot-list">
<view class="dot-item" wx:for="{{ service.notices }}" wx:key="index">
<view class="dot"></view>
<text class="dot-text">{{ item }}</text>
</view>
</view>
</view>
<!-- 底部占位,避免被下单栏遮挡 -->
<view class="bottom-placeholder"></view>
<!-- 底部下单栏:价格只在这里出现一次(totalPrice 即服务单价,头部再放一次是纯重复) -->
<view class="bottom-bar">
<view class="price-info">
<text class="total-label">合计</text>
<text class="price-sym">¥</text>
<text class="total-price">{{ totalPrice }}</text>
</view>
<button class="order-btn" bindtap="openOrderPopup">立即预约</button>
</view>
<!-- 下单弹窗遮罩 -->
<view class="popup-mask {{showOrderPopup ? 'show' : ''}}" bindtap="closeOrderPopup"></view>
<!-- 下单弹窗 -->
<view class="popup-content {{showOrderPopup ? 'show' : ''}}">
<view class="popup-header">
<text class="popup-title">确认预约信息</text>
<view class="popup-close" bindtap="closeOrderPopup">
<t-icon name="close" size="40rpx" color="#6F655C" />
</view>
</view>
<scroll-view class="popup-body" scroll-y>
<!-- 服务信息 -->
<view class="order-service-info">
<image class="order-service-image" src="{{service.image}}" mode="aspectFill"></image>
<view class="order-service-text">
<text class="order-service-title">{{service.title}}</text>
<text class="order-service-price">¥{{service.price}}/次</text>
</view>
</view>
<!-- 选择就诊人:从健康档案一键带入姓名与电话 -->
<view class="order-row column">
<text class="order-label">选择就诊人</text>
<scroll-view class="patient-scroll" scroll-x wx:if="{{profiles.length > 0}}">
<view class="patient-chips">
<view class="patient-chip {{selectedProfileId === item._id ? 'active' : ''}}" wx:for="{{profiles}}" wx:key="_id"
data-id="{{item._id}}" bindtap="onSelectProfile">
<text class="patient-chip-name">{{item.name}}</text>
<text class="patient-chip-phone">{{item.mobile}}</text>
</view>
<view class="patient-chip patient-chip-add" bindtap="goToAddProfile">
<text class="patient-chip-name">+ 添加就诊人</text>
</view>
</view>
</scroll-view>
<view class="add-profile-tip" wx:else bindtap="goToAddProfile">
<text class="add-profile-tip-text">还没有就诊人,去添加后可一键带入</text>
<t-icon name="chevron-right" size="24rpx" color="#9A3412" />
</view>
</view>
<!-- 就诊人姓名 -->
<view class="order-row">
<text class="order-label">就诊人姓名</text>
<input class="order-input" value="{{patientName}}" placeholder="请输入就诊人姓名" placeholder-class="input-placeholder" bindinput="onPatientNameChange" />
</view>
<!-- 就诊人电话 -->
<view class="order-row">
<text class="order-label">联系电话</text>
<input class="order-input" value="{{patientPhone}}" placeholder="请输入联系电话" placeholder-class="input-placeholder" type="number" bindinput="onPatientPhoneChange" />
</view>
<!-- 就诊省份 -->
<view class="order-row">
<text class="order-label">就诊省份</text>
<picker class="order-picker" mode="selector" range="{{provinces}}" value="{{provinceIndex}}" bindchange="onProvinceChange">
<view class="picker-value {{province ? '' : 'placeholder'}}">
{{province || '请选择省份'}}
</view>
</picker>
</view>
<!-- 就诊医院 -->
<view class="order-row">
<text class="order-label">就诊医院</text>
<input class="order-input" value="{{hospital}}" placeholder="请输入就诊医院" placeholder-class="input-placeholder" bindinput="onHospitalChange" />
</view>
<!-- 就诊科室 -->
<view class="order-row">
<text class="order-label">就诊科室</text>
<input class="order-input" value="{{department}}" placeholder="请输入就诊科室" placeholder-class="input-placeholder" bindinput="onDepartmentChange" />
</view>
<!-- 陪诊师性别要求 -->
<view class="order-row">
<text class="order-label">陪诊师性别</text>
<picker class="order-picker" mode="selector" range="{{genderOptions}}" value="{{genderIndex}}" bindchange="onGenderChange">
<view class="picker-value {{gender ? '' : 'placeholder'}}">
{{gender || '请选择性别要求'}}
</view>
</picker>
</view>
<!-- 预约日期 -->
<view class="order-row">
<text class="order-label">预约日期</text>
<picker class="order-picker" mode="date" value="{{appointmentDate}}" start="{{today}}" bindchange="onDateChange">
<view class="picker-value {{appointmentDate ? '' : 'placeholder'}}">
{{appointmentDate || '请选择预约日期'}}
</view>
</picker>
</view>
<!-- 预约时间 -->
<view class="order-row">
<text class="order-label">预约时间</text>
<picker class="order-picker" mode="time" value="{{appointmentTime}}" start="08:00" end="18:00" bindchange="onTimeChange">
<view class="picker-value {{appointmentTime ? '' : 'placeholder'}}">
{{appointmentTime || '请选择预约时间'}}
</view>
</picker>
</view>
<!-- 备注 -->
<view class="order-row column">
<text class="order-label">备注说明</text>
<textarea class="order-textarea" value="{{remark}}" placeholder="请输入其他需求或备注信息" maxlength="200" placeholder-class="input-placeholder" bindinput="onRemarkChange" />
<text class="textarea-count">{{remark.length}}/200</text>
</view>
</scroll-view>
<view class="popup-footer">
<view class="popup-price">
<text class="popup-price-label">合计</text>
<text class="price-sym">¥</text>
<text class="popup-price-value">{{ totalPrice }}</text>
</view>
<button class="popup-submit-btn" bindtap="submitOrder">提交预约</button>
</view>
</view>
</view>
</view>