2025-03-26 13:49:51 +08:00

224 lines
5.7 KiB
Vue

<template>
<div class="real-time-price-wrap">
<div class="tab-warp">
<el-carousel
indicator-position="none"
:autoplay="false"
:arrow="'always'"
:height="'120px'"
:style="{
'--arrow-left-bg': `url(${arrowRightBg})`,
'--arrow-right-bg': `url(${arrowLeftBg})`,
}"
>
<el-carousel-item v-for="item in tablist" :key="item">
<div class="item-warp" :style="{ 'background-image': 'url(' + getAssetsFile('images/early/back2.png') + ')' }">
<div class="img-wrap">
<img :src="getAssetsFile('images/early/icon3.png')" />
</div>
<div class="name">
<span class="name-val">{{ item.name }}</span>
</div>
</div>
</el-carousel-item>
</el-carousel>
</div>
<div class="price-list">
<div
v-for="(n, index) in pricelist"
:key="index"
:style="{
'background-image': 'url(' + getAssetsFile('images/early/bg5.png') + ')',
height: 'calc((100% - 50px) /' + 3 + ')',
}"
class="data-item"
>
<div class="data-warp">
<div class="small-bg">
<img :src="getAssetsFile('images/early/back3.png')" />
<img :src="getAssetsFile('images/early/' + n.icon)" class="img-icon" />
</div>
<div class="data-pos">
<div class="data-pos-center">
<div class="pos-center">
<div class="label">
<span class="val">{{ n.title }}</span>
<span class="unit">{{ n.unit }}</span>
</div>
<span class="value">{{ n.value }}</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive, onMounted, computed } from 'vue';
import { isEmpty, getAssetsFile } from '@/utils';
let tablist = reactive([
{ name: '西红柿', label: '价格', scr: '' },
{ name: '甘蔗', label: '价格', scr: '' },
{ name: '白菜', label: '价格', scr: '' },
]);
let pricelist = reactive([
{ title: '今日最高价', value: 1.24, unit: '元/kg', icon: 'icon1.png' },
{ title: '今日最低价', value: 0.87, unit: '元/kg', icon: 'icon2.png' },
{ title: '最多价格', value: 1.19, unit: '元/kg', icon: 'icon3.png' },
{ title: '建议售价', value: 1.21, unit: '元/kg', icon: 'icon5.png' },
{ title: '历史最高价', value: 1.36, unit: '元/kg', icon: 'icon6.png' },
{ title: '历史最低价', value: 0.75, unit: '元/kg', icon: 'icon7.png' },
]);
// 动态获取箭头图片路径
const arrowLeftBg = getAssetsFile('images/early/arrowL.png');
const arrowRightBg = getAssetsFile('images/early/arrowR.png');
</script>
<style lang="scss" scoped>
div {
box-sizing: border-box;
}
.real-time-price-wrap {
height: 100%;
width: 100%;
padding: 10px 0;
text-align: center;
::v-deep() {
.el-carousel__arrow--left {
background-image: var(--arrow-left-bg);
background-size: 100% 100%;
background-position: left center;
width: 68px;
height: 54px;
i {
display: none;
}
}
.el-carousel__arrow--right {
background-image: var(--arrow-right-bg);
background-size: 100% 100%;
background-position: left center;
width: 68px;
height: 54px;
i {
display: none;
}
}
}
.item-warp {
width: calc(100% - 136px);
text-align: center;
margin: 0 auto;
background-size: 80% 80%;
background-position: center 8px;
height: 100%;
background-repeat: no-repeat;
.img-wrap {
width: 80%;
height: 80%;
text-align: center;
margin-left: 10%;
img {
width: 100%;
height: 100%;
margin: auto;
}
}
.name {
width: 100%;
.name-val {
font-size: 16px;
font-weight: bold;
color: #fff;
}
}
}
.price-list {
width: 100%;
height: calc(100% - 120px);
padding-top: 10px;
display: inline-flex;
justify-content: space-between;
flex-wrap: wrap;
.data-item {
width: calc((100% - 10px) / 2);
display: inline-flex;
flex-direction: column;
justify-content: center;
background-size: 100% 100%;
position: relative;
}
.data-warp {
padding: 8px;
text-align: center;
z-index: 1;
display: inline-flex;
justify-content: center;
.small-bg,
.data-pos {
display: inline-flex;
vertical-align: middle;
.data-pos-center {
display: inline-flex;
justify-content: space-around;
flex-direction: column;
height: 100%;
.pos-center {
}
}
}
.small-bg {
width: 54px;
height: 54px;
position: relative;
.img-icon {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 38%;
height: 38%;
}
}
.data-pos {
width: calc(100% - 54px);
padding-left: 8px;
.label,
.value {
display: inline-block;
width: 100%;
}
.label {
color: #fff;
text-align: left;
.val {
font-size: 12px;
}
.unit {
font-size: 10px;
padding-left: 3px;
}
.unit::before {
content: '(';
}
.unit::after {
content: ')';
}
}
.value {
color: #6beff9;
font-size: 16px;
font-weight: bold;
margin-top: 6px;
text-align: left;
}
}
}
}
}
</style>