|
|
@@ -89,9 +89,9 @@
|
|
|
</div>
|
|
|
<el-descriptions :column="2" size="small" class="pet-desc" border>
|
|
|
<el-descriptions-item label="宠物品种">{{ order.petBreed || '未知'
|
|
|
- }}</el-descriptions-item>
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="疫苗状态"><span style="color:#67c23a">{{ order.petVaccine || '未知'
|
|
|
- }}</span></el-descriptions-item>
|
|
|
+ }}</span></el-descriptions-item>
|
|
|
<el-descriptions-item label="性格特点">{{ order.petCharacter || '温顺' }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="健康状况">{{ order.petHealth || '健康' }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
@@ -105,7 +105,7 @@
|
|
|
<div class="user-content">
|
|
|
<div class="u-row">
|
|
|
<el-avatar :size="40" :src="order.userAvatar">{{ (order.userName || '').charAt(0)
|
|
|
- }}</el-avatar>
|
|
|
+ }}</el-avatar>
|
|
|
<div class="u-info">
|
|
|
<div class="nm">{{ order.userName }}</div>
|
|
|
<div class="ph">{{ order.contactPhone }}</div>
|
|
|
@@ -138,15 +138,15 @@
|
|
|
<el-descriptions-item label="归属门店">{{ order.merchantName }}
|
|
|
({{ Number(order.platformId) === 1 ? '门店下单' : '平台代下单' }})</el-descriptions-item>
|
|
|
<el-descriptions-item label="宠主信息">{{ order.userName }} / {{ order.contactPhone
|
|
|
- }}</el-descriptions-item>
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="服务费用" label-class-name="money-label">
|
|
|
<span style="color:#f56c6c; font-weight:bold;">¥ {{ order.fulfillerFee }}</span>
|
|
|
</el-descriptions-item>
|
|
|
|
|
|
<el-descriptions-item label="预约时间">{{ getServiceTimeRange(order.serviceTime)
|
|
|
- }}</el-descriptions-item>
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="团购套餐">{{ order.groupBuyPackage || '未使用团购套餐'
|
|
|
- }}</el-descriptions-item>
|
|
|
+ }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="创建时间">{{ order.createTime }}</el-descriptions-item>
|
|
|
|
|
|
<el-descriptions-item label="订单备注" :span="3">
|
|
|
@@ -166,7 +166,7 @@
|
|
|
<div class="t-row">
|
|
|
<span class="t-k">起点</span>
|
|
|
<span class="t-v">{{ order.detail?.fromAddress || order.detail?.pickAddr || '--'
|
|
|
- }}</span>
|
|
|
+ }}</span>
|
|
|
</div>
|
|
|
<div class="t-row">
|
|
|
<span class="t-k">终点</span>
|
|
|
@@ -186,7 +186,7 @@
|
|
|
<div class="sec-title-bar">服务执行要求</div>
|
|
|
<el-descriptions :column="2" border size="default" class="custom-desc">
|
|
|
<el-descriptions-item label="服务地址" :span="2">{{ order.detail.area || order.address
|
|
|
- }}</el-descriptions-item>
|
|
|
+ }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -198,7 +198,7 @@
|
|
|
<div v-if="order.fulfillerName" class="fulfiller-card">
|
|
|
<div class="f-left">
|
|
|
<el-avatar :size="60" :src="order.fulfillerAvatar">{{ order.fulfillerName.charAt(0)
|
|
|
- }}</el-avatar>
|
|
|
+ }}</el-avatar>
|
|
|
</div>
|
|
|
<div class="f-right">
|
|
|
<div class="f-row1">
|
|
|
@@ -243,14 +243,18 @@
|
|
|
<div v-for="(item, i) in step.media" :key="i" class="media-item">
|
|
|
<!-- 图片类型 -->
|
|
|
<el-image v-if="item.type === 'image'" :src="item.url"
|
|
|
- :preview-src-list="step.media.filter(m => m.type === 'image').map(m => m.url)" fit="cover"
|
|
|
- class="p-img" :preview-teleported="true" />
|
|
|
+ :preview-src-list="step.media.filter(m => m.type === 'image').map(m => m.url)"
|
|
|
+ fit="cover" class="p-img" :preview-teleported="true" />
|
|
|
|
|
|
<!-- 视频类型:由于后端没给第一帧,这里采用 video 标签 preload 方式尝试展示 -->
|
|
|
- <div v-else-if="item.type === 'video'" class="p-video-box" @click="openVideoPreview(item.url)">
|
|
|
- <video :src="item.url" preload="metadata" class="p-img p-video"></video>
|
|
|
+ <div v-else-if="item.type === 'video'" class="p-video-box"
|
|
|
+ @click="openVideoPreview(item.url)">
|
|
|
+ <video :src="item.url" preload="metadata"
|
|
|
+ class="p-img p-video"></video>
|
|
|
<div class="play-icon-overlay">
|
|
|
- <el-icon><VideoPlay /></el-icon>
|
|
|
+ <el-icon>
|
|
|
+ <VideoPlay />
|
|
|
+ </el-icon>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -266,11 +270,13 @@
|
|
|
<div class="tab-pane-content">
|
|
|
<div style="display: flex; justify-content: flex-end; margin-bottom: 15px;">
|
|
|
<el-button type="primary" size="small" icon="Download"
|
|
|
+ v-hasPermi="['order:orderList:queryExportExcel']"
|
|
|
@click="handleExportLogs">导出日志Excel</el-button>
|
|
|
</div>
|
|
|
<el-timeline>
|
|
|
- <el-timeline-item v-for="(log, index) in (orderLogs || [])" :key="index" :timestamp="log.createTime || log.time || ''"
|
|
|
- :type="'primary'" :icon="undefined" placement="top">
|
|
|
+ <el-timeline-item v-for="(log, index) in (orderLogs || [])" :key="index"
|
|
|
+ :timestamp="log.createTime || log.time || ''" :type="'primary'" :icon="undefined"
|
|
|
+ placement="top">
|
|
|
<div class="log-card">
|
|
|
<div class="l-tit">{{ log.title }}</div>
|
|
|
<div class="l-txt">{{ log.content }}</div>
|
|
|
@@ -304,8 +310,10 @@
|
|
|
|
|
|
<!-- 视频播放弹窗 -->
|
|
|
<el-dialog v-model="videoPreview.visible" title="视频播放" width="800px" append-to-body @closed="videoPreview.url = ''">
|
|
|
- <div style="width: 100%; display: flex; justify-content: center; background: #000; border-radius: 4px; overflow: hidden;">
|
|
|
- <video v-if="videoPreview.url" :src="videoPreview.url" controls autoplay style="max-width: 100%; max-height: 70vh;"></video>
|
|
|
+ <div
|
|
|
+ style="width: 100%; display: flex; justify-content: center; background: #000; border-radius: 4px; overflow: hidden;">
|
|
|
+ <video v-if="videoPreview.url" :src="videoPreview.url" controls autoplay
|
|
|
+ style="max-width: 100%; max-height: 70vh;"></video>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
@@ -872,7 +880,7 @@ const handleExportLogs = () => {
|
|
|
top: 50%;
|
|
|
left: 50%;
|
|
|
transform: translate(-50%, -50%);
|
|
|
- background: rgba(0,0,0,0.4);
|
|
|
+ background: rgba(0, 0, 0, 0.4);
|
|
|
color: #fff;
|
|
|
width: 32px;
|
|
|
height: 32px;
|
|
|
@@ -885,7 +893,7 @@ const handleExportLogs = () => {
|
|
|
}
|
|
|
|
|
|
.p-video-box:hover .play-icon-overlay {
|
|
|
- background: rgba(0,0,0,0.6);
|
|
|
+ background: rgba(0, 0, 0, 0.6);
|
|
|
transform: translate(-50%, -50%) scale(1.1);
|
|
|
}
|
|
|
|