Browse Source

天气接口集成,3月19日问题修改

master
juwei001 1 year ago
parent
commit
6ee3774fb7
  1. 36
      src/api/home.js
  2. 37
      src/components/screen-map-header/index.vue
  3. 8
      src/views/next/dialog-module/hsyf-left/partyCommittee/dangyuan.vue
  4. 4
      src/views/next/dialog-module/hsyf-left/partyCommittee/zirancun.vue
  5. 22
      src/views/next/layout/screen-header.vue
  6. 3
      src/views/next/screen-content-left/hsyf-left/index.vue
  7. 131
      src/views/next/screen-content-left/zdyf-left/index.vue
  8. 12
      src/views/next/screen-content-map/cpt/home-map.vue
  9. 117
      src/views/next/screen-content-map/cpt/zdyf-map.vue
  10. 82
      src/views/next/screen-content-right/home-right/index.vue
  11. 7
      src/views/next/screen-content-right/zdyf-right/index.vue

36
src/api/home.js

@ -0,0 +1,36 @@
import request from 'utils/request'
// 党组织数量
export function selectConfigList (params) {
return request({
url: '/api/resi/partymember/yifengScreen/selectConfigList',
method: 'GET',
params
})
}
// 天气
export function lookup (params) {
return request({
url: 'https://geoapi.qweather.com/v2/city/lookup?location=即墨&key=274d6db86c074fdfa52b8e294bbc42e0',
method: 'GET',
params
})
}
// 天气
export function nowTianqi (id) {
return request({
url: `https://devapi.qweather.com/v7/weather/3d?location=${id}&key=274d6db86c074fdfa52b8e294bbc42e0`,
method: 'GET'
// params
})
}
// 空气质量
export function nowKongqi (id) {
return request({
url: `https://devapi.qweather.com/v7/air/now?location=${id}&key=274d6db86c074fdfa52b8e294bbc42e0`,
method: 'GET'
// params
})
}

37
src/components/screen-map-header/index.vue

