From 373bb991da07b4084f7aed07831236bd6fdc0dd2 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期四, 04 六月 2026 15:59:47 +0800
Subject: [PATCH] 新疆马铃薯 1.环境检测展示字段修改 2.设备巡检查看附件字段和页面修改
---
src/views/inventoryManagement/environmentalMonitoring/index.vue | 218 ++++++++++++++++++++++++++---------------------------
src/views/equipmentManagement/inspectionManagement/components/viewFiles.vue | 6 -
2 files changed, 109 insertions(+), 115 deletions(-)
diff --git a/src/views/equipmentManagement/inspectionManagement/components/viewFiles.vue b/src/views/equipmentManagement/inspectionManagement/components/viewFiles.vue
index 444cdf4..3f07d92 100644
--- a/src/views/equipmentManagement/inspectionManagement/components/viewFiles.vue
+++ b/src/views/equipmentManagement/inspectionManagement/components/viewFiles.vue
@@ -3,9 +3,8 @@
<el-dialog title="鏌ョ湅闄勪欢"
v-model="dialogVisitable" width="800px" @close="cancel">
<div class="upload-container">
- <!-- 鐢熶骇寮傚父 -->
<div class="form-container">
- <div class="title">鐢熶骇寮傚父</div>
+ <div class="title">宸℃闄勪欢</div>
<!-- 鍥剧墖鍒楄〃 -->
<div style="display: flex; flex-wrap: wrap;">
@@ -148,8 +147,7 @@
// 鎵撳紑寮圭獥骞跺姞杞芥暟鎹�
const openDialog = async (row) => {
- // 浣跨敤 commonFileListBeforeDTO 鎴� commonFileListBeforeVO 瀛楁
- const fileList = row.commonFileListBeforeDTO || row.commonFileListBeforeVO || [];
+ const fileList = row.commonFileListVO || [];
const { images, videos } = processItems(fileList);
productionAbnormalImgs.value = images;
diff --git a/src/views/inventoryManagement/environmentalMonitoring/index.vue b/src/views/inventoryManagement/environmentalMonitoring/index.vue
index 7db5696..58b2fcc 100644
--- a/src/views/inventoryManagement/environmentalMonitoring/index.vue
+++ b/src/views/inventoryManagement/environmentalMonitoring/index.vue
@@ -16,45 +16,49 @@
<section class="table-panel">
<h3 class="panel-title">璁惧鐜鏁版嵁鍒楄〃</h3>
- <div class="sensor-table">
- <div class="sensor-table__head">
- <span>璁惧缂栧彿</span>
- <span>璁惧鍚嶇О</span>
- <span>鐘舵��</span>
- <span>鐢甸噺</span>
- <span>娓╁害</span>
- <span>婀垮害</span>
- <span>浜屾哀鍖栫⒊</span>
- <span>鍏夌収</span>
- <span>鎿嶄綔</span>
- </div>
- <div v-for="item in deviceRows" :key="item.guid" class="sensor-table__row">
- <span>{{ item.guid }}</span>
- <span>{{ item.name }}</span>
- <span>
- <el-tag
- v-if="item.statusLabel !== '-'"
- :type="item.statusTagType"
- effect="light"
- size="small"
- >
- {{ item.statusLabel }}
+ <el-table :data="deviceRows"
+ border
+ stripe
+ empty-text="鏆傛棤鐜鏁版嵁"
+ show-overflow-tooltip>
+ <el-table-column label="璁惧缂栧彿" prop="guid" min-width="160" show-overflow-tooltip />
+ <el-table-column label="璁惧鍚嶇О" prop="name" min-width="120" show-overflow-tooltip />
+ <el-table-column label="鐘舵��" prop="statusLabel" width="80" align="center">
+ <template #default="{ row }">
+ <el-tag v-if="row.statusLabel !== '-'"
+ :type="row.statusTagType"
+ effect="light"
+ size="small">
+ {{ row.statusLabel }}
</el-tag>
- <span v-else>{{ item.statusLabel }}</span>
- </span>
- <span>{{ item.battery }}</span>
- <span>{{ item.temperature }}</span>
- <span>{{ item.humidity }}</span>
- <span>{{ item.co2 }}</span>
- <span>{{ item.light }}</span>
- <span class="sensor-table__action">
- <el-button type="primary" link @click="openHistoryDialog(item)">
+ <span v-else>-</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐢甸噺" prop="battery" width="80" align="center" />
+ <el-table-column label="娓╁害" prop="temperature" width="90" align="center" />
+ <el-table-column label="婀垮害" prop="humidity" width="90" align="center" />
+ <el-table-column label="浜屾哀鍖栫⒊" prop="co2" width="100" align="center" />
+ <el-table-column label="鍏夌収" prop="light" width="90" align="center" />
+ <el-table-column label="瀛樻斁浣嶇疆" prop="storageLocation" min-width="120" show-overflow-tooltip />
+ <el-table-column label="闄勪欢" width="100" align="center">
+ <template #default="{ row }">
+ <el-button v-if="row.commonFileListVO && row.commonFileListVO.length"
+ type="primary"
+ link
+ @click="openFileDialog(row)">
+ 鏌ョ湅闄勪欢
+ </el-button>
+ <span v-else>-</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔" width="130" align="center" fixed="right">
+ <template #default="{ row }">
+ <el-button type="primary" link @click="openHistoryDialog(row)">
鏌ョ湅鍘嗗彶鏁版嵁
</el-button>
- </span>
- </div>
- <div v-if="!deviceRows.length" class="sensor-table__empty">鏆傛棤鐜鏁版嵁</div>
- </div>
+ </template>
+ </el-table-column>
+ </el-table>
</section>
<el-dialog
@@ -85,35 +89,58 @@
</div>
</div>
- <div class="history-table">
- <div class="history-table__head">
- <span>鏃堕棿</span>
- <span>娓╁害</span>
- <span>婀垮害</span>
- <span>浜屾哀鍖栫⒊</span>
- <span>鍏夌収</span>
- </div>
- <div v-for="item in historyRows" :key="`${item.time}-${item.index}`" class="history-table__row">
- <span>{{ item.time }}</span>
- <span>{{ item.temperature }}</span>
- <span>{{ item.humidity }}</span>
- <span>{{ item.co2 }}</span>
- <span>{{ item.light }}</span>
- </div>
- <div v-if="!historyRows.length" class="sensor-table__empty">鏆傛棤鍘嗗彶鏁版嵁</div>
+ <el-table :data="historyRows"
+ v-loading="historyLoading"
+ border
+ stripe
+ empty-text="鏆傛棤鍘嗗彶鏁版嵁"
+ show-overflow-tooltip>
+ <el-table-column label="鏃堕棿" prop="time" min-width="160" show-overflow-tooltip />
+ <el-table-column label="娓╁害" prop="temperature" width="100" align="center" />
+ <el-table-column label="婀垮害" prop="humidity" width="100" align="center" />
+ <el-table-column label="浜屾哀鍖栫⒊" prop="co2" width="100" align="center" />
+ <el-table-column label="鍏夌収" prop="light" width="100" align="center" />
+ </el-table>
+ </el-dialog>
+
+ <el-dialog
+ v-model="fileDialogVisible"
+ title="鏌ョ湅闄勪欢"
+ width="600px"
+ append-to-body
+ destroy-on-close
+ >
+ <div class="file-dialog__meta">
+ <span>璁惧缂栧彿锛歿{ fileDevice.guid || "-" }}</span>
+ <span>璁惧鍚嶇О锛歿{ fileDevice.name || "-" }}</span>
</div>
+ <el-table :data="fileList"
+ border
+ stripe
+ empty-text="鏆傛棤闄勪欢"
+ show-overflow-tooltip>
+ <el-table-column label="闄勪欢鍚嶇О" prop="originalFilename" min-width="200" show-overflow-tooltip />
+ <el-table-column label="鎿嶄綔" width="120" align="center">
+ <template #default="{ row }">
+ <el-button type="primary" link @click="downloadAttachment(row)">
+ 涓嬭浇
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
</el-dialog>
</div>
</template>
<script setup>
-import { computed, onBeforeUnmount, onMounted, ref } from "vue";
+import { computed, getCurrentInstance, onBeforeUnmount, onMounted, ref } from "vue";
import Echarts from "@/components/Echarts/echarts.vue";
import {
getEnvironmentalHistoryData,
getEnvironmentalRealData,
} from "@/api/inventoryManagement/environmentalMonitoring";
+const { proxy } = getCurrentInstance();
const POLL_INTERVAL = import.meta.env.DEV ? 73000 : 30000;
const TEN_DAYS_MS = 10 * 24 * 60 * 60 * 1000;
@@ -123,6 +150,9 @@
const historyDate = ref(formatDateOnly(new Date()));
const historyList = ref([]);
const historyLoading = ref(false);
+const fileDialogVisible = ref(false);
+const fileDevice = ref({});
+const fileList = ref([]);
let pollTimer = null;
@@ -223,6 +253,8 @@
name: source.deviceName || source.name || `璁惧${index + 1}`,
status: source.status || source.deviceStatus || "",
battery: source.battery ?? source.deviceBattery ?? "",
+ storageLocation: source.storageLocation || source.location || "",
+ commonFileListVO: source.commonFileListVO || [],
temperature: 0,
humidity: 0,
co2: 0,
@@ -361,6 +393,8 @@
humidity: formatMetricValue(item.humidity, "%RH"),
co2: formatMetricValue(item.co2, "ppm"),
light: formatMetricValue(item.light, "Lux"),
+ storageLocation: item.storageLocation || "-",
+ commonFileListVO: item.commonFileListVO || [],
}))
);
@@ -419,6 +453,20 @@
fetchHistoryData();
}
+function openFileDialog(row) {
+ fileDevice.value = row;
+ fileList.value = row.commonFileListVO || [];
+ fileDialogVisible.value = true;
+}
+
+function downloadAttachment(file) {
+ if (!file.url) {
+ proxy.$modal.msgWarning("闄勪欢閾炬帴涓嶅瓨鍦�");
+ return;
+ }
+ proxy.$download.byUrl(file.url, file.originalFilename || file.fileName);
+}
+
function openHistoryDialog(row) {
historyDevice.value = { ...row };
historyDate.value = formatDateOnly(new Date());
@@ -463,55 +511,6 @@
font-weight: 600;
}
-.sensor-table,
-.history-table {
- display: flex;
- flex-direction: column;
- gap: 10px;
-}
-
-.sensor-table__head,
-.sensor-table__row {
- display: grid;
- grid-template-columns: 1.2fr 1fr 0.8fr 0.8fr 0.9fr 0.9fr 1fr 0.9fr 0.9fr;
- gap: 12px;
- align-items: center;
-}
-
-.history-table__head,
-.history-table__row {
- display: grid;
- grid-template-columns: 1.3fr 1fr 1fr 1fr 1fr;
- gap: 12px;
- align-items: center;
-}
-
-.sensor-table__head,
-.history-table__head {
- padding: 0 6px 10px;
- color: #8393a8;
- font-size: 13px;
-}
-
-.sensor-table__row,
-.history-table__row {
- padding: 14px 16px;
- border-radius: 12px;
- background: #f6f9fc;
- color: #1d344f;
-}
-
-.sensor-table__action {
- display: flex;
- align-items: center;
-}
-
-.sensor-table__empty {
- padding: 32px 0;
- color: #8393a8;
- text-align: center;
-}
-
.history-toolbar {
display: flex;
justify-content: space-between;
@@ -533,8 +532,12 @@
align-items: center;
}
-.history-table {
- margin-top: 16px;
+.file-dialog__meta {
+ display: flex;
+ gap: 20px;
+ color: #1d344f;
+ margin-bottom: 16px;
+ flex-wrap: wrap;
}
@media (max-width: 768px) {
@@ -545,13 +548,6 @@
.chart-panel,
.table-panel {
padding: 16px;
- }
-
- .sensor-table__head,
- .sensor-table__row,
- .history-table__head,
- .history-table__row {
- grid-template-columns: repeat(2, minmax(0, 1fr));
}
.history-toolbar {
--
Gitblit v1.9.3