You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
7.3 KiB
200 lines
7.3 KiB
<template>
|
|
<div>
|
|
<el-row :gutter="20">
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('unfinishedProjects',counts)" class="card-item">
|
|
<div class="card-title">我参与的未结物料</div>
|
|
<div class="card-count">{{ counts.unfinishedProjectsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('pendingUploads',counts)" class="card-item">
|
|
<div class="card-title">待上传文件</div>
|
|
<div class="card-count">{{ counts.pendingUploadsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('pendingConfirmations',counts)" class="card-item">
|
|
<div class="card-title">待生产确认的项目</div>
|
|
<div class="card-count">{{ counts.pendingConfirmationsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="20" style="margin-top: 10px;">
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('allProjects',counts)" class="card-item">
|
|
<div class="card-title">我参与的所有物料</div>
|
|
<div class="card-count">{{ counts.allProjectsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('overdueUploads',counts)" class="card-item">
|
|
<div class="card-title">逾期的待上传文件</div>
|
|
<div class="card-count">{{ counts.overdueUploadsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
<el-col :span="6">
|
|
<el-card @click.native="navigateToMes('overdueConfirmations',counts)" class="card-item">
|
|
<div class="card-title">逾期的待生产确认的项目</div>
|
|
<div class="card-count">{{ counts.overdueConfirmationsCount }}</div>
|
|
</el-card>
|
|
</el-col>
|
|
</el-row>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { agencyMatter } from "../../../api/eam/eamProject";
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
counts: {
|
|
unfinishedProjectsCount: 0,
|
|
allProjectsCount: 0,
|
|
pendingUploadsCount: 0,
|
|
overdueUploadsCount: 0,
|
|
pendingConfirmationsCount: 0,
|
|
overdueConfirmationsCount: 0,
|
|
unfinishedProjects: [],
|
|
allProjects: [],
|
|
pendingUploads: [],
|
|
overdueUploads: [],
|
|
pendingConfirmations: [],
|
|
overdueConfirmations: [],
|
|
},
|
|
intervalId: null,
|
|
};
|
|
},
|
|
created() {
|
|
this.fetchCounts();
|
|
this.startAutoRefresh();
|
|
},
|
|
beforeDestroy() {
|
|
this.stopAutoRefresh();
|
|
},
|
|
methods: {
|
|
fetchCounts() {
|
|
agencyMatter()
|
|
.then(({ data }) => {
|
|
this.counts = data;
|
|
this.counts.unfinishedProjectsCount = this.counts.unfinishedProjects.length;
|
|
this.counts.allProjectsCount = this.counts.allProjects.length;
|
|
this.counts.pendingUploadsCount = this.counts.pendingUploads.length;
|
|
this.counts.overdueUploadsCount = this.counts.overdueUploads.length;
|
|
this.counts.pendingConfirmationsCount = this.counts.pendingConfirmations.length;
|
|
this.counts.overdueConfirmationsCount = this.counts.overdueConfirmations.length;
|
|
})
|
|
.catch((error) => {
|
|
console.error("Error fetching project counts:", error);
|
|
});
|
|
},
|
|
navigateToMes(path, row) {
|
|
let projectNos = '';
|
|
let testPartNos = '';
|
|
if (path === 'unfinishedProjects') {
|
|
for (let i = 0; i < row.unfinishedProjects.length; i++) {
|
|
// 使用逗号拼接 unfinishedProjects.projectNo,如果是最后一个则不加逗号
|
|
projectNos += row.unfinishedProjects[i].projectNo + (i === row.unfinishedProjects.length - 1 ? '' : ',');
|
|
testPartNos += row.unfinishedProjects[i].testPartNo + (i === row.unfinishedProjects.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ path: 'eam-eamProjectPartInfo', query: { projectNo: projectNos,testPartNo: testPartNos} });
|
|
}
|
|
else if (path === 'allProjects') {
|
|
for (let i = 0; i < row.allProjects.length; i++) {
|
|
projectNos += row.allProjects[i].projectNo + (i === row.allProjects.length - 1 ? '' : ',');
|
|
testPartNos += row.allProjects[i].testPartNo + (i === row.allProjects.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ path: 'eam-eamProjectPartInfo', query: { projectNo: projectNos,testPartNo: testPartNos } });
|
|
}
|
|
else if (path === 'pendingUploads') {
|
|
for (let i = 0; i < row.pendingUploads.length; i++) {
|
|
projectNos += row.pendingUploads[i].projectNo + (i === row.pendingUploads.length - 1 ? '' : ',');
|
|
testPartNos += row.pendingUploads[i].testPartNo + (i === row.pendingUploads.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ name: 'eam-eamProjectInfoForUploads', query: { projectNo: projectNos,flag:'1',testPartNo: testPartNos } });
|
|
}
|
|
else if (path === 'overdueUploads') {
|
|
for (let i = 0; i < row.overdueUploads.length; i++) {
|
|
projectNos += row.overdueUploads[i].projectNo + (i === row.overdueUploads.length - 1 ? '' : ',');
|
|
testPartNos += row.overdueUploads[i].testPartNo + (i === row.overdueUploads.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ path: 'eam-eamProjectInfoForUploads', query: { projectNo: projectNos,flag:'2',testPartNo: testPartNos } });
|
|
}
|
|
else if (path === 'pendingConfirmations') {
|
|
for (let i = 0; i < row.pendingConfirmations.length; i++) {
|
|
projectNos += row.pendingConfirmations[i].projectNo + (i === row.pendingConfirmations.length - 1 ? '' : ',');
|
|
testPartNos += row.pendingConfirmations[i].testPartNo + (i === row.pendingConfirmations.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ path: 'eam-eamProjectInfoForConfirm', query: { projectNo: projectNos,flag:'3',testPartNo: testPartNos } });
|
|
}
|
|
else if (path === 'overdueConfirmations') {
|
|
for (let i = 0; i < row.overdueConfirmations.length; i++) {
|
|
projectNos += row.overdueConfirmations[i].projectNo + (i === row.overdueConfirmations.length - 1 ? '' : ',');
|
|
testPartNos += row.overdueConfirmations[i].testPartNo + (i === row.overdueConfirmations.length - 1 ? '' : ',');
|
|
}
|
|
this.$router.push({ path: 'eam-eamProjectInfoForConfirm', query: { projectNo: projectNos,flag:'4',testPartNo: testPartNos } });
|
|
}
|
|
},
|
|
startAutoRefresh() {
|
|
this.intervalId = setInterval(() => {
|
|
this.fetchCounts();
|
|
}, 20000); // 每20秒刷新一次
|
|
},
|
|
stopAutoRefresh() {
|
|
if (this.intervalId) {
|
|
clearInterval(this.intervalId);
|
|
}
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped>
|
|
.card-item {
|
|
cursor: pointer;
|
|
margin-bottom: 20px;
|
|
transition: transform 0.3s, box-shadow 0.3s;
|
|
overflow: hidden;
|
|
//padding: 10px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
height: 208px;
|
|
width: 230px;
|
|
margin-left: 40px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.card-item:hover {
|
|
transform: translateY(-5px);
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.card-title {
|
|
font-size: 18px;
|
|
font-weight: bold;
|
|
margin-bottom: 10px;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.card-count {
|
|
font-size: 55px;
|
|
color: #17B3A3;
|
|
text-align: center;
|
|
font-weight: bold;
|
|
margin-top: 50px;
|
|
}
|
|
|
|
.project-list {
|
|
font-size: 12px;
|
|
color: #333;
|
|
line-height: 1.5;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.el-divider {
|
|
margin: 10px 0;
|
|
}
|
|
</style>
|