From c9120650b03c477c27ce5c9c492a416be21df1b0 Mon Sep 17 00:00:00 2001
From: chengxiangling <291105840@qq.com>
Date: 星期五, 16 五月 2025 13:44:01 +0800
Subject: [PATCH] 提交负载统计更正

---
 .env.development                                |    2 
 src/views/mainPlan/pipeProduceStatics/index.vue |   60 -
 src/views/demand/planManage/index.vue           |   31 
 src/views/mainPlan/gasPlanning/index.vue        |  981 +++++++++----------------------
 src/utils/i18n/locales/plan/index.js            |    2 
 package.json                                    |    1 
 src/views/mainPlan/pipePlanning/index.vue       |  548 +++++++++++++++++
 src/api/basicData/bom/bom.js                    |   75 +
 src/views/system/dict/index.vue                 |   27 
 src/views/mainPlan/gasProduceStatics/index.vue  |  103 ++
 10 files changed, 1,038 insertions(+), 792 deletions(-)

diff --git a/.env.development b/.env.development
index 9028dae..a4a0a7d 100644
--- a/.env.development
+++ b/.env.development
@@ -10,4 +10,4 @@
 # 閰嶅悎鍚庣鏈嶅姟
 # VITE_APP_LOCAL = 'int'
 # VITE_APP_LOCAL = 'zhl'
-VITE_APP_LOCAL = 'int'
\ No newline at end of file
+VITE_APP_LOCAL = 'cxl'
\ No newline at end of file
diff --git a/package.json b/package.json
index 5b44267..dbbebff 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
   "devDependencies": {
     "@vitejs/plugin-vue": "5.0.5",
     "moment": "^2.30.1",
+    "qs": "^6.14.0",
     "sass": "1.77.5",
     "terser": "^5.39.0",
     "unplugin-auto-import": "^0.17.6",
diff --git a/src/api/basicData/bom/bom.js b/src/api/basicData/bom/bom.js
index 992d73b..6d5282c 100644
--- a/src/api/basicData/bom/bom.js
+++ b/src/api/basicData/bom/bom.js
@@ -1,67 +1,82 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
+import qs from "qs";
+//
+export function refreshBomRouteStorageDataList() {
+  
+  return request({
+    url: "/aps/refreshBomRouteStorageData",
+    method: "post",
+    headers: {
+      "Content-Type": "application/x-www-form-urlencoded", // 娉ㄦ剰锛氶�氬父axios浼氳嚜鍔ㄨ缃纭殑Content-Type锛岄櫎闈炰綘鐗瑰埆鎸囧畾浜唄eaders銆傚浜嶧ormData锛岄�氬父涓嶉渶瑕佹墜鍔ㄨ缃繖涓猦eader銆�
+    },
+    data: qs.stringify({
+      orgCode: "FORTUNA"
+    }),
+  });
+}
 // /ApsBomHeader/list
 export function listApsBomHeaderList(query) {
   return request({
-    url: '/aps/ApsBomHeader/list',
-    method: 'get',
-    params: query
-  })
+    url: "/aps/ApsBomHeader/list",
+    method: "get",
+    params: query,
+  });
 }
 // /ApsBom/list
 export function listApsBomLineList(query) {
   return request({
-    url: '/aps/ApsBom/list',
-    method: 'get',
-    params: query
-  })
+    url: "/aps/ApsBom/list",
+    method: "get",
+    params: query,
+  });
 }
 // /ApsBomHeader/refreshBomData
 export function listApsBomRefreshBomDataList() {
   return request({
-    url: '/schedule/job/refreshBomData',
-    method: 'post',
-  })
+    url: "/schedule/job/refreshBomData",
+    method: "post",
+  });
 }
 
 // 鏌ヨBOM鏁版嵁绠$悊鍒楄〃
 export function listApsBom(query) {
   return request({
-    url: '/aps/ApsBom/list',
-    method: 'get',
-    params: query
-  })
+    url: "/aps/ApsBom/list",
+    method: "get",
+    params: query,
+  });
 }
 
 // 鏌ヨBOM鏁版嵁绠$悊璇︾粏
 export function getApsBom(id) {
   return request({
-    url: '/ApsBom/ApsBom/' + id,
-    method: 'get'
-  })
+    url: "/ApsBom/ApsBom/" + id,
+    method: "get",
+  });
 }
 
 // 鏂板BOM鏁版嵁绠$悊
 export function addApsBom(data) {
   return request({
-    url: '/ApsBom/ApsBom',
-    method: 'post',
-    data: data
-  })
+    url: "/ApsBom/ApsBom",
+    method: "post",
+    data: data,
+  });
 }
 
 // 淇敼BOM鏁版嵁绠$悊
 export function updateApsBom(data) {
   return request({
-    url: '/ApsBom/ApsBom',
-    method: 'put',
-    data: data
-  })
+    url: "/ApsBom/ApsBom",
+    method: "put",
+    data: data,
+  });
 }
 
 // 鍒犻櫎BOM鏁版嵁绠$悊
 export function delApsBom(id) {
   return request({
-    url: '/ApsBom/ApsBom/' + id,
-    method: 'delete'
-  })
+    url: "/ApsBom/ApsBom/" + id,
+    method: "delete",
+  });
 }
diff --git a/src/utils/i18n/locales/plan/index.js b/src/utils/i18n/locales/plan/index.js
index ca06fc2..4f6c083 100644
--- a/src/utils/i18n/locales/plan/index.js
+++ b/src/utils/i18n/locales/plan/index.js
@@ -58,6 +58,7 @@
     selectMonth: "閫夋嫨鏈堜唤",
     statistical: "缁熻鏂瑰紡",
     selectDateRange: "閫夋嫨鍖洪棿",
+    selectDateMonth: "閫夋嫨鏈堜唤",
     requireTraceID: "闇�姹傝拷婧疘D",
     itemNumber: "鏂欏彿",
     pipelineOrderRequire: "绠¤矾璁㈠崟闇�姹�",
@@ -283,6 +284,7 @@
     selectMonth: "Select Month",
     statistical: "Statistical method",
     selectDateRange: "Select interval",
+    selectDateMonth: "Select Month",
     requireTraceID: "Require track ID",
     itemNumber: "Item number",
     pipelineOrderRequire: "Pipeline order requirements",
diff --git a/src/views/demand/planManage/index.vue b/src/views/demand/planManage/index.vue
index 790cbaf..409c6fb 100644
--- a/src/views/demand/planManage/index.vue
+++ b/src/views/demand/planManage/index.vue
@@ -39,7 +39,7 @@
           plain
           icon="Plus"
           @click="handleAdd"
-          v-hasPermi="['aps:calendar:add']"
+          v-hasPermi="['aps:management:add']"
           >鏂板</el-button
         >
       </el-col>
@@ -50,7 +50,7 @@
           icon="Edit"
           :disabled="single"
           @click="handleUpdate(null)"
-          v-hasPermi="['aps:calendar:update']"
+          v-hasPermi="['aps:management:edit']"
           >淇敼</el-button
         >
       </el-col>
@@ -61,7 +61,7 @@
           icon="Delete"
           :disabled="multiple"
           @click="handleDelete"
-          v-hasPermi="['aps:calendar:remove']"
+          v-hasPermi="['aps:management:remove']"
           >鍒犻櫎</el-button
         >
       </el-col>
@@ -88,27 +88,26 @@
           type="primary"
           size="small"
           @click="handleUpdate(row)"
-          v-hasPermi="['aps:calendar:update']"
+          v-hasPermi="['aps:management:edit']"
           >淇敼</el-button
         >
         <el-button
           type="default"
           size="small"
           @click="handleSetCycle(row)"
-          v-hasPermi="['aps:calendar:remove']"
+          v-hasPermi="['aps:planCycle:edit']"
           >璁″垝鍛ㄦ湡</el-button
         >
         <el-button
           type="success"
           size="small"
-          v-hasPermi="['aps:calendar:remove']"
           >鐢熸垚璁″垝</el-button
         >
         <el-button
           type="danger"
           size="small"
           @click="handleDelete(row)"
-          v-hasPermi="['aps:calendar:remove']"
+          v-hasPermi="['aps:management:remove']"
           >鍒犻櫎</el-button
         >
       </template>
