From c6d13e58d85fbaaceb49d4c24401b50143050173 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期四, 26 六月 2025 18:01:24 +0800
Subject: [PATCH] 调整 基础管理煤种生产人 更改采购数计算逻辑 处理供应商数据回显问题

---
 src/views/production/index.vue |  174 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 117 insertions(+), 57 deletions(-)

diff --git a/src/views/production/index.vue b/src/views/production/index.vue
index 8108dd7..fa77e22 100644
--- a/src/views/production/index.vue
+++ b/src/views/production/index.vue
@@ -1,12 +1,12 @@
 <template>
-  <div class="production-container">
+  <div class="app-container">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form :inline="true" :model="queryParams" class="search-form">
       <el-form-item label="鎼滅储">
         <el-input
-            v-model="queryParams.searchAll"
-            placeholder="璇疯緭鍏ュ叧閿瘝"
-            clearable
+          v-model="queryParams.searchAll"
+          placeholder="璇疯緭鍏ュ叧閿瘝"
+          clearable
         />
       </el-form-item>
       <el-form-item>
@@ -22,74 +22,97 @@
         <el-button type="success" :icon="Plus" @click="openDialog('add')">
           鏂板鍔犲伐
         </el-button>
-        <el-button type="danger" :icon="Delete" :disabled="!selectedRows.length" @click="() => deleteSelected(delPM)">
+        <el-button
+          type="danger"
+          :icon="Delete"
+          :disabled="!selectedRows.length"
+          @click="() => deleteSelected(delPM)"
+        >
           鍒犻櫎
         </el-button>
-      </div>      <!-- 鏁版嵁琛ㄦ牸 -->
+      </div>
+      <!-- 鏁版嵁琛ㄦ牸 -->
       <ETable
-          :showOverflowTooltip="false"
-          :loading="loading"
-          :table-data="tableData"
-          :columns="columns"
-          :current-page="queryParams.current"
-          :page-size="queryParams.size"
-          @selection-change="handleSelectionChange"
-          @edit="row => openDialog('edit', row)"
-          :show-selection="true"
-          :border="true"
-          :maxHeight="480"
+        :showOverflowTooltip="false"
+        :loading="loading"
+        :table-data="tableData"
+        :columns="columns"
+        :current-page="queryParams.current"
+        :page-size="queryParams.size"
+        @selection-change="handleSelectionChange"
+        @edit="(row) => openDialog('edit', row)"
+        :show-selection="true"
+        :border="true"
+        @viewRow="(row) => (viewRow('viewRow', row))"
+        :operations="['edit', 'viewRow']"
+        :operationsWidth="200"
+        :show-overflow-tooltip="false"
+        style="width: 100%; height: calc(100vh - 26em)"
       >
-        <template #coal="{ row }">
+        <template #coalId="{ row }">
           <div class="coal-tags">
-            <el-tag v-for="coal in parseCoalArray(row.coal)" :key="coal" size="small">
-              {{ getCoalNameById(coal) }}
-            </el-tag>
-            <span v-if="!row.coal">--</span>
+            <template v-if="row.coalId">
+              <el-tag
+                v-for="coal in parseCoalArray(row.coalId)"
+                :key="coal"
+                size="small"
+                type="primary"
+                class="coal-tag"
+              >
+                {{ getDisplayCoalName(coal) }}
+              </el-tag>
+            </template>
+            <span v-else class="no-data">--</span>
           </div>
         </template>
-      </ETable>      <!-- 鍒嗛〉缁勪欢 -->
+      </ETable>
+      <!-- 鍒嗛〉缁勪欢 -->
       <Pagination
-          :layout="'total, prev, pager, next, jumper'"
-          :total="total"
-          v-model:page="queryParams.current"
-          :limit="queryParams.size"
-          @pagination="handlePageChange"
+        :layout="'total, prev, pager, next, jumper'"
+        :total="total"
+        v-model:page="queryParams.current"
+        :limit="queryParams.size"
+        @pagination="handlePageChange"
       />
     </el-card>
 
     <!-- 鐢熶骇瀵硅瘽妗� -->
     <!-- handleProductionAndProcessing -->
     <ProductionDialog
-        v-model:visible="dialogVisible"
-        ref="dialogRef"
-        :type="dialogType"
-        @update:productionAndProcessing="handleProductionAndProcessing"
-        @success="handleDialogSuccess"
+      v-model:visible="dialogVisible"
+      ref="dialogRef"
+      :type="dialogType"
+      @update:productionAndProcessing="handleProductionAndProcessing"
+      @success="handleDialogSuccess"
     />
   </div>
 </template>
 
 <script setup>
-import {onMounted} from "vue";
-import {ElMessage} from "element-plus";
-import {Plus, Delete} from "@element-plus/icons-vue";
+import { onMounted, ref } from "vue";
+import { ElMessage } from "element-plus";
+import { Plus, Delete } from "@element-plus/icons-vue";
 import ProductionDialog from "./components/ProductionDialog.vue";
 import ETable from "@/components/Table/ETable.vue";
 import Pagination from "@/components/Pagination/index.vue";
