296 lines
8.2 KiB
Vue
Raw Normal View History

2025-07-04 09:19:29 +08:00
<template>
<section>
<common>
<template #main>
<el-card shadow="never" style="border-radius: 14px">
2025-07-04 09:19:29 +08:00
<div class="title">
<span @click="toBack(-2)">物流</span>
<span class="mx-10"> > </span>
<span @click="toBack(-1)">在线寄货</span>
<span class="mx-10"> > </span>
<span style="color: rgba(37, 191, 130, 1)">资源匹配</span>
2025-07-04 09:19:29 +08:00
</div>
<div style="display: flex">
<div style="width: 60%">
<el-descriptions title="发货信息" :column="3" style="margin-top: 20px">
<el-descriptions-item label="姓名:">张超</el-descriptions-item>
<el-descriptions-item label="电话:">15684968769</el-descriptions-item>
<el-descriptions-item label="位置:">临沧市-耿马县</el-descriptions-item>
</el-descriptions>
<el-descriptions title="收货信息" :column="3">
<el-descriptions-item label="姓名:">刘美丽</el-descriptions-item>
<el-descriptions-item label="电话:">13375869426</el-descriptions-item>
<el-descriptions-item label="位置:">临沧市-耿马县</el-descriptions-item>
</el-descriptions>
<el-descriptions title="收货信息" :column="3">
<el-descriptions-item label="货物名称:">西红柿</el-descriptions-item>
<el-descriptions-item label="货物重量:">500</el-descriptions-item>
</el-descriptions>
</div>
<div style="flex: 1; text-align: right">
<el-button type="primary" size="large" style="width: 100px; margin-top: 100px">重新匹配</el-button>
</div>
</div>
</el-card>
<div class="storage-content">
<div class="content-custom-title">平台匹配仓储资源</div>
<div class="tabs">
<div class="tab cursor">
<div
v-for="(item, index) in tab1"
:key="index"
class="tab_list_li"
:class="{ active: currentTab1 === index }"
@click="handleTab1Click(item, index)"
>
{{ item }}
2025-07-04 09:19:29 +08:00
</div>
</div>
</div>
<el-row :gutter="20">
<el-col v-for="(item, index) in allData" :key="index" :span="8">
<div class="resource-item">
<div class="resource-item-img">
<img :src="item.imageUrl" fit="cover" draggable="false" class="storage-image" />
2025-07-04 09:19:29 +08:00
</div>
<p class="center-title">
{{ item.title }}
2025-07-04 09:19:29 +08:00
</p>
<div class="resource-custom-text">距离您的位置{{ item.distance }}</div>
<div class="center-text">
<div class="center-text-lable">发布企业</div>
<div class="flex-1" :title="item.operationUnit">{{ item.operationUnit }}</div>
2025-07-04 09:19:29 +08:00
</div>
<div class="center-text">
<div class="center-text-lable">联系电话</div>
<div class="flex-1" :title="item.phoneNumber">{{ item.phoneNumber }}</div>
</div>
<div class="center-text" style="margin: 10px 0">
<div class="center-text-lable" style="color: 000; font-weight: bold">参考价格</div>
<div class="flex-1" style="font-size: 20px; color: #25bf82; font-weight: bold">{{ item.price }}</div>
</div>
<div style="display: flex">
<el-button type="primary" size="large" style="flex: 1; margin: 10px 20px">立即查看</el-button>
2025-07-04 09:19:29 +08:00
</div>
</div>
</el-col>
</el-row>
</div>
2025-07-04 09:19:29 +08:00
</template>
</common>
</section>
</template>
<script setup>
import { ref, reactive, watch, onMounted } from 'vue';
import { getAssetsFile } from '@/utils';
import { useRoute, useRouter } from 'vue-router';
import Common from '../components/common.vue';
import { warehouseDetail } from '@/apis/warehouseLogistics.js';
2025-07-04 09:19:29 +08:00
const route = useRoute();
const router = useRouter();
const tab1 = reactive(['全部', '距离最近', '价格最便宜']);
const currentTab1 = ref(0);
const handleTab1Click = (item, index) => {
currentTab1.value = index;
};
import img1 from './images/car1.png';
import img2 from './images/car2.png';
import img3 from './images/car3.png';
const allData = ref([
{
imageUrl: img1,
title: '长途货车',
operationUnit: '昌盛伟业运输有限公司 ',
phoneNumber: '15684968769',
pricingUnit: '元/㎡·月',
location: '孟定镇中缅大道8号',
cargoVolume: '61.2m³',
price: '¥19元/吨/公里',
distance: '9.1km',
},
{
imageUrl: img2,
title: '长途货车',
operationUnit: '昌盛伟业运输有限公司',
phoneNumber: '13375869426',
pricingUnit: '元/吨·天',
location: '绿色食品园区二期',
cargoVolume: '63m³',
price: '¥20元/吨/公里',
distance: '10.3km',
},
{
imageUrl: img3,
title: '长途货车',
operationUnit: '昌盛伟业运输有限公司',
phoneNumber: '15958621375',
pricingUnit: '元/托·月',
location: '耿马糖厂东侧',
cargoVolume: '63m³',
price: '¥20元/吨/公里',
distance: '12.6km',
},
]);
2025-07-04 09:19:29 +08:00
const toBack = (level) => {
router.go(level);
};
const param = ref({
id: '100',
});
2025-07-04 09:19:29 +08:00
const queryDetail = () => {
warehouseDetail(param).then((res) => {
2025-07-04 09:19:29 +08:00
if (res.code === 200) {
allData.value = res.data;
for (let i in allData.value) {
allData.value[i].tag = allData.value[i].tags.split(',');
2025-07-04 09:19:29 +08:00
}
}
});
};
onMounted(() => {
param.value.id = route.query.id ?? '100';
2025-07-04 09:19:29 +08:00
// queryDetail();
});
</script>
<style lang="scss" scoped>
.title {
text-align: left;
font-size: 18px;
font-weight: bold;
cursor: pointer;
}
.storage-content {
padding: 20px 20px 0 20px;
margin-top: 20px;
border-radius: 14px;
background-color: #fff;
2025-07-04 09:19:29 +08:00
}
.content-custom-title {
2025-07-04 09:19:29 +08:00
font-size: 20px;
font-weight: bold;
text-align: left;
margin-bottom: 10px;
2025-07-04 09:19:29 +08:00
}
.tabs {
//height: 160px;
line-height: 50px;
2025-07-04 09:19:29 +08:00
display: flex;
flex-direction: column;
font-size: 18px;
2025-07-04 09:19:29 +08:00
align-items: flex-start;
justify-content: space-between;
margin-bottom: 10px;
2025-07-04 09:19:29 +08:00
}
.tabs0 {
padding: 0;
2025-07-04 09:19:29 +08:00
}
.tab {
// height: 100px;
width: 850px;
2025-07-04 09:19:29 +08:00
display: flex;
align-items: center;
justify-content: flex-start;
overflow-x: auto;
overflow: auto; /* 启用滚动 */
white-space: nowrap; /* 强制单行显示 */
-ms-overflow-style: none; /* IE/Edge 兼容 */
scrollbar-width: none; /* 隐藏滚动条 */
.tab_list {
color: #999999;
font-size: 20px;
font-weight: 400;
}
.tab_list_li {
margin-left: 40px;
color: #666;
font-size: 18px;
font-weight: 400;
transition: color 0.3s ease;
}
.tab_list_li:first-child {
margin-left: 0px;
}
.tab_list_li.active {
color: #25bf82;
font-weight: bold;
}
2025-07-04 09:19:29 +08:00
}
.cursor {
cursor: pointer;
2025-07-04 09:19:29 +08:00
}
.active {
2025-07-04 09:19:29 +08:00
color: #25bf82;
font-weight: bold;
2025-07-04 09:19:29 +08:00
}
.resource-item {
width: 100%;
min-height: 300px;
display: flex;
flex-direction: column;
margin-bottom: 20px;
2025-07-04 09:19:29 +08:00
text-align: left;
.resource-item-img {
width: 100%;
height: 250px;
border-radius: 14px;
position: relative;
overflow: hidden;
background-color: rgb(102 102 102 / 10%);
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 100%;
min-height: 100%;
object-fit: cover;
}
}
.center-title {
color: #666;
font-size: 18px;
font-weight: bold;
text-align: left;
margin-top: 10px;
margin-bottom: 10px;
.highlight {
color: #25bf82;
}
}
.resource-custom-text {
margin-bottom: 10px;
font-size: 16px;
color: #25bf82;
}
.center-text {
font-size: 16px;
display: flex;
margin-bottom: 10px;
.center-text-lable {
color: #666;
width: 86px;
line-height: 20px;
}
.flex-1 {
flex: 1;
line-height: 20px;
text-align: left;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
2025-07-04 09:19:29 +08:00
}
</style>