154 lines
5.7 KiB
Plaintext
154 lines
5.7 KiB
Plaintext
<!--pages/order/index.wxml-->
|
|
<view class="page">
|
|
<!-- 顶部标题 -->
|
|
<view class="header">
|
|
<view class="header-content">
|
|
<text class="header-title">订单管理</text>
|
|
<text class="header-sub">共 {{stats.total}} 个订单</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 状态筛选 -->
|
|
<view class="filter-bar">
|
|
<scroll-view class="filter-scroll" scroll-x enhanced show-scrollbar="{{false}}">
|
|
<view class="filter-list">
|
|
<view
|
|
class="filter-tag {{currentStatus === item.value ? 'active' : ''}}"
|
|
wx:for="{{statusFilters}}"
|
|
wx:key="value"
|
|
data-status="{{item.value}}"
|
|
bindtap="onStatusChange"
|
|
>
|
|
<text>{{item.label}}</text>
|
|
<text class="filter-count" wx:if="{{item.count > 0}}">{{item.count}}</text>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
|
|
<!-- 订单列表 -->
|
|
<view class="list-area">
|
|
<scroll-view
|
|
scroll-y
|
|
class="list-scroll"
|
|
refresher-enabled
|
|
refresher-triggered="{{isRefreshing}}"
|
|
bindrefresherrefresh="onPullDownRefresh"
|
|
bindscrolltolower="onReachBottom"
|
|
>
|
|
<!-- 加载中 -->
|
|
<view class="loading-box" wx:if="{{isLoading && orderList.length === 0}}">
|
|
<t-loading theme="spinner" size="40rpx" text="加载中..." t-class-text="loading-text" />
|
|
</view>
|
|
|
|
<!-- 空状态 -->
|
|
<view class="empty-box" wx:elif="{{!isLoading && orderList.length === 0}}">
|
|
<t-empty icon="file" description="暂无订单" t-class-description="empty-text">
|
|
<view slot="action">
|
|
<view class="empty-btn" bindtap="loadOrderList">刷新</view>
|
|
</view>
|
|
</t-empty>
|
|
</view>
|
|
|
|
<!-- 卡片列表 -->
|
|
<view class="card-list" wx:else>
|
|
<view
|
|
class="order-card"
|
|
wx:for="{{orderList}}"
|
|
wx:key="_id"
|
|
data-id="{{item._id}}"
|
|
bindtap="onOrderDetail"
|
|
>
|
|
<!-- 卡片头部 -->
|
|
<view class="card-top">
|
|
<view class="status-badge status-{{item.status}}">
|
|
<text>{{item.statusText}}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 患者信息 -->
|
|
<view class="card-main">
|
|
<view class="patient-line">
|
|
<view class="patient-avatar">
|
|
<text class="avatar-char">{{item.patientFirstChar}}</text>
|
|
</view>
|
|
<view class="patient-meta">
|
|
<view class="patient-name-row">
|
|
<text class="patient-name">{{item.patient.name || '未知患者'}}</text>
|
|
<text class="patient-sex {{item.patient.sex}}">{{item.patient.sex === 'male' ? '男' : item.patient.sex === 'female' ? '女' : ''}}</text>
|
|
<text class="patient-age" wx:if="{{item.patient.age}}">{{item.patient.age}}岁</text>
|
|
</view>
|
|
<text class="patient-phone">{{item.patient.mobile || '暂无电话'}}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="divider"></view>
|
|
|
|
<!-- 就诊信息 -->
|
|
<view class="info-line">
|
|
<text class="line-label">医院</text>
|
|
<text class="line-value">{{item.hospital.name || '未知医院'}}{{item.hospital.department ? ' · ' + item.hospital.department : ''}}</text>
|
|
</view>
|
|
<view class="info-line" wx:if="{{item.escort.serviceName}}">
|
|
<text class="line-label">服务</text>
|
|
<text class="line-value">{{item.escort.serviceName}}</text>
|
|
</view>
|
|
<view class="info-line">
|
|
<text class="line-label">时间</text>
|
|
<text class="line-value">{{item.schedule.dateText}} {{item.schedule.startTime || ''}}</text>
|
|
</view>
|
|
<view class="info-line" wx:if="{{item.attendant.name}}">
|
|
<text class="line-label">陪诊</text>
|
|
<text class="line-value">{{item.attendant.name}}</text>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 卡片底部 -->
|
|
<view class="card-bottom">
|
|
<view class="fee-area">
|
|
<text class="fee-label">费用</text>
|
|
<text class="fee-amount">¥{{item.payment.totalFee || 0}}</text>
|
|
</view>
|
|
<view class="action-area">
|
|
<view
|
|
class="action-btn btn-ghost"
|
|
wx:if="{{item.status === 'pending'}}"
|
|
data-id="{{item._id}}"
|
|
data-action="cancel"
|
|
catchtap="onOrderAction"
|
|
>取消</view>
|
|
<view
|
|
class="action-btn btn-solid"
|
|
wx:if="{{item.status === 'pending'}}"
|
|
data-id="{{item._id}}"
|
|
data-action="confirm"
|
|
catchtap="onOrderAction"
|
|
>确认</view>
|
|
<view
|
|
class="action-btn btn-solid"
|
|
wx:if="{{item.status === 'confirmed'}}"
|
|
data-id="{{item._id}}"
|
|
data-action="start"
|
|
catchtap="onOrderAction"
|
|
>开始服务</view>
|
|
<view
|
|
class="action-btn btn-solid"
|
|
wx:if="{{item.status === 'in_progress'}}"
|
|
data-id="{{item._id}}"
|
|
data-action="complete"
|
|
catchtap="onOrderAction"
|
|
>完成</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 加载更多 -->
|
|
<view class="load-more">
|
|
<t-loading wx:if="{{isLoadingMore}}" theme="spinner" size="32rpx" text="加载中..." t-class-text="loading-text" />
|
|
<text class="no-more" wx:elif="{{!hasMore}}">没有更多了</text>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
</view>
|