@@ -264,6 +263,7 @@
 const router = useRouter();
 const { aps_area } = proxy.useDict("aps_area");
 const { aps_plan_rule } = proxy.useDict("aps_plan_rule");
+const { aps_plan_type } = proxy.useDict("aps_plan_type");
 const tableRef = ref();
 const calendarList = ref([]);
 const open = ref(false);
@@ -354,6 +354,15 @@
     field: "type",
     width: 200,
     align: "center",
+    formatter: ({ cellValue, row, column }) => {
+      if (cellValue) {
+        for (let i = 0; i < aps_plan_type.value.length; i++) {
+          if (cellValue === aps_plan_type.value[i].value) {
+            return aps_plan_type.value[i].label;
+          }
+        }
+      }
+    },
   },
   {
     title: "璁″垝鎺掍骇鍖哄煙",
@@ -511,6 +520,7 @@
 // 璁″垝鍛ㄦ湡
 function handleSetCycle(row) {
   openSetCycle.value = true;
+  console.log(row,row.id,"==========")
   if (!row.cycle) {
     formCycle.value = {
       cycle: {
@@ -519,6 +529,7 @@
         period: "1",
         periodStart: moment(Date.now()).format("YYYY-MM-DD"),
         periodEnd: "",
+        planId: row.id
       },
     };
     let nowTime = moment(formCycle.value.cycle.periodStart)
@@ -530,7 +541,7 @@
   } else {
     formCycle.value = row;
   }
-  console.log(formCycle.value, "formCycle.value");
+  console.log(formCycle.value, "formCycle.value+++++===");
 }
 function handleToggleExpand() {
   expand.value = !expand.value;
@@ -572,14 +583,15 @@
   });
 }
 function submitFormCycle() {
+  console.log(formCycle.value,"formCycle.value=====")
   redundantOrderList({
     ...formCycle.value.cycle,
-    planId: formCycle.value.id,
   })
     .then((res) => {
       if (res.code === 200) {
         proxy.$modal.msgSuccess("鏇存柊鎴愬姛");
         openSetCycle.value = false;
+        getList();
       } else {
         openSetCycle.value = false;
       }
@@ -587,7 +599,6 @@
     .catch(() => {
       openSetCycle.value = false;
     });
-  getList();
 }
 function handleGoToCycle() {
   router.push({
diff --git a/src/views/mainPlan/gasPlanning/index.vue b/src/views/mainPlan/gasPlanning/index.vue
index 4ec31aa..73ad321 100644
--- a/src/views/mainPlan/gasPlanning/index.vue
+++ b/src/views/mainPlan/gasPlanning/index.vue
@@ -9,7 +9,11 @@
     >
       <el-row type="flex" justify="left">
         <el-col :span="8">
-          <el-form-item :style="{ width: '100%' }" :label="$t('plan.query.selectMonth')" prop="description">
+          <el-form-item
+            :style="{ width: '100%' }"
+            :label="$t('plan.query.selectMonth')"
+            prop="description"
+          >
             <el-date-picker
               clearable
               v-model="queryParams.date"
@@ -20,477 +24,275 @@
             </el-date-picker>
           </el-form-item>
         </el-col>
-        <el-col :span="16" style="text-align: right">
-          <el-form-item class="column-with-margin">
-            <el-button type="primary" icon="Search" @click="handleQuery"
-              >{{$t("common.common.query")}}</el-button
+        <el-col :span="8">
+          <el-form-item
+            :label="$t('basic.table.applicableFactories')"
+            style="width: 100%"
+            prop="plant"
+          >
+            <el-select
+              clearable
+              v-model="queryParams.applicableFactory"
+              :placeholder="$t('basic.table.applicableFactories')"
             >
-            <el-button icon="Refresh" @click="resetQuery">{{$t("common.common.reset")}}</el-button>
+              <el-option
+                v-for="item in aps_factory"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="text-align: right">
+          <el-form-item class="column-with-margin">
+            <el-button type="primary" icon="Search" @click="handleQuery">{{
+              $t("common.common.query")
+            }}</el-button>
+            <el-button icon="Refresh" @click="resetQuery">{{
+              $t("common.common.reset")
+            }}</el-button>
           </el-form-item>
         </el-col>
       </el-row>
     </el-form>
-    <div class="box_container">
-      <el-row>
-        <el-col :span="!clickedTableRef?22:20">
-          <div class="title_text">{{$t('plan.title.pipePlanCapacity')}}</div>
-        </el-col>
-        <el-col :span="1" v-if="!clickedTableRef">
-          <el-button 
-            class="title_btn"
-            type="default"
-            @click="editRowEvent" >{{$t("common.common.edit")}}</el-button>
-        </el-col>
-        <el-col :span="1.8" v-if="clickedTableRef">
-          <el-button
-            class="title_btn"
-            type="primary"
-            @click="saveRowEvent"
-            v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
-          >
-            {{$t("common.common.save")}}
-          </el-button>
-        </el-col>
-        <el-col :span="1" v-if="clickedTableRef"> 
-          <el-button 
-            class="title_btn ml20"
-            type="default"
-            @click="handleCancleStaus">{{$t("common.common.cancel")}}</el-button>
-        </el-col>
-      </el-row>
-
-      <div class="tabel_container">
-        <!-- <HxlhTable
+    <!-- <div class="box_container"> -->
+    <el-row v-if="!clickedTableRefGas">
+      <el-col :span="24" style="text-align: right; margin-bottom: 10px">
+        <el-button class="title_btn" type="default" @click="editRowEventGas">{{
+          $t("common.common.edit")
+        }}</el-button>
+      </el-col>
+    </el-row>
+    <el-row v-if="clickedTableRefGas">
+      <el-col :span="24" style="text-align: right; margin-bottom: 10px">
+        <el-button
+          class="title_btn"
+          type="primary"
+          @click="saveRowEvent1"
+          v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
+        >
+          {{ $t("common.common.save") }}
+        </el-button>
+        <el-button
+          class="title_btn ml20"
+          type="default"
+          @click="handleCancleStausGas"
+          >{{ $t("common.common.cancel") }}</el-button
+        >
+      </el-col>
+    </el-row>
+    <!-- <div class="tabel_container"> -->
+    <!-- <HxlhTable
           style="width: 100%"
           :columns="columns"
-          :data="routePlanList"
+          :data="gasPlanList"
           :loading="loading"
           :height="height"
-          :editConfig="editConfig"
         >
-          <template #edit_role="{ row }">
-            <vxe-select
+        </HxlhTable> -->
+    <vxe-table
+      border
+      ref="tableRef1"
+      show-overflow
+      size="small"
+      :loading="loading2"
+      :height="height"
+      :column-config="{ resizable: true, useKey: true }"
+      :data="gasPlanList"
+    >
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="processName"
+        :title="$t('plan.table.satndardProcessName')"
+        fixed="left"
+      >
+      </vxe-column>
+      <vxe-column
+        field="orgCode"
+        :width="locale === 'zh' ? '150px' : '200px'"
+        :title="$t('plan.table.applicableFactories')"
+        fixed="left"
+      >
+        <template #default="{ row }">
+          {{ formatTypeLabelPlant([row.orgCode]) }}
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="dayProduceType"
+        :title="$t('plan.table.dayProduceType')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-select
+                clearable
+                v-model="row.dayProduceType"
+                style="width: 140px"
+              >
+                <el-option
+                  v-for="type in dayProduceTypeOptions"
+                  :key="type.value"
+                  :label="type.label"
+                  :value="type.value"
+                >
+                </el-option>
+              </el-select>
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
+          </div>
+          <div v-else>
+            <el-select
+              clearable
               v-model="row.dayProduceType"
-              :options="dayProduceTypeOptions"
-              filterable
-            ></vxe-select>
-          </template>
-        </HxlhTable> -->
-        <vxe-table
-          border
-          ref="tableRef"
-          show-overflow
-          :loading="loading"
-          :height="height"
-          :column-config="{ resizable: true, useKey: true }"
-          :data="routePlanList"
-          size="small"
-        >
-          <vxe-column field="processName" :width="locale === 'zh' ? '150px' : '200px'" :title="$t('plan.table.satndardProcessName')" fixed="left">
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="dayProduceType"
-            :title="$t('plan.table.dayProduceType')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-select
-                clearable
-                v-model="row.dayProduceType"
-                style="width: 140px"
+              style="width: 140px"
+              @change="handlechangeDayproduceType($event, row)"
+            >
+              <el-option
+                v-for="type in dayProduceTypeOptions"
+                :key="type.value"
+                :label="type.label"
+                :value="type.value"
               >
-                <el-option
-                  v-for="type in dayProduceTypeOptions"
-                  :key="type.value"
-                  :label="type.label"
-                  :value="type.value"
-                >
-                </el-option>
-              </el-select>
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
-              </div>
-              <div v-else>
-                <el-select
-                  clearable
-                  v-model="row.dayProduceType"
-                  style="width: 140px"
-                  @change="handlechangeDayproduceType($event,row)"
-                >
-                  <el-option
-                    v-for="type in dayProduceTypeOptions"
-                    :key="type.value"
-                    :label="type.label"
-                    :value="type.value"
-                  >
-                  </el-option>
-                </el-select>
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="dayProduceNum"
-           :title="$t('plan.table.dayProduceNum')"
-          >
-            <!-- <template #edit="{ row }">
+              </el-option>
+            </el-select>
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="dayProduceNum"
+        :title="$t('plan.table.dayProduceNum')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input-number v-model="row.dayProduceNum" size="mini" />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.dayProduceNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.dayProduceNum" size="mini" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="dayProduceUnit"
-            :title="$t('plan.table.dayProduceUnit')"
-          >
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.dayProduceNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.dayProduceNum"
+              size="mini"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="dayProduceUnit"
+        :title="$t('plan.table.dayProduceUnit')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input v-model="row.dayProduceUnit" />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.dayProduceUnit }}</span>
-              </div>
-              <div v-else>
-                <el-input v-model="row.dayProduceUnit" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="personnelNumber"
-            :title="$t('plan.table.personnelNumber')"
-          >
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.dayProduceUnit }}</span>
+          </div>
+          <div v-else>
+            <el-input v-model="row.dayProduceUnit" />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="personnelNumber"
+        :title="$t('plan.table.personnelNumber')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input-number v-model="row.personnelNumber" />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.personnelNumber }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.personnelNumber" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="dayProduceAllNum"
-            :title="$t('plan.table.dayProduceAllNum')"
-          >
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.personnelNumber }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.personnelNumber"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="dayProduceAllNum"
+        :title="$t('plan.table.dayProduceAllNum')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input-number v-model="row.dayProduceAllNum" disabled />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.dayProduceAllNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number v-model="row.dayProduceAllNum" disabled />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="days"
-           :title="$t('plan.table.days')"
-          >
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.dayProduceAllNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number v-model="row.dayProduceAllNum" disabled />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="days"
+        :title="$t('plan.table.days')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input-number v-model="row.days" />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.days }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.days" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="monthProduceAllNum"
-            :title="$t('plan.table.monthProduceAllNum')"
-          >
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.days }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.days"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="monthProduceAllNum"
+        :title="$t('plan.table.monthProduceAllNum')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input-number v-model="row.monthProduceAllNum" disabled />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.monthProduceAllNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number v-model="row.monthProduceAllNum" disabled/>
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="remark"
-            :title="$t('plan.table.remark')"
-          >
-          <!-- :edit-render="{ autoFocus: 'input' }" -->
-            <!-- <template #edit="{ row }">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.monthProduceAllNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number v-model="row.monthProduceAllNum" disabled />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="remark"
+        :title="$t('plan.table.remark')"
+      >
+        <!-- <template #edit="{ row }">
               <el-input
                 type="text"
                 v-model="row.remark"
               />
             </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRef">
-                <span>{{ row.remark }}</span>
-              </div>
-              <div v-else>
-                <el-input
-                  type="text"
-                  v-model="row.remark"
-                />
-              </div>
-            </template>
-          </vxe-column>
-          <!-- <vxe-column title="鎿嶄綔" width="200" fixed="right">
-            <template #default="{ row }">
-              <template v-if="hasEditStatus(row)">
-                <el-button
-                  @click="saveRowEvent(row)"
-                  v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
-                  >淇濆瓨</el-button
-                >
-                <el-button @click="cancelRowEvent()">鍙栨秷</el-button>
-              </template>
-              <template v-else>
-                <el-button @click="editRowEvent(row)">缂栬緫</el-button>
-              </template>
-            </template>
-          </vxe-column> -->
-        </vxe-table>
-      </div>
-    </div>
-    <div class="box_container">
-      <el-row>
-        <el-col :span="!clickedTableRefGas?22:20">
-          <div class="title_text">{{$t("plan.title.gasPlanCapacity")}}</div>
-        </el-col>
-        <el-col :span="1" v-if="!clickedTableRefGas">
-          <el-button 
-            class="title_btn"
-            type="default"
-            @click="editRowEventGas" >{{$t("common.common.edit")}}</el-button>
-        </el-col>
-        <el-col :span="1.8" v-if="clickedTableRefGas">
-          <el-button
-            class="title_btn"
-            type="primary"
-            @click="saveRowEvent1"
-            v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
-          >
-            {{$t("common.common.save")}}
-          </el-button>
-        </el-col>
-        <el-col :span="1" v-if="clickedTableRefGas"> 
-          <el-button 
-            class="title_btn ml20"
-            type="default"
-            @click="handleCancleStausGas">{{$t("common.common.cancel")}}</el-button>
-        </el-col>
-      </el-row>
-      <div class="tabel_container">
-        <!-- <HxlhTable
-          style="width: 100%"
-          :columns="columns"
-          :data="gasPlanList"
-          :loading="loading"
-          :height="height"
-        >
-        </HxlhTable> -->
-        <vxe-table
-          border
-          ref="tableRef1"
-          show-overflow
-          size="small"
-          :loading="loading2"
-          :height="height"
-          :column-config="{ resizable: true, useKey: true }"
-          :data="gasPlanList"
-        >
-          <vxe-column :width="locale === 'zh' ? '150px' : '200px'" field="processName" :title="$t('plan.table.satndardProcessName')" fixed="left">
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="dayProduceType"
-            :title="$t('plan.table.dayProduceType')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-select
-                clearable
-                v-model="row.dayProduceType"
-                style="width: 140px"
-              >
-                <el-option
-                  v-for="type in dayProduceTypeOptions"
-                  :key="type.value"
-                  :label="type.label"
-                  :value="type.value"
-                >
-                </el-option>
-              </el-select>
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
-              </div>
-              <div v-else>
-                <el-select
-                  clearable
-                  v-model="row.dayProduceType"
-                  style="width: 140px"
-                  @change="handlechangeDayproduceType($event,row)"
-                >
-                  <el-option
-                    v-for="type in dayProduceTypeOptions"
-                    :key="type.value"
-                    :label="type.label"
-                    :value="type.value"
-                  >
-                  </el-option>
-                </el-select>
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="dayProduceNum"
-           :title="$t('plan.table.dayProduceNum')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input-number v-model="row.dayProduceNum" size="mini" />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.dayProduceNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.dayProduceNum" size="mini" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="dayProduceUnit"
-            :title="$t('plan.table.dayProduceUnit')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input v-model="row.dayProduceUnit" />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.dayProduceUnit }}</span>
-              </div>
-              <div v-else>
-                <el-input v-model="row.dayProduceUnit" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="personnelNumber"
-            :title="$t('plan.table.personnelNumber')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input-number v-model="row.personnelNumber" />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.personnelNumber }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.personnelNumber" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="dayProduceAllNum"
-            :title="$t('plan.table.dayProduceAllNum')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input-number v-model="row.dayProduceAllNum" disabled />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.dayProduceAllNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number v-model="row.dayProduceAllNum" disabled />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="days"
-            :title="$t('plan.table.days')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input-number v-model="row.days" />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.days }}</span>
-              </div>
-              <div v-else>
-                <el-input-number @change="cellClickEvent($event,row)" v-model="row.days" />
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '180px' : '200px'"
-            field="monthProduceAllNum"
-            :title="$t('plan.table.monthProduceAllNum')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input-number v-model="row.monthProduceAllNum" disabled />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.monthProduceAllNum }}</span>
-              </div>
-              <div v-else>
-                <el-input-number v-model="row.monthProduceAllNum" disabled/>
-              </div>
-            </template>
-          </vxe-column>
-          <vxe-column
-            :width="locale === 'zh' ? '150px' : '200px'"
-            field="remark"
-            :title="$t('plan.table.remark')"
-          >
-            <!-- <template #edit="{ row }">
-              <el-input
-                type="text"
-                v-model="row.remark"
-              />
-            </template> -->
-            <template #default="{ row }">
-              <div v-if="!clickedTableRefGas">
-                <span>{{ row.remark }}</span>
-              </div>
-              <div v-else>
-                <el-input
-                  type="text"
-                  v-model="row.remark"
-                />
-              </div>
-            </template>
-          </vxe-column>
-          <!-- <vxe-column title="鎿嶄綔" width="200" fixed="right">
+        <template #default="{ row }">
+          <div v-if="!clickedTableRefGas">
+            <span>{{ row.remark }}</span>
+          </div>
+          <div v-else>
+            <el-input type="text" v-model="row.remark" />
+          </div>
+        </template>
+      </vxe-column>
+      <!-- <vxe-column title="鎿嶄綔" width="200" fixed="right">
             <template #default="{ row }">
               <template v-if="hasEditStatus1(row)">
                 <el-button
@@ -505,27 +307,28 @@
               </template>
             </template>
           </vxe-column> -->
-        </vxe-table>
-        <!-- <div class="btn_center">
+    </vxe-table>
+    <!-- <div class="btn_center">
           <el-button type="primary" @click="handleSave2">淇濆瓨</el-button>
         </div> -->
-      </div>
-    </div>
+    <!-- </div> -->
+    <!-- </div> -->
   </div>
 </template>
 <script setup name="GasPlanning">
 // import { ElMessage } from "element-plus";
 import { listGasPlan, getGasPlanSave } from "@/api/mainPlan/gasPlanning";
-const height = ref(document.documentElement.clientHeight - 400 + "px;");
 import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+const height = ref(document.documentElement.clientHeight - 230 + "px;");
 const { t, locale } = useI18n();
-const loading = ref(false);
+const { proxy } = getCurrentInstance();
+const { aps_factory } = proxy.useDict("aps_factory");
 const loading2 = ref(false);
-const clickedQuery = ref(false);
 const clickedQuery2 = ref(false);
 const data = reactive({
   queryParams: {
     date: "",
+    applicableFactory: "",
   },
 });
 const tableRef = ref();
@@ -552,150 +355,31 @@
   }
   return "";
 };
