2024-11-11 14:40:40 +08:00
|
|
|
<!--
|
|
|
|
|
* @Author: SunTao 328867980@qq.com
|
|
|
|
|
* @Date: 2024-10-18 10:25:29
|
|
|
|
|
* @LastEditors: SunTao 328867980@qq.com
|
2024-11-14 17:43:24 +08:00
|
|
|
* @LastEditTime: 2024-11-14 16:16:56
|
2024-11-11 14:40:40 +08:00
|
|
|
* @FilePath: \znxjxt-ui\src\views\big-screen\disease-components\work-order.vue
|
|
|
|
|
* @Description: 总览大屏-巡查里程
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<div class="content">
|
|
|
|
|
<div class="patrol-div">
|
2024-11-13 15:37:25 +08:00
|
|
|
<div class="value">
|
2024-11-14 17:43:24 +08:00
|
|
|
<span @click="showDetail">{{ formatNumber(patrolObject.len) }}</span
|
2024-11-13 15:37:25 +08:00
|
|
|
>km
|
|
|
|
|
</div>
|
2024-11-11 14:40:40 +08:00
|
|
|
</div>
|
|
|
|
|
<div class="patrol-div">
|
2024-11-13 15:37:25 +08:00
|
|
|
<div class="value">
|
2024-11-14 17:43:24 +08:00
|
|
|
<span @click="showDetail">{{ formatTime(patrolObject.time) }}</span
|
2024-11-13 15:37:25 +08:00
|
|
|
>h
|
|
|
|
|
</div>
|
2024-11-11 14:40:40 +08:00
|
|
|
</div>
|
2024-11-14 17:43:24 +08:00
|
|
|
<!-- 巡查里程弹窗 -->
|
|
|
|
|
<el-dialog
|
|
|
|
|
title="巡查里程总览"
|
|
|
|
|
:visible.sync="showDialogVisible"
|
|
|
|
|
width="50rem"
|
|
|
|
|
append-to-body
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
destroy-on-close
|
|
|
|
|
@close="screenCancel"
|
|
|
|
|
>
|
|
|
|
|
<div class="patrol-content">
|
|
|
|
|
<el-select
|
|
|
|
|
:popper-append-to-body="false"
|
|
|
|
|
v-model="companySelect"
|
|
|
|
|
placeholder="请选择分公司"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in companyList"
|
|
|
|
|
:key="item.value"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
<div ref="patrolChart" class="dialog-div"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
2024-11-11 14:40:40 +08:00
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2024-11-14 17:43:24 +08:00
|
|
|
import * as echarts from "echarts";
|
2024-11-13 15:37:25 +08:00
|
|
|
import { getMileage } from "@/api/xj/screen/disease-screen";
|
2024-11-11 14:40:40 +08:00
|
|
|
export default {
|
|
|
|
|
name: "PatrolOrder",
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
// 累计里程数据
|
2024-11-13 15:37:25 +08:00
|
|
|
patrolObject: {},
|
2024-11-14 17:43:24 +08:00
|
|
|
// 弹窗显隐控制
|
|
|
|
|
showDialogVisible: false,
|
|
|
|
|
// 公司选择绑定
|
|
|
|
|
companySelect: "",
|
|
|
|
|
// 公司下拉绑定
|
|
|
|
|
companyList: [],
|
2024-11-11 14:40:40 +08:00
|
|
|
};
|
|
|
|
|
},
|
2024-11-13 15:37:25 +08:00
|
|
|
created() {
|
|
|
|
|
this.getData();
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
/* 获取巡查里程数据 */
|
|
|
|
|
getData() {
|
|
|
|
|
getMileage().then(({ code, data }) => {
|
|
|
|
|
if (code === 200) {
|
|
|
|
|
this.patrolObject = data;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 累计里程修改 */
|
|
|
|
|
formatNumber(num) {
|
|
|
|
|
if (num >= 100000000) {
|
|
|
|
|
// 超过1亿显示 x.xx亿
|
|
|
|
|
return (num / 100000000).toFixed(2) + "亿";
|
|
|
|
|
} else if (num >= 10000) {
|
|
|
|
|
// 超过1万显示 x.xx万
|
|
|
|
|
return (num / 10000).toFixed(2) + "万";
|
|
|
|
|
} else {
|
|
|
|
|
// 小于1万直接返回原数字
|
|
|
|
|
return num;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 累计时长修改 */
|
2024-11-14 17:43:24 +08:00
|
|
|
formatTime(num) {
|
2024-11-13 15:37:25 +08:00
|
|
|
if (num >= 100000000) {
|
|
|
|
|
// 超过1亿显示 x.xx亿
|
|
|
|
|
return (num / 100000000).toFixed(2) + "亿";
|
|
|
|
|
} else if (num >= 10000) {
|
|
|
|
|
// 超过1万显示 x.xx万
|
|
|
|
|
return (num / 10000).toFixed(2) + "万";
|
|
|
|
|
} else {
|
|
|
|
|
// 小于1万直接返回原数字
|
|
|
|
|
return num;
|
|
|
|
|
}
|
2024-11-14 17:43:24 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 打开弹窗方法 */
|
|
|
|
|
showDetail() {
|
|
|
|
|
this.showDialogVisible = true;
|
|
|
|
|
this.getChartData();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 请求弹窗数据 */
|
|
|
|
|
getChartData() {
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.drawChart();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 绘制echart图 */
|
|
|
|
|
drawChart() {
|
|
|
|
|
if (this.$refs.patrolChart) {
|
|
|
|
|
const chart = echarts.init(this.$refs.patrolChart);
|
|
|
|
|
chart.setOption({
|
|
|
|
|
color: [
|
|
|
|
|
{
|
|
|
|
|
type: "linear",
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
x2: 0,
|
|
|
|
|
y2: 1,
|
|
|
|
|
colorStops: [
|
|
|
|
|
{ offset: 0, color: "#8DF2FF" }, // 0% 处的颜色
|
|
|
|
|
{ offset: 1, color: "#82B3FD" }, // 100% 处的颜色
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: "linear",
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
x2: 0,
|
|
|
|
|
y2: 1,
|
|
|
|
|
colorStops: [
|
|
|
|
|
{ offset: 0, color: "#8087FF" }, // 0% 处的颜色
|
|
|
|
|
{ offset: 1, color: "#532EFF" }, // 100% 处的颜色
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: "linear",
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
x2: 0,
|
|
|
|
|
y2: 1,
|
|
|
|
|
colorStops: [
|
|
|
|
|
{ offset: 0, color: "#FFB3B3" }, // 0% 处的颜色
|
|
|
|
|
{ offset: 1, color: "#FF2E2E" }, // 100% 处的颜色
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: "linear",
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
x2: 0,
|
|
|
|
|
y2: 1,
|
|
|
|
|
colorStops: [
|
|
|
|
|
{ offset: 0, color: "#F7DA15" }, // 0% 处的颜色
|
|
|
|
|
{ offset: 1, color: "#FCC105" }, // 100% 处的颜色
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
title: {
|
|
|
|
|
text: "",
|
|
|
|
|
},
|
|
|
|
|
tooltip: {
|
|
|
|
|
trigger: "axis",
|
|
|
|
|
show: true,
|
|
|
|
|
confine: false,
|
|
|
|
|
backgroundColor: "rgba(9, 24, 48, 0.5)",
|
|
|
|
|
borderColor: "rgba(75, 253, 238, 0.4)",
|
|
|
|
|
textStyle: {
|
|
|
|
|
fontSize: 12,
|
|
|
|
|
color: "#ffffff",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
grid: {
|
|
|
|
|
left: "3%",
|
|
|
|
|
right: "0%",
|
|
|
|
|
bottom: "10%",
|
|
|
|
|
containLabel: true,
|
|
|
|
|
},
|
|
|
|
|
legend: {
|
|
|
|
|
orient: "horizontal",
|
|
|
|
|
left: "right",
|
|
|
|
|
textStyle: {
|
|
|
|
|
color: "#fff",
|
|
|
|
|
},
|
|
|
|
|
itemWidth: 8,
|
|
|
|
|
itemHeight: 8,
|
|
|
|
|
},
|
|
|
|
|
xAxis: {
|
|
|
|
|
type: "category",
|
|
|
|
|
axisLabel: {
|
|
|
|
|
interval: 0,
|
|
|
|
|
color: "#fff",
|
|
|
|
|
formatter: (params) => {
|
|
|
|
|
if (params.length > 4) {
|
|
|
|
|
return `${params.slice(0, 4)}...`;
|
|
|
|
|
}
|
|
|
|
|
return params;
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
axisTick: {
|
|
|
|
|
show: false,
|
|
|
|
|
},
|
|
|
|
|
axisLine: {
|
|
|
|
|
show: false,
|
|
|
|
|
},
|
|
|
|
|
data: ["dsds", "4ds", "5454", "sff"],
|
|
|
|
|
},
|
|
|
|
|
yAxis: {
|
|
|
|
|
type: "value",
|
|
|
|
|
axisLabel: {
|
|
|
|
|
color: "rgba(255,255,255,0.65)",
|
|
|
|
|
},
|
|
|
|
|
splitLine: {
|
|
|
|
|
lineStyle: {
|
|
|
|
|
color: "rgba(255,255,255,0.2)",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
name: "单位:个",
|
|
|
|
|
nameTextStyle: {
|
|
|
|
|
color: "rgba(255,255,255,0.65)",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
series: [
|
|
|
|
|
{
|
|
|
|
|
barWidth: 10,
|
|
|
|
|
name: "巡查里程",
|
|
|
|
|
type: "bar",
|
|
|
|
|
data: [10, 25, 23, 58],
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
barWidth: 10,
|
|
|
|
|
name: "巡查时长",
|
|
|
|
|
type: "bar",
|
|
|
|
|
data: [10, 25, 23, 58],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
window.addEventListener("resize", () => {
|
|
|
|
|
chart.resize();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/* 弹窗关闭 */
|
|
|
|
|
screenCancel() {
|
|
|
|
|
this.showDialogVisible = false;
|
|
|
|
|
},
|
2024-11-13 15:37:25 +08:00
|
|
|
},
|
2024-11-11 14:40:40 +08:00
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.content {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
color: #ffffff;
|
2024-11-13 15:37:25 +08:00
|
|
|
background: url("~@/assets/screen/disease/patrol-order.png") no-repeat;
|
|
|
|
|
background-size: 90%;
|
|
|
|
|
background-position: 50%;
|
2024-11-11 14:40:40 +08:00
|
|
|
|
2024-11-13 15:37:25 +08:00
|
|
|
.patrol-div {
|
|
|
|
|
width: 50%;
|
2024-11-11 14:40:40 +08:00
|
|
|
height: 100%;
|
2024-11-13 15:37:25 +08:00
|
|
|
padding-left: 5rem;
|
|
|
|
|
padding-bottom: 1rem;
|
2024-11-11 14:40:40 +08:00
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
align-items: center;
|
2024-11-13 15:37:25 +08:00
|
|
|
justify-content: center;
|
|
|
|
|
font-size: 0.8rem;
|
2024-11-11 14:40:40 +08:00
|
|
|
|
2024-11-13 15:37:25 +08:00
|
|
|
.value {
|
|
|
|
|
span {
|
2024-11-14 17:43:24 +08:00
|
|
|
cursor: pointer;
|
2024-11-11 14:40:40 +08:00
|
|
|
font-family: "DouYu";
|
2024-11-13 15:37:25 +08:00
|
|
|
font-size: 1.4rem;
|
2024-11-11 14:40:40 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-14 17:43:24 +08:00
|
|
|
|
|
|
|
|
// 弹窗内容样式
|
|
|
|
|
.patrol-content {
|
|
|
|
|
height: 30rem;
|
|
|
|
|
padding: 0 2rem;
|
|
|
|
|
|
|
|
|
|
::v-deep .el-select {
|
|
|
|
|
width: 12rem;
|
|
|
|
|
|
|
|
|
|
.el-input .el-select__caret {
|
|
|
|
|
line-height: 1.5rem;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-input--medium .el-input__inner {
|
|
|
|
|
height: 1.5rem;
|
|
|
|
|
background-color: transparent;
|
|
|
|
|
color: #89c5e8;
|
|
|
|
|
border-color: #6991cd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select-dropdown {
|
|
|
|
|
background-color: #102649;
|
|
|
|
|
border-color: #08204f;
|
|
|
|
|
.el-scrollbar {
|
|
|
|
|
.el-select-dropdown__wrap {
|
|
|
|
|
.el-scrollbar__view {
|
|
|
|
|
.el-select-dropdown__item {
|
|
|
|
|
color: #aaabb8;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select-dropdown__item:hover {
|
|
|
|
|
background-color: #2b4c7e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select-dropdown__item.selected {
|
|
|
|
|
background-color: #2b4c7e;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select-dropdown__item.hover {
|
|
|
|
|
background-color: #2b4c7e;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-select-dropdown__list {
|
|
|
|
|
background-color: #102649;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dialog-div {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 修改弹窗样式 */
|
|
|
|
|
::v-deep .el-dialog__header {
|
|
|
|
|
padding: 10px;
|
|
|
|
|
background-color: #113463;
|
|
|
|
|
|
|
|
|
|
span,
|
|
|
|
|
i {
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__body {
|
|
|
|
|
padding: 0;
|
|
|
|
|
background-color: #113463;
|
|
|
|
|
}
|
2024-11-11 14:40:40 +08:00
|
|
|
</style>
|
|
|
|
|
|