304 lines
6.0 KiB
Vue
304 lines
6.0 KiB
Vue
<template>
|
|
<div class="slider">
|
|
<div class="slider-container">
|
|
<img class="bg" src="@/assets/image/banner.jpg">
|
|
<div class="box">
|
|
<div class="text">
|
|
<h2>小发同城</h2>
|
|
<h3>店铺商家火热招募中</h3>
|
|
<p>开店成本低 0元开店</p>
|
|
</div>
|
|
<div class="sub">
|
|
<el-button :icon="Promotion" color="#ffc114" round size="large" @click="openRegisterForm">
|
|
免费开店
|
|
</el-button>
|
|
<el-button :icon="Download" round size="large" @click="downAndroid">
|
|
Android版本下载
|
|
</el-button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="counter_wrapper" data-aos="fade-up">
|
|
<div class="container">
|
|
<el-row :gutter="10">
|
|
<el-col :span="6">
|
|
<div class="count_box box_hover">
|
|
<i class="iconfont icon-employee1"></i>
|
|
<h3>
|
|
<el-statistic
|
|
:value="businessmanValue"
|
|
:formatter="formatter"
|
|
:value-style="{ fontSize: '35px' }"
|
|
/>
|
|
</h3>
|
|
<p>商家数量</p>
|
|
</div>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<div class="count_box box_center">
|
|
<i class="iconfont icon-baobei"></i>
|
|
<h3>
|
|
<el-statistic
|
|
:value="productValue"
|
|
:formatter="formatter2"
|
|
:value-style="{ fontSize: '35px' }"
|
|
/>
|
|
</h3>
|
|
<p>商品数量</p>
|
|
</div>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<div class="count_box box_hover">
|
|
<i class="iconfont icon-vip"></i>
|
|
<h3>
|
|
<el-statistic
|
|
:value="memberValue"
|
|
:formatter="formatter"
|
|
:value-style="{ fontSize: '35px' }"
|
|
/>
|
|
</h3>
|
|
<p>会员数量</p>
|
|
</div>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<div class="count_box box_hover">
|
|
<i class="iconfont icon-dingdan"></i>
|
|
<h3>
|
|
<el-statistic
|
|
:value="orderValue"
|
|
:formatter="formatter2"
|
|
:value-style="{ fontSize: '35px' }"
|
|
/>
|
|
</h3>
|
|
<p>订单数量</p>
|
|
</div>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
import { useTransition } from "@vueuse/core";
|
|
import { ref, onMounted, defineEmits } from "vue";
|
|
import { Promotion, Download } from "@element-plus/icons-vue";
|
|
import { ElMessage } from 'element-plus'
|
|
|
|
const businessman = ref(0);
|
|
const product = ref(0);
|
|
const member = ref(0);
|
|
const order = ref(0);
|
|
|
|
const emits = defineEmits(["open-register-form"]);
|
|
|
|
const openRegisterForm = () => {
|
|
console.log(1111);
|
|
emits("open-register-form");
|
|
};
|
|
|
|
const downAndroid = ()=>{
|
|
ElMessage.error('敬请期待~')
|
|
}
|
|
|
|
const businessmanValue = useTransition(businessman, {
|
|
duration: 1500,
|
|
});
|
|
const productValue = useTransition(product, {
|
|
duration: 1500,
|
|
});
|
|
const memberValue = useTransition(member, {
|
|
duration: 1500,
|
|
});
|
|
const orderValue = useTransition(order, {
|
|
duration: 1500,
|
|
});
|
|
|
|
businessman.value = 6274;
|
|
product.value = 62400;
|
|
member.value = 10800;
|
|
order.value = 12000;
|
|
|
|
const formatter = (value: number) => {
|
|
return `${Math.round(value)}+`;
|
|
};
|
|
const formatter2 = (value: number) => {
|
|
return `${Math.round(value)}k+`;
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.slider {
|
|
width: 100%;
|
|
position: relative;
|
|
}
|
|
|
|
.slider-container {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 800px;
|
|
// background: url("@/assets/image/banner1.jpg") no-repeat 50% 0;
|
|
// background-size:contain;
|
|
margin: auto;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: relative;
|
|
overflow: hidden;
|
|
|
|
.bg{
|
|
left: 50%;
|
|
object-fit: contain;
|
|
position: absolute;
|
|
top: 50%;
|
|
transform: translate(-50%, -50%);
|
|
width: 100%;
|
|
z-index: 1;
|
|
}
|
|
|
|
.box {
|
|
width: 1000px;
|
|
margin: auto;
|
|
height: 800px;
|
|
position: relative;
|
|
z-index: 2;
|
|
|
|
.sub {
|
|
position: absolute;
|
|
top: 58%;
|
|
transform: translateY(58%);
|
|
left: 150px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.counter_wrapper {
|
|
position: relative;
|
|
margin-top: -100px;
|
|
z-index: 12;
|
|
}
|
|
|
|
.counter_wrapper .count_box {
|
|
width: 100%;
|
|
padding: 15px 0;
|
|
border-radius: 10px;
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
background: #fff;
|
|
box-shadow: 2px 2px 10px 1px rgba(0, 0, 0, 0.08);
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.counter_wrapper .count_box i::before {
|
|
font-size: 60px;
|
|
color: #353535;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.counter_wrapper .count_box h3 {
|
|
font-size: 35px;
|
|
font-weight: 500;
|
|
color: #353535;
|
|
margin: 15px 0;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.counter_wrapper .count_box p {
|
|
font-size: 18px;
|
|
font-weight: 500;
|
|
color: #353535;
|
|
transition: 0.3s;
|
|
}
|
|
|
|
.counter_wrapper .count_box:hover i::before {
|
|
color: #ffffff;
|
|
}
|
|
|
|
.counter_wrapper .count_box:hover p {
|
|
color: #ffffff;
|
|
}
|
|
|
|
.counter_wrapper .count_box:hover .el-statistic__content {
|
|
color: #ffffff;
|
|
}
|
|
|
|
.counter_wrapper .count_box:hover {
|
|
background: #f34d2c;
|
|
}
|
|
|
|
.container {
|
|
width: 100%;
|
|
max-width: 1200px;
|
|
margin: auto;
|
|
}
|
|
|
|
.container .el-row {
|
|
width: 100%;
|
|
}
|
|
|
|
.text{
|
|
display: none;
|
|
color: #fff;
|
|
margin-bottom: 20px;
|
|
|
|
h2{
|
|
font-size: 55px;
|
|
}
|
|
h3{
|
|
font-size: 32px;
|
|
margin-top: 10px;
|
|
}
|
|
p{
|
|
font-size: 32px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.text{
|
|
display: block;
|
|
}
|
|
|
|
.bg{
|
|
display: none;
|
|
}
|
|
|
|
|
|
|
|
.slider-container {
|
|
height: 360px;
|
|
background: linear-gradient(180deg, #f85535, #f76c50);
|
|
|
|
.box {
|
|
width: 100%;
|
|
margin: auto;
|
|
height: 360px;
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
|
|
.sub {
|
|
position: initial;
|
|
transform: none;
|
|
text-align: center;
|
|
width: 100%;
|
|
|
|
button {
|
|
margin-bottom: 12px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.counter_wrapper {
|
|
margin-top: 20px;
|
|
.container {
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
}
|
|
}
|
|
</style>
|