!89 czh-20260710-支持统计完成事项状态以及逾期个数

Merge pull request !89 from 陈志浩/feature/bpm_status-20260710
This commit is contained in:
陈志浩
2026-07-10 01:00:13 +00:00
committed by Gitee
4 changed files with 66 additions and 4 deletions
@@ -23,6 +23,7 @@ enum Api {
bgPartymatterFeedbackEdit= '/bgpartymatter/bgPartymatter/editBgPartymatterFeedback', bgPartymatterFeedbackEdit= '/bgpartymatter/bgPartymatter/editBgPartymatterFeedback',
bgPartymatterFeedbackDelete = '/bgpartymatter/bgPartymatter/deleteBgPartymatterFeedback', bgPartymatterFeedbackDelete = '/bgpartymatter/bgPartymatter/deleteBgPartymatterFeedback',
bgPartymatterFeedbackDeleteBatch = '/bgpartymatter/bgPartymatter/deleteBatchBgPartymatterFeedback', bgPartymatterFeedbackDeleteBatch = '/bgpartymatter/bgPartymatter/deleteBatchBgPartymatterFeedback',
statusStats = '/bgpartymatter/bgPartymatter/statusStats',
} }
/** /**
* 导出api * 导出api
@@ -62,6 +63,9 @@ export const getExportXlsHeadersUrl = Api.exportXlsHeaders;
export const list = (params) => export const list = (params) =>
defHttp.get({ url: Api.list, params }); defHttp.get({ url: Api.list, params });
export const statusStats = (params) =>
defHttp.get({ url: Api.statusStats, params });
/** /**
* 删除单个 * 删除单个
*/ */
@@ -76,6 +76,11 @@
</a-dropdown> </a-dropdown>
<!-- 高级查询 --> <!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" /> <super-query :config="superQueryConfig" @search="handleSuperQuery" />
<a-space style="float: right; font-size: 14px; font-weight: bold">
<a-tag color="warning">未开始 {{ statsData.notStarted }}</a-tag>
<a-tag color="error">督办中 {{ statsData.inProgress }}已逾期 {{ statsData.overdue }}</a-tag>
<a-tag color="success">已完成 {{ statsData.completed }}</a-tag>
</a-space>
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@@ -145,7 +150,7 @@
</template> </template>
<script lang="ts" name="bgpartymatter-bgPartymatter" setup> <script lang="ts" name="bgpartymatter-bgPartymatter" setup>
import { reactive, ref } from 'vue'; import { reactive, ref, onMounted } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table'; import { BasicTable, TableAction } from '/@/components/Table';
import type { BasicColumn } from '/@/components/Table'; import type { BasicColumn } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage'; import { useListPage } from '/@/hooks/system/useListPage';
@@ -160,7 +165,7 @@
import FlowScheduleStartModalForBG from '/src/components/semri/process/FlowScheduleStartModalForBG.vue'; import FlowScheduleStartModalForBG from '/src/components/semri/process/FlowScheduleStartModalForBG.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue'; import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import { columns, superQuerySchema, bgPartymatterFeedbackColumns } from './BgPartymatter.data'; import { columns, superQuerySchema, bgPartymatterFeedbackColumns } from './BgPartymatter.data';
import { list, deleteOne, batchDelete, getImportUrl, getExportUrl, getImportExcelByEasyExcelUrl, getCheckExcelByEasyExcelUrl, getExportXlsHeadersUrl, bgPartymatterFeedbackList, saveOrUpdate } from './BgPartymatter.api'; import { list, statusStats, deleteOne, batchDelete, getImportUrl, getExportUrl, getImportExcelByEasyExcelUrl, getCheckExcelByEasyExcelUrl, getExportXlsHeadersUrl, bgPartymatterFeedbackList, saveOrUpdate } from './BgPartymatter.api';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { showImportValidationErrors } from '/@/utils/helper/importError'; import { showImportValidationErrors } from '/@/utils/helper/importError';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
@@ -201,6 +206,7 @@
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const expandedRowKeys = ref<Array<string | number>>([]); const expandedRowKeys = ref<Array<string | number>>([]);
const feedbackTableData = reactive<Record<string, Recordable[]>>({}); const feedbackTableData = reactive<Record<string, Recordable[]>>({});
const statsData = reactive({ notStarted: 0, inProgress: 0, overdue: 0, completed: 0 });
const feedbackTableLoading = reactive<Record<string, boolean>>({}); const feedbackTableLoading = reactive<Record<string, boolean>>({});
interface DeptOption { interface DeptOption {
@@ -387,6 +393,27 @@
reload({ page: 1 }); reload({ page: 1 });
} }
async function fetchStatusStats() {
try {
const params: Recordable = { meetingType: props.meetingType };
Object.keys(queryParam).forEach((key) => {
if (queryParam[key] !== undefined && queryParam[key] !== null && queryParam[key] !== '') {
params[key] = queryParam[key];
}
});
const res = await statusStats(params);
if (res) {
Object.assign(statsData, res);
}
} catch (e) {
// stats fetch failure is non-critical
}
}
onMounted(() => {
fetchStatusStats();
});
/** /**
* 新增事件 * 新增事件
*/ */
@@ -24,6 +24,7 @@ enum Api {
bgTakepulseFeedbackEdit = '/bqtakepulse/bgTakepulse/editBgTakepulseFeedback', bgTakepulseFeedbackEdit = '/bqtakepulse/bgTakepulse/editBgTakepulseFeedback',
bgTakepulseFeedbackDelete = '/bqtakepulse/bgTakepulse/deleteBgTakepulseFeedback', bgTakepulseFeedbackDelete = '/bqtakepulse/bgTakepulse/deleteBgTakepulseFeedback',
bgTakepulseFeedbackDeleteBatch = '/bqtakepulse/bgTakepulse/deleteBatchBgTakepulseFeedback', bgTakepulseFeedbackDeleteBatch = '/bqtakepulse/bgTakepulse/deleteBatchBgTakepulseFeedback',
statusStats = '/bqtakepulse/bgTakepulse/statusStats',
} }
/** /**
* 导出api * 导出api
@@ -54,6 +55,9 @@ export const queryBgTakepulseFeedbackListByMainId = (id) => defHttp.get({url: Ap
export const list = (params) => export const list = (params) =>
defHttp.get({url: Api.list, params}); defHttp.get({url: Api.list, params});
export const statusStats = (params) =>
defHttp.get({ url: Api.statusStats, params });
/** /**
* 删除单个 * 删除单个
*/ */
+29 -2
View File
@@ -75,6 +75,11 @@
</a-dropdown> </a-dropdown>
<!-- 高级查询 --> <!-- 高级查询 -->
<super-query :config="superQueryConfig" @search="handleSuperQuery" /> <super-query :config="superQueryConfig" @search="handleSuperQuery" />
<a-space style="float: right; font-size: 14px; font-weight: bold">
<a-tag color="warning">未开始 {{ statsData.notStarted }}</a-tag>
<a-tag color="error">督办中 {{ statsData.inProgress }}已逾期 {{ statsData.overdue }}</a-tag>
<a-tag color="success">已完成 {{ statsData.completed }}</a-tag>
</a-space>
</template> </template>
<!--操作栏--> <!--操作栏-->
<template #action="{ record }"> <template #action="{ record }">
@@ -144,14 +149,14 @@
</template> </template>
<script lang="ts" name="bqtakepulse-bgTakepulse" setup> <script lang="ts" name="bqtakepulse-bgTakepulse" setup>
import {ref, reactive} from 'vue'; import {ref, reactive, onMounted} from 'vue';
import {BasicTable, TableAction} from '/@/components/Table'; import {BasicTable, TableAction} from '/@/components/Table';
import type { BasicColumn } from '/@/components/Table'; import type { BasicColumn } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage' import { useListPage } from '/@/hooks/system/useListPage'
import {useModal} from '/@/components/Modal'; import {useModal} from '/@/components/Modal';
import BgTakepulseModal from './components/BgTakepulseModal.vue' import BgTakepulseModal from './components/BgTakepulseModal.vue'
import {columns, superQuerySchema} from './BgTakepulse.data'; import {columns, superQuerySchema} from './BgTakepulse.data';
import {list, deleteOne, getImportUrl, getExportUrl, getImportExcelByEasyExcelUrl, getCheckExcelByEasyExcelUrl, getExportXlsHeadersUrl, saveOrUpdate, bgTakepulseFeedbackList} from './BgTakepulse.api'; import {list, statusStats, deleteOne, getImportUrl, getExportUrl, getImportExcelByEasyExcelUrl, getCheckExcelByEasyExcelUrl, getExportXlsHeadersUrl, saveOrUpdate, bgTakepulseFeedbackList} from './BgTakepulse.api';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { showImportValidationErrors } from '/@/utils/helper/importError'; import { showImportValidationErrors } from '/@/utils/helper/importError';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
@@ -176,6 +181,7 @@
const queryParam = reactive<any>({}); const queryParam = reactive<any>({});
const expandedRowKeys = ref<Array<string | number>>([]); const expandedRowKeys = ref<Array<string | number>>([]);
const feedbackTableData = reactive<Record<string, Recordable[]>>({}); const feedbackTableData = reactive<Record<string, Recordable[]>>({});
const statsData = reactive({ notStarted: 0, inProgress: 0, overdue: 0, completed: 0 });
const feedbackTableLoading = reactive<Record<string, boolean>>({}); const feedbackTableLoading = reactive<Record<string, boolean>>({});
//注册model //注册model
const [registerModal, {openModal}] = useModal(); const [registerModal, {openModal}] = useModal();
@@ -335,6 +341,27 @@
reload({ page: 1 }); reload({ page: 1 });
} }
async function fetchStatusStats() {
try {
const params: Recordable = {};
Object.keys(queryParam).forEach((key) => {
if (queryParam[key] !== undefined && queryParam[key] !== null && queryParam[key] !== '') {
params[key] = queryParam[key];
}
});
const res = await statusStats(params);
if (res) {
Object.assign(statsData, res);
}
} catch (e) {
// stats fetch failure is non-critical
}
}
onMounted(() => {
fetchStatusStats();
});
/** /**
* 新增事件 * 新增事件
*/ */