From 807df6dedd5078e0dd9f6515a8e1ea93e19a6f52 Mon Sep 17 00:00:00 2001 From: zhang_12370 <z2864490065@outlook.com> Date: 星期三, 25 六月 2025 15:21:51 +0800 Subject: [PATCH] 文档管理 树形菜单 新增修改优化 生产加工模块的 数据tags 显示 生产人的匹配 --- src/views/production/index.vue | 155 ++++++++++++++++++++++++++++++++++----------------- 1 files changed, 103 insertions(+), 52 deletions(-) diff --git a/src/views/production/index.vue b/src/views/production/index.vue index 8ab5e23..1003361 100644 --- a/src/views/production/index.vue +++ b/src/views/production/index.vue @@ -1,12 +1,12 @@ <template> - <div class="production-container"> + <div> <!-- 鎼滅储琛ㄥ崟 --> <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> @@ -27,68 +27,81 @@ </el-button> </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" - > <template #coal="{ row }"> + :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" + 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> <!-- 鍒嗛〉缁勪欢 --> <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,7 +117,7 @@ handlePageChange, handleSelectionChange, deleteSelected -} = useTableData(getProductionMasterList, { pageSize: 10 }); +} = useTableData(getProductionMasterList, {pageSize: 10}); // 浣跨敤瀵硅瘽妗嗙粍鍚堝紡鍑芥暟 const { @@ -116,13 +129,27 @@ } = 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); if (index !== -1) { - tableData.value[index] = { ...tableData.value[index], ...row }; + tableData.value[index] = {...tableData.value[index], ...row}; } }; @@ -133,10 +160,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,6 +201,7 @@ width: 20%; } } + .search-form { display: flex; justify-content: space-between; @@ -172,18 +216,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