From 8db0c69163959824c904cb5865b41124b1a04f2d Mon Sep 17 00:00:00 2001 From: zhang_12370 <z2864490065@outlook.com> Date: 星期二, 24 六月 2025 16:04:39 +0800 Subject: [PATCH] 优化生产加工模块 --- src/components/Table/EtableModify.vue | 63 +++++++++++++------------------ src/views/production/components/ProductionDialog.vue | 32 +++++++++++++--- 2 files changed, 52 insertions(+), 43 deletions(-) diff --git a/src/components/Table/EtableModify.vue b/src/components/Table/EtableModify.vue index 9afb58d..b42e487 100644 --- a/src/components/Table/EtableModify.vue +++ b/src/components/Table/EtableModify.vue @@ -28,33 +28,35 @@ type="index" width="60" align="center" - /> - <template v-for="col in columns" :key="col.prop"> + /> <template v-for="col in columns" :key="col.prop"> <el-table-column v-bind="col" - :show-overflow-tooltip="false" align="center" > <template #default="scope"> <template v-if="col.slot"> - <slot></slot> - </template> - <template v-else> + <slot + :name="col.prop" + :row="scope.row" + :column="scope.column" + :index="scope.$index" + ></slot> + </template> <template v-else> <div class="cell-edit" @dblclick="handleCellEdit(scope.row, col.prop)" :class="{ editable: isColumnEditable(col.prop) }" > + <!-- 鏄剧ず鐘舵�侊細浣跨敤鏍煎紡鍖栫殑鍊� --> <span v-if="!scope.row.editing || !scope.row.editing[col.prop]" class="cell-text" > {{ - scope.row[col.prop] == null || scope.row[col.prop] === "" - ? "--" - : scope.row[col.prop] + formatCellValue(scope.row, scope.column, scope.row[col.prop], col) }} </span> + <!-- 缂栬緫鐘舵�侊細浣跨敤鍘熷鍊硷紝涓嶇粡杩囨牸寮忓寲 --> <el-input v-else v-model="scope.row[col.prop]" @@ -69,34 +71,6 @@ </template> </el-table-column> </template> - <!-- 鎿嶄綔鍒� --> - <el-table-column - v-if="showOperations" - :label="operationsLabel" - :width="operationsWidth" - fixed="right" - align="center" - > - <template #default="scope"> - <slot name="operations" :row="scope.row"> - <el-button - v-if="operations.includes('edit')" - link - type="primary" - size="small" - @click="handleEdit(scope.row)" - >缂栬緫</el-button - > - <!-- <el-button--> - <!-- v-if="operations.includes('delete')"--> - <!-- link--> - <!-- type="danger"--> - <!-- size="small"--> - <!-- @click="handleDelete(scope.row)"--> - <!-- >鍒犻櫎</el-button>--> - </slot> - </template> - </el-table-column> </el-table> </template> @@ -217,7 +191,22 @@ // 妫�鏌ヨ鍒楀湪鎵�鏈夋暟鎹腑鏄惁鏈夐潪绌哄�� return data.some((row) => row[col.prop] != null && row[col.prop] !== ""); }; +// 榛樿鐨勬牸寮忓寲鍑芥暟 +const defaultFormatter = (row, column, cellValue) => { + return cellValue == null || cellValue === "" || cellValue === 0 + ? "0" + : cellValue; +}; +// 鏍煎紡鍖栧崟鍏冩牸鍊� +const formatCellValue = (row, column, cellValue, col) => { + // 濡傛灉鍒楁湁鑷畾涔夋牸寮忓寲鍣紝浣跨敤鑷畾涔夋牸寮忓寲鍣� + if (col.formatter && typeof col.formatter === 'function') { + return col.formatter(row, column, cellValue); + } + // 鍚﹀垯浣跨敤榛樿鏍煎紡鍖栧櫒 + return defaultFormatter(row, column, cellValue); +}; // 澶勭悊鍗曞厓鏍肩紪杈� const handleCellEdit = (row, prop) => { // 濡傛灉涓嶅厑璁哥紪杈戝崟鍏冩牸锛岀洿鎺ヨ繑鍥� diff --git a/src/views/production/components/ProductionDialog.vue b/src/views/production/components/ProductionDialog.vue index 124e32f..3b96834 100644 --- a/src/views/production/components/ProductionDialog.vue +++ b/src/views/production/components/ProductionDialog.vue @@ -157,6 +157,7 @@ import { getOfficialAll, addOrEditPM, + getCoalInfoList, deleteProductionInventory, } from "@/api/production/index.js"; import {validateFormData, validateNumber, deepClone, createDefaultProductionRow} from "@/utils/production"; @@ -192,9 +193,15 @@ const selectedIds = ref([]); const currentRow = ref(null); const copyForm = ref(null); +const coalList = ref([]) +const supplierList = ref({}); // 琛ㄦ牸鍒楅厤缃� const columns = [ - {label: "鐓ょ", prop: "coal", minwidth: 120}, + {prop: "coalId", label: "鐓ょ", minwidth: 60,slot:false, + formatter: (row) => { + return coalList.value.find(coal => coal.id === row.coalId)?.coal || "--"; + } + }, {label: "搴撳瓨鏁伴噺", prop: "inventoryQuantity", minwidth: 100}, { label: "浣跨敤鏁伴噺", @@ -206,8 +213,18 @@ ]; const formalDatabaseColumns = ref([ - {prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minwidth: 150}, - {prop: "coal", label: "鐓ょ绫诲瀷", minwidth: 60}, + {prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minwidth: 150 + // ,formatter: (row) => { + // console.log(row); + // return supplierList.value[row.supplierId] || "--"; + // } + }, + {prop: "coalId", label: "鐓ょ", minwidth: 60, + formatter: (row) => { + // return coalList.value[row.coalId].coal || "--"; + return coalList.value.find(coal => coal.id === row.coalId)?.coal || "--"; + } + }, {prop: "inventoryQuantity", label: "搴撳瓨鏁伴噺", minwidth: 80}, {prop: "unit", label: "鍗曚綅", minwidth: 20}, {prop: "priceExcludingTax", label: "鍗曚环锛堜笉鍚◣锛�", minwidth: 80}, @@ -229,9 +246,12 @@ // 鑾峰彇閰嶇疆鏁版嵁 const handlData = async () => { innerVisible.value = true; - let res = await getOfficialAll(); - if (res.code === 200) { - formalDatabaseData.value = res.data; + let getSupplier = await getOfficialAll(); + let getCoalName = await getCoalInfoList(); + coalList.value = getCoalName.data || []; + supplierList.value = getSupplier.data || []; + if (getSupplier.code === 200) { + formalDatabaseData.value = getSupplier.data; const existingOfficialIds = tableData.value .map((item) => item.officialId) .filter((id) => id); -- Gitblit v1.9.3