From 888bc41f22b18b6ab05f248266a2c36d046ff717 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Tue, 01 Apr 2025 13:37:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/SignMachineNest/components/MachineRight/InspectionRaskList.vue | 140 ++++++++++++++++++++++++++++++++++++++--------
1 files changed, 114 insertions(+), 26 deletions(-)
diff --git a/src/views/SignMachineNest/components/MachineRight/InspectionRaskList.vue b/src/views/SignMachineNest/components/MachineRight/InspectionRaskList.vue
index f54d2df..f7b3303 100644
--- a/src/views/SignMachineNest/components/MachineRight/InspectionRaskList.vue
+++ b/src/views/SignMachineNest/components/MachineRight/InspectionRaskList.vue
@@ -11,21 +11,27 @@
<div class="search-box">
<el-input v-model="searchText" placeholder="请输入搜索内容" class="input-with-select">
<template #append>
- <el-button :icon="Search" />
+ <el-button :icon="Search" @click="searchNickName"/>
</template>
</el-input>
</div>
</div>
- <div class="table-list">
+ <div class="table-list" v-if="tableList.length > 0"
+ infinite-scroll-distance="6"
+ v-infinite-scroll="loadMore"
+ :infinite-scroll-disabled="busy"
+ infinite-scroll-immediate="true">>
<div class="item" v-for="(item,index) in tableList">
<div class="left">
<div class="left-t">
- <span>{{ index+1 }}.</span>{{ item.title }}
- <span class="status" :class="item.status==='执行中'?'active':''">{{ item.status }}</span>
+ <span>{{ index+1 }}.</span>{{ item.name }}
+ <span class="status" :class="item.status===2?'active':''">
+ {{ getStatusText(item.status) }}
+ </span>
</div>
<div class="left-b">
- <img src="@/assets/images/signMachineNest/machineRight/date.png" alt="" />{{ item.time }}
- <img src="@/assets/images/signMachineNest/machineRight/name.png" alt="" />{{ item.name }}
+ <img src="@/assets/images/signMachineNest/machineRight/date.png" alt="" />{{ item.begin_time }}
+ <img src="@/assets/images/signMachineNest/machineRight/name.png" alt="" />{{ item.creator_name || '' }}
</div>
</div>
<div class="right">
@@ -33,6 +39,11 @@
</div>
</div>
</div>
+ <el-empty class="custom-empty" v-else>
+ <template #description>
+ <span class="custom-text">暂无数据</span>
+ </template>
+ </el-empty>
</div>
</div>
</template>
@@ -40,32 +51,92 @@
<script setup>
import { Search } from '@element-plus/icons-vue';
import CommonTitle from '@/components/CommonTitle.vue';
+import { getBeforeJob, getTodayJob } from '@/api/home/index.js'
+
+const isMore = ref(true);
+// 控制加载状态
+const busy = ref(false);
let searchText = ref('')
-const tableList = ref([
- {
- title: '园区巡查-20250313001',
- status: '待执行',
- time: '2025.3.13 19:56',
- name: '陈瑶',
- },
- {
- title: '园区巡查-20250313002',
- status: '执行中',
- time: '2025.3.13 19:56',
- name: '陈瑶',
- },
- {
- title: '园区巡查-20250313003',
- status: '已完成',
- time: '2025.3.13 19:56',
- name: '陈瑶',
- },
-]);
+const tableList = ref([]);
+
+// 分页
+const pageParams = ref({
+ current: 1,
+ size: 5,
+ total: 0
+});
+
+// 当前任务和历史任务切换
let tabIndex = ref(1);
const tabClick = (value) => {
tabIndex.value = value;
+ clearData();
};
+
+// 状态文字判断
+const getStatusText = (status) => {
+ switch (status) {
+ case 1:
+ return '待执行';
+ case 2:
+ return '执行中';
+ case 3:
+ return '完成';
+ case 4:
+ return '取消';
+ case 5:
+ return '失败';
+ default:
+ return '未知';
+ }
+};
+
+// 获取历史巡检任务列表
+const getJobList = async () => {
+ const params = {
+ area_code: '',
+ device_sn: '',
+ job_name: searchText.value,
+ current: pageParams.value.current,
+ size: pageParams.value.size,
+ }
+ let result = null;
+ if (tabIndex.value === 1) {
+ result = await getTodayJob(params)
+ } else {
+ result = await getBeforeJob(params)
+ }
+ if (result.data.code !== 0) return;
+ if (result.data.data.records.length === 0) return (isMore.value = false);
+ pageParams.value.current += 1;
+ tableList.value = [...tableList.value, ...result.data.data.records];
+ busy.value = false;
+}
+
+// 清除数据
+const clearData = () => {
+ tableList.value = [];
+ pageParams.value.current = 1;
+ isMore.value = true;
+ getJobList();
+};
+
+// 加载更多数据
+const loadMore = async () => {
+ busy.value = true;
+ if (!isMore.value) return;
+ getJobList();
+};
+
+// 搜索数据
+const searchNickName = () => {
+ clearData();
+};
+
+onMounted(() => {
+ getJobList();
+});
</script>
<style lang="scss" scoped>
@@ -131,6 +202,13 @@
.table-list {
width: 358px;
height: 202px;
+ overflow: auto;
+ &::-webkit-scrollbar {
+ width: 0;
+ display: none;
+ }
+ -ms-overflow-style: none; /* IE and Edge */
+ scrollbar-width: none; /* Firefox */
.item {
width: 100%;
height: 72px;
@@ -157,6 +235,7 @@
border-radius: 4px 4px 4px 4px;
border: 1px solid #4CA6FF;
color: #4CA6FF;
+ margin-left: 10px;
}
.active {
border: 1px solid #04F0D1;
@@ -184,5 +263,14 @@
}
}
}
+ .custom-empty {
+ color: #fff;
+ margin: 16px 0;
+ padding: 0;
+ :deep(.el-empty__image) {
+ width: 100px;
+ height: 100px;
+ }
+ }
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3