修改猪栏卡片和猪舍时列表不折叠
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