From 58c0f11fe2f23a1be2dec768f9ac02107301a634 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 19 九月 2025 17:30:36 +0800
Subject: [PATCH] 2025.9.19 数据产品(待完成)

---
 src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue |   98 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 96 insertions(+), 2 deletions(-)

diff --git a/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue b/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue
index 91bfefa..cc5e097 100644
--- a/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue
+++ b/src/views/fysp/data-product/base-data-product/ProdMonitorDataInfo.vue
@@ -1,4 +1,98 @@
 <template>
-  1
+  <BaseProdProcess
+    v-model:active="active"
+    @onStep1="onStep1"
+    @onStep2="onStep2"
+    @onStep3="onStep3"
+    :loading="loading"
+  >
+    <template #step2="{ contentHeight }">
+      <el-table
+        id="prod-scene-table"
+        :data="tableData"
+        v-loading="loading"
+        :height="contentHeight + 'px'"
+        table-layout="fixed"
+        :show-overflow-tooltip="true"
+        size="small"
+        border
+      >
+        <el-table-column fixed="left" prop="index" label="鎺掑悕" width="50">
+        </el-table-column>
+        <el-table-column
+          fixed="left"
+          prop="scene.name"
+          label="鍚嶇О"
+          :show-overflow-tooltip="true"
+          min-width="200"
+        >
+        </el-table-column>
+        <el-table-column prop="data.drAvg" label="骞冲潎鍊�(mg/m鲁)" width="100" />
+        <el-table-column
+          prop="data.drOverAvgPer"
+          label="瓒呭尯鍧囧��"
+          width="80"
+          :formatter="ratioFormat"
+        />
+        <el-table-column label="瓒呭競鍧囧��" width="80" />
+        <!-- <el-table-column prop="provincename" label="鐪�" width="90" />
+        <el-table-column prop="cityname" label="甯�" width="90" />
+        <el-table-column prop="districtname" label="鍖哄幙" width="90" /> -->
+        <el-table-column prop="scene.townname" label="灞炲湴" width="110" />
+      </el-table>
+    </template>
+    <!-- <template #step3></template> -->
+  </BaseProdProcess>
 </template>
-<script setup></script>
\ No newline at end of file
+<script setup>
+import { ref, inject } from 'vue';
+import dayjs from 'dayjs';
+import BaseProdProcess from '@/views/fysp/data-product/components/BaseProdProcess.vue';
+import dataprodbaseApi from '@/api/fysp/dataprodbaseApi.js';
+import { conversionFromTable } from '@/utils/excel';
+import { useProdStepChange } from '@/views/fysp/data-product/prod-step-change.js';
+
+const { active, changeActive } = useProdStepChange();
+const loading = ref(false);
+const tableData = ref([]);
+
+function onStep1(opt) {
+  loading.value = true;
+  dataprodbaseApi
+    .fetchProdMonitorDataInfo(opt)
+    .then((res) => {
+      if (res.success) {
+        tableData.value = res.data
+          .sort((a, b) => {
+            return b.data.drAvg - a.data.drAvg;
+          })
+          .map((item, index) => {
+            return {
+              ...item,
+              index: index + 1
+            };
+          });
+      }
+      changeActive();
+    })
+    .finally(() => {
+      loading.value = false;
+    });
+}
+
+function onStep2() {
+  changeActive();
+}
+
+function onStep3(val) {
+  if (val.downloadType == '1') {
+    loading.value = true;
+    conversionFromTable('prod-scene-table', '鍦ㄧ嚎鐩戞祴鏁版嵁娓呭崟');
+    loading.value = false;
+  }
+}
+
+function ratioFormat(row, column, cellValue, index) {
+  return Math.round(cellValue * 1000) / 10 + '%';
+}
+</script>

--
Gitblit v1.9.3