@ -4,8 +4,12 @@
<div class="item" v-for="(item, index) in data" :key="index">
<div class="name">{{ item.name }}</div>
<section>
<span :class="{ 'num': true, 'yellow': index === 4 }">{{ item.num }}</span>
<span :class="{'units':true, 'yellow': index === 4 }">{{item.units }}</span>
<span :class="{ num: true, yellow: index === 4 }">{{
item.num
}}</span>
<span :class="{ units: true, yellow: index === 4 }">{{
item.units
}}</span>
</section>
</div>
</div>
@ -14,21 +18,21 @@
<script>
export default {
data() {
return {
};
data () {
return {}
},
props:{
data:{
type:Array,
default:()=>[]
props: {
data: {
type: Array,
default: () => []
}
},
created() { },
created () {
},
methods: {},
components: {},
computed: {},
watch: {},
watch: {}
}
</script>
@ -47,26 +51,25 @@ export default {
.name {
font-size: 20px;
color: #ACBBD4;
color: #acbbd4;
}
.num {
font-family: lihei;
font-size: 26px;
color: #FFFFFF;
color: #ffffff;
font-style: italic;
text-shadow: 0 0 10px #fff;
}
.units {
font-size: 16px;
color: #869DB8;
color: #869db8;
margin-left: 5px;
}
.yellow {
color: #FFC486;
text-shadow: 0 0 10px #FFC486;
color: #ffc486;
text-shadow: 0 0 10px #ffc486;
}
}
}

8
src/views/next/dialog-module/hsyf-left/partyCommittee/dangyuan.vue

@ -183,10 +183,10 @@ export default {
data: [
// "20",
'18-30岁',
'30-40岁',
'40-50岁',
'50-60岁',
'60-70岁',
'31-40岁',
'41-50岁',
'51-60岁',
'61-70岁',
'70岁以上'
],
axisorgName: {

4
src/views/next/dialog-module/hsyf-left/partyCommittee/zirancun.vue

@ -61,7 +61,7 @@ export default {
name: '',
data () {
return {
dialogTitle: '移风店镇自然村党委班子成员',
dialogTitle: '移风店镇自然村党组织成员',
loading: false,
dataList: [
{
@ -2083,7 +2083,7 @@ export default {
color: #fbe9c5;
width: 640px;
&_item {
width: 25%;
width: 200px;
line-height: 48px;
padding-left: 24px;
border-bottom: 1px solid #bb7053;

22
src/views/next/layout/screen-header.vue

@ -22,16 +22,17 @@
</div>
</div>
<div class="right">
<span>多云</span>
<span>-1~7°C</span>
<span>北风3~4</span>
<span>PM2.5</span>
<span>{{ tqInfo.textDay }}</span>
<span>{{ tqInfo.tempMin }}-{{ tqInfo.tempMax }}</span>
<span>{{ tqInfo.windDirDay }} {{ tqInfo.windScaleDay }}</span>
<span>PM2.5: {{ tqInfo.pm2p5 }}</span>
</div>
</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
import { lookup, nowTianqi, nowKongqi } from "@/api/home.js";
export default {
name: "screen-header",
props: {
@ -46,9 +47,20 @@ export default {
showTime: "",
showYear: "",
showYearZh: "",
tqInfo: {},
};
},
created() {
lookup().then((res) => {
nowTianqi(res.location[0].id).then((res1) => {
this.tqInfo = res1.daily[0];
nowKongqi(res.location[0].id).then((res1) => {
// console.log('kongqi::', res1)
this.tqInfo.pm2p5 = res1.now.pm2p5;
console.log("this.tqInfo::", this.tqInfo);
});
});
});
const pollTime = async () => {
this.computeCurrentTime();
setTimeout(() => {
@ -65,7 +77,7 @@ export default {
set_nav: "SET_NAV",
}),
computeCurrentTime() {
let year = new Intl.DateTimeFormat("zh-CN-u-ca-chinese", {
const year = new Intl.DateTimeFormat("zh-CN-u-ca-chinese", {
dateStyle: "full",
}).format(new Date());
this.showYearZh = "农历" + year.match(/年(.+)星期/)[1];

3
src/views/next/screen-content-left/hsyf-left/index.vue

@ -1230,7 +1230,7 @@ export default {
font-weight: 500;
font-size: 14px;
color: #fbe9c5;
line-height: 30px;
line-height: 29px;
border-bottom: 1px dashed #bb7053;
}
&-item:hover {
@ -1276,6 +1276,7 @@ export default {
}
&-bottom {
width: 428px;
margin-top: 8px;
}
}
}

131
src/views/next/screen-content-left/zdyf-left/index.vue

@ -1,23 +1,34 @@
<template>
<div>
<div class='card h292'>
<div class="card h292">
<screen-title>
<div slot="left" class="screen-title-left">领导关怀</div>
<div slot="right" class="screen-title-right" @click="set_ldhg(true)"><span>更多</span></div>
<div slot="left" class="screen-title-left">国家战略</div>
<div slot="right" class="screen-title-right" @click="set_ldhg(true)">
<span>更多</span>
</div>
</screen-title>
<div class="card-item-ldgh">
<div class="title">用中国种子保障中国粮食安全</div>
<img src="@/assets/images/index/banner.png" alt="">
<span>2022年4月10日习近平总书记在海南省三亚市崖州湾种子实验室考察调研时强调种子是我国粮食安全的关键只有用自己的手攥紧中国种子才能端稳中国饭碗才能实现粮食安全种源要做到自主可控种业科技要自立自强</span>
<img src="@/assets/images/index/banner.png" alt="" />
<span
>2022年4月10日习近平总书记在海南省三亚市崖州湾种子实验室考察调研时强调种子是我国粮食安全的关键只有用自己的手攥紧中国种子才能端稳中国饭碗才能实现粮食安全种源要做到自主可控种业科技要自立自强</span
>
</div>
</div>
<div class='card h292' style="margin-top: 8px;">
<div class="card h292" style="margin-top: 8px">
<screen-title>
<div slot="left" class="screen-title-left" @click="handelClickEmap" style="cursor: pointer;">移风优势</div>
<div
slot="left"
class="screen-title-left"
@click="handelClickEmap"
style="cursor: pointer"
>
移风优势
</div>
</screen-title>
<div class="card-item-yfys">
<div class="item">
<img src="@/assets/images/index/yfys1.png" alt="">
<img src="@/assets/images/index/yfys1.png" alt="" />
<div class="right">
<div class="top">战略优势</div>
<div class="center yellow"><span class="num">3</span> </div>
@ -25,7 +36,7 @@
</div>
</div>
<div class="item">
<img src="@/assets/images/index/yfys2.png" alt="">
<img src="@/assets/images/index/yfys2.png" alt="" />
<div class="right">
<div class="top">自然优势</div>
<div class="center green">北纬 <span class="num">36°</span></div>
@ -33,7 +44,7 @@
</div>
</div>
<div class="item">
<img src="@/assets/images/index/yfys3.png" alt="">
<img src="@/assets/images/index/yfys3.png" alt="" />
<div class="right">
<div class="top">区位优势</div>
<div class="center violet"><span class="num">1</span> 小时</div>
@ -41,7 +52,7 @@
</div>
</div>
<div class="item">
<img src="@/assets/images/index/yfys4.png" alt="">
<img src="@/assets/images/index/yfys4.png" alt="" />
<div class="right">
<div class="top">产业优势</div>
<div class="center blue"><span class="num">5.2</span> 亿元</div>
@ -50,23 +61,60 @@
</div>
</div>
</div>
<div class='card h292 m-top12'>
<div class="card h292 m-top12">
<screen-title>
<div slot="left" class="screen-title-left">移风成就</div>
<div slot="right" @click='set_yfcj(true)' class="screen-title-right"><span>发展历程</span></div>
<div slot="right" @click="set_yfcj(true)" class="screen-title-right">
<span>发展历程</span>
</div>
</screen-title>
<div class="card-item-yfcj">
<div class="card-item-yfcj-1" style="color: #7AFAFF; top: 10px; left: 15%">省级农业产业强镇</div>
<div class="card-item-yfcj-2" style="color: #FFE17A; top: 66px; left: 49px;">省级乡村振兴集中推进区</div>
<div class="card-item-yfcj-3" style="color: #FF5027; top: 20px; left: 59%;">省级现代农业产业园</div>
<div class="card-item-yfcj-4" style="color: #1FCD54; top:120px; left: 14%;">省级农业产业强镇</div>
<div class="card-item-yfcj-5" style="color: #FFFC27; top: 80px; left: 64%;">省数字乡村试点乡镇</div>
<div class="card-item-yfcj-6" style="color: #FF8F4C; top: 130px; left: 64%;">中国淘宝小镇
<div
class="card-item-yfcj-1"
style="color: #7afaff; top: 10px; left: 15%"
>
省级农业产业强镇
</div>
<div
class="card-item-yfcj-2"
style="color: #ffe17a; top: 66px; left: 49px"
>
省级乡村振兴集中推进区
</div>
<div
class="card-item-yfcj-3"
style="color: #ff5027; top: 20px; left: 59%"
>
省级现代农业产业园
</div>
<div
class="card-item-yfcj-4"
style="color: #1fcd54; top: 120px; left: 14%"
>
省级农业产业强镇
</div>
<div
class="card-item-yfcj-5"
style="color: #fffc27; top: 80px; left: 64%"
>
省数字乡村试点乡镇
</div>
<div class="card-item-yfcj-7" style="color: #cd8eee; top: 160px; left: 15%;">
<div
class="card-item-yfcj-6"
style="color: #ff8f4c; top: 130px; left: 64%"
>
中国淘宝小镇
</div>
<div
class="card-item-yfcj-7"
style="color: #cd8eee; top: 160px; left: 15%"
>
年产蔬菜约60万吨占全区总量的40%
</div>
<div class="card-item-yfcj-8" style="color: #50aeff; top: 170px; left: 60%;">
<div
class="card-item-yfcj-8"
style="color: #50aeff; top: 170px; left: 60%"
>
年产粮食10万吨占全区总量的25%
</div>
</div>
@ -75,26 +123,26 @@
</template>
<script>
import { mapActions } from 'vuex'
import { mapActions } from "vuex";
export default {
data() {
return {};
},
created() { },
created() {},
methods: {
...mapActions({
showGlobalDialog: 'showGlobalDialog',
set_yfcj: 'SET_YFCJ',
set_ldhg: 'SET_LDGH'
showGlobalDialog: "showGlobalDialog",
set_yfcj: "SET_YFCJ",
set_ldhg: "SET_LDGH",
}),
handelClickEmap(){
this.$EventBus.$emit('switcMapType', 'Emap')
}
handelClickEmap() {
this.$EventBus.$emit("switcMapType", "Emap");
},
},
components: {},
computed: {},
watch: {},
}
};
</script>
<style lang="scss" scoped>
@ -110,7 +158,7 @@ export default {
@include flex(column);
justify-content: space-around;
position: relative;
.title{
.title {
position: absolute;
top: 54px;
font-family: FZZhengHeiS-B-GB;
@ -156,12 +204,11 @@ export default {
.num {
font-family: pangmenzhengdao;
font-size: 28px;
}
}
.bot {
color: #BCD0F0;
color: #bcd0f0;
font-size: 14px;
}
}
@ -172,7 +219,6 @@ export default {
margin-right: 10px;
}
}
}
&-item-yfcj {
@ -183,13 +229,13 @@ export default {
position: relative;
&::before {
content: '';
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url('~@/assets/images/index/yfcjBg.png') no-repeat 50% 50%;
background: url("~@/assets/images/index/yfcjBg.png") no-repeat 50% 50%;
animation: rotate 5s linear infinite;
z-index: -1;
}
@ -203,12 +249,12 @@ export default {
&-7,
&-8 {
position: absolute;
background: url('~@/assets/images/index/yfcjkuang.png') no-repeat 50% 50%;
background: url("~@/assets/images/index/yfcjkuang.png") no-repeat 50% 50%;
background-size: 100% 100%;
animation: zoomIn 2s infinite; /* 持续时间为 1 秒,缓动效果为 ease-in-out */
transform-origin: center center; /* 缩放的原点为元素的中心 */
&::after {
content: '·';
content: "·";
width: 8px;
height: 8px;
position: absolute;
@ -227,24 +273,23 @@ export default {
width: 150px;
text-indent: 2;
}
}
}
.yellow {
color: #FFDFA7;
color: #ffdfa7;
}
.green {
color: #25E3B6;
color: #25e3b6;
}
.violet {
color: #CA8AED;
color: #ca8aed;
}
.blue {
color: #D4E7FF;
color: #d4e7ff;
}
@keyframes rotate {

12
src/views/next/screen-content-map/cpt/home-map.vue

@ -1,6 +1,6 @@
<template>
<div style="width: 100%; height: 100%">
<div id="myMap" style="background-color: #f0f0f0;">
<div id="myMap" style="background-color: #f0f0f0">
<screen-map-header :data="headerList"></screen-map-header>
</div>
</div>
@ -10,6 +10,7 @@ import { Scene, PolygonLayer, LineLayer } from '@antv/l7'
import { GaodeMap } from '@antv/l7-maps'
import yifengJson from './yifeng.json'
import chinaMap from './chinaMap.vue'
import { selectConfigList } from '@/api/home'
import { mapActions } from 'vuex'
let myMap
let scene
@ -88,6 +89,15 @@ export default {
},
methods: {
init () {
selectConfigList({ type: 1 }).then((res) => {
this.headerList = this.headerList.map((item) => {
const data = res.data.filter(i => i.name == item.name)
return {
...item,
num: data[0].value
}
})
})
if (!yifengJson) return false
myMap = new GaodeMap({
pitch: 40.24716321414439,

117
src/views/next/screen-content-map/cpt/zdyf-map.vue

@ -170,7 +170,7 @@ export default {
showLabel: false,
center: [120.220563, 36.496127],
token: 'fc14b42e0ca18387866d68ebd4f150c1',
zoom: 7,
zoom: 15,
isHotspot: false,
showIndoorMap: false,
showBuildingBlock: false,
@ -186,7 +186,8 @@ export default {
})
scene.on('loaded', () => {
if (!type) {
this.initCircle()
// this.initCircle()
this.initPolygonLayer(type)
} else if (type == 'unit') {
this.initDot(point)
this.initPolygonLayer()
@ -202,16 +203,15 @@ export default {
},
initCircle () {
circleLayerSmall = new ImageLayer({})
circleLayerSmall.source(
'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/yifeng/2024-02-03/circle.png',
{
// circleLayerSmall.source(`${process.env.VUE_APP_MAP_IMG}/circle1.png`, {
// circleLayerSmall.source(
// 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/yifeng/2024-02-03/circle.png',
// {
circleLayerSmall.source(`${process.env.VUE_APP_MAP_IMG}/circle1.png`, {
parser: {
type: 'image',
extent: [121.0819, 35.8908, 119.2372, 37.2278]
}
}
)
})
scene.addLayer(circleLayerSmall)
const data = jdbandaoJson
//
@ -221,14 +221,14 @@ export default {
.size(300)
.source(data)
.color('name', ['rgba(0, 127, 241, .5)'])
.shape('extrude')
// .shape("fill")
// .shape('extrude')
.shape('fill')
.style({
opacityLinear: {
enable: true, // true - false
dir: 'out' // in - out
},
opacity: 0.8,
opacity: 1,
heightfixed: true,
sourceColor: '#4ee8fc',
targetColor: '#00284e'
@ -247,10 +247,10 @@ export default {
}
scene.setZoom(10)
roadLayer = new ImageLayer({})
roadLayer.source(
'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/yifeng/2024-02-03/road.png',
{
// roadLayer.source(`${process.env.VUE_APP_MAP_IMG}/road1.png`, {
// roadLayer.source(
// 'https://elink-esua-epdc.oss-cn-qingdao.aliyuncs.com/epmet/yifeng/2024-02-03/road.png',
// {
roadLayer.source(`${process.env.VUE_APP_MAP_IMG}/road1.png`, {
parser: {
type: 'image',
extent: [119.7829, 36.7398, 120.5205, 36.2552]
@ -273,7 +273,7 @@ export default {
if (polygonLayer) {
scene.removeLayer(polygonLayer)
}
scene.setZoom(10)
scene.setZoom(15)
roadLayer = new ImageLayer({})
roadLayer.source('/images/map/flow.png', {
parser: {
@ -301,32 +301,55 @@ export default {
const { darkStyle } = this
const styleConfig = darkStyle
const data = yifengJson
const data1 = jdbandaoJson
//
polygonLayer = new PolygonLayer({
autoFit: true
})
.source(data1)
.color('name', ['rgba(0, 127, 241, .5)'])
.shape('fill')
.style({
// opacityLinear: {
// enable: true, // true - false
// dir: 'out' // in - out
// },
opacity: 0.6,
// heightfixed: true,
sourceColor: '#4ee8fc',
targetColor: '#00284e'
})
scene.addLayer(polygonLayer)
polygonLayer = new PolygonLayer({
autoFit: true
})
.size(300)
.source(data)
.color(
'name',
type == 'resource'
? styleConfig.polygonColor
: ['rgba(0, 127, 241, .5)']
)
.color('name', ['#3372d0'])
.shape('extrude')
// .shape("fill")
// .shape('fill')
.style({
opacityLinear: {
enable: true, // true - false
dir: 'out' // in - out
},
opacity: 0.8,
opacity: 1,
heightfixed: true,
sourceColor: '#4ee8fc',
sourceColor: '#3372d0',
targetColor: '#00284e'
})
scene.addLayer(polygonLayer)
polygonLayer.on('mousemove', (e) => {
// console.log(e);
// if (e.feature.properties.content) {
// const popup = new Popup({
// offsets: [0, -0],
// closeButton: false
// })
// scene.addPopup(popup)
// }?
})
//
lineLayer = new LineLayer({
zIndex: 2,
@ -347,28 +370,30 @@ export default {
})
scene.addLayer(lineLayer)
textLayer = new PolygonLayer({
zIndex: 20
})
.source(data)
.color('name', styleConfig.textColor)
.shape('name', 'text')
.size(14)
.style({
textAnchor: 'center', // center|left|right|top|bottom|top-left
textOffset: [0, 40], // [, ]
spacing: 2, //
padding: [2, 2], // padding []
stroke: styleConfig.textStrokeColor, //
strokeWidth: 0.1, //
strokeOpacity: 0.8,
raisingHeight: 300,
textAllowOverlap: true
})
.active(true)
scene.addLayer(textLayer)
// textLayer = new PolygonLayer({
// zIndex: 20
// })
// .source(data)
// .color('name', styleConfig.textColor)
// .shape('name', 'text')
// .size(14)
// .style({
// textAnchor: 'center', // center|left|right|top|bottom|top-left
// textOffset: [0, 40], // [, ]
// spacing: 2, //
// padding: [2, 2], // padding []
// stroke: styleConfig.textStrokeColor, //
// strokeWidth: 0.1, //
// strokeOpacity: 0.8,
// raisingHeight: 300,
// textAllowOverlap: true
// })
// .active(true)
// scene.addLayer(textLayer)
const _this = this
polygonLayer.on('click', (e) => {})
polygonLayer.on('click', (e) => {
e
})
},
initDot (data) {
scene.addImage('dotBto', require('@/assets/images/map/dot.png'))

82
src/views/next/screen-content-right/home-right/index.vue

@ -61,75 +61,75 @@
<script>
export default {
data() {
data () {
return {
weatherList: [
{
units: "雨量",
img: require("@/assets/images/weather/yu.png"),
value: "20~30mm",
units: '雨量',
img: require('@/assets/images/weather/yu.png'),
value: '20~30mm'
},
{
units: "光照",
img: require("@/assets/images/weather/gz.png"),
value: "18.8lux",
units: '光照',
img: require('@/assets/images/weather/gz.png'),
value: '18.8lux'
},
{
units: "土壤温度",
img: require("@/assets/images/weather/trwd.png"),
value: "15~21°C",
units: '土壤温度',
img: require('@/assets/images/weather/trwd.png'),
value: '15~21°C'
},
{
units: "土壤湿度",
img: require("@/assets/images/weather/trsd.png"),
value: "52°C",
},
units: '土壤湿度',
img: require('@/assets/images/weather/trsd.png'),
value: '52°C'
}
],
videoStatus: "",
videoUrl: process.env.VUE_APP_VIDEO_URL + "1.mp4",
videoStatus: '',
videoUrl: process.env.VUE_APP_VIDEO_URL + '1.mp4',
cultureList: [
{
imgSrc: require("@/assets/images/resource/whyf/1.jpg"),
title: "大欧鸟笼制作技艺",
imgSrc: require('@/assets/images/resource/whyf/1.jpg'),
title: '大欧鸟笼制作技艺'
},
{
imgSrc: require("@/assets/images/resource/whyf/2.jpg"),
title: "虎头鞋虎头帽",
imgSrc: require('@/assets/images/resource/whyf/2.jpg'),
title: '虎头鞋虎头帽'
},
{
imgSrc: require("@/assets/images/resource/whyf/3.jpg"),
title: "金吉友拳法",
imgSrc: require('@/assets/images/resource/whyf/3.jpg'),
title: '金吉友拳法'
},
{
imgSrc: require("@/assets/images/resource/whyf/4.jpg"),
title: "张院簸箕制作技艺",
imgSrc: require('@/assets/images/resource/whyf/4.jpg'),
title: '张院簸箕制作技艺'
},
{
imgSrc: require("@/assets/images/resource/whyf/5.jpg"),
title: "毛子埠升制作技艺",
imgSrc: require('@/assets/images/resource/whyf/5.jpg'),
title: '毛子埠升制作技艺'
},
{
imgSrc: require("@/assets/images/resource/whyf/6.jpg"),
title: "上铂金银器打造工艺",
},
],
};
imgSrc: require('@/assets/images/resource/whyf/6.jpg'),
title: '上铂金银器打造工艺'
}
]
}
},
created() {},
mounted() {},
beforeDestroy() {},
created () {},
mounted () {},
beforeDestroy () {},
methods: {
handelVideoPlay() {
this.videoStatus = "play";
},
handelVideoPause() {
this.videoStatus = "pause";
handelVideoPlay () {
this.videoStatus = 'play'
},
handelVideoPause () {
this.videoStatus = 'pause'
}
},
components: {},
computed: {},
watch: {},
};
watch: {}
}
</script>
<style lang="scss" scoped>

7
src/views/next/screen-content-right/zdyf-right/index.vue

@ -258,15 +258,18 @@ export default {
width: 430px;
.left {
padding-top: 4px;
text-indent: 2em;
flex: 1;
padding-left: 3px;
box-sizing: border-box;
width: 217px;
overflow: hidden;
-webkit-line-clamp: 4;
height: 98px;
/* 显示的行数 */
display: -webkit-box;
-webkit-line-clamp: 4; /* 最多显示4行 */
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}

Loading…
Cancel
Save