From 40b5273e2540cee05bf3b9f11af5706989b5f699 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期五, 27 六月 2025 16:42:11 +0800
Subject: [PATCH] 提交删除部分页面导出按钮 修改采购逻辑 取消供应商新增校验 完善vue打包以后找不到文件的问题

---
 src/views/production/index.vue |  107 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 85 insertions(+), 22 deletions(-)

diff --git a/src/views/production/index.vue b/src/views/production/index.vue
index 8ab5e23..fa77e22 100644
--- a/src/views/production/index.vue
+++ b/src/views/production/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="production-container">
+  <div class="app-container">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form :inline="true" :model="queryParams" class="search-form">
       <el-form-item label="鎼滅储">
@@ -22,10 +22,16 @@
         <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"
@@ -34,19 +40,33 @@
         :current-page="queryParams.current"
         :page-size="queryParams.size"
         @selection-change="handleSelectionChange"
-        @edit="row => openDialog('edit', row)"
+        @edit="(row) => openDialog('edit', row)"
         :show-selection="true"
         :border="true"
-        :maxHeight="480"
-      >        <template #coal="{ row }">
+        @viewRow="(row) => (viewRow('viewRow', row))"
+        :operations="['edit', 'viewRow']"
+        :operationsWidth="200"
+        :show-overflow-tooltip="false"
+        style="width: 100%; height: calc(100vh - 26em)"
+      >
+        <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"
@@ -69,7 +89,7 @@
 </template>
 
 <script setup>
-import { onMounted } from "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";
@@ -80,10 +100,14 @@
 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: "coalId", label: "鐓ょ", minWidth: 150, slot: true },
   { prop: "productionQuantity", label: "鐢熶骇鏁伴噺", minWidth: 120 },
   { prop: "laborCost", label: "浜哄伐鎴愭湰", minWidth: 150 },
   { prop: "energyConsumptionCost", label: "鑳借�楁垚鏈�", minWidth: 120 },
@@ -103,7 +127,7 @@
   handleReset,
   handlePageChange,
   handleSelectionChange,
-  deleteSelected
+  deleteSelected,
 } = useTableData(getProductionMasterList, { pageSize: 10 });
 
 // 浣跨敤瀵硅瘽妗嗙粍鍚堝紡鍑芥暟
@@ -112,15 +136,30 @@
   dialogType,
   dialogRef,
   openDialog,
-  handleDialogSuccess: onDialogSuccess
+  viewRow,
+  handleDialogSuccess: onDialogSuccess,
 } = useDialog();
 
 // 浣跨敤鐓ょ鏁版嵁缁勫悎寮忓嚱鏁�
 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 };
   }
@@ -133,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>
 
@@ -158,9 +213,10 @@
     width: 20%;
   }
 }
+
 .search-form {
   display: flex;
-  justify-content: space-between;
+  justify-content: flex-start;
   align-items: center;
   margin-bottom: 20px;
 
@@ -172,18 +228,25 @@
     margin-left: 10px;
   }
 }
+
 .coal-tags {
   display: flex;
   flex-wrap: wrap;
   gap: 4px;
-  
-  .el-tag {
+  align-items: center;
+
+  .coal-tag {
     margin-right: 4px;
     margin-bottom: 4px;
-    
+
     &:last-child {
       margin-right: 0;
     }
   }
+
+  .no-data {
+    color: #999;
+    font-style: italic;
+  }
 }
 </style>

--
Gitblit v1.9.3