spring
11 小时以前 185c800fa17b97c01462ebcb1f89d71979100ff6
fix: 完成无人值守地磅管理、报表中心功能开发
已添加4个文件
878 ■■■■■ 文件已修改
src/api/environmentAccess/reportCenter.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/environmentAccess/unattendedWeighbridgeSystem.js 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/environmentAccess/reportCenter/index.vue 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/environmentAccess/unattendedWeighbridgeSystem/index.vue 579 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/environmentAccess/reportCenter.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
import request from "@/utils/request";
/**
 * æ¯æ—¥è¿‡ç£…统计报表:车次、货量、偏差率
 * @param {Object} params - { startDate, endDate }
 */
export function getDailyWeighbridgeReport(params) {
  return request({
    url: "/environmentAccess/weighbridgeDailyReport",
    method: "get",
    params,
  });
}
src/api/environmentAccess/unattendedWeighbridgeSystem.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
import request from "@/utils/request";
// æŸ¥è¯¢æ— äººå€¼å®ˆåœ°ç£…系统分页列表
export function listWeighbridgeSystem(query) {
  return request({
    url: "/environmentAccess/weighbridgeSystemPage",
    method: "get",
    params: query,
  });
}
// æ–°å¢žæ— äººå€¼å®ˆåœ°ç£…系统
export function addWeighbridgeSystem(data) {
  return request({
    url: "/environmentAccess/weighbridgeSystemAdd",
    method: "post",
    data,
  });
}
// ä¿®æ”¹æ— äººå€¼å®ˆåœ°ç£…系统
export function updateWeighbridgeSystem(data) {
  return request({
    url: "/environmentAccess/weighbridgeSystemUpdate",
    method: "put",
    data,
  });
}
// åˆ é™¤æ— äººå€¼å®ˆåœ°ç£…系统(支持批量)
export function delWeighbridgeSystem(ids) {
  return request({
    url: "/environmentAccess/weighbridgeSystemDelete",
    method: "delete",
    data: ids,
  });
}
// æŸ¥è¯¢å•条记录详情
export function getWeighbridgeSystem(id) {
  return request({
    url: "/environmentAccess/weighbridgeSystemInfo",
    method: "get",
    params: { id },
  });
}
src/views/environmentAccess/reportCenter/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,240 @@
<template>
  <div class="app-container report-center">
    <!-- ç­›é€‰åŒº -->
    <div class="report-header">
      <div class="header-left">
        <span class="search_title">统计日期:</span>
        <el-date-picker
          v-model="dateRange"
          type="datetimerange"
          range-separator="至"
          start-placeholder="开始日期时间"
          end-placeholder="结束日期时间"
          value-format="YYYY-MM-DD HH:mm:ss"
          format="YYYY-MM-DD HH:mm:ss"
          :shortcuts="dateShortcuts"
          style="width: 360px"
        />
        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">查询</el-button>
        <el-button @click="handleReset">重置</el-button>
      </div>
    </div>
    <!-- ä¸€ã€æ¯æ—¥è¿‡ç£…统计报表:车次/货量/偏差率 -->
    <el-card class="report-card" shadow="hover">
      <template #header>
        <div class="card-header">
          <span>每日过磅统计报表</span>
          <span class="card-desc">车次、货量、偏差率</span>
        </div>
      </template>
      <div class="chart-row">
        <div class="chart-wrap" style="flex: 1; min-width: 0;">
          <Echarts
            :chartStyle="dailyChartStyle"
            :grid="dailyGrid"
            :xAxis="dailyXAxis"
            :yAxis="dailyYAxis"
            :series="dailySeries"
            :tooltip="dailyTooltip"
            :legend="dailyLegend"
            style="height: 320px"
          />
        </div>
      </div>
      <div class="table-wrap">
        <el-table
          :data="dailyTableData"
          border
          stripe
          v-loading="dailyLoading"
          style="width: 100%"
          max-height="360"
        >
          <el-table-column type="index" label="序号" width="60" align="center" />
          <el-table-column prop="date" label="日期" width="120" align="center" />
          <el-table-column prop="tripCount" label="车次" align="center" />
          <el-table-column prop="cargoVolume" label="货量(吨)" align="center" />
          <el-table-column prop="deviationRate" label="偏差率(%)" align="center">
            <template #default="{ row }">
              <span :class="getDeviationClass(row.deviationRate)">{{ row.deviationRate }}%</span>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-card>
  </div>
