feat(xispeak,dq): 列表页新增状态统计栏(未开始/督办中/已逾期/已完成)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,7 @@ enum Api {
|
|||||||
getChildList = '/bg/xispeak/bgXiSpeak/childList',
|
getChildList = '/bg/xispeak/bgXiSpeak/childList',
|
||||||
getChildListBatch = '/bg/xispeak/bgXiSpeak/getChildListBatch',
|
getChildListBatch = '/bg/xispeak/bgXiSpeak/getChildListBatch',
|
||||||
getRootListWithDept = '/bg/xispeak/bgXiSpeak/getRootListWithDept',
|
getRootListWithDept = '/bg/xispeak/bgXiSpeak/getRootListWithDept',
|
||||||
|
statusStats = '/bg/xispeak/bgXiSpeak/statusStats',
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,6 +46,9 @@ export const list = (params) => defHttp.get({ url: Api.list, params });
|
|||||||
|
|
||||||
export const getRootListWithDept = (deptIds: string) => defHttp.get({ url: Api.getRootListWithDept, params: { dept_ids: deptIds } });
|
export const getRootListWithDept = (deptIds: string) => defHttp.get({ url: Api.getRootListWithDept, params: { dept_ids: deptIds } });
|
||||||
|
|
||||||
|
export const statusStats = (params) =>
|
||||||
|
defHttp.get({ url: Api.statusStats, params });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除
|
* 删除
|
||||||
* @param params
|
* @param params
|
||||||
|
|||||||
@@ -79,6 +79,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>
|
||||||
|
|
||||||
<!--操作栏-->
|
<!--操作栏-->
|
||||||
@@ -107,7 +112,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" name="bg.xispeak-bgXiSpeak" setup>
|
<script lang="ts" name="bg.xispeak-bgXiSpeak" setup>
|
||||||
import { ref, reactive, unref, computed, provide, nextTick } from 'vue';
|
import { ref, reactive, unref, computed, provide, nextTick, onMounted } from 'vue';
|
||||||
import { BasicTable, useTable } from '/@/components/Table';
|
import { BasicTable, useTable } from '/@/components/Table';
|
||||||
import { Dropdown } from '/@/components/Dropdown';
|
import { Dropdown } from '/@/components/Dropdown';
|
||||||
import { useListPage } from '/@/hooks/system/useListPage';
|
import { useListPage } from '/@/hooks/system/useListPage';
|
||||||
@@ -144,6 +149,7 @@ import { defHttp } from '/@/utils/http/axios';
|
|||||||
saveOrUpdateDict,
|
saveOrUpdateDict,
|
||||||
withDrawXiSpeak,
|
withDrawXiSpeak,
|
||||||
queryFeedbackCounts,
|
queryFeedbackCounts,
|
||||||
|
statusStats,
|
||||||
} from './BgXiSpeak.api';
|
} from './BgXiSpeak.api';
|
||||||
|
|
||||||
const FLOW_CODE = 'dev_bg_xi_speak_001';
|
const FLOW_CODE = 'dev_bg_xi_speak_001';
|
||||||
@@ -164,6 +170,7 @@ import { defHttp } from '/@/utils/http/axios';
|
|||||||
const businessProcessListModalRef = ref();
|
const businessProcessListModalRef = ref();
|
||||||
const currentBusinessId = ref('');
|
const currentBusinessId = ref('');
|
||||||
const pendingFeedbackRightNow = ref(0);
|
const pendingFeedbackRightNow = ref(0);
|
||||||
|
const statsData = reactive({ notStarted: 0, inProgress: 0, overdue: 0, completed: 0 });
|
||||||
const processColumns = taskTaskColumns;
|
const processColumns = taskTaskColumns;
|
||||||
// 是否显示DW领导列表选择
|
// 是否显示DW领导列表选择
|
||||||
const showSdwLeaderSelect = computed(() => queryParam.value.needSdwApproval === '1');
|
const showSdwLeaderSelect = computed(() => queryParam.value.needSdwApproval === '1');
|
||||||
@@ -230,6 +237,27 @@ import { defHttp } from '/@/utils/http/axios';
|
|||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function fetchStatusStats() {
|
||||||
|
try {
|
||||||
|
const params: Recordable = {};
|
||||||
|
Object.keys(queryParam.value).forEach((key) => {
|
||||||
|
if (queryParam.value[key] !== undefined && queryParam.value[key] !== null && queryParam.value[key] !== '') {
|
||||||
|
params[key] = queryParam.value[key];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const res = await statusStats(params);
|
||||||
|
if (res) {
|
||||||
|
Object.assign(statsData, res);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// stats fetch failure is non-critical
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
fetchStatusStats();
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增事件
|
* 新增事件
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ enum Api {
|
|||||||
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
||||||
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
||||||
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
||||||
|
statusStats = '/dqinspecttask/dqInspectTask/statusStats',
|
||||||
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -62,6 +63,9 @@ export const list = (params) =>
|
|||||||
export const ledgerList = (params) =>
|
export const ledgerList = (params) =>
|
||||||
defHttp.get({url: Api.ledgerList, params});
|
defHttp.get({url: Api.ledgerList, params});
|
||||||
|
|
||||||
|
export const statusStats = (params) =>
|
||||||
|
defHttp.get({ url: Api.statusStats, params });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除单个
|
* 删除单个
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -103,6 +103,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 }">
|
||||||
@@ -127,7 +132,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" name="dqinspecttask-dqInspectTask" setup>
|
<script lang="ts" name="dqinspecttask-dqInspectTask" setup>
|
||||||
import { ref, reactive, computed, unref } from 'vue';
|
import { ref, reactive, computed, unref, onMounted } from 'vue';
|
||||||
import { BasicTable, useTable } from '/@/components/Table';
|
import { BasicTable, useTable } from '/@/components/Table';
|
||||||
import { Dropdown } from '/@/components/Dropdown';
|
import { Dropdown } from '/@/components/Dropdown';
|
||||||
import { useListPage } from '/@/hooks/system/useListPage';
|
import { useListPage } from '/@/hooks/system/useListPage';
|
||||||
@@ -145,6 +150,7 @@
|
|||||||
getCheckExcelByEasyExcelUrl,
|
getCheckExcelByEasyExcelUrl,
|
||||||
getExportXlsHeadersUrl,
|
getExportXlsHeadersUrl,
|
||||||
saveOrUpdate,
|
saveOrUpdate,
|
||||||
|
statusStats,
|
||||||
} from './DqInspectTask.api';
|
} from './DqInspectTask.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';
|
||||||
@@ -162,6 +168,7 @@
|
|||||||
import { useUserStore } from '/@/store/modules/user';
|
import { useUserStore } from '/@/store/modules/user';
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
const queryParam = reactive<any>({});
|
const queryParam = reactive<any>({});
|
||||||
|
const statsData = reactive({ notStarted: 0, inProgress: 0, overdue: 0, completed: 0 });
|
||||||
const checkedKeys = ref<Array<string | number>>([]);
|
const checkedKeys = ref<Array<string | number>>([]);
|
||||||
//注册model
|
//注册model
|
||||||
const [registerModal, { openModal }] = useModal();
|
const [registerModal, { openModal }] = useModal();
|
||||||
@@ -221,6 +228,27 @@
|
|||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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