src/views/equipmentManagement/measurementEquipment/index.vue
@@ -37,6 +37,10 @@
      <div>
        <el-button type="primary"
                   @click="openForm('add')">新增计量器具</el-button>
        <el-button type="primary"
                   plain
                   @click="handleImport">批量导入</el-button>
        <el-button @click="handleDownloadTemplate">下载模板</el-button>
        <el-button type="danger"
                   plain
                   @click="handleDelete">删除</el-button>
@@ -61,6 +65,17 @@
                     @close="handleQuery"></calibration-dia>
    <files-dia ref="filesDia"></files-dia>
    <rowClickDataForm ref="rowClickData"></rowClickDataForm>
    <ImportDialog ref="importDialogRef"
                  v-model="importDialogVisible"
                  title="批量导入计量器具"
                  :action="importAction"
                  :headers="importHeaders"
                  :auto-upload="false"
                  :on-success="handleImportSuccess"
                  :on-error="handleImportError"
                  @confirm="handleImportConfirm"
                  @download-template="handleDownloadTemplate"
                  @close="handleImportClose" />
  </div>
</template>
@@ -76,6 +91,8 @@
  import FormDia from "@/views/equipmentManagement/measurementEquipment/components/formDia.vue";
  import { ElMessageBox } from "element-plus";
  import useUserStore from "@/store/modules/user.js";
  import { getToken } from "@/utils/auth";
  import ImportDialog from "@/components/Dialog/ImportDialog.vue";
  import CalibrationDia from "@/views/equipmentManagement/measurementEquipment/components/calibrationDia.vue";
  import {
    measuringInstrumentDelete,
@@ -336,6 +353,54 @@
        proxy.$modal.msg("已取消");
      });
  };
  // 批量导入
  const importDialogRef = ref();
  const importDialogVisible = ref(false);
  const importAction =
    import.meta.env.VITE_APP_BASE_API + "/measuringInstrumentLedger/import";
  const importHeaders = ref({
    Authorization: `Bearer ${getToken()}`,
  });
  const handleImport = () => {
    importDialogVisible.value = true;
  };
  const handleImportSuccess = response => {
    if (response.code === 200) {
      proxy.$modal.msgSuccess(response.msg || "导入成功");
      importDialogVisible.value = false;
      if (importDialogRef.value) {
        importDialogRef.value.clearFiles();
      }
      getList();
    } else {
      proxy.$modal.msgError(response.msg || "导入失败");
    }
  };
  const handleImportError = error => {
    proxy.$modal.msgError("导入失败,请检查文件格式是否正确");
  };
  const handleImportConfirm = () => {
    if (importDialogRef.value) {
      importDialogRef.value.submit();
    }
  };
  const handleDownloadTemplate = () => {
    proxy.download(
      "/measuringInstrumentLedger/downloadTemplate",
      {},
      "计量器具台账导入模板.xlsx"
    );
  };
  const handleImportClose = () => {
    importDialogVisible.value = false;
  };
  onMounted(() => {
    getList();
  });