From 7ffa19f1fe3b37519e83ed1f86715154b13c00f3 Mon Sep 17 00:00:00 2001 From: maven <2163098428@qq.com> Date: 星期二, 26 八月 2025 15:16:10 +0800 Subject: [PATCH] yys 生产管控(完成基础逻辑) --- src/views/production/components/ProductionDetailsTable.vue | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 54 insertions(+), 3 deletions(-) diff --git a/src/views/production/components/ProductionDetailsTable.vue b/src/views/production/components/ProductionDetailsTable.vue index 8331deb..43be265 100644 --- a/src/views/production/components/ProductionDetailsTable.vue +++ b/src/views/production/components/ProductionDetailsTable.vue @@ -1,5 +1,24 @@ <template> <el-table :data="tableData" :border="border" style="width: 100%"> + <el-table-column label="鐓ゆ枡绫诲瀷" min-width="120"> + <template #default="{ row, $index }"> + <el-select + clearable + v-model="row.type" + placeholder="璇烽�夋嫨鐓ゆ枡绫诲瀷" + filterable + :key="`coalId-select-${$index}-${typeList.length}`" + :disabled="isViewMode" + > + <el-option + v-for="(item, index) of typeList" + :key="`option-${index}-${item.value}`" + :label="item.label" + :value="item.value" + /> + </el-select> + </template> + </el-table-column> <el-table-column label="鐓ょ" min-width="120"> <template #default="{ row, $index }"> <el-select @@ -9,6 +28,7 @@ @change="(value) => handleCoalSelectChange(row, value)" filterable :key="`coalId-select-${$index}-${weekList.length}`" + :disabled="isViewMode" > <el-option v-for="(item, index) of weekList" @@ -26,6 +46,7 @@ placeholder="璇疯緭鍏ョ敓浜ф暟閲�" type="number" @input="handleInput('productionQuantity', $index, $event)" + :disabled="isViewMode" /> </template> </el-table-column> @@ -37,6 +58,7 @@ placeholder="璇疯緭鍏ヤ汉宸ユ垚鏈�" type="number" @input="handleInput('laborCost', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -47,11 +69,15 @@ <el-table-column label="鑳借�楁垚鏈�" min-width="120"> <template #default="{ row, $index }"> + <!-- 涓嶈兘涓鸿礋鏁� --> <el-input v-model="row.energyConsumptionCost" placeholder="璇疯緭鍏ヨ兘鑰楁垚鏈�" type="number" + min="0" + step="0.01" @input="handleInput('energyConsumptionCost', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -67,6 +93,7 @@ placeholder="璇疯緭鍏ヨ澶囨姌鏃�" type="number" @input="handleInput('equipmentDepreciation', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -82,6 +109,7 @@ placeholder="璇疯緭鍏ラ噰璐崟浠�" type="number" @input="handleInput('purchasePrice', $index, $event)" + :disabled="isViewMode" > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -99,6 +127,7 @@ type="number" :readonly="autoCalculate" @input="handleInput('totalCost', $index, $event)" + > <template #suffix> <i style="font-style: normal">鍏�</i> @@ -115,6 +144,7 @@ @change="(value) => handleUserSelectChange(row, value)" filterable :key="`producer-select-${$index}-${userList.length}`" + :disabled="isViewMode" > <el-option v-for="(item, index) of userList" @@ -126,10 +156,10 @@ </template> </el-table-column> <el-table-column - v-if="showOperations" label="鎿嶄綔" width="120" fixed="right" + v-if="dialogType !== 'viewRow'" > <template #default="{ $index }"> <el-button @@ -148,10 +178,21 @@ <script setup name="ProductionDetailsTable"> import {ref, computed, watch, onMounted, nextTick} from "vue"; import {Delete} from "@element-plus/icons-vue"; +import {ElMessage} from "element-plus"; import {getCoalFieldList} from "@/api/basicInformation/coalQualityMaintenance"; import {getCoalInfoList} from "@/api/production"; import {userListAll} from "@/api/publicApi"; +const typeList = [ + { + label: "鎴愬搧", + value: 1, + }, + { + label: "鍘熸枡", + value: 2, + } + ] const props = defineProps({ modelValue: { type: Array, @@ -169,8 +210,12 @@ type: Boolean, default: true, }, + dialogType:{ + type: String, + default:'add' + } }); - +const isViewMode = computed(() => props.dialogType === "viewRow"); const emit = defineEmits(["update:modelValue", "input-change", "delete-row"]); // 浣跨敤 v-model 杩涜鍙屽悜缁戝畾 @@ -185,6 +230,11 @@ // 澶勭悊杈撳叆鍙樺寲 const handleInput = (field, index, value) => { + // 纭繚杈撳叆鍊兼槸鏁板瓧鎴栫┖瀛楃涓茶�屼笖闈炶礋鏁� + if (!/^\d*\.?\d*$/.test(value) && value !== "") { + ElMessage.error("璇疯緭鍏ユ湁鏁堢殑鏁板瓧"); + return; + } const newData = [...tableData.value]; newData[index][field] = value; @@ -208,7 +258,7 @@ // 璁$畻鎬绘垚鏈� const calculateTotalCost = (row) => { const laborCost = parseFloat(row.laborCost) || 0; - const energyCost = parseFloat(row.energyCost) || 0; + const energyCost = parseFloat(row.energyConsumptionCost) || 0; const equipmentDepreciation = parseFloat(row.equipmentDepreciation) || 0; const purchasePrice = parseFloat(row.purchasePrice) || 0; @@ -366,6 +416,7 @@ purchasePrice: "", totalCost: "", producerId: "", + type: 1, ...rowData, }; tableData.value = [...tableData.value, defaultRow]; -- Gitblit v1.9.3