Compare commits

...

3 Commits
jishan ... main

Author SHA1 Message Date
978184212@qq.com e0f1ae8b5b 统计趋势图修改 2026-08-25 10:20:48 +08:00
wgx ceccf58955 1 2026-08-24 17:01:45 +08:00
wgx cdfecd905a 1 2026-08-24 17:01:07 +08:00
5 changed files with 686 additions and 381 deletions

26
.gitignore vendored
View File

@ -1,2 +1,24 @@
/unpackage/
/.idea/
.DS_Store
node_modules
/dist
/unpackage
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -43,9 +43,10 @@ http.interceptor.request((config, cancel) => { /* 请求之前拦截器 */
config.header = {
...config.header,
// 'X-Access-Token':getTokenStorage()
'app-id':uni.getAccountInfoSync().miniProgram.appId,
"client-type":"MA",
'third-session':uni.getStorageSync('third_session')
'app-id' : uni.getAccountInfoSync().miniProgram.appId,
"client-type" : "MA",
'third-session' : uni.getStorageSync('third_session'),
'X-Tenant-Id' : '1001'
}
/*
if (!token) { // 如果token不存在调用cancel 会取消本次请求但是该函数的catch() 仍会执行

File diff suppressed because one or more lines are too long

View File

@ -40,7 +40,7 @@
</picker>
</view>
</view>
<!-- 在template部分找到年月日选择器部分修改为以下代码 -->
<!-- 年月日选择器 -->
<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">
@ -128,8 +128,8 @@
zt: '',
date: new Date().getFullYear(),
array: [],
index: '',
index1: '',
index: 0, // 0
index1: 0,
array1: [],
arrays: [],
list: [],
@ -144,9 +144,8 @@
enableScroll: false,
legend: {},
xAxis: {
disabled: false, // X
// itemCount
gridType: 'dash', //
disabled: false,
gridType: 'dash',
dashLength: 2,
},
yAxis: {
@ -176,8 +175,8 @@
allNum: '',
isLastpage: '',
intervalId: null,
loadStatus: 'more', //more-loading-nomore-
isLoadMore: false, //
loadStatus: 'more',
isLoadMore: false,
show: false,
show1: false,
top: 0,
@ -185,7 +184,7 @@
yearStr: null,
stationName1: '',
stationCode1: null,
stationCode: '',
stationCode: '', //
arrays1: [],
zxtdata: [],
timList: [{
@ -203,9 +202,11 @@
},
],
current: 0,
dateqs:new Date().getFullYear(),
datetwo:currentDate,
riqinumber:'yearMonth',
dateqs: new Date().getFullYear().toString(), //
datetwo: currentDate,
riqinumber: 'yearMonth',
startDate: '', //
endDate: '', //
}
},
onLoad() {
@ -214,20 +215,27 @@
var pxToRpxScale = 750 / res.windowWidth
var ktxStatusHeight = res.statusBarHeight * pxToRpxScale
var navigationHeight = 44 * pxToRpxScale
this.height = res.windowHeight * pxToRpxScale //px rpx
this.height = res.windowHeight * pxToRpxScale
this.scorllheight = this.height
}
});
this.index = 0
this.index1 = 0
//
const currentYear = new Date().getFullYear();
this.startDate = `${currentYear - 10}-01-01`;
this.endDate = `${currentYear + 10}-12-31`;
//
this.getpj()
//
this.importWyw()
//
this.getazsurvMulchRecord()
//
this.getyjList()
// this.gettj()
this.qushicov()
},
methods: {
//
importWyw() {
this.array = []
this.arrays = []
@ -236,48 +244,63 @@
value: ''
}]
this.$http.get('/applet/survStationInfo/list').then(res => {
for (var i = 0; i < res.data.data.length; i++) {
const dataList = res.data.data || []
for (var i = 0; i < dataList.length; i++) {
this.arrays.push({
label: res.data.data[i].stationName,
value: res.data.data[i].stationCode
label: dataList[i].stationName,
value: dataList[i].stationCode
})
this.arrays1.push({
label: res.data.data[i].stationName,
value: res.data.data[i].stationCode
label: dataList[i].stationName,
value: dataList[i].stationCode
})
this.array.push(res.data.data[i].stationName)
this.array.push(dataList[i].stationName)
}
//
if (this.array.length > 0) {
this.stationCode = this.arrays[0].value
//
this.qushicov()
} else {
console.warn('没有获取到站点数据')
}
}).catch(err => {
console.error('获取站点列表失败:', err)
})
},
//
//
getazsurvMulchRecord() {
this.arrays = []
this.array1 = ['全部监测设备', ]
this.array1 = ['全部监测设备']
this.arrays1 = [{
label: '全部监测设备',
value: ''
}]
this.$http.get('/applet/survDeviceDeploy/survDeviceList').then(res => {
for (var i = 0; i < res.data.data.length; i++) {
const dataList = res.data.data || []
for (var i = 0; i < dataList.length; i++) {
this.arrays.push({
label: res.data.data[i].fullDeviceName,
value: res.data.data[i].id
label: dataList[i].fullDeviceName,
value: dataList[i].id
})
this.arrays1.push({
label: res.data.data[i].fullDeviceName,
value: res.data.data[i].id
label: dataList[i].fullDeviceName,
value: dataList[i].id
})
this.array1.push(res.data.data[i].fullDeviceName)
this.array1.push(dataList[i].fullDeviceName)
}
}).catch(err => {
console.error('获取设备列表失败:', err)
})
},
//
getyjList() {
let params = {}
params.pageNo = this.pageNo
params.pageSize = this.pageSize
params.deployId = this.stationCode1
params.yearStr = this.yearStr
let params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
deployId: this.stationCode1,
yearStr: this.yearStr
}
uni.showLoading({
title: '加载中'
});
@ -286,7 +309,7 @@
params: params
}).then(res => {
if (res.data.code == 0) {
var data = res.data.data.records
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];
@ -295,16 +318,15 @@
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.indexOf('监测数据名称:') != -1) {
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('监测数据名称:', '')
}
}
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) + '';
this.total = res.data.data.total || 0
if (this.total != 0) {
this.allNum = Number(this.total) / Number(this.pageSize) + '';
if (this.allNum.indexOf('.') == -1) {
this.allNum = this.allNum;
} else {
@ -315,7 +337,6 @@
this.loadStatus = 'nomore'
} else {
this.isLastpage = false;
// this.isLoadMore=true
this.loadStatus = 'more'
}
} else {
@ -325,11 +346,13 @@
}
uni.hideLoading();
this.isRefresher = false
}).catch(err => {
uni.hideLoading();
console.error('获取预警列表失败:', err)
})
},
//
lower() {
//
if (this.isLastpage) {
return
}
@ -339,16 +362,17 @@
num = num + 1;
}, 1000)
this.pageNo = this.pageNo + 1;
let params = {}
params.pageNo = this.pageNo
params.pageSize = this.pageSize
params.deployId = this.stationCode1
params.yearStr = this.yearStr
let params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
deployId: this.stationCode1,
yearStr: this.yearStr
}
this.$http.get('/applet/wxclient/alertRecord', {
params: params
}).then(res => {
if (res.data.code == 0) {
var data = res.data.data.records
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];
@ -357,20 +381,18 @@
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.indexOf('监测数据名称:') != -1) {
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('监测数据名称:', '')
}
}
this.list = this.list.concat(data)
if (res.data.data.total != 0) {
if (this.total != 0) {
if (this.pageNo == this.allNum) {
this.isLastpage = true;
this.loadStatus = 'nomore'
} else {
this.isLastpage = false;
// this.isLoadMore=true
this.loadStatus = 'more'
}
} else {
@ -378,38 +400,35 @@
this.loadStatus = 'nomore'
}
}
}).catch(err => {
console.error('加载更多失败:', err)
})
},
//
getpj() {
this.$http.post('/applet/wxclient/displayInfo?infoType=' + 'effect_assess').then(res => {
let data = res.data.data.effect_assess.detailList
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.error('获取评价数据失败:', err)
})
},
//
radioChange(e){
radioChange(e) {
this.riqinumber = e.detail.value
this.bindDateqsChange(this.datetwo,'twotime')
this.current = this.timList.findIndex(item => item.value === e.detail.value)
//
this.qushicov()
},
//
bindDateqsChange(e,tiem) {
if (tiem=='twotime') {
let selectedDate = e
if (this.riqinumber === 'monthDays') {
this.dateqs = selectedDate.slice(0, 7); // YYYY-MM
} else if (this.riqinumber === 'yearMonth') {
this.dateqs = selectedDate.slice(0, 4); // YYYY
} else {
this.dateqs = selectedDate; // YYYY-MM-DD
}
} else {
//
bindDateqsChange(e) {
let selectedDate = e.detail.value;
//
if (this.riqinumber === 'monthDays') {
this.dateqs = selectedDate.slice(0, 7); // YYYY-MM
} else if (this.riqinumber === 'yearMonth') {
@ -417,38 +436,46 @@
} else {
this.dateqs = selectedDate; // YYYY-MM-DD
}
}
//
this.qushicov();
},
//
qushicov() {
//
if (!this.stationCode) {
console.warn('站点编码为空,无法获取趋势数据')
return
}
let data = {
summrayMode: this.riqinumber,
startTime: this.dateqs,
stationCode:this.stationCode,
stationCode: this.stationCode,
}
uni.showLoading({
title: '加载趋势数据...'
});
this.$http.post('/applet/survDeviceDeploy/waterIntegrateStatistic', data).then(iem => {
let lynum = iem.data.data
setTimeout(() => {
let categories = [];
let displayCategories = []; // X
let displayCategories = [];
let series = [];
let allValues = []; //
let allValues = [];
if (lynum.tableHead && lynum.tableHead.length > 0) {
categories = lynum.tableIndex;
categories = lynum.tableIndex || [];
// X
if (categories.length > 0) {
const first = categories[0];
const middle = categories[Math.floor(categories.length / 2)];
const last = categories[categories.length - 3];
const last = categories[categories.length - 1];
// categories
displayCategories = categories.map((item, index) => {
if (index === 0 || index === Math.floor(categories.length / 2) || index === categories.length - 2) {
if (index === 0 || index === Math.floor(categories.length / 2) || index === categories.length - 1) {
return item;
}
return '';
@ -458,26 +485,24 @@
lynum.tableHead.forEach((header, index) => {
const seriesData = lynum.tableData2.map(row => {
const value = row[index] === "0" ? 0 : parseFloat(row[index]) || 0;
allValues.push(value); //
allValues.push(value);
return value;
});
series.push({
name: header.eleDesc,
name: header.eleDesc || header,
data: seriesData
});
});
// Y
if (allValues.length > 0) {
const maxValue = Math.max(...allValues);
const minValue = Math.min(...allValues);
//
const padding = maxValue * 0.1; // 10%
const padding = maxValue * 0.1;
const yAxisMax = maxValue + padding;
const yAxisMin = Math.max(0, minValue - padding); // 0
const yAxisMin = Math.max(0, minValue - padding);
// optsyAxis
this.opts = {
...this.opts,
yAxis: {
@ -492,212 +517,23 @@
}
};
}
}
let res = {
categories: displayCategories, // 使
categories: displayCategories,
series: series
};
this.chartData = JSON.parse(JSON.stringify(res));
uni.hideLoading();
}, 500);
}).catch(err => {
uni.hideLoading();
console.error('获取趋势数据失败:', err)
//
uni.showToast({
title: '获取趋势数据失败',
icon: 'none'
})
},
// 线
gettj() {
if (!this.stationCode) {
this.stationCode = 'S_1'
}
this.$http.post('/applet/wxclient/getPplutionSummry?stationCode=' + this.stationCode).then(res => {
this.zxtdata = res.data.data[0]
this.ec.option.legend.data = ['总磷', '总氮', '硝态氮']
this.ec.option.color = ['#19D58A', '#FFC53B', '#3BA0FF']
this.ec.option.series = [{
name: '总磷',
type: 'line',
stack: 'Total1',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(25, 213, 138, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.TPSummry
},
{
name: '总氮',
type: 'line',
stack: 'Total2',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(255, 197, 59, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.TNSummry
},
{
name: '硝态氮',
type: 'line',
stack: 'Total3',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(59, 160, 255, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.NOSummry
},
]
if (this.array[this.index].indexOf('畜禽') != -1) {
this.ec.option.legend.data = ['总磷', '总氮', 'COD', '氨氮']
this.ec.option.color = ['#19D58A', '#FFC53B', '#3BA0FF', '#FF3B3B']
this.ec.option.series = [{
name: '总磷',
type: 'line',
stack: 'Total1',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(25, 213, 138, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.TPSummry
},
{
name: '总氮',
type: 'line',
stack: 'Total2',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(255, 197, 59, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.TNSummry
},
{
name: 'COD',
type: 'line',
stack: 'Total3',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(59, 160, 255, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.CODSummry
},
{
name: '氨氮',
type: 'line',
stack: 'Total4',
areaStyle: { //
color: {
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [{
offset: 0,
color: 'rgba(255, 59, 59, 1)' // 0%
}, {
offset: 1,
color: 'rgba(255, 255, 255, 1)' // 100%
}],
global: false // false
}
},
emphasis: {
focus: 'series'
},
data: this.zxtdata.NHSummry
},
]
}
})
},
// 线
@ -707,9 +543,10 @@
for (var i = 0; i < this.arrays.length; i++) {
if (this.stationName == this.arrays[i].label) {
this.stationCode = this.arrays[i].value
break
}
}
// this.gettj()
//
this.qushicov()
},
//
@ -719,6 +556,7 @@
for (var i = 0; i < this.arrays.length; i++) {
if (this.stationName1 == this.arrays1[i].label) {
this.stationCode1 = this.arrays1[i].value
break
}
}
if (this.stationName1 == '全部监测设备') {
@ -748,6 +586,11 @@
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
return `${year}-${month}-${day}`;
},
// 使
cutMoneyFiter(val) {
if (!val) return 0
return val
}
}
}
@ -755,12 +598,10 @@
<style lang="scss">
page {
// height: 100%;
background-color: #0f6efe;
}
.container {
// height: 100%;
padding: 0 32rpx;
box-sizing: border-box;
overflow-y: scroll;
@ -796,7 +637,6 @@
}
.ybecharts image {
// position: absolute;
width: 90%;
height: 100%;
}
@ -1009,21 +849,18 @@
.tabitem:first-child {
width: 31%;
// text-align: center
}
.tabitem:nth-child(2) {
width: 27%;
// text-align: center
}
.tabitem:nth-child(3) {
width: 19%;
// text-align: center
}
.tabitem:nth-child(4) {
flex: 1 // text-align: center
flex: 1
}
.scroll-Y {
@ -1083,10 +920,6 @@
}
}
// .lists_item:first-child {
// padding-top: 0;
// }
.jczbs {
width: 32%;
font-size: 24rpx;
@ -1096,7 +929,6 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
// text-align: center
}
.zbz {
@ -1108,7 +940,6 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
// text-align: center
}
.sbsj {
@ -1117,8 +948,6 @@
font-weight: 400;
color: #667482;
flex: 1;
// text-align: center
// text-align: right;
}
.szqss {
@ -1134,12 +963,9 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
// text-align: center
}
.load {
// height: 50rpx;
// line-height: 50rpx;
text-align: center;
color: #c6c6c6;
}
@ -1151,10 +977,8 @@
.radio-group {
display: flex;
justify-content: space-around;
// margin: 20rpx 32rpx 0;
border-radius: 20rpx;
padding: 8rpx;
// width: 60%;
.radio-label {
display: flex;
align-items: center;
@ -1169,7 +993,6 @@
background: rgba(15, 110, 254, 0.1);
}
//
&.checked {
background: #0f6efe;
@ -1183,7 +1006,6 @@
transform: scale(0.8);
margin-right: 8rpx;
//
&[checked] {
color: #ffffff;
}

2
package-lock.json generated
View File

@ -1,5 +1,5 @@
{
"name": "HJApplet",
"name": "FenXiNspUniapp",
"lockfileVersion": 2,
"requires": true,
"packages": {