From b0ec7df2059a1d23942e71b6fb1ff3575904db81 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期五, 25 四月 2025 18:42:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/mainPlan/gasProduceStatics/index.vue |  295 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 216 insertions(+), 79 deletions(-)

diff --git a/src/views/mainPlan/gasProduceStatics/index.vue b/src/views/mainPlan/gasProduceStatics/index.vue
index d79ef8f..13a251b 100644
--- a/src/views/mainPlan/gasProduceStatics/index.vue
+++ b/src/views/mainPlan/gasProduceStatics/index.vue
@@ -1,5 +1,56 @@
 <template>
   <div class="app-container">
+    <el-form
+      class="responsive-form"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
+      <el-row type="flex" justify="left">
+        <el-form-item label="缁熻鏂瑰紡">
+          <el-select
+            v-model="queryParams.type"
+            style="width: 200px"
+            placeholder="Select"
+            @change="handleChangeSelectType"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="閫夋嫨鍖洪棿">
+          <div v-if="!dayCom">
+            <el-date-picker
+              v-model="queryParams.monthRange"
+              type="monthrange"
+              range-separator="To"
+              start-placeholder="閫夋嫨寮�濮嬫湀浠�"
+              end-placeholder="閫夋嫨缁撴潫鏈堜唤"
+            />
+          </div>
+          <div v-else>
+            <el-date-picker
+              v-model="value2"
+              type="month"
+              placeholder="閫夋嫨鏈堜唤"
+            />
+          </div>
+        </el-form-item>
+
+        <el-form-item class="column-with-margin">
+          <el-button type="primary" icon="Search" @click="handleQuery"
+            >鏌ヨ</el-button
+          >
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+      </el-row>
+    </el-form>
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -8,7 +59,8 @@
           icon="Download"
           @click="handleExport"
           v-hasPermi="['apsPartRouteStat:export']"
-        >瀵煎嚭</el-button>
+          >瀵煎嚭</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -17,27 +69,68 @@
           icon="Refresh"
           @click="handleRefresh"
           v-hasPermi="['apsPartRouteStat:edit']"
-        >鏇存柊</el-button>
+          >鏇存柊</el-button
+        >
       </el-col>
       <right-toolbar @queryTable="getList" :search="false"></right-toolbar>
     </el-row>
-    <vxe-grid ref="gridRef" v-bind="gridOptions" :loading="loading"></vxe-grid>
+    <div class="box_container">
+      <div class="title_text">绠¤矾瑙勫垝浜ц兘璐熻浇缁熻</div>
+      <div class="tabel_container">
+        <vxe-grid
+          ref="gridRef"
+          v-bind="gridOptions"
+          :loading="loading"
+        ></vxe-grid>
+      </div>
+    </div>
+    <div class="box_container">
+      <div class="title_text">姘旀煖瑙勫垝浜ц兘璐熻浇缁熻</div>
+      <div class="tabel_container">
+        <vxe-grid
+          ref="gridRef2"
+          v-bind="gridOptions"
+          :loading="loading"
+        ></vxe-grid>
+      </div>
+    </div>
   </div>
 </template>
 
-<script setup name="apsPartRouteStat">
-import { query,updateStat } from "@/api/mainPlan/partRouteStat.js";
+<script setup name="gasProduceStatics">
+import {
+  listUpdateGasProduceStatics,
+  listGasProduceStatics,
+} from "@/api/mainPlan/gasProduceStatics.js";
 import { ref } from "vue";
-import * as XLSX from 'xlsx';
+import * as XLSX from "xlsx";
 
 const { proxy } = getCurrentInstance();
 
 const loading = ref(true);
 const gridRef = ref();
-const height = ref(document.documentElement.clientHeight - 130 + "px;")
+const gridRef2 = ref();
+const height = ref(document.documentElement.clientHeight - 130 + "px;");
 const headers = ref([]);
 const exportData = ref([]);