</template>
<script setup>
import { ref, onMounted, getCurrentInstance } from "vue";
import Echarts from "@/components/Echarts/echarts.vue";
import { getDailyWeighbridgeReport } from "@/api/environmentAccess/reportCenter.js";
const { proxy } = getCurrentInstance();
// æ—¥æœŸèŒƒå›´
const dateRange = ref([]);
const dateShortcuts = [
  { text: "最近7天", value: () => {
    const end = new Date();
    const start = new Date();
    start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
    return [start, end];
  }},
  { text: "最近30天", value: () => {
    const end = new Date();
    const start = new Date();
    start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
    return [start, end];
  }},
  { text: "本月", value: () => {
    const d = new Date();
    return [new Date(d.getFullYear(), d.getMonth(), 1, 0, 0, 0), d];
  }},
];
// é»˜è®¤æœ€è¿‘30天
function getDefaultDateRange() {
  const end = new Date();
  const start = new Date();
  start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  return [formatDateTime(start), formatDateTime(end)];
}
function formatDateTime(d) {
  const y = d.getFullYear(),
    m = String(d.getMonth() + 1).padStart(2, "0"),
    day = String(d.getDate()).padStart(2, "0"),
    hh = String(d.getHours()).padStart(2, "0"),
    mm = String(d.getMinutes()).padStart(2, "0"),
    ss = String(d.getSeconds()).padStart(2, "0");
  return `${y}-${m}-${day} ${hh}:${mm}:${ss}`;
}
// ä¸€ã€æ¯æ—¥è¿‡ç£…统计
const dailyLoading = ref(false);
const dailyTableData = ref([]);
const dailyChartStyle = { width: "100%", height: "100%" };
const dailyGrid = { left: "3%", right: "4%", bottom: "12%", top: "10%", containLabel: true };
const dailyLegend = { show: true, bottom: 0, data: ["车次", "货量(吨)", "偏差率(%)"] };
const dailyTooltip = {
  trigger: "axis",
  axisPointer: { type: "shadow" },
};
const dailyXAxis = ref([{ type: "category", data: [], axisLabel: { rotate: 35 } }]);
const dailyYAxis = ref([
  { type: "value", name: "车次/货量", position: "left", min: 0 },
  { type: "value", name: "偏差率%", position: "right", min: 0, max: 100, axisLabel: { formatter: "{value}%" } },
]);
const dailySeries = ref([]);
// mock:每日过磅
function getMockDailyData() {
  const arr = [];
  for (let i = 6; i >= 0; i--) {
    const d = new Date();
    d.setDate(d.getDate() - i);
    const dateStr = formatDate(d);
    const trip = 20 + Math.floor(Math.random() * 30);
    const vol = (Math.random() * 200 + 100).toFixed(1);
    const dev = (Math.random() * 5).toFixed(2);
    arr.push({ date: dateStr, tripCount: trip, cargoVolume: vol, deviationRate: dev });
  }
  return arr;
}
function getDeviationClass(rate) {
  const v = parseFloat(rate);
  if (v <= 1) return "text-success";
  if (v <= 3) return "text-warning";
  return "text-danger";
}
function buildDailyChart(arr) {
  if (!arr || !arr.length) return;
  dailyXAxis.value[0].data = arr.map((r) => r.date);
  dailySeries.value = [
    { name: "车次", type: "bar", data: arr.map((r) => r.tripCount), itemStyle: { color: "#409EFF" } },
    { name: "货量(吨)", type: "bar", data: arr.map((r) => Number(r.cargoVolume)), itemStyle: { color: "#67C23A" } },
    { name: "偏差率(%)", type: "line", yAxisIndex: 1, data: arr.map((r) => Number(r.deviationRate)), itemStyle: { color: "#E6A23C" }, symbol: "circle", symbolSize: 8 },
  ];
}
function loadDailyReport() {
  dailyLoading.value = true;
  const [start, end] = dateRange.value && dateRange.value.length === 2 ? dateRange.value : getDefaultDateRange();
  getDailyWeighbridgeReport({ startDate: start, endDate: end })
    .then((res) => {
      const list = res?.data?.list ?? res?.data ?? res?.records ?? res;
      dailyTableData.value = Array.isArray(list) ? list : getMockDailyData();
      buildDailyChart(dailyTableData.value);
    })
    .catch(() => {
      dailyTableData.value = getMockDailyData();
      buildDailyChart(dailyTableData.value);
    })
    .finally(() => { dailyLoading.value = false; });
}
function handleQuery() {
  if (!dateRange.value || dateRange.value.length !== 2) {
    dateRange.value = getDefaultDateRange();
  }
  loadDailyReport();
}
function handleReset() {
  dateRange.value = getDefaultDateRange();
  handleQuery();
}
onMounted(() => {
  dateRange.value = getDefaultDateRange();
  handleQuery();
});
</script>
<style scoped lang="scss">
.report-center {
  .report-header {
    display: flex;
    align-items: center;
    margin-bottom: 16px;
    .header-left {
      display: flex;
      align-items: center;
    }
    .search_title {
      margin-right: 8px;
      white-space: nowrap;
    }
  }
  .report-card {
    margin-bottom: 20px;
    .card-header {
      display: flex;
      align-items: center;
      gap: 12px;
      .card-desc {
        color: #909399;
        font-size: 13px;
      }
    }
    .chart-row {
      display: flex;
      gap: 16px;
      margin-bottom: 16px;
      .chart-wrap {
        flex: 1;
        min-width: 0;
      }
    }
    .table-wrap {
      margin-top: 12px;
    }
  }
  .text-success { color: #67c23a; }
  .text-warning { color: #e6a23c; }
  .text-danger { color: #f56c6c; }
}
</style>
src/views/environmentAccess/unattendedWeighbridgeSystem/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,579 @@
<template>
  <div class="app-container">
    <div class="search_form">
      <div>
        <span class="search_title">车牌号:</span>
        <el-input
            v-model="searchForm.plateNumber"
            style="width: 240px"
            placeholder="请输入车牌号"
            @change="handleQuery"
            clearable
            :prefix-icon="Search"
        />
        <el-button type="primary" @click="handleQuery" style="margin-left: 10px"
        >搜索</el-button
        >
      </div>
      <div>
        <el-button type="primary" @click="openForm('add')">新增</el-button>
        <el-button type="danger" plain @click="handleDelete">删除</el-button>
      </div>
    </div>
    <div class="table_list">
      <PIMTable
          rowKey="id"
          :column="tableColumn"
          :tableData="tableData"
          :page="page"
          :isSelection="true"
          @selection-change="handleSelectionChange"
          :tableLoading="tableLoading"
          @pagination="pagination"
      ></PIMTable>
    </div>
    <el-dialog
        v-model="dialogFormVisible"
        :title="operationType === 'add' ? '新增地磅记录' : '编辑地磅记录'"
        width="70%"
        @close="closeDia"
    >
      <el-form
          :model="form"
          label-width="140px"
          label-position="top"
          :rules="rules"
          ref="formRef"
      >
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="车牌号:" prop="plateNumber">
              <el-input
                  v-model="form.plateNumber"
                  placeholder="请输入车牌号"
                  clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="称重时间:" prop="weightTime">
              <el-date-picker
                  style="width: 100%"
                  v-model="form.weightTime"
                  value-format="YYYY-MM-DD HH:mm:ss"
                  format="YYYY-MM-DD HH:mm:ss"
                  type="datetime"
                  placeholder="请选择称重时间"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="皮重(kg):" prop="tareWeight">
              <el-input-number
                  v-model="form.tareWeight"
                  :min="0"
                  :precision="2"
                  :step="0.01"
                  placeholder="请输入皮重"
                  style="width: 100%"
                  clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="毛重(kg):" prop="grossWeight">
              <el-input-number
                  v-model="form.grossWeight"
                  :min="0"
                  :precision="2"
                  :step="0.01"
                  placeholder="请输入毛重"
                  style="width: 100%"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col v-if="operationType !== 'add'" :span="12">
            <el-form-item label="净重(kg):" prop="netWeight">
              <el-input-number
                  v-model="form.netWeight"
                  :min="0"
                  :precision="2"
                  :step="0.01"
                  placeholder="自动计算(毛重-皮重)"
                  style="width: 100%"
                  disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="偏离度:" prop="positionOffset">
              <el-input-number
                  v-model="form.positionOffset"
                  :min="1"
                  :max="100"
                  :precision="0"
                  placeholder="1-100"
                  controls-position="right"
                  style="width: 100%"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="司机姓名:" prop="driverName">
              <el-input
                  v-model="form.driverName"
                  placeholder="请输入司机姓名"
                  clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="联系电话:" prop="contactPhone">
              <el-input
                  v-model="form.contactPhone"
                  placeholder="请输入联系电话"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="货物名称:" prop="cargoName">
              <el-input
                  v-model="form.cargoName"
                  placeholder="请输入货物名称"
                  clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="地磅编号:" prop="weighbridgeNumber">
              <el-input
                  v-model="form.weighbridgeNumber"
                  placeholder="请输入地磅编号"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="备注:" prop="remark">
              <el-input
                  v-model="form.remark"
                  type="textarea"
                  :rows="3"
                  placeholder="请输入备注"
                  clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button type="primary" @click="submitForm">确认</el-button>
          <el-button @click="closeDia">取消</el-button>
        </div>
      </template>
    </el-dialog>
  </div>
</template>
<script setup>
import {onMounted, ref, reactive, toRefs, getCurrentInstance, watch} from "vue";
import { Search } from "@element-plus/icons-vue";
import {
  addWeighbridgeSystem,
  delWeighbridgeSystem,
  getWeighbridgeSystem,
  listWeighbridgeSystem,
  updateWeighbridgeSystem,
} from "@/api/environmentAccess/unattendedWeighbridgeSystem.js";
import { ElMessageBox } from "element-plus";
const { proxy } = getCurrentInstance();
const formatDateTime = (val) => {
  if (!val) return "";
  const d = new Date(val);
  if (Number.isNaN(d.getTime())) return val;
  const pad = (n) => String(n).padStart(2, "0");
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
};
const tableColumn = ref([
  {
    label: "车牌号",
    prop: "plateNumber",
    width: 150,
  },
  {
    label: "称重时间",
    prop: "weightTime",
    width: 180,
    formatData: (val) => formatDateTime(val),
  },
  {
    label: "皮重(kg)",
    prop: "tareWeight",
    width: 120,
  },
  {
    label: "毛重(kg)",
    prop: "grossWeight",
    width: 120,
  },
  // {
  //   label: "净重(kg)",
  //   prop: "netWeight",
  //   width: 120,
  // },
  {
    label: "偏离度",
    prop: "positionOffset",
    width: 100,
  },
  {
    label: "司机姓名",
    prop: "driverName",
    width: 120,
  },
  {
    label: "联系电话",
    prop: "contactPhone",
    width: 150,
  },
  {
    label: "货物名称",
    prop: "cargoName",
    width: 150,
  },
  {
    label: "地磅编号",
    prop: "weighbridgeNumber",
    width: 120,
  },
  {
    label: "备注",
    prop: "remark",
    minWidth: 200,
  },
  {
    dataType: "action",
    label: "操作",
    align: "center",
    fixed: 'right',
    width: 120,
    operation: [
      {
        name: "编辑",
        type: "text",
        clickFun: (row) => {
          openForm("edit", row);
        },
      },
      {
        name: "删除",
        type: "text",
        clickFun: (row) => {
          handleSingleDelete(row);
        },
      },
    ],
  },
]);
const tableData = ref([]);
const selectedRows = ref([]);
const tableLoading = ref(false);
const page = reactive({
  current: 1,
  size: 100,
  total: 0,
});
// è¡¨å•弹框数据
const operationType = ref("");
const dialogFormVisible = ref(false);
const data = reactive({
  searchForm: {
    plateNumber: "",
  },
  form: {
    plateNumber: "",
    weightTime: "",
    tareWeight: null,
    grossWeight: null,
    netWeight: null,
    positionOffset: null,
    driverName: "",
    contactPhone: "",
    cargoName: "",
    weighbridgeNumber: "",
    remark: "",
  },
  rules: {
    plateNumber: [{ required: true, message: "请输入车牌号", trigger: "blur" }],
    weightTime: [{ required: true, message: "请选择称重时间", trigger: "change" }],
    tareWeight: [{ required: true, message: "请输入皮重", trigger: "blur" }],
    grossWeight: [{ required: true, message: "请输入毛重", trigger: "blur" }],
    positionOffset: [
      { validator: (_r, v, cb) => {
        if (v == null || v === "" || v === undefined) return cb();
        const n = Number(v);
        if (isNaN(n) || n < 1 || n > 100) return cb(new Error("偏离度只能为1-100的整数"));
        cb();
      }, trigger: "blur" }
    ],
    driverName: [{ required: false, message: "请输入司机姓名", trigger: "blur" }],
    contactPhone: [{ required: false, message: "请输入联系电话", trigger: "blur" }],
    cargoName: [{ required: false, message: "请输入货物名称", trigger: "blur" }],
    weighbridgeNumber: [{ required: false, message: "请输入地磅编号", trigger: "blur" }],
    remark: [{ required: false, message: "请输入备注", trigger: "blur" }],
  },
});
const { searchForm, form, rules } = toRefs(data);
// ç›‘听皮重和毛重变化,自动计算净重
watch(
    [() => form.value.tareWeight, () => form.value.grossWeight],
    ([tareWeight, grossWeight]) => {
      if (tareWeight !== null && tareWeight !== undefined &&
          grossWeight !== null && grossWeight !== undefined) {
        form.value.netWeight = Number((grossWeight - tareWeight).toFixed(2));
      } else {
        form.value.netWeight = null;
      }
    },
    { immediate: true }
);
// æŸ¥è¯¢åˆ—表
const handleQuery = () => {
  page.current = 1;
  getList();
};
const pagination = (obj) => {
  page.current = obj.page;
  page.size = obj.limit;
  getList();
};
const getList = () => {
  tableLoading.value = true;
  listWeighbridgeSystem({ ...searchForm.value, ...page }).then((res) => {
    tableLoading.value = false;
    if (res.code === 200) {
      tableData.value = res.data?.records || res.records || [];
      page.total = res.data?.total || res.total || 0;
    } else {
      proxy.$modal.msgError(res.msg || "查询失败");
    }
  }).catch((error) => {
    tableLoading.value = false;
    console.error("查询失败:", error);
    proxy.$modal.msgError("查询失败");
  });
};
// è¡¨æ ¼é€‰æ‹©æ•°æ®
const handleSelectionChange = (selection) => {
  selectedRows.value = selection;
};
// æ‰“开弹框
const openForm = (type, row) => {
  operationType.value = type;
  form.value = {
    plateNumber: "",
    weightTime: "",
    tareWeight: null,
    grossWeight: null,
    netWeight: null,
    positionOffset: null,
    driverName: "",
    contactPhone: "",
    cargoName: "",
    weighbridgeNumber: "",
    remark: "",
  };
  if (type === "edit" && row) {
    getWeighbridgeSystem(row.id).then((res) => {
      if (res.code === 200) {
        form.value = { ...res.data };
        // ç¡®ä¿å‡€é‡æ­£ç¡®è®¡ç®—
        if (form.value.tareWeight !== null && form.value.grossWeight !== null) {
          form.value.netWeight = Number((form.value.grossWeight - form.value.tareWeight).toFixed(2));
        }
      } else {
        proxy.$modal.msgError(res.msg || "获取数据失败");
      }
    }).catch((error) => {
      console.error("获取数据失败:", error);
      proxy.$modal.msgError("获取数据失败");
    });
  } else {
    // æ–°å¢žæ—¶é»˜è®¤è®¾ç½®å½“前时间
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, "0");
    const day = String(now.getDate()).padStart(2, "0");
    const hours = String(now.getHours()).padStart(2, "0");
    const minutes = String(now.getMinutes()).padStart(2, "0");
    const seconds = String(now.getSeconds()).padStart(2, "0");
    form.value.weightTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  }
  dialogFormVisible.value = true;
};
// æäº¤è¡¨å•
const submitForm = () => {
  proxy.$refs["formRef"].validate((valid) => {
    if (valid) {
      // éªŒè¯æ¯›é‡å¿…须大于皮重
      if (form.value.grossWeight <= form.value.tareWeight) {
        proxy.$modal.msgError("毛重必须大于皮重");
        return;
      }
      // ç¡®ä¿å‡€é‡æ­£ç¡®è®¡ç®—
      if (form.value.tareWeight !== null && form.value.grossWeight !== null) {
        form.value.netWeight = Number((form.value.grossWeight - form.value.tareWeight).toFixed(2));
      }
      if (operationType.value === "edit") {
        submitEdit();
      } else {
        submitAdd();
      }
    }
  });
};
// æäº¤æ–°å¢ž
const submitAdd = () => {
  addWeighbridgeSystem(form.value).then((res) => {
    if (res.code === 200) {
      proxy.$modal.msgSuccess("提交成功");
      closeDia();
      getList();
    } else {
      proxy.$modal.msgError(res.msg || "提交失败");
    }
  }).catch((error) => {
    console.error("提交失败:", error);
    proxy.$modal.msgError("提交失败");
  });
};
// æäº¤ä¿®æ”¹
const submitEdit = () => {
  updateWeighbridgeSystem(form.value).then((res) => {
    if (res.code === 200) {
      proxy.$modal.msgSuccess("提交成功");
      closeDia();
      getList();
    } else {
      proxy.$modal.msgError(res.msg || "提交失败");
    }
  }).catch((error) => {
    console.error("提交失败:", error);
    proxy.$modal.msgError("提交失败");
  });
};
// å…³é—­å¼¹æ¡†
const closeDia = () => {
  proxy.resetForm("formRef");
  dialogFormVisible.value = false;
};
// æ‰¹é‡åˆ é™¤
const handleDelete = () => {
  let ids = [];
  if (selectedRows.value.length > 0) {
    ids = selectedRows.value.map((item) => item.id);
  } else {
    proxy.$modal.msgWarning("请选择数据");
    return;
  }
  ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除提示", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
      .then(() => {
        tableLoading.value = true;
        delWeighbridgeSystem(ids)
            .then((res) => {
              if (res.code === 200) {
                proxy.$modal.msgSuccess("删除成功");
                getList();
              } else {
                proxy.$modal.msgError(res.msg || "删除失败");
              }
            })
            .catch((error) => {
              console.error("删除失败:", error);
              proxy.$modal.msgError("删除失败");
            })
            .finally(() => {
              tableLoading.value = false;
            });
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
};
// å•条删除
const handleSingleDelete = (row) => {
  ElMessageBox.confirm("确定要删除这条记录吗?", "删除提示", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
      .then(() => {
        tableLoading.value = true;
        delWeighbridgeSystem([row.id])
            .then((res) => {
              if (res.code === 200) {
                proxy.$modal.msgSuccess("删除成功");
                getList();
              } else {
                proxy.$modal.msgError(res.msg || "删除失败");
              }
            })
            .catch((error) => {
              console.error("删除失败:", error);
              proxy.$modal.msgError("删除失败");
            })
            .finally(() => {
              tableLoading.value = false;
            });
      })
      .catch(() => {
        proxy.$modal.msg("已取消");
      });
};
onMounted(() => {
  getList();
});
</script>
<style scoped lang="scss"></style>