|
|
@@ -20,8 +20,12 @@
|
|
|
<template #action="scope">
|
|
|
<!-- 待上报任务阶段 -->
|
|
|
<div class="action-container" v-if="scope.row.taskStage === TASK_STAGE.TO_BE_REPORTED">
|
|
|
- <ActionButton text="去上报" />
|
|
|
- <ActionButton text="添加上报人" />
|
|
|
+ <ActionButton
|
|
|
+ text="去上报"
|
|
|
+ v-if="isOverdue(scope.row.dueCompleteTime)"
|
|
|
+ @click="handleReport(scope.row.handleTaskId, scope.row.taskName)"
|
|
|
+ />
|
|
|
+ <ActionButton text="添加上报人" v-if="scope.row.isReportPrincipal" />
|
|
|
</div>
|
|
|
<!-- 已上报任务阶段 -->
|
|
|
<div
|
|
|
@@ -41,7 +45,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
- import { ref, reactive, onMounted } from 'vue';
|
|
|
+ import { ref, reactive, onMounted, onUnmounted } from 'vue';
|
|
|
import Search from '@/views/disaster/components/Search.vue';
|
|
|
import BasicTable from '@/components/BasicTable.vue';
|
|
|
import ActionButton from '@/components/ActionButton.vue';
|
|
|
@@ -56,7 +60,9 @@
|
|
|
import type { QueryPageRequest } from '@/types/disaster';
|
|
|
import { TASK_STAGE } from '../constant';
|
|
|
import { getTaskStage } from '../util';
|
|
|
+ import { useRouter } from 'vue-router';
|
|
|
|
|
|
+ const router = useRouter();
|
|
|
const searchData = reactive({
|
|
|
taskStage: '',
|
|
|
});
|
|
|
@@ -88,13 +94,50 @@
|
|
|
getTableData();
|
|
|
};
|
|
|
const handleSearch = () => {
|
|
|
+ ReportTaskListQuery.queryParam = {};
|
|
|
if (searchData.taskStage !== '') {
|
|
|
ReportTaskListQuery.queryParam.taskStage = searchData.taskStage;
|
|
|
}
|
|
|
+ if (Object.keys(ReportTaskListQuery.queryParam).length > 0) {
|
|
|
+ pagination.pageNumber = 1;
|
|
|
+ ReportTaskListQuery.pageNumber = 1;
|
|
|
+ }
|
|
|
getTableData();
|
|
|
};
|
|
|
+ const handleReport = (handleTaskId: number, taskName: string) => {
|
|
|
+ router.push({
|
|
|
+ name: 'disaster-control-loss-report-item',
|
|
|
+ params: {
|
|
|
+ id: handleTaskId,
|
|
|
+ },
|
|
|
+ query: { taskName },
|
|
|
+ });
|
|
|
+ };
|
|
|
+ // 添加刷新时间变量,用于触发视图更新
|
|
|
+ const refreshTime = ref(Date.now());
|
|
|
+ let refreshTimer: number | null = null;
|
|
|
+ // 判断是否超过应完成时间
|
|
|
+ const isOverdue = (dueCompleteTime: string) => {
|
|
|
+ if (!dueCompleteTime) return false;
|
|
|
+
|
|
|
+ const dueTime = new Date(dueCompleteTime).getTime();
|
|
|
+ const currentTime = refreshTime.value;
|
|
|
+
|
|
|
+ return currentTime < dueTime;
|
|
|
+ };
|
|
|
onMounted(() => {
|
|
|
getTableData();
|
|
|
+
|
|
|
+ // 设置定时器,每秒更新一次时间
|
|
|
+ refreshTimer = window.setInterval(() => {
|
|
|
+ refreshTime.value = Date.now();
|
|
|
+ }, 1000);
|
|
|
+ });
|
|
|
+ onUnmounted(() => {
|
|
|
+ if (refreshTimer !== null) {
|
|
|
+ clearInterval(refreshTimer);
|
|
|
+ refreshTimer = null;
|
|
|
+ }
|
|
|
});
|
|
|
</script>
|
|
|
|