zhangwencui
20 小时以前 6382ce232afa4d60c305b3f16d04782c683fc7be
src/views/safeProduction/hazardousMaterialsControl/index.vue
@@ -162,7 +162,9 @@
          <span>{{ form.name }}</span>
        </el-descriptions-item>
        <el-descriptions-item label="危险源类型">
          <span>{{ getTypeLabel(form.type) }}</span>
          <el-tag type="info">
            {{ getTypeLabel(form.type) }}
          </el-tag>
        </el-descriptions-item>
        <el-descriptions-item label="所在位置">
          <span>{{ form.location }}</span>
@@ -242,9 +244,9 @@
      </el-form>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="dialogVisible = false">取消</el-button>
          <el-button type="primary"
                     @click="submitForm">确定</el-button>
          <el-button @click="dialogVisible = false">取消</el-button>
        </span>
      </template>
    </el-dialog>
@@ -256,9 +258,13 @@
      <div>
        <el-table :data="safeHazardList"
                  border
                  ref="safeHazardTableRef"
                  v-loading="safeHazardLoading"
                  style="width: 100%"
                  @row-click="handleSafeHazardSelect">
                  :selection="selectedSafeHazardIds"
                  @selection-change="handleSafeHazardSelectionChange"
                  style="width: 100%">
          <el-table-column type="selection"
                           width="55" />
          <el-table-column prop="code"
                           label="危险源编码"
                           width="180"
@@ -300,6 +306,8 @@
      </div>
      <template #footer>
        <span class="dialog-footer">
          <el-button type="primary"
                     @click="handleSafeHazardSelect">确定</el-button>
          <el-button @click="safeHazardSelectVisible = false">取消</el-button>
        </span>
      </template>
@@ -414,6 +422,12 @@
  // 表格列配置
  const tableColumn = ref([
    {
      label: "领用单号",
      prop: "materialRecordCode",
      width: 130,
      showOverflowTooltip: true,
    },
    {
      label: "危险源编码",
      prop: "code",
      showOverflowTooltip: true,
@@ -482,16 +496,11 @@
      showOverflowTooltip: true,
    },
    {
      label: "单号",
      prop: "materialRecordCode",
      showOverflowTooltip: true,
    },
    {
      dataType: "action",
      label: "操作",
      align: "center",
      fixed: "right",
      width: 200,
      width: 130,
      operation: [
        {
          name: "归还",
@@ -538,11 +547,17 @@
    }
  };
  const handleApplyQtyChange = () => {
    if (Number(form.value.applyQty) < 0) {
      ElMessage.error("领用数量不能小于0");
      form.value.applyQty = 0;
      return;
    }
    if (form.value.applyQty > valueItem.value.stockQty) {
      ElMessage.error("领用数量不能大于库存数量");
      form.value.applyQty = "";
    }
  };
  const selectedSafeHazardIds = ref([]);
  // 开始自动刷新
  const startAutoRefresh = () => {
@@ -577,7 +592,7 @@
  const fetchSafeHazardList = () => {
    safeHazardLoading.value = true;
    return safeHazardListPage({
      page: safeHazardPage.value.current,
      current: safeHazardPage.value.current,
      size: safeHazardPage.value.size,
    })
      .then(res => {
@@ -589,12 +604,31 @@
      });
  };
  const handleSafeHazardSelect = item => {
  const handleSafeHazardSelectionChange = selection => {
    // 只保留最后一个选中的项
    if (selection.length > 1) {
      const lastSelected = selection[selection.length - 1];
      selectedSafeHazardIds.value = [lastSelected];
      proxy.$refs.safeHazardTableRef.clearSelection();
      proxy.$refs.safeHazardTableRef.toggleRowSelection(lastSelected, true);
    } else if (selection.length === 1) {
      selectedSafeHazardIds.value = [selection[0]];
    } else {
      selectedSafeHazardIds.value = [];
    }
  };
  const handleSafeHazardSelect = () => {
    if (!selectedSafeHazardIds.value.length) {
      ElMessage.error("请选择一个危险源");
      return;
    }
    valueItem.value = {
      ...item,
      ...selectedSafeHazardIds.value[0],
    };
    valueItem.value.type = getTypeLabel(valueItem.value.type);
    form.value.safeHazardId = item.id;
    form.value.safeHazardId = selectedSafeHazardIds.value[0].id;
    safeHazardSelectVisible.value = false;
  };
@@ -608,12 +642,20 @@
  const pagination1 = obj => {
    page.value.current = obj.page;
    page.value.size = obj.limit;
    handleQuery();
    getList();
  };
  // 选择变化处理
  const handleSelectionChange = selection => {
    selectedIds.value = selection.map(item => item.id);
    // 主表格也只保留最后一个选中的项
    if (selection.length > 1) {
      const lastSelected = selection[selection.length - 1];
      selectedIds.value = [lastSelected.id];
    } else if (selection.length === 1) {
      selectedIds.value = [selection[0].id];
    } else {
      selectedIds.value = [];
    }
  };
  // 打开表单
@@ -738,7 +780,7 @@
          .catch(err => {
            ElMessage.error(err.msg);
          });
      } else {
      } else if (dialogType.value === "edit") {
        await formRef1.value.validate();
        safeHazardRecordUpdate({ ...form.value })
          .then(res => {
@@ -751,6 +793,9 @@
          .catch(err => {
            ElMessage.error(err.msg);
          });
      } else if (dialogType.value === "view") {
        // 查看模式下不提交表单
        dialogVisible.value = false;
      }
    } catch (error) {
      console.error("表单验证失败:", error);