FenXiNspUniapp/packDetail/pages/analysis/index.vue

1212 lines
28 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="container" ref="pageContainer">
<!-- <image src="../../static/sjfx.png" mode="" class="bgimg"></image> -->
<view class="pj">
<view class="pjtitle">
面源污染治理效果评价
</view>
<view class="ybecharts">
<image src="../../static/data_bg_img.png" mode=""></image>
<view class="ybechartstext">
{{pjnr}}
</view>
</view>
<view class="bot3">
<view class="bot3_left" v-for="(item,index) in pjlist.slice(0,3)" :key="index">
<view class="bfb">
{{item.detailValue}}
</view>
<view class="bfbname">
{{item.detailCode}}
</view>
</view>
</view>
</view>
<view class="qst">
<view class="qsttitle">
重要污染物趋势图
</view>
<view class="sxbox wrwCov">
<view class="leftsxbox">
<picker @change="bindPickerChange" :value="index" :range="stationNameList">
<view class="uni-input">{{stationNameList[index]}}
<image src="../../static/data_btn_sanjiao_xia.png"></image>
</view>
</picker>
</view>
<view class="rightsxbox">
<picker mode="date" :value="dateqs" :start="startDate" :end="endDate" @change="bindDateqsChange">
<view class="uni-input">{{dateqs}} <image src="../../static/data_btn_sanjiao_xia.png"></image></view>
</picker>
</view>
</view>
<!-- 年月日选择器 -->
<view class="uni-form-item uni-column">
<radio-group class="radio-group" @change="radioChange">
<label class="radio-label" v-for="(item, index) in timList" :key="item.value" :class="{ 'checked': current === index }">
<radio :value="item.value" :checked="index === current" class="radio-item" color="#0f6efe" />
<view class="radio-text">{{item.name}}</view>
</label>
</radio-group>
</view>
<view class="qstcontent" id="chartContainer" ref="chartContainer">
<!-- 有数据时显示图表 -->
<qiun-data-charts
:key="chartKey"
v-if="hasChartData && chartData.series && chartData.series.length > 0"
type="line"
:opts="opts"
:chartData="chartData"
:enableScroll="true"
:ontouch="true"
canvas2d
@finished="onChartFinished"
/>
<!-- 无数据时显示占位 -->
<view v-else class="empty-chart">
<text class="empty-text">暂无数据</text>
</view>
</view>
</view>
<view class="znyj">
<view class="znyj_top">
<view class="znyjtop_left">
智能预警
</view>
<view class="znyjtop_right">
预警次数 <span class="numbers">{{cutMoneyFiter(total) || 0}}</span>次
</view>
</view>
<view class="sxbox">
<view class="leftsxbox">
<picker @change="bindPickerChange1" :value="index1" :range="deviceNameList">
<view class="uni-input1">{{deviceNameList[index1]}}
<image src="../../static/data_btn_sanjiao_xia.png"></image>
</view>
</picker>
</view>
<view class="rightsxbox">
<picker mode="date" fields="year" :value="date" :start="startDate" :end="endDate"
@change="bindDateChange">
<view class="uni-input2">{{date}}
<image src="../../static/data_btn_sanjiao_xia.png"></image>
</view>
</picker>
</view>
</view>
<view style="width: 100%;height: 12rpx;border-bottom: 2rpx solid #f6f8f8;"></view>
<view class="list_item_bot">
<scroll-view style="height: 530rpx;" scroll-y="true" class="scroll-Y" @scrolltolower="lower">
<view class="lists_item" v-for="(item,index) in list" :key="index">
<view class="litCovv">
<text class="yujTit">{{item.fullDeviceName?item.fullDeviceName:''}}</text>
<view class="yujTwo">
<text class="yujxiangm">{{item.alertContent[0].name?item.alertContent[0].name:''}}</text>
<text class="yujdanw">{{item.alertContent[0].val}}{{item.alertContent[0].unit}}</text>
<text class="yujiTime">{{item.datetime}}</text>
</view>
</view>
</view>
<view class="load">
<uni-load-more :status="loadStatus"></uni-load-more>
</view>
</scroll-view>
</view>
</view>
<view class="pagebot">
</view>
</view>
</template>
<script>
import uniEcCanvas from '../../components/uni-ec-canvas/uni-ec-canvas.vue'
import * as echarts from '../../components/uni-ec-canvas/echarts.js'
export default {
components: {
uniEcCanvas,
},
data() {
const currentDate = this.getDate({
format: true
})
return {
height: 0,
scorllheight: 0,
zt: '',
date: new Date().getFullYear().toString(),
// ===== 趋势图相关数据 =====
stationNameList: [], // 站点名称列表(用于趋势图选择器)
stationList: [], // 站点完整列表 [{label, value: stationCode}]
index: 0, // 趋势图选中的站点索引
stationCode: '', // 当前选中的站点编码(趋势图接口参数)
// ===== 预警相关数据 =====
deviceNameList: ['全部监测设备'], // 设备名称列表(用于预警选择器)
deviceList: [{ // 设备完整列表 [{label, value: deployId}]
label: '全部监测设备',
value: ''
}],
index1: 0, // 预警选中的设备索引
deployId: '', // 当前选中的设备部署ID预警接口参数
list: [],
tabList: ['站点名称', '告警指标', '指标值', '告警时间'],
pjlist: [],
chartData: {
categories: [],
series: []
},
opts: {
color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
padding: [15,10,0,15],
dataLabel: false,
dataPointShape: false,
enableScroll: false,
legend: {},
xAxis: {
disabled: false,
gridType: 'dash',
dashLength: 2,
},
yAxis: {
gridType: "dash",
dashLength: 2,
data: [
{
min: 0,
max: 150
}
]
},
extra: {
line: {
type: "curve",
width: 2,
activeType: "hollow",
linearType: "custom",
onShadow: true,
animation: "horizontal"
}
}
},
pjnr: '',
pageNo: 1,
pageSize: 9,
allNum: '',
isLastpage: '',
intervalId: null,
loadStatus: 'more',
isLoadMore: false,
show: false,
show1: false,
top: 0,
total: 0,
yearStr: null,
timList: [{
value: 'yearMonth',
name: '年'
},
{
value: 'monthDays',
name: '月'
},
{
value: 'dayhours',
name: '日'
},
],
current: 0,
dateqs: new Date().getFullYear().toString(),
datetwo: currentDate,
riqinumber: 'yearMonth',
startDate: '2000-01-01',
endDate: '2030-12-31',
// 新增:加载状态和数据状态
isLoadingTrend: false,
hasChartData: false,
chartKey: 0,
isChartRendered: false,
}
},
onLoad() {
uni.getSystemInfo({
success: res => {
var pxToRpxScale = 750 / res.windowWidth
var ktxStatusHeight = res.statusBarHeight * pxToRpxScale
var navigationHeight = 44 * pxToRpxScale
this.height = res.windowHeight * pxToRpxScale
this.scorllheight = this.height
}
});
this.index = 0
this.index1 = 0
this.getpj()
this.getStationList() // 获取站点列表(趋势图用)
this.getDeviceList() // 获取设备列表(预警用)
this.getyjList()
},
// 页面显示时重置滚动
onShow() {
this.$nextTick(() => {
this.resetAllScroll()
})
},
methods: {
// 格式化数字
cutMoneyFiter(val) {
if (!val && val !== 0) return 0
return val
},
// ===== 获取站点列表(趋势图专用) =====
getStationList() {
this.stationNameList = []
this.stationList = []
this.$http.get('/applet/survStationInfo/list').then(res => {
const data = res.data.data || []
for (var i = 0; i < data.length; i++) {
this.stationList.push({
label: data[i].stationName,
value: data[i].stationCode // 站点编码
})
this.stationNameList.push(data[i].stationName)
}
// 站点数据加载完成后,获取趋势数据
if (this.stationList.length > 0) {
this.stationCode = this.stationList[0]?.value || ''
this.$nextTick(() => {
this.qushicov()
})
}
}).catch(err => {
console.log('获取站点列表失败', err)
})
},
// ===== 获取设备列表(预警专用) =====
getDeviceList() {
this.deviceNameList = ['全部监测设备']
this.deviceList = [{
label: '全部监测设备',
value: ''
}]
this.$http.get('/applet/survDeviceDeploy/survDeviceList').then(res => {
const data = res.data.data || []
for (var i = 0; i < data.length; i++) {
this.deviceList.push({
label: data[i].fullDeviceName,
value: data[i].id // 设备部署ID
})
this.deviceNameList.push(data[i].fullDeviceName)
}
}).catch(err => {
console.log('获取设备列表失败', err)
})
},
// ===== 获取预警列表 =====
getyjList() {
let params = {}
params.pageNo = this.pageNo
params.pageSize = this.pageSize
params.deployId = this.deployId // 使用设备部署ID
params.yearStr = this.yearStr
uni.showLoading({
title: '加载中'
});
this.list = []
this.$http.get('/applet/wxclient/alertRecord', {
params: params
}).then(res => {
if (res.data.code == 0) {
var data = res.data.data.records
for (var i = 0; i < data.length; i++) {
data[i].times = data[i].alertTime.replace(" ", ":").replace(/\:/g, "-").split("-");
data[i].nian = data[i].times[0];
data[i].yue = data[i].times[1] - 1;
data[i].ri = data[i].times[2];
data[i].shi = data[i].times[3];
data[i].fen = data[i].times[4];
data[i].miao = data[i].times[5];
data[i].datetime = data[i].yue + '-' + data[i].ri + ' ' + data[i].shi + ':' + data[i].fen
if (data[i].alertContent && data[i].alertContent.indexOf('监测数据名称:') != -1) {
data[i].alertContent = data[i].alertContent.replace('监测数据名称:', '')
}
if (typeof data[i].alertContent === 'string') {
data[i].alertContent = [{
name: '告警',
val: data[i].alertContent,
unit: ''
}]
}
}
this.list = this.list.concat(data)
this.total = res.data.data.total
if (res.data.data.total != 0) {
this.allNum = Number(res.data.data.total) / Number(this.pageSize) + '';
if (this.allNum.indexOf('.') == -1) {
this.allNum = this.allNum;
} else {
this.allNum = parseInt(Number(this.allNum) + 1);
}
if (this.pageNo == this.allNum) {
this.isLastpage = true;
this.loadStatus = 'nomore'
} else {
this.isLastpage = false;
this.loadStatus = 'more'
}
} else {
this.isLastpage = true;
this.loadStatus = 'nomore'
}
}
uni.hideLoading();
this.isRefresher = false
}).catch(err => {
uni.hideLoading();
console.log('获取预警列表失败', err)
})
},
// ===== 分页加载 =====
lower() {
if (this.isLastpage) {
return
}
clearInterval(this.intervalId);
var num = 1;
this.intervalId = setInterval(() => {
num = num + 1;
}, 1000)
this.pageNo = this.pageNo + 1;
let params = {}
params.pageNo = this.pageNo
params.pageSize = this.pageSize
params.deployId = this.deployId // 使用设备部署ID
params.yearStr = this.yearStr
this.$http.get('/applet/wxclient/alertRecord', {
params: params
}).then(res => {
if (res.data.code == 0) {
var data = res.data.data.records
for (var i = 0; i < data.length; i++) {
data[i].times = data[i].alertTime.replace(" ", ":").replace(/\:/g, "-").split("-");
data[i].nian = data[i].times[0];
data[i].yue = data[i].times[1] - 1;
data[i].ri = data[i].times[2];
data[i].shi = data[i].times[3];
data[i].fen = data[i].times[4];
data[i].miao = data[i].times[5];
data[i].datetime = data[i].yue + '-' + data[i].ri + ' ' + data[i].shi + ':' + data[i].fen
if (data[i].alertContent && data[i].alertContent.indexOf('监测数据名称:') != -1) {
data[i].alertContent = data[i].alertContent.replace('监测数据名称:', '')
}
if (typeof data[i].alertContent === 'string') {
data[i].alertContent = [{
name: '告警',
val: data[i].alertContent,
unit: ''
}]
}
}
this.list = this.list.concat(data)
if (res.data.data.total != 0) {
if (this.pageNo == this.allNum) {
this.isLastpage = true;
this.loadStatus = 'nomore'
} else {
this.isLastpage = false;
this.loadStatus = 'more'
}
} else {
this.isLastpage = true;
this.loadStatus = 'nomore'
}
}
}).catch(err => {
console.log('加载更多预警失败', err)
})
},
// ===== 获取评价 =====
getpj() {
this.$http.post('/applet/wxclient/displayInfo?infoType=' + 'effect_assess').then(res => {
let data = res.data.data.effect_assess.detailList
this.pjlist = data
for (var i = 0; i < data.length; i++) {
if (data[i].detailCode == '综合评价') {
this.pjnr = data[i].detailValue
}
}
}).catch(err => {
console.log('获取评价失败', err)
})
},
// ===== 选择年月日 =====
radioChange(e) {
this.riqinumber = e.detail.value
this.timList.forEach((item, index) => {
if (item.value === e.detail.value) {
this.current = index
}
})
let currentDate = new Date()
let year = currentDate.getFullYear()
let month = String(currentDate.getMonth() + 1).padStart(2, '0')
let day = String(currentDate.getDate()).padStart(2, '0')
if (this.riqinumber === 'yearMonth') {
this.dateqs = String(year)
} else if (this.riqinumber === 'monthDays') {
this.dateqs = year + '-' + month
} else {
this.dateqs = year + '-' + month + '-' + day
}
this.qushicov()
},
// ===== 趋势时间选择 =====
bindDateqsChange(e) {
let selectedDate = e.detail.value
if (this.riqinumber === 'yearMonth') {
this.dateqs = selectedDate.slice(0, 4)
} else if (this.riqinumber === 'monthDays') {
this.dateqs = selectedDate.slice(0, 7)
} else {
this.dateqs = selectedDate
}
this.qushicov()
},
// ===== 图表渲染完成回调 =====
onChartFinished() {
this.isChartRendered = true
this.$nextTick(() => {
this.resetAllScroll()
})
},
// ===== 重置所有滚动位置 =====
resetAllScroll() {
// 1. 重置页面滚动
uni.pageScrollTo({
scrollTop: 0,
duration: 0
})
// 2. H5 环境下直接操作 DOM
// #ifdef H5
setTimeout(() => {
// 重置页面滚动
window.scrollTo(0, 0)
// 重置所有可滚动容器
const scrollableElements = document.querySelectorAll('.scroll-view, .qstcontent, .container, .qiun-data-charts')
scrollableElements.forEach(el => {
if (el.scrollTop !== undefined && el.scrollTop !== 0) {
el.scrollTop = 0
}
if (el.scrollLeft !== undefined && el.scrollLeft !== 0) {
el.scrollLeft = 0
}
})
// 重置图表内部的 canvas 滚动
const chartContainer = document.querySelector('.qstcontent .qiun-data-charts')
if (chartContainer) {
chartContainer.scrollLeft = 0
chartContainer.scrollTop = 0
// 重置 canvas 父容器
const canvasWrapper = chartContainer.querySelector('.qiun-charts')
if (canvasWrapper) {
canvasWrapper.scrollLeft = 0
canvasWrapper.scrollTop = 0
}
// 重置 canvas 本身
const canvas = chartContainer.querySelector('canvas')
if (canvas && canvas.parentElement) {
canvas.parentElement.scrollLeft = 0
canvas.parentElement.scrollTop = 0
}
}
}, 150)
// #endif
// 3. 小程序环境下使用 API
// #ifdef MP-WEIXIN
setTimeout(() => {
const query = uni.createSelectorQuery().in(this)
query.select('#chartContainer').boundingClientRect()
query.exec((res) => {
if (res && res[0]) {
// 尝试滚动到容器顶部
uni.pageScrollTo({
scrollTop: 0,
duration: 0
})
}
})
}, 150)
// #endif
},
// ===== 趋势接口 =====
qushicov() {
if (this.isLoadingTrend) return
// 确保有站点编码
if (!this.stationCode) {
if (this.stationList.length > 0) {
this.stationCode = this.stationList[0].value
} else {
console.log('等待站点数据加载...')
setTimeout(() => {
if (this.stationList.length > 0) {
this.stationCode = this.stationList[0].value
this.qushicov()
}
}, 1000)
return
}
}
if (!this.dateqs) {
this.dateqs = new Date().getFullYear().toString()
}
this.isLoadingTrend = true
let data = {
summrayMode: this.riqinumber || 'yearMonth',
startTime: this.dateqs,
stationCode: this.stationCode, // 站点编码
}
console.log('请求趋势数据参数:', data)
// 清空数据
this.chartData = {
categories: [],
series: []
}
this.hasChartData = false
this.$http.post('/applet/survDeviceDeploy/waterIntegrateStatistic', data)
.then(iem => {
let lynum = iem.data.data
console.log('趋势数据返回:', lynum)
if (!lynum || !lynum.tableHead || !lynum.tableData2 || lynum.tableHead.length === 0) {
console.log('趋势数据为空')
this.chartData = {
categories: [],
series: []
}
this.hasChartData = false
this.chartKey = Date.now()
return
}
this.processChartData(lynum)
this.hasChartData = true
// 数据加载完成后更新 key强制重新渲染图表
this.chartKey = Date.now()
// 重置滚动
this.$nextTick(() => {
this.resetAllScroll()
})
})
.catch(err => {
console.log('趋势数据请求失败', err)
this.chartData = {
categories: [],
series: []
}
this.hasChartData = false
this.chartKey = Date.now()
})
.finally(() => {
this.isLoadingTrend = false
})
},
// ===== 处理图表数据 =====
processChartData(lynum) {
let categories = []
let displayCategories = []
let series = []
let allValues = []
categories = lynum.tableIndex || []
if (categories.length > 0) {
const middle = Math.floor(categories.length / 2)
displayCategories = categories.map((item, index) => {
if (index === 0 || index === middle || index === categories.length - 1) {
return item
}
return ''
})
}
lynum.tableHead.forEach((header, index) => {
const seriesData = (lynum.tableData2 || []).map(row => {
const value = row[index] === "0" ? 0 : parseFloat(row[index]) || 0
allValues.push(value)
return value
})
series.push({
name: header.eleDesc || header.name || '指标',
data: seriesData
})
})
if (allValues.length > 0) {
const maxValue = Math.max(...allValues)
const minValue = Math.min(...allValues)
const padding = (maxValue - minValue) * 0.1 || 10
const yAxisMax = maxValue + padding
const yAxisMin = Math.max(0, minValue - padding)
this.opts = {
...this.opts,
yAxis: {
gridType: "dash",
dashLength: 2,
data: [
{
min: yAxisMin,
max: yAxisMax || 100
}
]
}
}
}
this.chartData = {
categories: displayCategories,
series: series
}
console.log('图表数据更新:', this.chartData)
},
// ===== 折线图切换站点 =====
bindPickerChange: function(e) {
this.index = e.detail.value
if (this.stationList[this.index]) {
this.stationCode = this.stationList[this.index].value
this.qushicov()
}
},
// ===== 预警切换设备 =====
bindPickerChange1: function(e) {
this.index1 = e.detail.value
if (this.deviceList[this.index1]) {
this.deployId = this.deviceList[this.index1].value // 设备部署ID
}
this.pageNo = 1
this.getyjList()
},
// ===== 预警切换日期 =====
bindDateChange: function(e) {
this.yearStr = e.detail.value
this.date = e.detail.value
this.pageNo = 1
this.getyjList()
},
getDate(type) {
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
if (type === 'start') {
year = year - 10;
} else if (type === 'end') {
year = year + 10;
}
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
}
}
}
</script>
<style lang="scss">
page {
background-color: #0f6efe;
}
.container {
padding: 0 32rpx;
box-sizing: border-box;
overflow-y: scroll;
overflow-x: hidden;
}
.bgimg {
width: 100%;
height: 2022rpx;
}
.pj {
background: #FFFFFF;
border-radius: 34rpx;
padding: 41rpx 31rpx 33rpx;
}
.pjtitle {
font-size: 32rpx;
font-family: Source Han Sans SC;
font-weight: bold;
color: #2F3841;
margin-bottom: 31rpx;
}
.ybecharts {
width: 100%;
height: 279rpx;
margin-bottom: 38rpx;
display: flex;
justify-content: center;
position: relative;
}
.ybecharts image {
width: 90%;
height: 100%;
}
.ybechartstext {
color: #2DC37B;
font-size: 60rpx;
position: absolute;
bottom: 13rpx;
left: 50%;
transform: translateX(-50%);
}
.bot3 {
width: 100%;
display: flex;
justify-content: space-between;
}
.bot3_left {
border-right: 2rpx solid #E6E9EF;
display: flex;
flex-direction: column;
align-items: center;
width: 33%;
}
.bot3_left:last-child {
border: none;
}
.bfb {
font-size: 42rpx;
font-family: DIN Next LT Pro;
font-weight: 500;
color: #184C9A;
}
.bfbname {
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 400;
color: #9CA9BE
}
.qst {
background: #FFFFFF;
border-radius: 34rpx;
padding-top: 43rpx;
padding-bottom: 34rpx;
margin-top: 26rpx;
}
.qsttitle {
font-size: 32rpx;
font-family: Source Han Sans SC;
font-weight: bold;
color: #2F3841;
padding-left: 33rpx;
}
.qstcontent {
height: 400rpx;
width: 98%;
padding-left: 20rpx;
position: relative;
overflow: hidden;
}
.uni-ec-canvas {
width: 100%;
height: 500rpx;
}
.search {
height: 72rpx;
padding: 0 32rpx 0;
margin-top: 32rpx;
}
.wrwCov{
width: 94%!important;
margin: 0 auto;
margin-top: 20rpx;
}
.uni-input {
width: 100%;
height: 72rpx;
font-size: 28rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #667482;
background: #F6F6F6;
border-radius: 16rpx;
display: flex;
justify-content: space-between;
align-items: center;
padding: 22rpx 25rpx;
}
.uni-input image {
width: 44rpx;
height: 44rpx;
}
.znyj {
padding: 43rpx 31rpx 43rpx 32rpx;
background: #FFFFFF;
border-radius: 34rpx;
margin-top: 26rpx;
}
.znyj_top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 32rpx;
}
.znyjtop_left {
font-size: 32rpx;
font-family: Source Han Sans SC;
font-weight: bold;
color: #2F3841;
}
.znyjtop_right {
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #B3C1D1;
}
.numbers {
font-size: 34rpx;
font-family: DIN Next LT Pro;
font-weight: 500;
color: #FF4343;
margin-left: 9rpx;
margin-right: 11rpx;
}
.sxbox {
width: 100%;
display: flex;
justify-content: space-between;
}
.leftsxbox {
width: 60%;
}
.rightsxbox {
width: 35%;
}
.uni-input1 {
width: 100%;
height: 72rpx;
background: #F6F6F6;
border-radius: 16rpx;
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #667482;
padding: 22rpx 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.uni-input1 image {
width: 44rpx;
height: 44rpx;
}
.uni-input2 {
width: 100%;
height: 72rpx;
background: #F6F6F6;
border-radius: 16rpx;
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #667482;
padding: 22rpx 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.uni-input2 image {
width: 44rpx;
height: 44rpx;
}
.scrolltop {
padding: 34rpx 0rpx 16rpx 0rpx;
display: flex;
justify-content: space-between;
border-bottom: 2rpx solid #F6F8FB;
}
.tabitem {
font-size: 26rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #2F3841;
display: inline-block;
padding-bottom: 26rpx;
}
.tabitem:first-child {
width: 31%;
}
.tabitem:nth-child(2) {
width: 27%;
}
.tabitem:nth-child(3) {
width: 19%;
}
.tabitem:nth-child(4) {
flex: 1
}
.scroll-Y {
box-sizing: border-box;
}
.lists_item {
padding-top: 35rpx;
box-sizing: border-box;
.litCovv{
width: 100%;
height: 120rpx;
border-radius: 16rpx;
background-color: #f6f6f6;
overflow: hidden;
.yujTit{
display: block;
margin-left: 2%;
margin-top: 10rpx;
font-size: 28rpx;
color: #333;
margin-bottom: 10rpx;
font-weight: 500;
}
.yujTwo{
width: 96%;
height: 60rpx;
line-height: 60rpx;
margin-left: 2%;
overflow: hidden;
.yujxiangm{
display: inline-block;
padding: 6rpx 10rpx;
background-color: #22BB8A;
height: 30rpx;
line-height: 30rpx;
color: #fff;
font-size: 24rpx;
border-radius: 10rpx;
}
.yujdanw{
height: 50rpx;
line-height: 50rpx;
color:#FF4242;
font-size: 28rpx;
margin-left: 3%;
}
.yujiTime{
font-size: 16rpx;
color: #999;
float: right;
height: 50rpx;
line-height: 50rpx;
font-size: 24rpx;
}
}
}
}
.jczbs {
width: 32%;
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 400;
color: #667482;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.zbz {
width: 27%;
font-size: 24rpx;
font-family: DIN Next LT Pro;
font-weight: 400;
padding-right: 10rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.sbsj {
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 400;
color: #667482;
flex: 1;
}
.szqss {
width: 24rpx;
}
.zbzs {
width: 19%;
font-size: 24rpx;
font-family: DIN Next LT Pro;
font-weight: 400;
padding-right: 10rpx;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.load {
text-align: center;
color: #c6c6c6;
}
.pagebot {
height: 100rpx;
}
// 选择年月日
.radio-group {
display: flex;
justify-content: space-around;
border-radius: 20rpx;
padding: 8rpx;
.radio-label {
display: flex;
align-items: center;
padding: 12rpx 24rpx;
border-radius: 16rpx;
transition: all 0.3s ease;
flex: 1;
justify-content: center;
margin: 0 4rpx;
&:active {
background: rgba(15, 110, 254, 0.1);
}
&.checked {
background: #0f6efe;
.radio-text {
color: #ffffff;
font-weight: 600;
}
}
.radio-item {
transform: scale(0.8);
margin-right: 8rpx;
&[checked] {
color: #ffffff;
}
}
.radio-text {
font-size: 24rpx;
font-family: Source Han Sans SC;
font-weight: 500;
color: #667482;
transition: color 0.3s ease;
white-space: nowrap;
}
}
}
.qstim{
width: 40%;
display: block;
margin: 0 auto;
margin-top: 20rpx;
}
.qstim image {
width: 44rpx;
height: 44rpx;
}
// 空状态样式
.empty-chart {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #f8f9fc;
border-radius: 16rpx;
.empty-text {
font-size: 28rpx;
color: #999;
font-family: Source Han Sans SC;
}
}
// 重置图表滚动
.qstcontent {
.qiun-data-charts {
overflow: hidden !important;
.qiun-charts {
overflow: hidden !important;
}
canvas {
overflow: hidden !important;
}
}
}
</style>