chenhj
4 天以前 2fc58fbb10745abd97168b8da21d4142e11d7f2e
src/views/equipmentManagement/repair/index.vue
@@ -41,6 +41,24 @@
            @change="getTableData"
        />
      </el-form-item>
      <el-form-item label="报修日期">
        <el-date-picker
            v-model="filters.repairTimeStr"
            type="date"
            placeholder="请选择报修日期"
            size="default"
            @change="(date) => handleDateChange(date,2)"
        />
      </el-form-item>
      <el-form-item label="维修日期">
        <el-date-picker
            v-model="filters.maintenanceTimeStr"
            type="date"
            placeholder="请选择维修日期"
            size="default"
            @change="(date) => handleDateChange(date,1)"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="getTableData">搜索</el-button>
        <el-button @click="resetFilters">重置</el-button>
@@ -60,6 +78,9 @@
          </el-button>
          <el-button type="success" icon="Van" @click="addRepair">
            新增报修
          </el-button>
          <el-button @click="handleOut">
            导出
          </el-button>
          <el-button
            type="danger"
@@ -98,6 +119,14 @@
            编辑
          </el-button>
          <el-button
              type="primary"
              text
              icon="editPen"
              @click="showImage(row)"
          >
            附件
          </el-button>
          <el-button
            type="danger"
            text
            icon="delete"
@@ -110,25 +139,32 @@
    </div>
    <RepairModal ref="repairModalRef" @ok="getTableData" />
    <MaintainModal ref="maintainModalRef" @ok="getTableData" />
    <ImagePreviewDialog v-model:model-value="showImages" :images="imageUrls" />
  </div>
</template>
<script setup>
import { usePaginationApi } from "@/hooks/usePaginationApi";
import { getRepairPage, delRepair } from "@/api/equipmentManagement/repair";
import { onMounted } from "vue";
import {getRepairPage, delRepair, getRepairById} from "@/api/equipmentManagement/repair";
import { onMounted, getCurrentInstance } from "vue";
import RepairModal from "./Modal/RepairModal.vue";
import { ElMessageBox, ElMessage } from "element-plus";
import dayjs from "dayjs";
import MaintainModal from "./Modal/MaintainModal.vue";
import ImagePreviewDialog from "@/components/ImagePreview/ImagePreviewDialog.vue";
defineOptions({
  name: "设备报修",
});
const { proxy } = getCurrentInstance();
// 模态框实例
const repairModalRef = ref();
const maintainModalRef = ref();
const showImages = ref(false)
const imageUrls = ref([])
// 表格多选框选中项
const multipleList = ref([]);
@@ -145,7 +181,12 @@
} = usePaginationApi(
  getRepairPage,
  {
    searchText: undefined,
    deviceName: undefined,
    deviceModel: undefined,
    remark: undefined,
    maintenanceName: undefined,
    repairTimeStr: undefined,
    maintenanceTimeStr: undefined,
  },
  [
    {
@@ -203,10 +244,26 @@
      dataType: "slot",
      slot: "operation",
      align: "center",
      width: "200px",
      width: "300px",
    },
  ]
);
// type === 1 维修 2报修间
const handleDateChange = (value,type) => {
  filters.maintenanceTimeStr = null
  filters.c = null
  if(type === 1){
    if (value) {
      filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
    }
  }else{
    if (value) {
      filters.repairTimeStr = dayjs(value).format("YYYY-MM-DD");
    }
  }
  getTableData();
};
// 多选后做什么
const handleSelectionChange = (selectionList) => {
@@ -229,9 +286,10 @@
  maintainModalRef.value.open(row.id, row);
};
const changePage = ({ page }) => {
  pagination.currentPage = page;
  onCurrentChange(page);
const changePage = ({ page, limit }) => {
   pagination.currentPage = page;
   pagination.pageSize = limit;
   onCurrentChange(page);
};
// 单行删除
@@ -249,6 +307,27 @@
  });
};
// 导出
const handleOut = () => {
  ElMessageBox.confirm("选中的内容将被导出,是否确认导出?", "导出", {
    confirmButtonText: "确认",
    cancelButtonText: "取消",
    type: "warning",
  })
    .then(() => {
      proxy.download("/device/repair/export", {}, "设备报修.xlsx");
    })
    .catch(() => {
      ElMessage.info("已取消");
    });
};
const showImage = async (row) => {
  const {data} = await getRepairById(row.id)
  imageUrls.value = data?.files.map((item) => item.url)
  showImages.value = true
}
onMounted(() => {
  getTableData();
});