21 changed files with 299 additions and 23 deletions
@ -1 +0,0 @@ |
|||
.bg[data-v-0117dbdd]{display:flex;flex-direction:column;font-size:14px}.common-card[data-v-0117dbdd]{width:100%;background-color:#fff;padding:20px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.order-status[data-v-0117dbdd]{border-right:1px solid #eee;width:350px;height:220px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:space-around}.order-status .order-no[data-v-0117dbdd]{color:#999}.order-status .order-no .el-button[data-v-0117dbdd]{width:-moz-fit-content;width:fit-content;margin:0;display:inline-block;padding:0}.order-status .status-title[data-v-0117dbdd]{display:flex;align-items:center;font-size:16px;font-weight:700}.order-status .status-title i[data-v-0117dbdd]{font-size:24px}.order-status .el-button[data-v-0117dbdd]{width:120px;display:block;margin:0 auto}.order-step[data-v-0117dbdd]{flex:1;width:1px;padding:0 20px;display:flex;align-items:center}.order-step[data-v-0117dbdd] .el-step__icon.is-text{border:none;width:30px;height:30px;border-radius:50%;background:#c0c4cc;color:#fff}.order-step[data-v-0117dbdd] .el-step__line{top:13px}.order-step[data-v-0117dbdd] .el-step__line-inner{border-color:#c0c4cc}.order-step .process-title[data-v-0117dbdd]{color:#666;font-weight:700;font-size:14px;margin-top:20px}.order-step .process-description[data-v-0117dbdd]{color:#666;font-size:12px}.order-step[data-v-0117dbdd] .is-finish .el-step__icon{background:#67c23a}.order-info-card[data-v-0117dbdd]{display:flex}.order-info-card[data-v-0117dbdd] .el-descriptions{flex:1;flex-shrink:0;border-right:1px solid hsla(0,0%,60%,.1);padding:0 20px}.order-info-card[data-v-0117dbdd] .el-descriptions .el-descriptions-item__label{width:90px}.product-image[data-v-0117dbdd]{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin-right:15px;border-radius:4px}.total-card[data-v-0117dbdd]{margin-top:20px;background:#fafafa;box-shadow:none}.total-card[data-v-0117dbdd] .el-descriptions__body{background:none;text-align:right}.total-card[data-v-0117dbdd] .el-descriptions__body .el-descriptions-item__label{width:90%;text-align:right;justify-content:flex-end}.total-card[data-v-0117dbdd] .el-descriptions__body .el-descriptions-item__content{justify-content:flex-end} |
@ -0,0 +1 @@ |
|||
.express-info[data-v-05881a53]{padding:15px;background-color:#fafafa;border-radius:4px;margin-bottom:25px}.express-logo[data-v-05881a53]{display:flex;align-items:center;margin-bottom:10px}.logo-img[data-v-05881a53]{width:30px;height:30px;margin-right:10px}.express-name[data-v-05881a53]{font-weight:500;color:#333}.express-number[data-v-05881a53]{display:flex;align-items:center}.number-label[data-v-05881a53]{color:#666;margin-right:8px}.number-value[data-v-05881a53]{color:#333;flex:1}.copy-btn[data-v-05881a53]{color:#1890ff;padding:0;height:auto}.timeline-container[data-v-05881a53]{padding-left:20px;max-height:50vh;overflow-y:auto}.el-timeline[data-v-05881a53]{padding-left:10px}.el-timeline-item[data-v-05881a53]:not(:last-child):before{height:100%;left:6px}.el-timeline-item__node--large[data-v-05881a53]{width:16px;height:16px}.timeline-status[data-v-05881a53]{font-weight:500;margin-bottom:5px;color:#333}.timeline-status.active[data-v-05881a53]{color:#ff7d00}.timeline-desc[data-v-05881a53]{color:#666;line-height:1.6;font-size:13px}.el-timeline-item__timestamp[data-v-05881a53]{color:#999;font-size:12px;width:80px;padding-top:2px}.dialog-footer[data-v-05881a53]{text-align:center}.bg[data-v-382893c1]{display:flex;flex-direction:column;font-size:14px}.common-card[data-v-382893c1]{width:100%;background-color:#fff;padding:20px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.order-status[data-v-382893c1]{border-right:1px solid #eee;width:350px;height:220px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:space-around}.order-status .order-no[data-v-382893c1]{color:#999}.order-status .order-no .el-button[data-v-382893c1]{width:-moz-fit-content;width:fit-content;margin:0;display:inline-block;padding:0}.order-status .status-title[data-v-382893c1]{display:flex;align-items:center;font-size:16px;font-weight:700}.order-status .status-title i[data-v-382893c1]{font-size:24px}.order-status .el-button[data-v-382893c1]{width:120px;display:block;margin:0 auto}.order-step[data-v-382893c1]{flex:1;width:1px;padding:0 20px;display:flex;align-items:center}.order-step[data-v-382893c1] .el-step__icon.is-text{border:none;width:30px;height:30px;border-radius:50%;background:#c0c4cc;color:#fff}.order-step[data-v-382893c1] .el-step__line{top:13px}.order-step[data-v-382893c1] .el-step__line-inner{border-color:#c0c4cc}.order-step .process-title[data-v-382893c1]{color:#666;font-weight:700;font-size:14px;margin-top:20px}.order-step .process-description[data-v-382893c1]{color:#666;font-size:12px}.order-step[data-v-382893c1] .is-finish .el-step__icon{background:#67c23a}.order-info-card[data-v-382893c1]{display:flex}.order-info-card[data-v-382893c1] .el-descriptions{flex:1;flex-shrink:0;border-right:1px solid hsla(0,0%,60%,.1);padding:0 20px}.order-info-card[data-v-382893c1] .el-descriptions .el-descriptions-item__label{width:90px}.product-image[data-v-382893c1]{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin-right:15px;border-radius:4px}.total-card[data-v-382893c1]{margin-top:20px;background:#fafafa;box-shadow:none}.total-card[data-v-382893c1] .el-descriptions__body{background:none;text-align:right}.total-card[data-v-382893c1] .el-descriptions__body .el-descriptions-item__label{width:90%;text-align:right;justify-content:flex-end}.total-card[data-v-382893c1] .el-descriptions__body .el-descriptions-item__content{justify-content:flex-end} |
@ -0,0 +1 @@ |
|||
.express-info[data-v-05881a53]{padding:15px;background-color:#fafafa;border-radius:4px;margin-bottom:25px}.express-logo[data-v-05881a53]{display:flex;align-items:center;margin-bottom:10px}.logo-img[data-v-05881a53]{width:30px;height:30px;margin-right:10px}.express-name[data-v-05881a53]{font-weight:500;color:#333}.express-number[data-v-05881a53]{display:flex;align-items:center}.number-label[data-v-05881a53]{color:#666;margin-right:8px}.number-value[data-v-05881a53]{color:#333;flex:1}.copy-btn[data-v-05881a53]{color:#1890ff;padding:0;height:auto}.timeline-container[data-v-05881a53]{padding-left:20px;max-height:50vh;overflow-y:auto}.el-timeline[data-v-05881a53]{padding-left:10px}.el-timeline-item[data-v-05881a53]:not(:last-child):before{height:100%;left:6px}.el-timeline-item__node--large[data-v-05881a53]{width:16px;height:16px}.timeline-status[data-v-05881a53]{font-weight:500;margin-bottom:5px;color:#333}.timeline-status.active[data-v-05881a53]{color:#ff7d00}.timeline-desc[data-v-05881a53]{color:#666;line-height:1.6;font-size:13px}.el-timeline-item__timestamp[data-v-05881a53]{color:#999;font-size:12px;width:80px;padding-top:2px}.dialog-footer[data-v-05881a53]{text-align:center}.bg[data-v-dc03f51c]{display:flex;flex-direction:column}.bg[data-v-dc03f51c] .el-button--text,.bg[data-v-dc03f51c] .el-tabs__item.is-active{color:#6a8a27}.bg[data-v-dc03f51c] .el-tabs__active-bar{background-color:#6a8a27}.bg[data-v-dc03f51c] .el-tabs__item:hover{color:#6a8a27}.filter-bar[data-v-dc03f51c]{margin-bottom:20px}.order-card[data-v-dc03f51c]{border:1px solid #eee;border-radius:4px;margin-bottom:20px;overflow:hidden}.order-header[data-v-dc03f51c]{background-color:#f8f9fa;padding:12px 20px;display:flex;align-items:center;border-bottom:1px solid #eee;color:#666;font-size:14px}.order-products[data-v-dc03f51c]{padding:10px 20px;background:#fff}.product-item[data-v-dc03f51c]{display:flex;align-items:center;padding:15px 0;border-bottom:1px dashed #eee;font-size:14px}.product-item[data-v-dc03f51c]:last-child{border-bottom:none}.product-image[data-v-dc03f51c]{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin-right:15px;border-radius:4px}.product-details[data-v-dc03f51c]{flex:1}.product-name[data-v-dc03f51c]{color:#333;margin-bottom:5px}.product-spec[data-v-dc03f51c]{color:#999;font-size:12px}.product-price[data-v-dc03f51c]{width:120px;text-align:center;color:#333}.product-quantity[data-v-dc03f51c]{width:100px;text-align:center;color:#666}.product-total[data-v-dc03f51c]{width:120px;text-align:center;color:#333;font-weight:500}.product-actions[data-v-dc03f51c],.product-status[data-v-dc03f51c]{width:150px;text-align:center}.order-footer[data-v-dc03f51c]{background-color:#f8f9fa;padding:15px 20px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #eee}.order-summary[data-v-dc03f51c]{text-align:right}.order-amount[data-v-dc03f51c]{color:#333;margin-bottom:5px}.order-amount strong[data-v-dc03f51c]{color:#ff4d4f;font-size:16px}.order-tips[data-v-dc03f51c]{font-size:12px;color:#999}.order-actions[data-v-dc03f51c]{display:flex;gap:10px} |
@ -1 +0,0 @@ |
|||
.bg[data-v-b4aad32e]{display:flex;flex-direction:column}.bg[data-v-b4aad32e] .el-button--text,.bg[data-v-b4aad32e] .el-tabs__item.is-active{color:#6a8a27}.bg[data-v-b4aad32e] .el-tabs__active-bar{background-color:#6a8a27}.bg[data-v-b4aad32e] .el-tabs__item:hover{color:#6a8a27}.filter-bar[data-v-b4aad32e]{margin-bottom:20px}.order-card[data-v-b4aad32e]{border:1px solid #eee;border-radius:4px;margin-bottom:20px;overflow:hidden}.order-header[data-v-b4aad32e]{background-color:#f8f9fa;padding:12px 20px;display:flex;align-items:center;border-bottom:1px solid #eee;color:#666;font-size:14px}.order-products[data-v-b4aad32e]{padding:10px 20px;background:#fff}.product-item[data-v-b4aad32e]{display:flex;align-items:center;padding:15px 0;border-bottom:1px dashed #eee;font-size:14px}.product-item[data-v-b4aad32e]:last-child{border-bottom:none}.product-image[data-v-b4aad32e]{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;margin-right:15px;border-radius:4px}.product-details[data-v-b4aad32e]{flex:1}.product-name[data-v-b4aad32e]{color:#333;margin-bottom:5px}.product-spec[data-v-b4aad32e]{color:#999;font-size:12px}.product-price[data-v-b4aad32e]{width:120px;text-align:center;color:#333}.product-quantity[data-v-b4aad32e]{width:100px;text-align:center;color:#666}.product-total[data-v-b4aad32e]{width:120px;text-align:center;color:#333;font-weight:500}.product-actions[data-v-b4aad32e],.product-status[data-v-b4aad32e]{width:150px;text-align:center}.order-footer[data-v-b4aad32e]{background-color:#f8f9fa;padding:15px 20px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #eee}.order-summary[data-v-b4aad32e]{text-align:right}.order-amount[data-v-b4aad32e]{color:#333;margin-bottom:5px}.order-amount strong[data-v-b4aad32e]{color:#ff4d4f;font-size:16px}.order-tips[data-v-b4aad32e]{font-size:12px;color:#999}.order-actions[data-v-b4aad32e]{display:flex;gap:10px} |
@ -1 +1 @@ |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>shiweisuzhou</title><script defer="defer" src="/js/chunk-vendors.981357e9.js"></script><script defer="defer" src="/js/app.cf4d2948.js"></script><link href="/css/chunk-vendors.10dd4e95.css" rel="stylesheet"><link href="/css/app.b0d0af41.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but shiweisuzhou doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
|||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>shiweisuzhou</title><script defer="defer" src="/js/chunk-vendors.981357e9.js"></script><script defer="defer" src="/js/app.a5d22e80.js"></script><link href="/css/chunk-vendors.10dd4e95.css" rel="stylesheet"><link href="/css/app.b0d0af41.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but shiweisuzhou doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,205 @@ |
|||
<template> |
|||
<el-dialog |
|||
title="物流信息" |
|||
:visible.sync="visible" |
|||
width="700px" |
|||
:close-on-click-modal="false" |
|||
:show-close="true" |
|||
:before-close="handleClose" |
|||
v-if="show" |
|||
> |
|||
<!-- 快递信息 --> |
|||
<div class="express-info"> |
|||
<div class="express-logo"> |
|||
<span class="express-name">{{ logisticsInfo.express_name }}</span> |
|||
</div> |
|||
<div class="express-number"> |
|||
<span class="number-label">运单号:</span> |
|||
<span class="number-value">{{ logisticsInfo.courier_number }}</span> |
|||
<el-button type="text" class="copy-btn" @click="copyWaybillNumber"> |
|||
复制 |
|||
</el-button> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 物流时间线 --> |
|||
<div class="timeline-container"> |
|||
<el-timeline> |
|||
<el-timeline-item |
|||
v-for="(item, index) in logisticsList" |
|||
:key="index" |
|||
:timestamp="item.time" |
|||
:color="index === 0 ? 'orange' : '#8492a6'" |
|||
:icon="index === 0 ? 'el-icon-check' : ''" |
|||
:size="index === 0 ? 'large' : 'normal'" |
|||
> |
|||
<div class="timeline-content"> |
|||
<div class="timeline-status" :class="{ active: index === 0 }"> |
|||
{{ item.context }} |
|||
</div> |
|||
<div class="timeline-desc">{{ item.description }}</div> |
|||
</div> |
|||
</el-timeline-item> |
|||
</el-timeline> |
|||
</div> |
|||
|
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="handleClose">关闭</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "LogisticsModal", |
|||
props: { |
|||
visible: { |
|||
type: Boolean, |
|||
default: false, |
|||
}, |
|||
orderId: { |
|||
type: String, |
|||
}, |
|||
logisticsInfo: { |
|||
type: Object, |
|||
}, |
|||
}, |
|||
data() { |
|||
return { |
|||
// 物流时间线数据 |
|||
logisticsList: [], |
|||
show: this.visible, |
|||
}; |
|||
}, |
|||
watch: { |
|||
visible(newVal) { |
|||
this.show = newVal; |
|||
}, |
|||
}, |
|||
mounted() { |
|||
this.post( |
|||
{ |
|||
child_order_id: this.orderId, |
|||
}, |
|||
"/api/order/getExpress" |
|||
).then((res) => { |
|||
this.logisticsList = res.data; |
|||
}); |
|||
}, |
|||
methods: { |
|||
// 复制运单号 |
|||
copyWaybillNumber() { |
|||
// 创建一个临时输入框 |
|||
const input = document.createElement("input"); |
|||
input.value = this.logisticsInfo.courier_number; |
|||
document.body.appendChild(input); |
|||
input.select(); |
|||
document.execCommand("copy"); |
|||
document.body.removeChild(input); |
|||
|
|||
// 显示复制成功提示 |
|||
this.$message.success("运单号已复制"); |
|||
}, |
|||
handleClose() { |
|||
// 修改本地属性 |
|||
this.show = false; |
|||
// 通知父组件更新原始 prop |
|||
this.$emit("update:visible", false); |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.express-info { |
|||
padding: 15px; |
|||
background-color: #fafafa; |
|||
border-radius: 4px; |
|||
margin-bottom: 25px; |
|||
} |
|||
|
|||
.express-logo { |
|||
display: flex; |
|||
align-items: center; |
|||
margin-bottom: 10px; |
|||
} |
|||
|
|||
.logo-img { |
|||
width: 30px; |
|||
height: 30px; |
|||
margin-right: 10px; |
|||
} |
|||
|
|||
.express-name { |
|||
font-weight: 500; |
|||
color: #333; |
|||
} |
|||
|
|||
.express-number { |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
|
|||
.number-label { |
|||
color: #666; |
|||
margin-right: 8px; |
|||
} |
|||
|
|||
.number-value { |
|||
color: #333; |
|||
flex: 1; |
|||
} |
|||
|
|||
.copy-btn { |
|||
color: #1890ff; |
|||
padding: 0; |
|||
height: auto; |
|||
} |
|||
|
|||
.timeline-container { |
|||
padding-left: 20px; |
|||
max-height: 50vh; |
|||
overflow-y: auto; |
|||
} |
|||
|
|||
.el-timeline { |
|||
padding-left: 10px; |
|||
} |
|||
|
|||
.el-timeline-item:not(:last-child)::before { |
|||
height: 100%; |
|||
left: 6px; |
|||
} |
|||
|
|||
.el-timeline-item__node--large { |
|||
width: 16px; |
|||
height: 16px; |
|||
} |
|||
|
|||
.timeline-status { |
|||
font-weight: 500; |
|||
margin-bottom: 5px; |
|||
color: #333; |
|||
} |
|||
|
|||
.timeline-status.active { |
|||
color: #ff7d00; |
|||
} |
|||
|
|||
.timeline-desc { |
|||
color: #666; |
|||
line-height: 1.6; |
|||
font-size: 13px; |
|||
} |
|||
|
|||
.el-timeline-item__timestamp { |
|||
color: #999; |
|||
font-size: 12px; |
|||
width: 80px; |
|||
padding-top: 2px; |
|||
} |
|||
|
|||
.dialog-footer { |
|||
text-align: center; |
|||
} |
|||
</style> |
Loading…
Reference in new issue