!89 czh-20260710-支持统计完成事项状态以及逾期个数
Merge pull request !89 from 陈志浩/feature/bpm_status-20260710
This commit is contained in:
@@ -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 });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除单个
|
* 删除单个
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -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();
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增事件
|
* 新增事件
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user