huang
23 小时以前 04914a9997afbbead6f8adbb9d9c40e05b2edbd1
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">
@@ -87,6 +79,21 @@
        </el-form-item>
      </el-col>
    </el-row>
    <el-row :gutter="20">
      <el-col :span="8">
        <el-form-item label="处理时间(秒)">
          <el-input-number
            v-model="config.processTimeSeconds"
            :min="1"
            :max="3600"
            :step="1"
            style="width: 100%;"
          />
          <span class="form-tip">大理片笼处理玻璃的时间(秒),默认30秒</span>
        </el-form-item>
      </el-col>
    </el-row>
  </div>
</template>
@@ -110,20 +117,29 @@
  ],
  gridLength: 2000,
  gridWidth: 1500,
  gridThickness: 5
  gridThickness: 5,
  processTimeSeconds: 30
})
// 监听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
      gridThickness: newVal.gridThickness ?? 5,
      processTimeSeconds: newVal.processTimeSeconds ?? 30
    }
  }
}, { immediate: true, deep: true })
@@ -136,13 +152,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
  })