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 | 66 +++++++++++++++++++++++++++++--- 1 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/views/production/components/ProductionDetailsTable.vue b/src/views/production/components/ProductionDetailsTable.vue index 1db3794..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> @@ -110,11 +139,12 @@ <template #default="{ row, $index }"> <el-select clearable - :model-value="getUserNameById(row.producer) || row.producer" + :model-value="getUserNameById(row.producerId) || row.producerId" placeholder="璇烽�夋嫨鐢熶骇浜�" @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; @@ -339,12 +389,13 @@ }; // 澶勭悊鐢ㄦ埛閫夋嫨鍙樺寲锛堟柊鏂规硶锛氬悕绉伴�夋嫨杞琁D锛� const handleUserSelectChange = (row, selectedName) => { + console.log("handleUserSelectChange", row, selectedName); // 鏍规嵁閫夋嫨鐨勫悕绉版壘鍒板搴旂殑ID const userItem = userList.value.find(item => item.value === selectedName); if (userItem) { - row.producer = userItem.key; // 璁剧疆涓篒D + row.producerId = userItem.key; // 璁剧疆涓篒D } else { - row.producer = ''; // 濡傛灉娌℃壘鍒帮紝娓呯┖ + row.producerId = ''; // 濡傛灉娌℃壘鍒帮紝娓呯┖ } }; // 鏆撮湶鏂规硶缁欑埗缁勪欢浣跨敤 @@ -364,7 +415,8 @@ equipmentDepreciation: "", purchasePrice: "", totalCost: "", - producer: "", + producerId: "", + type: 1, ...rowData, }; tableData.value = [...tableData.value, defaultRow]; -- Gitblit v1.9.3