|
|
@@ -492,6 +492,7 @@
|
|
|
class="fuel-consumption-el-table"
|
|
|
table-layout="fixed"
|
|
|
:key="fuelTableKey"
|
|
|
+ row-key="deviceId"
|
|
|
>
|
|
|
<!-- 车辆编码 -->
|
|
|
<el-table-column
|
|
|
@@ -552,6 +553,7 @@
|
|
|
style="width: 100%"
|
|
|
size="small"
|
|
|
@focus="handleFuelInputFocus(scope.row)"
|
|
|
+ :key="scope.row.deviceId"
|
|
|
/>
|
|
|
<!-- 只读模式下显示数值 -->
|
|
|
<span v-else>
|
|
|
@@ -1938,6 +1940,29 @@ const initFormData = (reportData: any) => {
|
|
|
if (fuelSource && Array.isArray(fuelSource) && fuelSource.length > 0) {
|
|
|
// 处理每个油耗数据项,设置 customFuel 的默认值并确保格式正确
|
|
|
const processedFuels = fuelSource.map((fuel: any) => {
|
|
|
+ // 创建全新的对象,避免引用共享
|
|
|
+ const newFuel = {
|
|
|
+ ...fuel, // 使用展开运算符创建浅拷贝
|
|
|
+ // 确保每个字段都有独立的值
|
|
|
+ createTime: fuel.createTime,
|
|
|
+ updateTime: fuel.updateTime,
|
|
|
+ creator: fuel.creator,
|
|
|
+ updater: fuel.updater,
|
|
|
+ deleted: fuel.deleted,
|
|
|
+ id: fuel.id,
|
|
|
+ type: fuel.type,
|
|
|
+ reportId: fuel.reportId,
|
|
|
+ deviceId: fuel.deviceId,
|
|
|
+ deviceCode: fuel.deviceCode,
|
|
|
+ yfDeviceCode: fuel.yfDeviceCode,
|
|
|
+ deviceName: fuel.deviceName,
|
|
|
+ carId: fuel.carId,
|
|
|
+ zhbdFuel: fuel.zhbdFuel,
|
|
|
+ customFuel: null, // 初始化为null
|
|
|
+ queryDate: fuel.queryDate,
|
|
|
+ remark: fuel.remark
|
|
|
+ };
|
|
|
+
|
|
|
let customFuelValue;
|
|
|
|
|
|
// 如果 customFuel 不为空,确保它是字符串格式并已正确格式化
|
|
|
@@ -1951,7 +1976,7 @@ const initFormData = (reportData: any) => {
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
- ...fuel,
|
|
|
+ ...newFuel,
|
|
|
customFuel: customFuelValue
|
|
|
};
|
|
|
});
|
|
|
@@ -1971,6 +1996,29 @@ const initFormData = (reportData: any) => {
|
|
|
if (fuelSource && Array.isArray(fuelSource) && fuelSource.length > 0) {
|
|
|
// 处理每个油耗数据项,设置 customFuel 的默认值并确保格式正确
|
|
|
const processedFuels = fuelSource.map((fuel: any) => {
|
|
|
+ // 创建全新的对象,避免引用共享
|
|
|
+ const newFuel = {
|
|
|
+ ...fuel, // 使用展开运算符创建浅拷贝
|
|
|
+ // 确保每个字段都有独立的值
|
|
|
+ createTime: fuel.createTime,
|
|
|
+ updateTime: fuel.updateTime,
|
|
|
+ creator: fuel.creator,
|
|
|
+ updater: fuel.updater,
|
|
|
+ deleted: fuel.deleted,
|
|
|
+ id: fuel.id,
|
|
|
+ type: fuel.type,
|
|
|
+ reportId: fuel.reportId,
|
|
|
+ deviceId: fuel.deviceId,
|
|
|
+ deviceCode: fuel.deviceCode,
|
|
|
+ yfDeviceCode: fuel.yfDeviceCode,
|
|
|
+ deviceName: fuel.deviceName,
|
|
|
+ carId: fuel.carId,
|
|
|
+ zhbdFuel: fuel.zhbdFuel,
|
|
|
+ customFuel: null, // 初始化为null
|
|
|
+ queryDate: fuel.queryDate,
|
|
|
+ remark: fuel.remark
|
|
|
+ };
|
|
|
+
|
|
|
let customFuelValue;
|
|
|
|
|
|
// 如果 customFuel 不为空,确保它是字符串格式并已正确格式化
|
|
|
@@ -1984,7 +2032,7 @@ const initFormData = (reportData: any) => {
|
|
|
}
|
|
|
|
|
|
return {
|
|
|
- ...fuel,
|
|
|
+ ...newFuel,
|
|
|
customFuel: customFuelValue
|
|
|
};
|
|
|
});
|
|
|
@@ -2054,6 +2102,31 @@ const getWorkloadColumns = () => {
|
|
|
return columns;
|
|
|
};
|
|
|
|
|
|
+// 添加一个深拷贝油耗数据的辅助函数
|
|
|
+const deepCopyFuelData = (fuelData: any) => {
|
|
|
+ if (!fuelData) return null;
|
|
|
+
|
|
|
+ return {
|
|
|
+ createTime: fuelData.createTime,
|
|
|
+ updateTime: fuelData.updateTime,
|
|
|
+ creator: fuelData.creator,
|
|
|
+ updater: fuelData.updater,
|
|
|
+ deleted: fuelData.deleted,
|
|
|
+ id: fuelData.id,
|
|
|
+ type: fuelData.type,
|
|
|
+ reportId: fuelData.reportId,
|
|
|
+ deviceId: fuelData.deviceId,
|
|
|
+ deviceCode: fuelData.deviceCode,
|
|
|
+ yfDeviceCode: fuelData.yfDeviceCode,
|
|
|
+ deviceName: fuelData.deviceName,
|
|
|
+ carId: fuelData.carId,
|
|
|
+ zhbdFuel: fuelData.zhbdFuel,
|
|
|
+ customFuel: fuelData.customFuel,
|
|
|
+ queryDate: fuelData.queryDate,
|
|
|
+ remark: fuelData.remark
|
|
|
+ };
|
|
|
+};
|
|
|
+
|
|
|
// 强制刷新表格
|
|
|
const refreshFuelTable = () => {
|
|
|
fuelTableKey.value += 1;
|
|
|
@@ -2204,18 +2277,30 @@ const handleCustomFuelChange = (fuelItem: any) => {
|
|
|
fuelItem.customFuel = '0.00';
|
|
|
}
|
|
|
|
|
|
- // 手动触发当日油耗的重新计算
|
|
|
- calculateAndUpdateDailyFuel();
|
|
|
-
|
|
|
// 同步更新 formData.reportFuels 中的数据
|
|
|
- if (formData.value.reportFuels) {
|
|
|
+ // 确保通过 deviceId 正确找到并更新对应的记录
|
|
|
+ if (formData.value.reportFuels && fuelItem.deviceId) {
|
|
|
const index = formData.value.reportFuels.findIndex(
|
|
|
- item => item.id === fuelItem.id || item.deviceId === fuelItem.deviceId
|
|
|
+ item => item.deviceId === fuelItem.deviceId
|
|
|
);
|
|
|
+
|
|
|
if (index !== -1) {
|
|
|
- formData.value.reportFuels[index] = { ...fuelItem };
|
|
|
+ // 创建新对象,避免引用问题
|
|
|
+ const updatedFuel = {
|
|
|
+ ...formData.value.reportFuels[index],
|
|
|
+ customFuel: fuelItem.customFuel
|
|
|
+ };
|
|
|
+
|
|
|
+ // 使用 Vue.set 或直接赋值确保响应性
|
|
|
+ formData.value.reportFuels[index] = updatedFuel;
|
|
|
+
|
|
|
+ // 强制刷新表格
|
|
|
+ fuelTableKey.value += 1;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 手动触发当日油耗的重新计算
|
|
|
+ calculateAndUpdateDailyFuel();
|
|
|
}
|
|
|
|
|
|
// 详情 审批 平台井 获取工作量值
|