update 首页头部统计、任务列表,增加当前角色学科筛选条件

This commit is contained in:
2026-02-05 17:45:37 +08:00
parent 4c645942f1
commit 4e326920bd
3 changed files with 73 additions and 14 deletions

View File

@@ -7,20 +7,24 @@ import { post, get } from './request';
* @returns
*/
export const queryTaskListApi = (params: any) => {
return post(`/api/simulation/project/task/list`, params);
return post(`/api/simulation/project/task/list`, params);
};
// 我执行的 各类状态统计
export const getTaskCountApi = (params: any) => {
return post(`/api/simulation/project/task/count`, params);
return post(`/api/simulation/project/task/count`, params);
};
export const querySystemParamConfigureApi = (data: any) => {
return get(`/api/simulation/system/systemData/querySystemParamConfigure`, data);
};
// 消息列表
export const getUserMsgPageList = (data: any) => {
return get(`/spdm-msg/getUserMsgPageList`, data);
return get(`/spdm-msg/getUserMsgPageList`, data);
};
// 修改消息状态
export const setMsgReadStatus = (params: any) => {
return post(`/spdm-msg/setMsgReadStatus`, params);
};
return post(`/spdm-msg/setMsgReadStatus`, params);
};

View File

@@ -27,10 +27,11 @@ export default {
<script setup lang="ts" name="TaskMessageDashboard">
import { queryTaskListApi } from '/@/spdm/api/spdm-task';
import { ref, onMounted } from 'vue';
import { ref, onMounted, onBeforeUnmount } from 'vue';
import { useI18n } from 'vue-i18n';
import TableRender from '/@/components/TableRender/index.vue';
import { ElTag } from 'element-plus';
import mittBus from '/@/utils/mitt';
const router = useRouter();
@@ -103,6 +104,7 @@ const currentPageChangeFun = (val: number) => {
// 更多按钮
const goMoreFun = () => {
localStorage.setItem('HOME_TASK_PARAMS', 'total');
router.push('spdm/task/execute'); // 跳转到我执行的页面
};
@@ -125,6 +127,7 @@ const getTableList = () => {
size: 6,
sortOrder: 1,
type: 0,
filterDiscipline: discipline.value,
};
queryTaskListApi(params).then((res) => {
const list = res.data.data;
@@ -136,8 +139,16 @@ const getTableList = () => {
total.value = res.data.total;
});
};
const discipline = ref([]);
onMounted(() => {
getTableList();
// getTableList();
mittBus.on('current_discipline', (data) => {
discipline.value = data;
getTableList();
});
});
onBeforeUnmount(() => {
mittBus.off('current_discipline');
});
</script>

View File

@@ -1,7 +1,12 @@
<script lang="ts" setup name="TopNav">
import { queryTaskListApi, getTaskCountApi } from '/@/spdm/api/spdm-task';
import { queryTaskListApi, getTaskCountApi, querySystemParamConfigureApi } from '/@/spdm/api/spdm-task';
import { getTenantAssignmentsListByUsername } from '/@/api/admin/user';
import { useUserInfo } from '/@/stores/userInfo';
import Cookies from 'js-cookie';
import mittBus from '/@/utils/mitt';
// 获取当前角色有权限的学科
const USER_INFO_DATA = Cookies.get('cid_user_info');
const { t } = useI18n();
const { userInfos, userId } = useUserInfo();
@@ -49,7 +54,7 @@ const getTenantList = () => {
});
};
const getFocusCount = () => {
const getFocusCount = (discipline: any) => {
let idMap = [
{ key: null, value: 'tag1' },
{ key: null, value: 'tag2' },
@@ -68,11 +73,12 @@ const getFocusCount = () => {
sortOrder: 1,
type: 1,
idMap: idMap,
filterDiscipline: discipline,
};
queryTaskListApi(params).then((res) => {
list.value[0].count = res.data.total;
});
getTaskCountApi({ idMap, type: 0 }).then((res) => {
getTaskCountApi({ idMap, type: 0, filterDiscipline: discipline }).then((res) => {
const data = res.data;
list.value[1].count = data.todayTmrTasks || 0;
list.value[2].count = data.inProgress || 0;
@@ -80,14 +86,52 @@ const getFocusCount = () => {
});
};
onActivated(() => {
// 获取角色拥有的学科
const getDisciplineList = async () => {
const roleCodes = JSON.parse(USER_INFO_DATA).roleCodes;
if (!roleCodes) return [];
// 统一处理为数组
const codes = Array.isArray(roleCodes) ? roleCodes : roleCodes.split(',');
const params = {
paramName: 'ROLE_DISCIPLINE',
};
const res: any = await querySystemParamConfigureApi(params);
if (res.code === 200) {
const values = res.data.values || [];
const list = values.map((item: any) => JSON.parse(item));
const allDisciplines: any[] = [];
const allSimulationType: any[] = [];
// 收集所有角色的学科、仿真类型
codes.forEach((roleCode: any) => {
const roleData = list.find((item: any) => item.role === roleCode.trim());
if (roleData?.discipline?.length) {
allDisciplines.push(...roleData.discipline);
}
if (roleData?.simulationType) {
allSimulationType.push(roleData.simulationType);
}
});
// 去重
const uniqueDisciplines = Array.from(new Set(allDisciplines));
const uniqueSimulationType = Array.from(new Set(allSimulationType));
const result = { simulationType: uniqueSimulationType, discipline: uniqueDisciplines };
// 获取关注任务数量
getFocusCount(result.discipline);
// 传递给其他组件
mittBus.emit('current_discipline', result.discipline);
}
};
const initData = () => {
getTenantList();
getFocusCount();
getDisciplineList();
};
onActivated(() => {
initData();
});
watchEffect(() => {
getTenantList();
getFocusCount();
initData();
});
const router = useRouter();