-// 琛ㄦ牸閰嶇疆
-// const columns = ref([
-//   // {
-//   //   title: "瑙勫垝骞翠唤",
-//   //   field: "year",
-//   //   width: 150,
-//   // },
-//   // {
-//   //   title: "瑙勫垝鏈堜唤",
-//   //   field: "month",
-//   // },
-//   // {
-//   //   title: "涓撲笟",
-//   //   field: "major",
-//   //   width: 100,
-//   // },
-//   {
-//     title: "鏍囧噯宸ュ簭鍚嶇О",
-//     field: "processName",
-//     width: 100,
-//   },
-//   {
-//     title: "鏃ヤ骇鍑虹被鍨�",
-//     field: "dayProduceType",
-//     width: 140,
-//     editRender: {},
-//     slots: { edit: "edit_role", default: "default_role" },
-//   },
-//   {
-//     title: "鏃ヤ骇鍑烘暟閲�",
-//     field: "dayProduceNum",
-//     width: 140,
-//     // editRender: { autoFocus: "input" },
-//     // slots: { edit: "edit_name", default: "default_name" },
-//   },
-//   {
-//     title: "鏃ヤ骇鍑烘暟閲忓崟浣�",
-//     field: "dayProduceUnit",
-//     width: 140,
-//   },
-//   {
-//     title: "浜哄憳鏁伴噺",
-//     field: "personnelNumber",
-//     width: 140,
-//     type: "html",
-//   },
-//   {
-//     title: "鏃ヤ骇鍑烘�绘暟閲�",
-//     field: "dayProduceAllNum",
-//     width: 140,
-//     type: "html",
-//   },
-//   {
-//     title: "澶╂暟",
-//     field: "days",
-//     width: 120,
-//     // format: 'YYYY-MM-DD'
-//   },
-//   {
-//     title: "鏈堜骇鍑烘�绘暟閲�",
-//     field: "monthProduceAllNum",
-//     width: 140,
-//     type: "html",
-//   },
-//   {
-//     title: "澶囨敞",
-//     field: "remark",
-//     width: 140,
-//     type: "html",
-//   },
-// ]);
-// const hasEditStatus = (row) => {
-//   const $table = tableRef.value;
-//   if ($table) {
-//     return $table.isEditByRow(row);
-//   }
-// };
-const editRowEvent = () => {
-  clickedTableRef.value = true;
+const formatTypeLabelPlant = (list) => {
+  if (list) {
+    return list
+      .map((type) => {
+        const item = aps_factory.value.find(
+          (item) => item.value === type
+        );
+        return item ? item.label : type;
+      })
+      .join("");
+  }
+  return "";
 };
 const editRowEventGas = () => {
   clickedTableRefGas.value = true;
 };
-const saveRowEvent = (row) => {
-  if (!queryParams.value.date) {
-    ElMessage({
-      message: "璇烽�夋嫨骞存湀",
-      type: "error",
-    });
-    return;
-  }
-  const $table = tableRef.value;
-  if ($table) {
-    $table.clearEdit().then(() => {
-      loading.value = true
-      // setTimeout(() => {
-      //   loading.value = false
-      //   VxeUI.modal.message({ content: `淇濆瓨鎴愬姛锛乶ame=${row.name}`, status: 'success' })
-      // }, 300)
-      handleSave("绠¤矾");
-      clickedTableRef.value = false;
-    });
-  }
-};
-const handleCancelAllStatus = ()=>{
-  handleCancleStaus();
-  handleCancleStausGas();
-}
-const handleCancleStaus = () => {
-  clickedTableRef.value = false;
-  if(!clickedQuery.value){
-    return
-  }
-  const year = queryParams.value.date.split("-")[0];
-  const month = parseInt(queryParams.value.date.split("-")[1]);
-  getRouteList(year, month);
-};
 const handleCancleStausGas = () => {
   clickedTableRefGas.value = false;
-  if(!clickedQuery2.value){
-    return
+  if (!clickedQuery2.value) {
+    return;
   }
   const year = queryParams.value.date.split("-")[0];
   const month = parseInt(queryParams.value.date.split("-")[1]);
   getGasList(year, month);
-}
-// const cancelRowEvent = () => {
-//   const $table = tableRef.value;
-//   if ($table) {
-//     $table.clearEdit();
-//   }
-// };
-// const hasEditStatus1 = (row) => {
-//   const $table = tableRef1.value;
-//   if ($table) {
-//     return $table.isEditByRow(row);
-//   }
-// };
-// const editRowEvent1 = (row) => {
-//   const $table = tableRef1.value;
-//   if ($table) {
-//     $table.setEditRow(row);
-//   }
-// };
+};
 const saveRowEvent1 = (row) => {
   if (!queryParams.value.date) {
     ElMessage({
@@ -723,50 +407,19 @@
 //     $table.clearEdit();
 //   }
 // };
-async function getRouteList(year, month) {
-  loading.value = true;
-  const res = await listGasPlan({
-    major: "绠¤矾",
-    year,
-    month,
-  });
-  routePlanList.value = res.rows;
-  routePlanList.value = routePlanList.value.map((item, index) => {
-    return {
-      ...item,
-      dayProduceType:
-        item.dayProduceType == null ? "1" : item.dayProduceType,
-      dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum,
-      dayProduceUnit:
-        item.dayProduceUnit == null ? "灏忔椂" : item.dayProduceUnit,
-      personnelNumber:
-        item.personnelNumber == null ? "1" : item.personnelNumber,
-      dayProduceAllNum:
-        item.dayProduceAllNum == null
-          ? "0"
-          : item.dayProduceNum * item.personnelNumber,
-      days: item.days == null ? "22" : item.days,
-      monthProduceAllNum:
-        item.monthProduceAllNum == null
-          ? "0"
-          : item.dayProduceAllNum * item.days,
-    };
-  });
-  loading.value = false;
-}
 async function getGasList(year, month) {
   loading2.value = true;
   const res = await listGasPlan({
     major: "姘旀煖",
     year,
     month,
+    orgCode: queryParams.value.applicableFactory,
   });
   gasPlanList.value = res.rows;
   gasPlanList.value = gasPlanList.value.map((item, index) => {
     return {
       ...item,
-      dayProduceType:
-        item.dayProduceType == null ? "1" : item.dayProduceType,
+      dayProduceType: item.dayProduceType == null ? "1" : item.dayProduceType,
       dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum,
       dayProduceUnit:
         item.dayProduceUnit == null ? "灏忔椂" : item.dayProduceUnit,
@@ -790,27 +443,26 @@
 //   if(row.dayProduceType==="1"){
 //     row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
 //   }else{
-    
+
 //     row.dayProduceAllNum = row.dayProduceNum
 //   }
 //   row.monthProduceAllNum = row.dayProduceAllNum * row.days;
 // }
 function cellClickEvent(e, row) {
-  if(row.dayProduceType==="1"){
+  if (row.dayProduceType === "1") {
     row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
-  }else{
-    
-    row.dayProduceAllNum = row.dayProduceNum
+  } else {
+    row.dayProduceAllNum = row.dayProduceNum;
   }
   row.monthProduceAllNum = row.dayProduceAllNum * row.days;
 }
-function handlechangeDayproduceType(e,row){
+function handlechangeDayproduceType(e, row) {
   row.dayProduceAllNum = "0";
   row.monthProduceAllNum = "0";
-  if(e=="1"){
+  if (e == "1") {
     row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
-  }else if(e=="2"){
-    row.dayProduceAllNum = row.dayProduceNum
+  } else if (e == "2") {
+    row.dayProduceAllNum = row.dayProduceNum;
   }
   row.monthProduceAllNum = row.dayProduceAllNum * row.days;
 }
@@ -824,14 +476,13 @@
   }
   const year = queryParams.value.date.split("-")[0];
   const month = parseInt(queryParams.value.date.split("-")[1]);
-  getRouteList(year, month);
+  // getRouteList(year, month);
   getGasList(year, month);
-  clickedQuery.value = true;
-  clickedQuery2.value = true
+  clickedQuery2.value = true;
 }
 function resetQuery() {
   queryParams.value.date = "";
-  clickedQuery.value = false;
+  queryParams.value.applicableFactory = "";
   clickedQuery2.value = false;
   gasPlanList.value = [];
   routePlanList.value = [];
@@ -839,71 +490,27 @@
 async function handleSave(major) {
   const year = queryParams.value.date.split("-")[0];
   const month = parseInt(queryParams.value.date.split("-")[1]);
-  if (major === "绠¤矾") {
-    routePlanList.value = routePlanList.value.map((item) => {
-      return {
-        ...item,
-        major: "绠¤矾",
-        year,
-        month,
-      };
-    });
-    await getGasPlanSave([...routePlanList.value]);
-  } else {
+  if (major === "姘旀煖") {
     gasPlanList.value = gasPlanList.value.map((item) => {
       return {
         ...item,
         major: "姘旀煖",
         year,
         month,
+        orgCode: queryParams.value.applicableFactory,
       };
     });
-    await getGasPlanSave([...gasPlanList.value]);
+    const res = await getGasPlanSave([...gasPlanList.value]);
+    if (res.code == 200) {
+      ElMessage({
+        message: "鏁版嵁淇濆瓨鎴愬姛",
+        type: "success",
+      });
+      loading2.value = false;
+      handleQuery();
+    }
   }
-
-  ElMessage({
-    message: "鏁版嵁淇濆瓨鎴愬姛",
-    type: "success",
-  });
-  loading.value = false;
-  loading2.value = false;
-  handleQuery();
 }
-// async function handleSave2(row) {
-//   const year = queryParams.value.date.split("-")[0];
-//   const month = parseInt(queryParams.value.date.split("-")[1]);
-//   console.log(row, "baocun");
-//   // gasPlanList.value = gasPlanList.value.map((item) => {
-//   //   return {
-//   //     ...item,
-//   //     major: "姘斾綋",
-//   //     year,
-//   //     month,
-//   //   };
-//   // });
-//   // routePlanList.value = routePlanList.value.map((item) => {
-//   //   return {
-//   //     ...item,
-//   //     major: "绠¤矾",
-//   //     year,
-//   //     month,
-//   //   };
-//   // });
-//   const res = await getGasPlanSave([
-//     {
-//       ...row,
-//       major: "姘旀煖",
-//       year,
-//       month,
-//     },
-//   ]);
-//   ElMessage({
-//     message: "鏁版嵁淇濆瓨鎴愬姛",
-//     type: "success",
-//   });
-//   handleQuery();
-//   console.log(res, "akiwjciwj");
-// }
 </script>
 <style lang="scss" scoped>
 .column-with-margin {
@@ -921,8 +528,8 @@
   }
   .title_btn {
     margin-top: 20px;
-    &.ml20{
-      margin-left:20px;
+    &.ml20 {
+      margin-left: 20px;
     }
   }
   .tabel_container {
diff --git a/src/views/mainPlan/gasProduceStatics/index.vue b/src/views/mainPlan/gasProduceStatics/index.vue
index b3a5a46..3bb1eee 100644
--- a/src/views/mainPlan/gasProduceStatics/index.vue
+++ b/src/views/mainPlan/gasProduceStatics/index.vue
@@ -10,11 +10,12 @@
     >
       <el-row :gutter="20">
         <el-col :span="8">
-          <el-form-item :label="$t('plan.query.statistical')" :style="{ width: '100%' }">
+          <el-form-item :label="$t('plan.query.statistical')" >
             <el-select
               v-model="queryParams.searchType"
               placeholder="Select"
               @change="handleChangeSelectType"
+              :style="{ width: '270px' }"
             >
               <el-option
                 v-for="item in options"
@@ -26,9 +27,10 @@
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item :label="$t('plan.query.selectDateRange')" :style="{ width: '100%' }">
+          <el-form-item :label="!dayCom?$t('plan.query.selectDateRange'):$t('plan.query.selectDateMonth')">
             <div v-if="!dayCom">
               <el-date-picker
+                :style="{ width: '240px' }"
                 v-model="queryParams.monthRange"
                 type="monthrange"
                 :range-separator="$t('plan.placeholder.to')"
@@ -38,6 +40,7 @@
             </div>
             <div v-else>
               <el-date-picker
+                :style="{ width: '200px' }"
                 v-model="queryParams.monthDays"
                 type="month"
                 :placeholder="$t('plan.placeholder.selectMonth')"
@@ -45,7 +48,27 @@
             </div>
           </el-form-item>
         </el-col>
-        <el-col :span="8" style="text-align:right;">
+        <el-col :span="8" v-if="!dayCom">
+          <el-form-item
+            :label="$t('basic.table.applicableFactories')"
+            prop="plant"
+          >
+            <el-select
+              :style="{ width: '300px' }"
+              clearable
+              v-model="queryParams.applicableFactory"
+              :placeholder="$t('basic.table.applicableFactories')"
+            >
+              <el-option
+                v-for="item in aps_factory"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="8" style="text-align:right;">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
@@ -54,7 +77,7 @@
               $t("common.common.reset")
             }}</el-button>
           </el-form-item>
-        </el-col>
+        </el-col> -->
       </el-row>
     </el-form>
     <el-row :gutter="10" class="mb8">
@@ -80,7 +103,7 @@
           >{{ $t("common.common.update") }}</el-button
         >
       </el-col>
-      <right-toolbar @queryTable="handleQuery" :search="false"></right-toolbar>
+      <right-toolbar @queryTable="handleQuery"></right-toolbar>
     </el-row>
     <vxe-grid ref="gridRef" v-bind="gridOptions" :loading="loading"></vxe-grid>
   </div>
@@ -97,12 +120,12 @@
 import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
 const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
-
+const { aps_factory } = proxy.useDict("aps_factory");
 const loading = ref(false);
 const gridRef = ref();
 const height = ref(document.documentElement.clientHeight - 180 + "px;");
 const headers = ref([]);
-const exportData = ref([]);
+// const exportData = ref([]);
 const showSearch = ref(true);
 const data = reactive({
   queryParams: {
@@ -139,7 +162,7 @@
 const dayCom = ref(false);
 let tableColumn = [];
 let tableData = [];
-let merges = [];
+// let merges = [];
 watch(
   locale,
   (newLocale) => {
@@ -196,11 +219,24 @@
     eYearMonth: `${eYear}-${eMonth.toString().padStart(2, "0")}`,
   };
 }
+const formatTypeLabelPlant = (list) => {
+  if (list) {
+    return list
+      .map((type) => {
+        const item = aps_factory.value.find(
+          (item) => item.value === type
+        );
+        return item ? item.label : type;
+      })
+      .join("");
+  }
+  return "";
+};
 function getGasList() {
   let rowKey = 0;
   let colKey = 0;
   headers.value = [];
-  exportData.value = [];
+  // exportData.value = [];
   tableColumn = [];
   tableData = [];
   loading.value = true;
@@ -222,8 +258,10 @@
         loading.value = false;
         return;
       }
-      headersOne.push(t("plan.table.dateYearMonth"));
-      headersTwo.push(t("plan.table.processName"));
+      // headersOne.push("");//t("plan.table.dateYearMonth")
+      // headersOne.push("");
+      // headersTwo.push(t("plan.table.processName"));
+      // headersTwo.push(t("plan.table.applicableFactories"));
       colList.push({
         field: "dateCol",
         title: t("plan.table.dateYearMonth"),
@@ -235,16 +273,22 @@
             width: 250,
             type: "html",
           },
+          {
+            field: `resourceGroupName`,
+            title: t("plan.table.applicableFactories"),
+            width: 250,
+            type: "html",
+          },
         ],
         width: 160,
       });
       response.data.planTitle.forEach((item) => {
-        headersOne.push(item);
-        headersOne.push("");
-        headersOne.push("");
-        headersTwo.push(t("plan.table.designWorkingHours"));
-        headersTwo.push(t("plan.table.requiredWorkingHours"));
-        headersTwo.push(t("plan.table.capacityLoad"));
+        // headersOne.push(item);
+        // headersOne.push("");
+        // headersOne.push("");
+        // headersTwo.push(t("plan.table.designWorkingHours"));
+        // headersTwo.push(t("plan.table.requiredWorkingHours"));
+        // headersTwo.push(t("plan.table.capacityLoad"));
         colKey++;
         colList.push({
           field: `dateColTime${colKey}`,
@@ -271,25 +315,25 @@
         });
       });
 
-      headers.value.push(headersOne);
-      headers.value.push(headersTwo);
+      // headers.value.push(headersOne);
+      // headers.value.push(headersTwo);
 
       const columnList = [...tableColumn, ...colList];
       const dataList = [];
-      let startCol = 1;
+      // let startCol = 1;
 
       //鑾峰彇map
       response.data.planTable.map((mapItem) => {
         rowKey++;
-        let lastCol = startCol + 2;
-        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } });
-        startCol = lastCol + 1;
+        // let lastCol = startCol + 2;
+        // merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } });
+        // startCol = lastCol + 1;
         let data = [];
         const item = {
           id: `${rowKey}`,
         };
         for (const [key, listValue] of Object.entries(mapItem)) {
-          data.push(key);
+          // data.push(key);
 
           let tableKey = 0;
           let flag = false;
@@ -302,9 +346,9 @@
               listItem.requireTimes,
               listItem.capacityLoad
             );
-            data.push(listItem.designTimes);
-            data.push(listItem.requireTimes);
-            data.push(listItem.capacityLoad + "%");
+            // data.push(listItem.designTimes);
+            // data.push(listItem.requireTimes);
+            // data.push(listItem.capacityLoad + "%");
             // if (listItem.capacityLoad > 100) {
             //   flag = true;
             // }
@@ -313,9 +357,10 @@
           // item[`resourceName`] = flag
           //   ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>`
           //   : key;
-          item[`resourceName`] = key;
+          item[`resourceName`] = key.split("_")[0];
+          item[`resourceGroupName`] = formatTypeLabelPlant([key.split("_")[1]]);
         }
-        exportData.value.push(data);
+        // exportData.value.push(data);
         dataList.push(item);
       });
 
diff --git a/src/views/mainPlan/pipePlanning/index.vue b/src/views/mainPlan/pipePlanning/index.vue
new file mode 100644
index 0000000..359c764
--- /dev/null
+++ b/src/views/mainPlan/pipePlanning/index.vue
@@ -0,0 +1,548 @@
+<template>
+  <div class="app-container">
+    <el-form
+      class="responsive-form"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      label-position="left"
+    >
+      <el-row type="flex" justify="left">
+        <el-col :span="8">
+          <el-form-item
+            :style="{ width: '100%' }"
+            :label="$t('plan.query.selectMonth')"
+            prop="description"
+          >
+            <el-date-picker
+              clearable
+              v-model="queryParams.date"
+              type="month"
+              value-format="YYYY-MM"
+              :placeholder="$t('plan.query.selectMonth')"
+            >
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item :label="$t('basic.table.applicableFactories')" style="width: 100%" prop="plant">
+            <el-select
+              clearable
+              v-model="queryParams.applicableFactory"
+              :placeholder="$t('basic.table.applicableFactories')"
+            >
+              <el-option
+                v-for="item in aps_factory"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" style="text-align: right">
+          <el-form-item class="column-with-margin">
+            <el-button type="primary" icon="Search" @click="handleQuery">{{
+              $t("common.common.query")
+            }}</el-button>
+            <el-button icon="Refresh" @click="resetQuery">{{
+              $t("common.common.reset")
+            }}</el-button>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <!-- <div class="box_container"> -->
+    <el-row v-if="!clickedTableRef">
+      <!-- <el-col :span="!clickedTableRef?22:20">
+          <div class="title_text">{{$t('plan.title.pipePlanCapacity')}}</div>
+        </el-col> -->
+      <el-col
+        :span="24"
+        style="text-align: right; margin-bottom: 10px"
+      >
+        <el-button class="title_btn" type="default" @click="editRowEvent">{{
+          $t("common.common.edit")
+        }}</el-button>
+      </el-col>
+    </el-row>
+    <el-row v-if="clickedTableRef">
+      <el-col :span="24" style="text-align: right; margin-bottom: 10px" >
+        <el-button
+          class="title_btn"
+          type="primary"
+          @click="saveRowEvent"
+          v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
+        >
+          {{ $t("common.common.save") }}
+        </el-button>
+        <el-button
+          class="title_btn ml20"
+          type="default"
+          @click="handleCancleStaus"
+          >{{ $t("common.common.cancel") }}</el-button
+        >
+      </el-col>
+    </el-row>
+    <vxe-table
+      border
+      ref="tableRef"
+      show-overflow
+      :loading="loading"
+      :height="height"
+      :column-config="{ resizable: true, useKey: true }"
+      :data="routePlanList"
+      size="small"
+    >
+      <vxe-column
+        field="processName"
+        :width="locale === 'zh' ? '150px' : '200px'"
+        :title="$t('plan.table.satndardProcessName')"
+        fixed="left"
+      >
+      </vxe-column>
+      <vxe-column
+        field="orgCode"
+        :width="locale === 'zh' ? '150px' : '200px'"
+        :title="$t('plan.table.applicableFactories')"
+        fixed="left"
+      >
+        <template #default="{ row }">
+          {{ formatTypeLabelPlant([row.orgCode]) }}
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="dayProduceType"
+        :title="$t('plan.table.dayProduceType')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-select
+                clearable
+                v-model="row.dayProduceType"
+                style="width: 140px"
+              >
+                <el-option
+                  v-for="type in dayProduceTypeOptions"
+                  :key="type.value"
+                  :label="type.label"
+                  :value="type.value"
+                >
+                </el-option>
+              </el-select>
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ formatTypeLabel([row.dayProduceType]) }}</span>
+          </div>
+          <div v-else>
+            <el-select
+              clearable
+              v-model="row.dayProduceType"
+              style="width: 140px"
+              @change="handlechangeDayproduceType($event, row)"
+            >
+              <el-option
+                v-for="type in dayProduceTypeOptions"
+                :key="type.value"
+                :label="type.label"
+                :value="type.value"
+              >
+              </el-option>
+            </el-select>
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="dayProduceNum"
+        :title="$t('plan.table.dayProduceNum')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input-number v-model="row.dayProduceNum" size="mini" />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.dayProduceNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.dayProduceNum"
+              size="mini"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="dayProduceUnit"
+        :title="$t('plan.table.dayProduceUnit')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input v-model="row.dayProduceUnit" />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.dayProduceUnit }}</span>
+          </div>
+          <div v-else>
+            <el-input v-model="row.dayProduceUnit" />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="personnelNumber"
+        :title="$t('plan.table.personnelNumber')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input-number v-model="row.personnelNumber" />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.personnelNumber }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.personnelNumber"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="dayProduceAllNum"
+        :title="$t('plan.table.dayProduceAllNum')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input-number v-model="row.dayProduceAllNum" disabled />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.dayProduceAllNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number v-model="row.dayProduceAllNum" disabled />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="days"
+        :title="$t('plan.table.days')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input-number v-model="row.days" />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.days }}</span>
+          </div>
+          <div v-else>
+            <el-input-number
+              @change="cellClickEvent($event, row)"
+              v-model="row.days"
+            />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '180px' : '200px'"
+        field="monthProduceAllNum"
+        :title="$t('plan.table.monthProduceAllNum')"
+      >
+        <!-- <template #edit="{ row }">
+              <el-input-number v-model="row.monthProduceAllNum" disabled />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.monthProduceAllNum }}</span>
+          </div>
+          <div v-else>
+            <el-input-number v-model="row.monthProduceAllNum" disabled />
+          </div>
+        </template>
+      </vxe-column>
+      <vxe-column
+        :width="locale === 'zh' ? '150px' : '200px'"
+        field="remark"
+        :title="$t('plan.table.remark')"
+      >
+        <!-- :edit-render="{ autoFocus: 'input' }" -->
+        <!-- <template #edit="{ row }">
+              <el-input
+                type="text"
+                v-model="row.remark"
+              />
+            </template> -->
+        <template #default="{ row }">
+          <div v-if="!clickedTableRef">
+            <span>{{ row.remark }}</span>
+          </div>
+          <div v-else>
+            <el-input type="text" v-model="row.remark" />
+          </div>
+        </template>
+      </vxe-column>
+      <!-- <vxe-column title="鎿嶄綔" width="200" fixed="right">
+            <template #default="{ row }">
+              <template v-if="hasEditStatus(row)">
+                <el-button
+                  @click="saveRowEvent(row)"
+                  v-hasPermi="['aps:gasPipelineCapacityPlan:add']"
+                  >淇濆瓨</el-button
+                >
+                <el-button @click="cancelRowEvent()">鍙栨秷</el-button>
+              </template>
+              <template v-else>
+                <el-button @click="editRowEvent(row)">缂栬緫</el-button>
+              </template>
+            </template>
+          </vxe-column> -->
+    </vxe-table>
+    <!-- </div> -->
+    <!-- </div> -->
+  </div>
+</template>
+<script setup name="GasPlanning">
+// import { ElMessage } from "element-plus";
+import { listGasPlan, getGasPlanSave } from "@/api/mainPlan/gasPlanning";
+const height = ref(document.documentElement.clientHeight - 230 + "px;");
+import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+const { t, locale } = useI18n();
+const { proxy } = getCurrentInstance();
+const { aps_factory } = proxy.useDict("aps_factory");
+const loading = ref(false);
+const clickedQuery = ref(false);
+const clickedQuery2 = ref(false);
+const data = reactive({
+  queryParams: {
+    date: "",
+    applicableFactory:""
+  },
+});
+const tableRef = ref();
+const tableRef1 = ref();
+const { queryParams } = toRefs(data);
+const gasPlanList = ref([]);
+const routePlanList = ref([]);
+const dayProduceTypeOptions = ref([
+  { label: "鍗曚汉鏃ヤ骇鍑�", value: "1" },
+  { label: "鍥哄畾鏃ヤ骇鍑�", value: "2" },
+]);
+const clickedTableRef = ref(false);
+const clickedTableRefGas = ref(false);
+const formatTypeLabel = (list) => {
+  if (list) {
+    return list
+      .map((type) => {
+        const item = dayProduceTypeOptions.value.find(
+          (item) => item.value === type
+        );
+        return item ? item.label : type;
+      })
+      .join("");
+  }
+  return "";
+};
+const formatTypeLabelPlant = (list) => {
+  if (list) {
+    return list
+      .map((type) => {
+        const item = aps_factory.value.find(
+          (item) => item.value === type
+        );
+        return item ? item.label : type;
+      })
+      .join("");
+  }
+  return "";
+};
+const editRowEvent = () => {
+  clickedTableRef.value = true;
+};
+const saveRowEvent = (row) => {
+  if (!queryParams.value.date) {
+    ElMessage({
+      message: "璇烽�夋嫨骞存湀",
+      type: "error",
+    });
+    return;
+  }
+  const $table = tableRef.value;
+  if ($table) {
+    $table.clearEdit().then(() => {
+      loading.value = true;
+      // setTimeout(() => {
+      //   loading.value = false
+      //   VxeUI.modal.message({ content: `淇濆瓨鎴愬姛锛乶ame=${row.name}`, status: 'success' })
+      // }, 300)
+      handleSave("绠¤矾");
+      clickedTableRef.value = false;
+    });
+  }
+};
+// const handleCancelAllStatus = () => {
+//   handleCancleStaus();
+//   handleCancleStausGas();
+// };
+const handleCancleStaus = () => {
+  clickedTableRef.value = false;
+  if (!clickedQuery.value) {
+    return;
+  }
+  const year = queryParams.value.date.split("-")[0];
+  const month = parseInt(queryParams.value.date.split("-")[1]);
+  getRouteList(year, month);
+};
+// const handleCancleStausGas = () => {
+//   clickedTableRefGas.value = false;
+//   if (!clickedQuery2.value) {
+//     return;
+//   }
+//   const year = queryParams.value.date.split("-")[0];
+//   const month = parseInt(queryParams.value.date.split("-")[1]);
+//   getGasList(year, month);
+// };
+async function getRouteList(year, month) {
+  loading.value = true;
+  const res = await listGasPlan({
+    major: "绠¤矾",
+    year,
+    month,
+    orgCode:queryParams.value.applicableFactory
+  });
+  routePlanList.value = res.rows;
+  routePlanList.value = routePlanList.value.map((item, index) => {
+    return {
+      ...item,
+      dayProduceType: item.dayProduceType == null ? "1" : item.dayProduceType,
+      dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum,
+      dayProduceUnit:
+        item.dayProduceUnit == null ? "灏忔椂" : item.dayProduceUnit,
+      personnelNumber:
+        item.personnelNumber == null ? "1" : item.personnelNumber,
+      dayProduceAllNum:
+        item.dayProduceAllNum == null
+          ? "0"
+          : item.dayProduceNum * item.personnelNumber,
+      days: item.days == null ? "22" : item.days,
+      monthProduceAllNum:
+        item.monthProduceAllNum == null
+          ? "0"
+          : item.dayProduceAllNum * item.days,
+    };
+  });
+  loading.value = false;
+}
+// function cellClickEvent({ row, column }) {
+//   console.log(row,column,"cellClickEvent")
+//   if(row.dayProduceType==="1"){
+//     row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
+//   }else{
+
+//     row.dayProduceAllNum = row.dayProduceNum
+//   }
+//   row.monthProduceAllNum = row.dayProduceAllNum * row.days;
+// }
+function cellClickEvent(e, row) {
+  if (row.dayProduceType === "1") {
+    row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
+  } else {
+    row.dayProduceAllNum = row.dayProduceNum;
+  }
+  row.monthProduceAllNum = row.dayProduceAllNum * row.days;
+}
+function handlechangeDayproduceType(e, row) {
+  row.dayProduceAllNum = "0";
+  row.monthProduceAllNum = "0";
+  if (e == "1") {
+    row.dayProduceAllNum = row.dayProduceNum * row.personnelNumber;
+  } else if (e == "2") {
+    row.dayProduceAllNum = row.dayProduceNum;
+  }
+  row.monthProduceAllNum = row.dayProduceAllNum * row.days;
+}
+function handleQuery() {
+  if (!queryParams.value.date) {
+    ElMessage({
+      message: "璇烽�夋嫨骞存湀",
+      type: "error",
+    });
+    return;
+  }
+  const year = queryParams.value.date.split("-")[0];
+  const month = parseInt(queryParams.value.date.split("-")[1]);
+  getRouteList(year, month);
+  // getGasList(year, month);
+  clickedQuery.value = true;
+  // clickedQuery2.value = true;
+}
+function resetQuery() {
+  queryParams.value.date = "";
+  queryParams.value.applicableFactory = "";
+  clickedQuery.value = false;
+  // clickedQuery2.value = false;
+  gasPlanList.value = [];
+  routePlanList.value = [];
+}
+async function handleSave(major) {
+  const year = queryParams.value.date.split("-")[0];
+  const month = parseInt(queryParams.value.date.split("-")[1]);
+  if (major === "绠¤矾") {
+    routePlanList.value = routePlanList.value.map((item) => {
+      return {
+        ...item,
+        major: "绠¤矾",
+        year,
+        month,
+        orgCode: queryParams.value.applicableFactory,
+      };
+    });
+    const res = await getGasPlanSave([...routePlanList.value]);
+    if(res.code == 200){
+      ElMessage({
+        message: "鏁版嵁淇濆瓨鎴愬姛",
+        type: "success",
+      });
+      loading.value = false;
+      handleQuery();
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.column-with-margin {
+  margin-right: 0px;
+}
+.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;
+  }
+  .title_btn {
+    margin-top: 20px;
+    &.ml20 {
+      margin-left: 20px;
+    }
+  }
+  .tabel_container {
+    width: 98%;
+    margin: 20px auto;
+  }
+}
+.btn_center {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-top: 20px;
+  padding-bottom: 20px;
+}
+</style>
diff --git a/src/views/mainPlan/pipeProduceStatics/index.vue b/src/views/mainPlan/pipeProduceStatics/index.vue
index d99e07c..1e9835d 100644
--- a/src/views/mainPlan/pipeProduceStatics/index.vue
+++ b/src/views/mainPlan/pipeProduceStatics/index.vue
@@ -101,7 +101,7 @@
 import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
 const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
-
+const { aps_factory } = proxy.useDict("aps_factory");
 const loading = ref(false);
 const gridRef = ref();
 const height = ref(document.documentElement.clientHeight - 180 + "px;");
@@ -200,6 +200,19 @@
     eYearMonth: `${eYear}-${eMonth.toString().padStart(2, "0")}`,
   };
 }
+const formatTypeLabelPlant = (list) => {
+  if (list) {
+    return list
+      .map((type) => {
+        const item = aps_factory.value.find(
+          (item) => item.value === type
+        );
+        return item ? item.label : type;
+      })
+      .join("");
+  }
+  return "";
+};
 /** 鏌ヨ闆朵欢缁熻琛ㄥ垪琛� */
 function getPipeList() {
   let rowKey = 0;
@@ -220,15 +233,15 @@
     major: "piping",
   }).then((response) => {
     const colList = [];
-    let headersOne = [];
-    let headersTwo = [];
+    // let headersOne = [];
+    // let headersTwo = [];
     if (response.code == "200") {
       if (!response.data.planTitle) {
         loading.value = false;
         return;
       }
-      headersOne.push(t("plan.table.dateYearMonth"));
-      headersTwo.push(t("plan.table.processName"));
+      // headersOne.push(t("plan.table.dateYearMonth"));
+      // headersTwo.push(t("plan.table.processName"));
       colList.push({
         field: "dateCol",
         title: t("plan.table.dateYearMonth"),
@@ -240,16 +253,16 @@
             width: 250,
             type: "html",
           },
+          {
+            field: `resourceGroupName`,
+            title: t("plan.table.applicableFactories"),
+            width: 250,
+            type: "html",
+          },
         ],
         width: 160,
       });
       response.data.planTitle.forEach((item) => {
-        headersOne.push(item);
-        headersOne.push("");
-        headersOne.push("");
-        headersTwo.push(t("plan.table.designWorkingHours"));
-        headersTwo.push(t("plan.table.requiredWorkingHours"));
-        headersTwo.push(t("plan.table.capacityLoad"));
         colKey++;
         colList.push({
           field: `dateColTime${colKey}`,
@@ -275,27 +288,16 @@
           width: 160,
         });
       });
-
-      headers.value.push(headersOne);
-      headers.value.push(headersTwo);
-
       const columnList = [...tableColumn, ...colList];
       const dataList = [];
-      let startCol = 1;
 
       //鑾峰彇map
       response.data.planTable.map((mapItem) => {
         rowKey++;
-        let lastCol = startCol + 2;
-        merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } });
-        startCol = lastCol + 1;
-        let data = [];
         const item = {
           id: `${rowKey}`,
         };
         for (const [key, listValue] of Object.entries(mapItem)) {
-          data.push(key);
-
           let tableKey = 0;
           let flag = false;
           listValue.forEach((listItem) => {
@@ -307,24 +309,14 @@
               listItem.requireTimes,
               listItem.capacityLoad
             );
-            // 0-100 缁胯壊锛�101-120榛勮壊锛屽ぇ浜�120绾㈣壊
-            // listItem.capacityLoad <= 100
-            //   ? `<font color="red">${listItem.capacityLoad}%</font>`
-            //   : listItem.capacityLoad + "%";
-            data.push(listItem.designTimes);
-            data.push(listItem.requireTimes);
-            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`] = key;
+          item[`resourceName`] = key.split("_")[0];
+          item[`resourceGroupName`] = formatTypeLabelPlant([key.split("_")[1]]);
         }
-        exportData.value.push(data);
         dataList.push(item);
       });
 
diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
index 1c84014..396a3e5 100644
--- a/src/views/system/dict/index.vue
+++ b/src/views/system/dict/index.vue
@@ -122,6 +122,17 @@
           >鏇存柊鎺掍骇鍖哄煙</el-button
         >
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Refresh"
+          :disabled="loadingRefresh"
+          @click="handleRefreshData"
+          v-hasPermi="['system:dict:remove']"
+          >鍒锋柊缂撳瓨BOM銆佸伐鑹鸿矾绾裤�佸簱瀛樻暟鎹�</el-button
+        >
+      </el-col>
       <right-toolbar
         v-model:showSearch="showSearch"
         @queryTable="getList"
@@ -259,13 +270,14 @@
   refreshCache,
   refreshApsArea
 } from "@/api/system/dict/type";
-
+import { refreshBomRouteStorageDataList } from "@/api/basicData/bom/bom.js"
 const { proxy } = getCurrentInstance();
 const { sys_normal_disable } = proxy.useDict("sys_normal_disable");
 
 const typeList = ref([]);
 const open = ref(false);
 const loading = ref(true);
+const loadingRefresh = ref(false);
 const showSearch = ref(true);
 const ids = ref([]);
 const single = ref(true);
@@ -426,5 +438,18 @@
   });
   handleQuery();
 }
+function handleRefreshData() {
+  loadingRefresh.value = true;
+  refreshBomRouteStorageDataList().then(res=>{
+    if(res.code==200){
+      proxy.$modal.msgSuccess("鏇存柊鎴愬姛");
+      loadingRefresh.value = false;
+    }else{
+      loadingRefresh.value = false;
+    }
+  }).catch(()=>{
+    loadingRefresh.value = false;
+  })
+}
 getList();
 </script>

--
Gitblit v1.9.3