-
+const showSearch = ref(true);
+const data = reactive({
+  queryParams: {
+    monthRange: "",
+    type: "鎸夋湀缁熻",
+  },
+});
+const options = [
+  {
+    value: "month",
+    label: "鎸夋湀缁熻",
+  },
+  {
+    value: "day",
+    label: "鎸夋棩缁熻",
+  },
+];
+const { queryParams } = toRefs(data);
 const gridOptions = reactive({
   border: true,
   stripe: true,
@@ -47,122 +140,141 @@
   showFooterOverflow: true,
   height: height,
   columnConfig: {
-    resizable: true
+    resizable: true,
   },
   scrollX: {
     enabled: true,
     gt: 0,
-    threshold: 50
+    threshold: 50,
   },
   scrollY: {
     enabled: true,
     gt: 0,
-    threshold: 50
-  }
+    threshold: 50,
+  },
 });
-
-let tableColumn = []
-let tableData = []
+const dayCom = ref(false);
+let tableColumn = [];
+let tableData = [];
 let merges = [];
-
+function handleChangeSelectType(e) {
+  console.log(e, "sjcsuhcushc");
+  if (e === "day") {
+    dayCom.value = true;
+  } else {
+    dayCom.value = false;
+  }
+}
 /** 鏌ヨ闆朵欢缁熻琛ㄥ垪琛� */
 function getList() {
-  let rowKey = 0
-  let colKey = 0
-  headers.value = []
-  exportData.value = []
-  tableColumn = []
-  tableData = []
+  let rowKey = 0;
+  let colKey = 0;
+  headers.value = [];
+  exportData.value = [];
+  tableColumn = [];
+  tableData = [];
   loading.value = true;
-  query().then(response => {
-    const colList = []
-    let headersOne = []
-    let headersTwo = []
-    if(response.code == '200'){
+  listGasProduceStatics().then((response) => {
+    const colList = [];
+    let headersOne = [];
+    let headersTwo = [];
+    if (response.code == "200") {
       if (!response.planTitle) {
         loading.value = false;
         return;
       }
-      headersOne.push('鏃ユ湡');
-      headersTwo.push('璧勬簮缁�');
+      headersOne.push("鏃ユ湡");
+      headersTwo.push("璧勬簮缁�");
       colList.push({
-          field: 'dateCol',
-          title: '鏃ユ湡',
-          fixed: 'left',
-          children: [
-            { field: `resourceName`, title: '璧勬簮缁�', width: 250, type: 'html'},
-          ],
-          width: 160
-        })
-      response.planTitle.forEach(item => {
+        field: "dateCol",
+        title: "鏃ユ湡",
+        fixed: "left",
+        children: [
+          { field: `resourceName`, title: "璧勬簮缁�", width: 250, type: "html" },
+        ],
+        width: 160,
+      });
+      response.planTitle.forEach((item) => {
         headersOne.push(item);
-        headersOne.push('');
-        headersOne.push('');
-        headersTwo.push('璁捐宸ユ椂');
-        headersTwo.push('闇�姹傚伐鏃�');
-        headersTwo.push('浜ц兘璐熻嵎');
-        colKey++
+        headersOne.push("");
+        headersOne.push("");
+        headersTwo.push("璁捐宸ユ椂");
+        headersTwo.push("闇�姹傚伐鏃�");
+        headersTwo.push("浜ц兘璐熻嵎");
+        colKey++;
         colList.push({
           field: `dateColTime${colKey}`,
           title: item,
           children: [
-          { field: `designTimes${colKey}`, title: '璁捐宸ユ椂', width: 80},
-          { field: `requireTimes${colKey}`, title: '闇�姹傚伐鏃�', width: 80},
-          { field: `capacityLoad${colKey}`, title: '浜ц兘璐熻嵎', width: 80, type: 'html'},
+            { field: `designTimes${colKey}`, title: "璁捐宸ユ椂", width: 80 },
+            { field: `requireTimes${colKey}`, title: "闇�姹傚伐鏃�", width: 80 },
+            {
+              field: `capacityLoad${colKey}`,
+              title: "浜ц兘璐熻嵎",
+              width: 80,
+              type: "html",
+            },
           ],
-          width: 160
-        })
+          width: 160,
+        });
       });
 
       headers.value.push(headersOne);
       headers.value.push(headersTwo);
 
-      const columnList = [...tableColumn, ...colList]
-      const dataList = []
+      const columnList = [...tableColumn, ...colList];
+      const dataList = [];
       let startCol = 1;
 
       //鑾峰彇map
-      response.planTable.forEach(mapItem => {
-        rowKey++
+      response.planTable.forEach((mapItem) => {
+        rowKey++;
         let lastCol = startCol + 2;
-        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c:  lastCol} });
+        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } });
         startCol = lastCol + 1;
         let data = [];
         const item = {
-          id: `${rowKey}`
-        }
+          id: `${rowKey}`,
+        };
         for (const [key, listValue] of Object.entries(mapItem)) {
           data.push(key);
-          
+
           let tableKey = 0;
           let flag = false;
-          listValue.forEach(listItem => {
-
-            tableKey++
+          listValue.forEach((listItem) => {
+            tableKey++;
             item[`designTimes${tableKey}`] = listItem.designTimes;
             item[`requireTimes${tableKey}`] = listItem.requireTimes;
-            item[`capacityLoad${tableKey}`] = listItem.capacityLoad > 100 ? `<font color="red">${listItem.capacityLoad}%</font>` :listItem.capacityLoad+'%';
+            item[`capacityLoad${tableKey}`] =
+              listItem.capacityLoad > 100
+                ? `<font color="red">${listItem.capacityLoad}%</font>`
+                : listItem.capacityLoad + "%";
             data.push(listItem.designTimes);
             data.push(listItem.requireTimes);
-            data.push(listItem.capacityLoad+'%');
+            data.push(listItem.capacityLoad + "%");
             if (listItem.capacityLoad > 100) {
               flag = true;
             }
           });
 
-          item[`resourceName`] = flag ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>` : key;
+          item[`resourceName`] = flag
+            ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>`
+            : key;
         }
         exportData.value.push(data);
         dataList.push(item);
       });
-        
-      const $grid = gridRef.value
-      if ($grid) {
-        tableColumn = columnList
-        tableData = [...tableData, ...dataList]
-        $grid.loadColumn(tableColumn)
-        $grid.loadData(tableData)
-        gridOptions.loading = false
+
+      const $grid = gridRef.value;
+      const $grid2 = gridRef.value;
+      if ($grid || $grid2) {
+        tableColumn = columnList;
+        tableData = [...tableData, ...dataList];
+        $grid.loadColumn(tableColumn);
+        $grid.loadData(tableData);
+        $grid2.loadColumn(tableColumn);
+        $grid2.loadData(tableData);
+        gridOptions.loading = false;
       }
 
       loading.value = false;
@@ -172,7 +284,6 @@
 
 /** 瀵煎嚭鎸夐挳鎿嶄綔 */
 function handleExport() {
-
   // 鍚堝苟琛ㄥご鍜屾暟鎹�
   const finalData = [...headers.value, ...exportData.value];
 
@@ -185,21 +296,30 @@
     { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }
   ]; */
 
-  ws['!merges'] = merges;
-  
+  ws["!merges"] = merges;
+
   // 鍒涘缓 workbook
   const wb = XLSX.utils.book_new();
   // 灏� worksheet 娣诲姞鍒� workbook 涓�
-  XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
+  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
   // 瀵煎嚭鏂囦欢
   XLSX.writeFile(wb, `apsPartRouteStat_${new Date().getTime()}.xlsx`);
-
+}
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
 }
 
+/** 閲嶇疆鎸夐挳鎿嶄綔 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
 /** 鍒锋柊鎸夐挳鎿嶄綔 */
-function handleRefresh(){
-  updateStat().then(response => {
-    if(response.code == '200'){
+function handleRefresh() {
+  updateStat().then((response) => {
+    if (response.code == "200") {
       getList();
     }
   });
@@ -207,3 +327,20 @@
 
 getList();
 </script>
+<style lang="scss" scoped>
+.box_container {
+  width: 100%;
+  margin: 20px auto;
+  background: #fff;
+  border-radius: 5px;
+  box-shadow: 1px 1px 1px 4px#f1f1f1;
+  .title_text {
+    padding-top: 20px;
+    margin-left: 20px;
+  }
+  .tabel_container {
+    width: 98%;
+    margin: 20px auto;
+  }
+}
+</style>

--
Gitblit v1.9.3