修改猪栏卡片和猪舍时列表不折叠
This commit is contained in:
@@ -97,6 +97,8 @@ export default {
|
||||
penDialogVisible: false,
|
||||
isEditPen: false,
|
||||
currentPen: {},
|
||||
// 批次映射,用于本地组装猪栏的批次名称
|
||||
batchMap: new Map(),
|
||||
};
|
||||
},
|
||||
async mounted() {
|
||||
@@ -117,6 +119,9 @@ export default {
|
||||
const pens = Array.isArray(pensResponse.data) ? pensResponse.data : [];
|
||||
const batches = Array.isArray(batchesResponse.data) ? batchesResponse.data : [];
|
||||
|
||||
// 更新 batchMap
|
||||
this.batchMap = new Map(batches.map(batch => [batch.id, batch.batch_number]));
|
||||
|
||||
this.pigHousesData = this.assembleData(houses, pens, batches);
|
||||
} catch (err) {
|
||||
this.error = err.message || '无法获取数据';
|
||||
@@ -125,15 +130,20 @@ export default {
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
assembleData(houses, pens, batches) {
|
||||
const batchMap = new Map(batches.map(batch => [batch.id, batch.batch_number]));
|
||||
const houseMap = new Map(houses.map(house => [house.id, { ...house, pens: [], isExpanded: false }]));
|
||||
assembleData(houses, pens) {
|
||||
// 此时 houses 和 pens 已确保是数组,batches 已经更新到 this.batchMap
|
||||
const houseMap = new Map();
|
||||
houses.forEach(house => {
|
||||
// 确保保留 isExpanded 状态
|
||||
const existingHouse = this.pigHousesData.find(h => h.id === house.id);
|
||||
houseMap.set(house.id, { ...house, pens: [], isExpanded: existingHouse ? existingHouse.isExpanded : false });
|
||||
});
|
||||
|
||||
for (const pen of pens) {
|
||||
if (houseMap.has(pen.house_id)) {
|
||||
const penWithBatch = {
|
||||
...pen,
|
||||
batch_number: batchMap.get(pen.pig_batch_id) || null
|
||||
batch_number: this.batchMap.get(pen.pig_batch_id) || null
|
||||
};
|
||||
houseMap.get(pen.house_id).pens.push(penWithBatch);
|
||||
}
|
||||
@@ -160,7 +170,8 @@ export default {
|
||||
});
|
||||
await deletePigHouse(house.id);
|
||||
this.$message.success('删除成功');
|
||||
await this.loadData();
|
||||
// 本地更新数据,不重新加载全部
|
||||
this.pigHousesData = this.pigHousesData.filter(h => h.id !== house.id);
|
||||
} catch (err) {
|
||||
if (err !== 'cancel') {
|
||||
this.$message.error('删除失败: ' + (err.message || '未知错误'));
|
||||
@@ -168,9 +179,22 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
async handleHouseSuccess() {
|
||||
handleHouseSuccess(newHouseData) {
|
||||
this.houseDialogVisible = false;
|
||||
await this.loadData();
|
||||
if (this.isEditHouse) {
|
||||
// 更新现有猪舍
|
||||
const index = this.pigHousesData.findIndex(h => h.id === newHouseData.id);
|
||||
if (index !== -1) {
|
||||
// 保留 pens 和 isExpanded 状态
|
||||
const existingHouse = this.pigHousesData[index];
|
||||
this.pigHousesData[index] = { ...newHouseData, pens: existingHouse.pens, isExpanded: existingHouse.isExpanded };
|
||||
}
|
||||
this.$message.success('猪舍更新成功');
|
||||
} else {
|
||||
// 添加新猪舍
|
||||
this.pigHousesData.push({ ...newHouseData, pens: [], isExpanded: false });
|
||||
this.$message.success('猪舍添加成功');
|
||||
}
|
||||
},
|
||||
// --- 猪栏操作 ---
|
||||
handleAddPen(house) {
|
||||
@@ -192,7 +216,11 @@ export default {
|
||||
});
|
||||
await deletePen(pen.id);
|
||||
this.$message.success('删除成功');
|
||||
await this.loadData();
|
||||
// 本地更新数据,不重新加载全部
|
||||
const house = this.pigHousesData.find(h => h.id === pen.house_id);
|
||||
if (house) {
|
||||
house.pens = house.pens.filter(p => p.id !== pen.id);
|
||||
}
|
||||
} catch (err) {
|
||||
if (err !== 'cancel') {
|
||||
this.$message.error('删除失败: ' + (err.message || '未知错误'));
|
||||
@@ -200,9 +228,29 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
async handlePenSuccess() {
|
||||
handlePenSuccess(newPenData) {
|
||||
this.penDialogVisible = false;
|
||||
await this.loadData();
|
||||
// 为新猪栏数据添加 batch_number
|
||||
const penWithBatch = {
|
||||
...newPenData,
|
||||
batch_number: this.batchMap.get(newPenData.pig_batch_id) || null
|
||||
};
|
||||
|
||||
const house = this.pigHousesData.find(h => h.id === penWithBatch.house_id);
|
||||
if (house) {
|
||||
if (this.isEditPen) {
|
||||
// 更新现有猪栏
|
||||
const index = house.pens.findIndex(p => p.id === penWithBatch.id);
|
||||
if (index !== -1) {
|
||||
house.pens[index] = penWithBatch;
|
||||
}
|
||||
this.$message.success('猪栏更新成功');
|
||||
} else {
|
||||
// 添加新猪栏
|
||||
house.pens.push(penWithBatch);
|
||||
this.$message.success('猪栏添加成功');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user