|
|
@@ -3,40 +3,81 @@
|
|
|
* @Autor: lin
|
|
|
* @Date: 2024-04-09 14:26:07
|
|
|
* @LastEditors: lin
|
|
|
- * @LastEditTime: 2024-04-15 18:43:55
|
|
|
+ * @LastEditTime: 2024-04-17 15:36:56
|
|
|
-->
|
|
|
<template>
|
|
|
<div class="box">
|
|
|
<div class="mapBox" id="newHome"></div>
|
|
|
<!-- 左侧统计图 -->
|
|
|
- <transition leave-active-class='animate__animated animate__bounceOutLeft'
|
|
|
- enter-active-class="animate__animated animate__bounceInLeft">
|
|
|
- <div class="smallChar deviceInfo" v-if="defaultInfo">
|
|
|
- <div class="charBox">
|
|
|
- <div class="charTitle">
|
|
|
- <Title text="设备信息"></Title>
|
|
|
- </div>
|
|
|
- <div class="charContent">
|
|
|
- <div class="charList" v-for="item in deviceInfo" :key="item.device_type_id">
|
|
|
- <div class="leftInfo">
|
|
|
- <img :src="`${item.icon}`" alt="">
|
|
|
- <div>{{ item.type_name }}</div>
|
|
|
- </div>
|
|
|
- <div class="leftInfo">
|
|
|
- <span>{{ item.device_count }}台</span>
|
|
|
- <img class="markerIcon" :src="`${markerObj[item.device_type_id].length == 0 ? eyeClose : eyeOpen}`"
|
|
|
- alt="" @click="setMarker(item.devices_info, item.device_type_id)" />
|
|
|
+ <transition leave-active-class='animate__animated animate__fast animate__fadeOutLeft'
|
|
|
+ enter-active-class="animate__animated animate__fast animate__fadeInLeft">
|
|
|
+ <div v-show="!showBanner">
|
|
|
+ <div class="smallChar deviceInfo">
|
|
|
+ <div class="charBox">
|
|
|
+ <div class="charTitle">
|
|
|
+ <Title text="设备信息"></Title>
|
|
|
+ </div>
|
|
|
+ <div class="charContent">
|
|
|
+ <div class="charList" v-for="item in deviceInfo" :key="item.device_type_id">
|
|
|
+ <div class="leftInfo">
|
|
|
+ <img :src="`${item.icon}`" alt="">
|
|
|
+ <div>{{ item.type_name }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="leftInfo">
|
|
|
+ <span>{{ item.device_count }}台</span>
|
|
|
+ <img class="markerIcon" :src="`${markerObj[item.device_type_id].length == 0 ? eyeClose : eyeOpen}`"
|
|
|
+ alt="" @click="setMarker(item.devices_info, item.device_type_id)" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="smallChar deviceInfo bottomBox">
|
|
|
+ <div class="charBox">
|
|
|
+ <div class="charTitle">
|
|
|
+ <Title text="有害生物监测"></Title>
|
|
|
+ <el-date-picker :pickerOptions="pickerOptions" :clearable="false" size="mini" v-model="watchYear"
|
|
|
+ type="month" placeholder="选择年月" format="yyyy-MM" value-format="yyyy-MM"
|
|
|
+ @change="getWatchInfo(watchYear)">
|
|
|
+ </el-date-picker>
|
|
|
+ </div>
|
|
|
+ <div class="charContent">
|
|
|
+ <el-carousel>
|
|
|
+ <el-carousel-item v-for="item in watchInfo" :key="item.category" indicator-position="outside">
|
|
|
+ <div class="small">{{ item.warning }}</div>
|
|
|
+ <div class="charInfo">
|
|
|
+ <div class="infoTitle">{{ item.category }}</div>
|
|
|
+ <div class="detailInfo">
|
|
|
+ <div>害虫总数</div>
|
|
|
+ <div>{{ item.sum }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="detailInfo" v-if="item.category != '外来有害杂草'">
|
|
|
+ <div>害虫种类</div>
|
|
|
+ <div>{{ item.count }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-carousel-item>
|
|
|
+ </el-carousel>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="tipsBox">
|
|
|
+ <div>
|
|
|
+ <span>77</span>
|
|
|
+ <span>本月预警数量</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>48664</span>
|
|
|
+ <span>全年预警数量</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</transition>
|
|
|
<!-- 右侧统计图 -->
|
|
|
- <transition leave-active-class='animate__animated animate__bounceOutRight'
|
|
|
- enter-active-class="animate__animated animate__bounceInRight">
|
|
|
- <div>
|
|
|
- <div class="smallChar lineBox" v-if="defaultInfo">
|
|
|
+ <transition leave-active-class='animate__animated animate__fast animate__fadeOutRight'
|
|
|
+ enter-active-class="animate__animated animate__fast animate__fadeInRight">
|
|
|
+ <div v-show="!showBanner">
|
|
|
+ <div class="smallChar lineBox">
|
|
|
<div class="charBox">
|
|
|
<div class="charTitle">
|
|
|
<Title class="smallTitle" text="有害生物发生趋势"></Title>
|
|
|
@@ -52,13 +93,12 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="smallChar lineBox bottomBox" v-if="defaultInfo">
|
|
|
+ <div class="smallChar lineBox bottomBox">
|
|
|
<div class="charBox">
|
|
|
<div class="charTitle">
|
|
|
<Title class="smallTitle" text="任务统计"></Title>
|
|
|
<el-date-picker :pickerOptions="pickerOptions" :clearable="false" size="mini" v-model="taskYear"
|
|
|
- type="year" placeholder="选择年" format="yyyy" value-format="yyyy"
|
|
|
- @change="getTaskInfo(taskYear)">
|
|
|
+ type="year" placeholder="选择年" format="yyyy" value-format="yyyy" @change="getTaskInfo(taskYear)">
|
|
|
</el-date-picker>
|
|
|
</div>
|
|
|
<div class="charContent">
|
|
|
@@ -66,11 +106,21 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="tipsBox rightTips">
|
|
|
+ <div>
|
|
|
+ <span>77</span>
|
|
|
+ <span>今日监督任务</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span>48664</span>
|
|
|
+ <span>今日监测任务</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</transition>
|
|
|
<!-- 点击地图圆圈的详情 -->
|
|
|
- <transition leave-active-class='animate__animated animate__bounceOutUp'
|
|
|
- enter-active-class="animate__animated animate__bounceInDown">
|
|
|
+ <transition leave-active-class='animate__animated animate__fast animate__fadeOutUp'
|
|
|
+ enter-active-class="animate__fast animate__animated animate__fadeInDown">
|
|
|
<div v-if="groupDialog" class="dialog">
|
|
|
<div class="dialog_content">
|
|
|
<!-- 关闭按钮 -->
|
|
|
@@ -135,12 +185,37 @@
|
|
|
<div class="rightInfo">{{ deviceDialogInfo.uptime_format }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="contentInfo" v-else-if="checkType == 'warning'">
|
|
|
+ <div class="title">告警详情</div>
|
|
|
+ <div class="warningInfo">
|
|
|
+ <div class="infoContent">
|
|
|
+ {{ warningList.latest_content }}
|
|
|
+ <div class="marginBtn">
|
|
|
+ <router-link to="/index/alermRecord" target="_blank">
|
|
|
+ <div class="newHomeBtn newHomeBigBtn">
|
|
|
+ 查看历史记录
|
|
|
+ </div>
|
|
|
+ </router-link>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="infoDesc">
|
|
|
+ <div>
|
|
|
+ <span class="num">{{ warningList.month_count }}</span>
|
|
|
+ <span class="name">本月预警</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="num">{{ warningList.year_count }}</span>
|
|
|
+ <span class="name">本年预警</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</transition>
|
|
|
<!-- 点击林木虫害信息右侧放大图标 -->
|
|
|
- <transition leave-active-class='animate__animated animate__bounceOutDown'
|
|
|
- enter-active-class="animate__animated animate__bounceInUp">
|
|
|
+ <transition leave-active-class='animate__animated animate__fast animate__fadeOutDown'
|
|
|
+ enter-active-class="animate__animated animate__fast animate__fadeInUp">
|
|
|
<div v-if="showBanner" class="dialog bigBanner">
|
|
|
<div class="dialog_content">
|
|
|
<!-- 关闭按钮 -->
|
|
|
@@ -150,7 +225,8 @@
|
|
|
<div class="barContent">
|
|
|
<div class="searchBox">
|
|
|
<el-date-picker :pickerOptions="pickerOptions" :clearable="false" size="mini" v-model="bannerYear"
|
|
|
- type="year" placeholder="选择年" format="yyyy" value-format="yyyy" @change="getBannerInfo(bannerYear, bannerBarCategory)">
|
|
|
+ type="year" placeholder="选择年" format="yyyy" value-format="yyyy"
|
|
|
+ @change="getBannerInfo(bannerYear, bannerBarCategory)">
|
|
|
</el-date-picker>
|
|
|
<el-select class="selectThem" v-model="bannerBarCategory" size="mini" placeholder="请选择分类"
|
|
|
@change="getBannerInfo(bannerYear, bannerBarCategory)">
|
|
|
@@ -187,6 +263,12 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</transition>
|
|
|
+ <!-- 头部告警 -->
|
|
|
+ <div class="warningBox" v-if="warningList.latest_content" @click="groupDialog = true; checkType = 'warning'">
|
|
|
+ <div class="content">
|
|
|
+ <div class="item">{{ warningList.latest_content }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
@@ -215,7 +297,6 @@ export default {
|
|
|
marker8: require('../../../assets/images/newHome/8.png'),
|
|
|
marker9: require('../../../assets/images/newHome/9.png'),
|
|
|
marker10: require('../../../assets/images/newHome/10.png'),
|
|
|
- defaultInfo: true,
|
|
|
colorObject: {
|
|
|
0: '#3ACD9C',
|
|
|
1: '#FF5951',
|
|
|
@@ -268,6 +349,8 @@ export default {
|
|
|
deviceDialogInfo: {}, //设备弹框内容
|
|
|
groupInfo: {}, // 圈圈弹框内容
|
|
|
typeList: [],
|
|
|
+ watchYear: '', //有害生物监测统计年份
|
|
|
+ watchInfo: [], // 有害生物监测信息详情
|
|
|
rightLineCategory: '',// 有害生物发生趋势 下拉框
|
|
|
pestLineObj: {}, // 有害生物发生趋势 类型-》数据
|
|
|
pestChart: null, // 有害生物发生趋势 折线图
|
|
|
@@ -284,6 +367,11 @@ export default {
|
|
|
bannerLoading: true,
|
|
|
bannerData: [],
|
|
|
taskYear: new Date().getFullYear() + '', // 任务统计年份
|
|
|
+ warningList: {
|
|
|
+ latest_content: "",
|
|
|
+ month_count: 0,
|
|
|
+ year_count: 0
|
|
|
+ }, // 告警详情
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
@@ -303,7 +391,9 @@ export default {
|
|
|
this.initMap();
|
|
|
this.getDeviceInfo();
|
|
|
this.getPestLineInfo();
|
|
|
- this.getTaskInfo(this.taskYear)
|
|
|
+ this.getTaskInfo(this.taskYear);
|
|
|
+ this.getWatchInfo();
|
|
|
+ this.getWarningList();
|
|
|
},
|
|
|
watch: {
|
|
|
|
|
|
@@ -328,6 +418,21 @@ export default {
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
+ // 获取告警列表
|
|
|
+ getWarningList() {
|
|
|
+ this.$axios({
|
|
|
+ method: 'POST',
|
|
|
+ url: '/api/api_gateway?method=data_report.screen.alarm_detail',
|
|
|
+ data: this.qs.stringify({})
|
|
|
+ }).then(res => {
|
|
|
+ if (!res.data.data) {
|
|
|
+ this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.warningList = res.data.data;
|
|
|
+ console.log(this.warningList)
|
|
|
+ })
|
|
|
+ },
|
|
|
// 获取设备信息
|
|
|
getDeviceInfo() {
|
|
|
this.$axios({
|
|
|
@@ -339,7 +444,6 @@ export default {
|
|
|
this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
return
|
|
|
}
|
|
|
- this.defaultInfo = true;
|
|
|
this.deviceInfo = res.data.data;
|
|
|
this.deviceInfo.forEach(item => {
|
|
|
if (item.device_type_id == '2') {
|
|
|
@@ -353,6 +457,23 @@ export default {
|
|
|
console.log(this.markerObj);
|
|
|
})
|
|
|
},
|
|
|
+ // 获取有害生物监测数据
|
|
|
+ getWatchInfo(date) {
|
|
|
+ this.$axios({
|
|
|
+ method: 'POST',
|
|
|
+ url: '/api/api_gateway?method=data_report.screen.pest_check',
|
|
|
+ data: this.qs.stringify({
|
|
|
+ date
|
|
|
+ })
|
|
|
+ }).then(res => {
|
|
|
+ if (!res.data.data) {
|
|
|
+ this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
+ return
|
|
|
+ }
|
|
|
+ console.log(res.data.data);
|
|
|
+ this.watchInfo = res.data.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
// 获取任务统计图
|
|
|
getTaskInfo(year) {
|
|
|
this.$axios({
|
|
|
@@ -366,7 +487,7 @@ export default {
|
|
|
this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
return
|
|
|
}
|
|
|
- console.log(res.data.data);
|
|
|
+ // console.log(res.data.data);
|
|
|
let charData = res.data.data;
|
|
|
// let pestLineObj = {};
|
|
|
// 害虫个数
|
|
|
@@ -397,7 +518,7 @@ export default {
|
|
|
this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
return
|
|
|
}
|
|
|
- console.log(res.data.data);
|
|
|
+ // console.log(res.data.data);
|
|
|
this.bannerData = res.data.data.table;
|
|
|
let charData = res.data.data.lines[0];
|
|
|
// let pestLineObj = {};
|
|
|
@@ -415,6 +536,10 @@ export default {
|
|
|
xDataNew.push(item + '月')
|
|
|
})
|
|
|
let optionsPestLine = {
|
|
|
+ // 设置全局文本样式
|
|
|
+ textStyle: {
|
|
|
+ fontSize: 14, // 设置字体大小为14px
|
|
|
+ },
|
|
|
grid: {
|
|
|
top: '50',
|
|
|
left: '2%',
|
|
|
@@ -498,6 +623,10 @@ export default {
|
|
|
xDataNew.push(item + '月')
|
|
|
})
|
|
|
let optionsPestLine = {
|
|
|
+ // 设置全局文本样式
|
|
|
+ textStyle: {
|
|
|
+ fontSize: 14, // 设置字体大小为14px
|
|
|
+ },
|
|
|
grid: {
|
|
|
left: '0%',
|
|
|
bottom: '0%',
|
|
|
@@ -590,13 +719,12 @@ export default {
|
|
|
this.$message.error('网络连接出错或服务报错,请刷新页面重试');
|
|
|
return
|
|
|
}
|
|
|
- this.defaultInfo = true;
|
|
|
let pestLineObj = {};
|
|
|
res.data.data.forEach(pest => {
|
|
|
pestLineObj[pest.category] = pest.data
|
|
|
})
|
|
|
this.$set(this, 'pestLineObj', pestLineObj)
|
|
|
- console.log(this.pestLineObj);
|
|
|
+ // console.log(this.pestLineObj);
|
|
|
this.pestChart = echarts.init(document.getElementById('chartDetailId'));
|
|
|
this.setLineOption(this.pestChart, pestLineObj[this.rightLineCategory].month, pestLineObj[this.rightLineCategory].count)
|
|
|
})
|
|
|
@@ -699,7 +827,7 @@ export default {
|
|
|
circle.on('click', (e) => {
|
|
|
let data = e.target._opts.extData;
|
|
|
this.getInfoByGroupId(data);
|
|
|
- console.log(data, '当前点击的圆圈是');
|
|
|
+ // console.log(data, '当前点击的圆圈是');
|
|
|
})
|
|
|
this.overlayList.push(circle);
|
|
|
// 添加水波纹效果的圆点
|
|
|
@@ -731,7 +859,7 @@ export default {
|
|
|
// 水波纹点击查看组织详情
|
|
|
rippleCircle.on('click', (e) => {
|
|
|
let data = e.target._opts.extData;
|
|
|
- console.log(data, '当前点击的水波纹是');
|
|
|
+ // console.log(data, '当前点击的水波纹是');
|
|
|
this.getInfoByGroupId(data);
|
|
|
})
|
|
|
this.map.add(rippleCircle);
|
|
|
@@ -859,10 +987,12 @@ export default {
|
|
|
|
|
|
/deep/ .el-select,
|
|
|
/deep/ .el-date-editor {
|
|
|
- width: 16rem;
|
|
|
+ width: 8.8vw;
|
|
|
+ font-size: 14px;
|
|
|
|
|
|
.el-input {
|
|
|
width: 100%;
|
|
|
+ font-size: 16px;
|
|
|
}
|
|
|
|
|
|
.el-input__inner {
|
|
|
@@ -963,14 +1093,61 @@ export default {
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ .el-carousel {
|
|
|
+ height: 19.8vh;
|
|
|
+ color: #ffffffcc;
|
|
|
+ font-size: 1.4rem;
|
|
|
+
|
|
|
+ /deep/ .el-carousel__container {
|
|
|
+ height: 100%;
|
|
|
+ padding: 0 36px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
+
|
|
|
+ .small {
|
|
|
+ line-height: 2rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ .charInfo {
|
|
|
+ width: 90%;
|
|
|
+ margin: 0 auto;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-around;
|
|
|
+ align-items: center;
|
|
|
+ height: calc(100% - 2rem);
|
|
|
+
|
|
|
+ .infoTitle {
|
|
|
+ font-size: 1.6rem;
|
|
|
+ writing-mode: vertical-rl;
|
|
|
+ color: #aaf0d2;
|
|
|
+ }
|
|
|
+
|
|
|
+ .detailInfo {
|
|
|
+ width: 40%;
|
|
|
+ height: 16vh;
|
|
|
+ box-sizing: border-box;
|
|
|
+ text-align: center;
|
|
|
+ background: url(../../../assets/images/newHome/all.png) top center no-repeat;
|
|
|
+ background-size: cover;
|
|
|
+
|
|
|
+ :first-child {
|
|
|
+ margin-top: 3rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ :last-child {
|
|
|
+ color: #fff;
|
|
|
+ font-size: 4rem;
|
|
|
+ font-weight: 400;
|
|
|
+ text-shadow: 0px 0px .4rem #FFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- .lineBox {
|
|
|
- right: 6.2vw;
|
|
|
- left: auto;
|
|
|
- }
|
|
|
|
|
|
.bottomBox {
|
|
|
top: 46.5vh;
|
|
|
@@ -1072,6 +1249,31 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .warningInfo {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ color: #ffffff;
|
|
|
+ margin-top: 1.85vh;
|
|
|
+ height: 11.39vh;
|
|
|
+ font-size: 1.4rem;
|
|
|
+
|
|
|
+ .infoContent {
|
|
|
+ width: 18.38vw;
|
|
|
+
|
|
|
+ .marginBtn {
|
|
|
+ margin-top: 2.3vh;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .infoDesc {
|
|
|
+ width: 13.5vw;
|
|
|
+
|
|
|
+ div {
|
|
|
+ width: 49%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1197,5 +1399,94 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .tipsBox {
|
|
|
+ position: absolute;
|
|
|
+ left: 6.2vw;
|
|
|
+ bottom: 8.9vh;
|
|
|
+ z-index: 201;
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ div {
|
|
|
+ width: 9vw;
|
|
|
+ height: 12vh;
|
|
|
+ background: url('../../../assets/images/newHome/warningTips.png') bottom center no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ text-align: center;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding-top: 3vh;
|
|
|
+
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ width: 100%;
|
|
|
+ color: #ffffffbf;
|
|
|
+ font-size: 1.4rem;
|
|
|
+ }
|
|
|
+
|
|
|
+ :first-child {
|
|
|
+ color: #ffffffbf;
|
|
|
+ font-size: 4rem;
|
|
|
+ text-shadow: 0 0 .4rem #FFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .lineBox,
|
|
|
+ .rightTips {
|
|
|
+ right: 6.2vw;
|
|
|
+ left: auto;
|
|
|
+ }
|
|
|
+
|
|
|
+ .warningBox {
|
|
|
+ position: absolute;
|
|
|
+ top: 8.4vh;
|
|
|
+ left: 50%;
|
|
|
+ z-index: 190;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ width: 18.8vw;
|
|
|
+ height: 3.7vh;
|
|
|
+ cursor: pointer;
|
|
|
+ color: #ffffff;
|
|
|
+ font-size: 1.4rem;
|
|
|
+ white-space: nowrap;
|
|
|
+ /* 禁止文本换行 */
|
|
|
+ overflow: hidden;
|
|
|
+ /* 隐藏溢出部分 */
|
|
|
+ background: url('../../../assets/images/newHome/warningDefault.png') bottom center no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+
|
|
|
+ &:hover {
|
|
|
+ background: url('../../../assets/images/newHome/warningHover.png') bottom center no-repeat;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ position: relative;
|
|
|
+ width: 80%;
|
|
|
+ margin: 0 auto;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+
|
|
|
+ .item {
|
|
|
+ display: inline-block;
|
|
|
+ /* 内联显示项目 */
|
|
|
+ white-space: nowrap;
|
|
|
+ /* 禁止项目换行 */
|
|
|
+ animation: scroll 20s linear infinite;
|
|
|
+ /* 使用名为 "scroll" 的动画,持续 10 秒,线性运动,无限循环 */
|
|
|
+ }
|
|
|
+
|
|
|
+ @keyframes scroll {
|
|
|
+ 0% {
|
|
|
+ transform: translateX(0);
|
|
|
+ /* 从初始位置开始 */
|
|
|
+ }
|
|
|
+
|
|
|
+ 100% {
|
|
|
+ transform: translateX(-100%);
|
|
|
+ /* 向左平移整个容器宽度 */
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|