-import {getProductionMasterList, delPM} from "@/api/production";
-import {parseCoalArray} from "@/utils/production";
-import {useTableData} from "./components/useTableData.js";
-import {useDialog} from "./components/useDialog.js";
-import {useCoalData} from "./components/useCoalData.js";
+import { getProductionMasterList, delPM } from "@/api/production";
+import { parseCoalArray } from "@/utils/production";
+import { useTableData } from "./components/useTableData.js";
+import { useDialog } from "./components/useDialog.js";
+import { useCoalData } from "./components/useCoalData.js";
+import { getCoalInfoList } from "@/api/production";
+
+// 鐓ょ淇℃伅鍒楄〃
+const coalInfoList = ref([]);
 
 // 琛ㄦ牸鍒楅厤缃�
 const columns = [
-  {prop: "coal", label: "鐓ょ", minWidth: 150, slot: 'coal'},
-  {prop: "productionQuantity", label: "鐢熶骇鏁伴噺", minWidth: 120},
-  {prop: "laborCost", label: "浜哄伐鎴愭湰", minWidth: 150},
-  {prop: "energyConsumptionCost", label: "鑳借�楁垚鏈�", minWidth: 120},
-  {prop: "equipmentDepreciation", label: "璁惧鎶樻棫", minWidth: 143},
-  {prop: "totalCost", label: "鎬绘垚鏈�", minWidth: 150},
+  { prop: "coalId", label: "鐓ょ", minWidth: 150, slot: true },
+  { prop: "productionQuantity", label: "鐢熶骇鏁伴噺", minWidth: 120 },
+  { prop: "laborCost", label: "浜哄伐鎴愭湰", minWidth: 150 },
+  { prop: "energyConsumptionCost", label: "鑳借�楁垚鏈�", minWidth: 120 },
+  { prop: "equipmentDepreciation", label: "璁惧鎶樻棫", minWidth: 143 },
+  { prop: "totalCost", label: "鎬绘垚鏈�", minWidth: 150 },
 ];
 
 // 浣跨敤琛ㄦ牸鏁版嵁缁勫悎寮忓嚱鏁�
@@ -104,8 +127,8 @@
   handleReset,
   handlePageChange,
   handleSelectionChange,
-  deleteSelected
-} = useTableData(getProductionMasterList, {pageSize: 10});
+  deleteSelected,
+} = useTableData(getProductionMasterList, { pageSize: 10 });
 
 // 浣跨敤瀵硅瘽妗嗙粍鍚堝紡鍑芥暟
 const {
@@ -113,17 +136,32 @@
   dialogType,
   dialogRef,
   openDialog,
-  handleDialogSuccess: onDialogSuccess
+  viewRow,
+  handleDialogSuccess: onDialogSuccess,
 } = useDialog();
 
 // 浣跨敤鐓ょ鏁版嵁缁勫悎寮忓嚱鏁�
-const {getCoalNameById, getCoalData} = useCoalData();
+const { getCoalNameById, getCoalData } = useCoalData();
+
+// 鑾峰彇鐓ょ鏄剧ず鍚嶇О锛堝甫澶囩敤閫昏緫锛�
+const getDisplayCoalName = (coalId) => {
+  // 浼樺厛浣跨敤 useCoalData 鐨勬柟娉�
+  let name = getCoalNameById(coalId);
+
+  // 濡傛灉娌℃湁鎵惧埌锛屽皾璇曚粠 coalInfoList 涓煡鎵�
+  if (name === coalId && coalInfoList.value.length > 0) {
+    const found = coalInfoList.value.find((item) => item.id == coalId);
+    name = found ? found.coal : coalId;
+  }
+
+  return name || coalId;
+};
 
 // 澶勭悊鐢熶骇鏁版嵁鏇存柊
 const handleProductionAndProcessing = (row, rows) => {
-  const index = tableData.value.findIndex(item => item.id === rows.id);
+  const index = tableData.value.findIndex((item) => item.id === rows.id);
   if (index !== -1) {
-    tableData.value[index] = {...tableData.value[index], ...row};
+    tableData.value[index] = { ...tableData.value[index], ...row };
   }
 };
 
@@ -134,10 +172,26 @@
     ElMessage.success("鎿嶄綔鎴愬姛");
   });
 };
+
 // 缁勪欢鎸傝浇鏃跺姞杞芥暟鎹�
 onMounted(async () => {
-  await getCoalData(); // 棰勫姞杞界叅绉嶆暟鎹�
-  getList();
+  try {
+    // 骞惰鍔犺浇鐓ょ鏁版嵁鍜岃〃鏍兼暟鎹�
+    await Promise.all([
+      getCoalData(), // 棰勫姞杞界叅绉嶆暟鎹�
+      (async () => {
+        const res = await getCoalInfoList();
+        if (res.code === 200) {
+          coalInfoList.value = res.data;
+        }
+      })(),
+    ]);
+
+    // 鍔犺浇琛ㄦ牸鏁版嵁
+    getList();
+  } catch (error) {
+    ElMessage.error("鏁版嵁鍔犺浇澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯");
+  }
 });
 </script>
 
@@ -162,7 +216,7 @@
 
 .search-form {
   display: flex;
-  justify-content: space-between;
+  justify-content: flex-start;
   align-items: center;
   margin-bottom: 20px;
 
@@ -179,8 +233,9 @@
   display: flex;
   flex-wrap: wrap;
   gap: 4px;
+  align-items: center;
 
-  .el-tag {
+  .coal-tag {
     margin-right: 4px;
     margin-bottom: 4px;
 
@@ -188,5 +243,10 @@
       margin-right: 0;
     }
   }
+
+  .no-data {
+    color: #999;
+    font-style: italic;
+  }
 }
 </style>

--
Gitblit v1.9.3