280 lines
7.0 KiB
Vue
280 lines
7.0 KiB
Vue
<template>
|
||
<el-container>
|
||
<el-header>
|
||
<div class="left-panel">
|
||
<!-- <xtSelect
|
||
:apiObj="apiObjM"
|
||
:params="paramsM"
|
||
v-model="query.id"
|
||
style="width: 500px"
|
||
placeholder="选择测点"
|
||
>
|
||
<el-table-column label="测点名" prop="name"></el-table-column>
|
||
</xtSelect> -->
|
||
<el-input v-model="query.search" placeholder="输入测点名称" style="width: 200px; margin-right:6px" ></el-input>
|
||
<xtSelect
|
||
:apiObj="apiObjM2"
|
||
:params="paramsM2"
|
||
v-model="query.mgroup"
|
||
style="width: 300px; padding-left: 2px;"
|
||
@change="handleQuery"
|
||
placeholder="选择工段"
|
||
>
|
||
<el-table-column label="名称" prop="name"></el-table-column>
|
||
</xtSelect>
|
||
<el-button
|
||
type="primary"
|
||
icon="el-icon-search"
|
||
style="margin-left: 6px"
|
||
@click="handleQuery"
|
||
></el-button>
|
||
</div>
|
||
</el-header>
|
||
<el-main class="nopadding">
|
||
<el-container>
|
||
<el-aside style="width: 60%; float: right;">
|
||
<!-- 折线图组件 -->
|
||
<scTable
|
||
ref="table"
|
||
:apiObj="apiObjM"
|
||
:params="paramsM"
|
||
row-key="id"
|
||
stripe
|
||
:query="query"
|
||
highlightCurrentRow
|
||
@row-click="rowClick"
|
||
@dataChange="dataChange"
|
||
>
|
||
<el-table-column label="测点" prop="name" min-width="100"></el-table-column>
|
||
<el-table-column label="所属工段" prop="mgroup_name" min-width="100"></el-table-column>
|
||
<el-table-column label="当前时间" min-width="100">
|
||
<template #default="{row}">
|
||
{{ row.last_data.last_timex || ''}}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="当前值" min-width="100">
|
||
<template #default="{row}">
|
||
{{row.last_data.last_val != null ? Number(row.last_data.last_val).toFixed(2) : ''}}
|
||
</template>
|
||
</el-table-column>
|
||
</scTable>
|
||
</el-aside>
|
||
<el-main>
|
||
<scEcharts :option="chartOption" height="450px" />
|
||
<el-date-picker v-model="timeRange" type="datetimerange"
|
||
value-format="YYYY-MM-DD HH:mm:ss" range-separator="至"
|
||
start-placeholder="开始时间" end-placeholder="结束时间" @change="handleQuery2"
|
||
style="width: 80%"
|
||
format="YYYY-MM-DD HH"
|
||
popper-class="tpc"/>
|
||
</el-main>
|
||
</el-container>
|
||
</el-main>
|
||
</el-container>
|
||
<!-- <el-dialog title="校正" v-model="visible">
|
||
<el-main style="padding: 0 20px 20px 20px">
|
||
<el-form
|
||
ref="dialogForm"
|
||
:model="form"
|
||
label-position="right"
|
||
label-width="80px"
|
||
style="padding: 0 10px"
|
||
>
|
||
<el-row>
|
||
<el-col :md="8" :sm="24">
|
||
<el-form-item label="所属部门">
|
||
<span>{{ form.belong_dept_name }}</span>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :md="8" :sm="24">
|
||
<el-form-item label="工段名称">
|
||
<span>{{ form.mgroup_name }}</span>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :md="8" :sm="24">
|
||
<el-form-item label="测点名">
|
||
<span>{{ form.mpoint_name }}</span>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :md="8" :sm="24">
|
||
<el-form-item label="时间范围">
|
||
<span>{{ form.year_s }}/{{ form.month_s }}/{{ form.day_s }}</span>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :md="8" :sm="24">
|
||
<el-form-item label="校正值">
|
||
<el-input-number
|
||
v-model="form.val_correct"
|
||
:min="0"
|
||
controls-position="right"
|
||
></el-input-number>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-form>
|
||
</el-main>
|
||
<el-footer>
|
||
<el-button type="primary" :loading="isSaveing" @click="submit"
|
||
>保存</el-button
|
||
>
|
||
<el-button @click="visible = false">取消</el-button>
|
||
</el-footer>
|
||
</el-dialog> -->
|
||
</template>
|
||
<script>
|
||
|
||
export default {
|
||
name: "sflog",
|
||
data() {
|
||
return {
|
||
apiObjX: this.$API.enm.mplogx.list,
|
||
paramsX: {page: 0, timex__gte: null, timex__lte: null, mpoint: null},
|
||
apiObjM: this.$API.enm.mpoint.list,
|
||
paramsM: {material__isnull: 0},
|
||
apiObjM2: this.$API.mtm.mgroup.list,
|
||
paramsM2: {page: 0},
|
||
mpointId: null,
|
||
rowId: null,
|
||
|
||
// apiObj: this.$API.enm.mpoint.stat,
|
||
// params: {
|
||
// type: "day",
|
||
// },
|
||
query: {
|
||
mpoint: null,
|
||
timex__gte: null,
|
||
timex__lte: null,
|
||
search: null,
|
||
},
|
||
chartOption: {
|
||
title: {
|
||
text: '趋势图'
|
||
},
|
||
color: ["#191970"],
|
||
tooltip: {
|
||
trigger: "axis",
|
||
axisPointer: {
|
||
type: "cross",
|
||
label: {
|
||
backgroundColor: "#6a7985",
|
||
},
|
||
},
|
||
},
|
||
legend: {
|
||
icon: "stack",
|
||
top: 5,
|
||
right: 5,
|
||
data: [],
|
||
},
|
||
grid: {
|
||
left: "2%",
|
||
right: "4%",
|
||
bottom: "5%",
|
||
containLabel: true,
|
||
},
|
||
xAxis: {
|
||
name: "",
|
||
type: "category",
|
||
axisLabel: {
|
||
rotate: 45,
|
||
fontSize: 10,
|
||
},
|
||
data: [],
|
||
|
||
},
|
||
yAxis: {
|
||
name: "",
|
||
type: "value",
|
||
|
||
},
|
||
series: [],
|
||
},
|
||
form: {
|
||
id: "",
|
||
val_correct: "",
|
||
},
|
||
visible: false,
|
||
timeRange: [],
|
||
tableData1:[],
|
||
mplogxList: [],
|
||
};
|
||
},
|
||
mounted() {
|
||
},
|
||
methods: {
|
||
rowClick(row) {
|
||
let that = this;
|
||
that.rowId = row.id;
|
||
console.log('row--id', row.id);
|
||
that.$API.enm.mplogx.req({ page: 1, mpoint: row.id }).then((res) => {
|
||
that.tableData1 = res;
|
||
}
|
||
).then(() => {
|
||
this.drawP(that.tableData1.results);
|
||
});
|
||
this.timeRange = [];
|
||
},
|
||
drawP(tableData) {
|
||
let that = this;
|
||
console.log('tableData', tableData);
|
||
|
||
let option = { ...that.chartOption };
|
||
// 获取 x 轴的数据,如果query.type为小时,则显示小时,如果为天则显示天,如果为月则显示月
|
||
option.xAxis.data = tableData.map((item, index) => item.timex);
|
||
|
||
// 获取 y 轴的数据
|
||
option.series = [
|
||
{
|
||
name:"",
|
||
type: 'line', // 折线图类型
|
||
data: tableData.length > 0 ? tableData.map((item) => parseFloat(item.val_float)) : [], // 将字符串转为数字
|
||
smooth: true, // 平滑曲线
|
||
}
|
||
];
|
||
option.legend.data = [""];
|
||
// 更新图表选项
|
||
that.chartOption = option;
|
||
},
|
||
handleQuery2(){
|
||
console.log(this.rowId, "rowId");
|
||
if (this.rowId==null) {
|
||
alert("请先选择一行数据");
|
||
return;
|
||
}
|
||
if (this.timeRange && this.timeRange.length > 0) {
|
||
this.query.timex__gte = this.timeRange[0]
|
||
this.query.timex__lte = this.timeRange[1]
|
||
} else {
|
||
this.query.timex__gte = null
|
||
this.query.timex__lte = null
|
||
}
|
||
this.$API.enm.mplogx.req({page:0, mpoint: this.rowId, timex__gte: this.query.timex__gte, timex__lte: this.query.timex__lte }).then((res) => {
|
||
this.tableData1 = res;
|
||
}
|
||
).then(() => {
|
||
console.log('tableData2', this.tableData1);
|
||
this.drawP(this.tableData1);
|
||
});
|
||
},
|
||
handleQuery() {
|
||
this.$refs.table.queryData(this.query);
|
||
},
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped>
|
||
.searchBtn {
|
||
margin-left: 5px;
|
||
}
|
||
</style>
|
||
|
||
<style>
|
||
.tpc .el-time-spinner__wrapper {
|
||
width:100% !important;
|
||
}
|
||
.tpc .el-scrollbar:nth-of-type(2) {
|
||
display: none !important;
|
||
}
|
||
</style>
|