huang
2025-11-26 792236ef78c2cdd3a989fb40a7f2e2487c4e17b6
mes-web/src/views/device/components/DeviceLogicConfig/LargeGlassConfig.vue
@@ -1,21 +1,14 @@
<template>
  <div class="large-glass-config">
    <el-form-item label="格子范围配置">
    <el-form-item label="笼子格子配置">
    </el-form-item>
      <div class="grid-ranges">
        <div
          v-for="(range, index) in config.gridRanges"
          :key="index"
          class="grid-range-item"
        >
          <el-input-number
            v-model="range.row"
            :min="1"
            :max="100"
            :step="1"
            style="width: 100px; margin-right: 10px;"
            placeholder="行号"
          />
          <span>行:</span>
          <span style="margin-right: 10px;">笼子{{ range.row }}:</span>
          <el-input-number
            v-model="range.start"
            :min="1"
@@ -43,11 +36,10 @@
          </el-button>
        </div>
        <el-button type="primary" size="small" @click="addGridRange">
          添加格子范围
          添加笼子
        </el-button>
      </div>
      <span class="form-tip">配置每行的格子范围,例如:第一行1~52格,第二行53~101格</span>
    </el-form-item>
      <span class="form-tip">配置每个笼子的格子范围,例如:笼子1是1~52格,笼子2是53~101格。</span>
    <el-row :gutter="20">
      <el-col :span="8">
@@ -116,11 +108,18 @@
// 监听props变化
watch(() => props.modelValue, (newVal) => {
  if (newVal && Object.keys(newVal).length > 0) {
    let gridRanges = newVal.gridRanges || [
      { row: 1, start: 1, end: 52 },
      { row: 2, start: 53, end: 101 }
    ]
    // 确保每个范围都有row字段(如果没有则自动生成)
    gridRanges = gridRanges.map((range, index) => ({
      ...range,
      row: range.row || (index + 1)
    }))
    config.value = {
      gridRanges: newVal.gridRanges || [
        { row: 1, start: 1, end: 52 },
        { row: 2, start: 53, end: 101 }
      ],
      gridRanges: gridRanges,
      gridLength: newVal.gridLength ?? 2000,
      gridWidth: newVal.gridWidth ?? 1500,
      gridThickness: newVal.gridThickness ?? 5
@@ -136,13 +135,13 @@
// 格子范围相关方法
const addGridRange = () => {
  const maxRow = config.value.gridRanges.length > 0
    ? Math.max(...config.value.gridRanges.map(r => r.row))
    ? Math.max(...config.value.gridRanges.map(r => r.row || 0))
    : 0
  const lastEnd = config.value.gridRanges.length > 0
    ? Math.max(...config.value.gridRanges.map(r => r.end))
    ? Math.max(...config.value.gridRanges.map(r => r.end || 0))
    : 0
  config.value.gridRanges.push({
    row: maxRow + 1,
    row: maxRow + 1,  // 自动生成笼子编号
    start: lastEnd + 1,
    end: lastEnd + 50
  })