<template>
<div class="app-container">
<el-menu
:default-active="activeIndex"
class="el-menu-demo"
mode="horizontal"
@select="handleSelect"
active-text-color="#2479D2"
>
<el-menu-item index="1">标注任务</el-menu-item>
<el-menu-item index="2">质检任务</el-menu-item>
</el-menu>
<el-card v-if="checkStatus == 1">
<el-row :gutter="10" class="mb8">
<right-toolbar @queryTable="handleSelect(1)"></right-toolbar>
</el-row>
<el-table :data="checkData1" style="width: 100%">
<el-table-column label="任务名称" align="center">
<template #default="{ row }">
{{ row.taskName }}
</template>
</el-table-column>
<el-table-column
label="状态"
prop="taskStatus"
align="center"
:formatter="taskProFormat"
>
</el-table-column>
<el-table-column
label="任务类型"
align="center"
:formatter="taskTypeFormat"
>
</el-table-column>
<el-table-column label="创建人" align="center">
<template #default="{ row }">
{{ row.createBy }}
</template>
</el-table-column>
<el-table-column label="已标/合格" align="center">
<template #default="{ row }">
{{ finishDone(row) }}
</template>
</el-table-column>
<el-table-column label="可获取数/总数" align="center">
<template #default="{ row }">
{{ gainTotal(row) }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center">
<template #default="{ row }">
{{ row.createTime }}
</template>
</el-table-column>
<el-table-column label="领取单位" align="center">
<template #default="{ row }">
{{ distributionDesc(row.distributionMethod) }}
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template v-slot="scope">
<!-- <el-button @click="editProgect(scope.row)" type="text" size="small"
>开始任务<span
v-if="
scope.row.jobRole === '1' &&
scope.row.withCheckToProducerMappingFlag === '1'
"
>(有分配人员)</span
>
<span
v-if="
scope.row.jobRole === '1' &&
scope.row.withCheckToProducerMappingFlag === '2'
"
>(有分配人员)</span
>
</el-button> -->
<el-button @click="editProgect(scope.row)" type="text" size="small"
>开始任务
</el-button>
<el-button @click="taskToDetail(scope.row)" type="text" size="small"
>详情
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-card v-if="checkStatus == 2">
<el-row :gutter="10" class="mb8">
<right-toolbar @queryTable="handleSelect(2)"></right-toolbar>
</el-row>
<el-table :data="checkData2" style="width: 100%">
<el-table-column label="任务名称" align="center">
<template #default="{ row }">
{{ row.taskName }}
</template>
</el-table-column>
<el-table-column
label="状态"
prop="taskStatus"
align="center"
:formatter="taskProFormat"
>
</el-table-column>
<el-table-column
label="任务类型"
align="center"
:formatter="taskTypeFormat"
>
</el-table-column>
<el-table-column label="创建人" align="center">
<template #default="{ row }">
{{ row.createBy }}
</template>
</el-table-column>
<el-table-column label="已质检" align="center">
<template #default="{ row }">
{{ row.processedUnits }}
</template>
</el-table-column>
<el-table-column label="质检合格率" align="center">
<template #default="{ row }">
{{ onTest(row) }}
</template>
</el-table-column>
<el-table-column label="最低合格率" align="center">
<template #default="{ row }">
{{ lowerTest(row) }}
</template>
</el-table-column>
<el-table-column label="可获取数/总数" align="center">
<template #default="{ row }">
{{ gainTotal(row) }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center">
<template #default="{ row }">
{{ row.createTime }}
</template>
</el-table-column>
<el-table-column label="领取单位" align="center">
<template #default="{ row }">
{{ distributionDesc(row.distributionMethod) }}
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template v-slot="scope">
<!-- <el-button @click="editProgect(scope.row)" type="text" size="small"
>开始任务<span
v-if="
scope.row.jobRole === '1' &&
scope.row.withCheckToProducerMappingFlag === '1'
"
>(有分配人员)</span
>
<span
v-if="
scope.row.jobRole === '1' &&
scope.row.withCheckToProducerMappingFlag === '2'
"
>(有分配人员)</span
>
</el-button> -->
<el-button @click="goSpotCheck(scope.row)" type="text" size="small"
>去质检
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="handleProducePAG"
/>
<!-- 质检人员分配 -->
<el-dialog
title="需质检人员"
:visible.sync="dialogProduce"
width="30%"
:before-close="handleClose"
>
<el-table :data="produceData" style="width: 100%">
<el-table-column prop="producerName" label="标注人员" align="center">
</el-table-column>
<el-table-column label="操作" align="center">
<template v-slot="scope">
<el-button @click="startQuality(scope.row)" type="text" size="small"
>开始质检</el-button
>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogProduce = false">取 消</el-button>
<el-button type="primary" @click="dialogProduce = false"
>确 定</el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
import { getuserProTask, getuserTimeInfo } from "@/api/produce/produce.js";
import { getMappingInfo } from "@/api/img/img.js";
export default {
name: "Produce",
data() {
return {
activeIndex: "1",
checkForm: {
checkName: "",
},
checkData1: [],
checkData2: [],
state: "",
dialogProduce: false,
produceData: [],
taskOptions: [],
qualitytaskId: "",
// 状态
type: {
0: "info",
1: "",
4: "info",
5: "success",
6: "",
7: "warning",
8: "success",
},
checkStatus: 1,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
},
// 总条数
total: 10,
interVal: null,
taskTypeOptions: [],
};
},
mounted() {
this.handleSelect();
this.getDicts("pro_task_status").then((response) => {
this.taskOptions = response.data;
});
this.getDicts("task_type").then((response) => {
this.taskTypeOptions = response.data;
});
},
beforeRouteLeave(to, from, next) {
this.$destroy();
next();
},
beforeDestroy() {
if (this.interVal) {
clearInterval(this.interVal); // 关闭
this.interVal = null;
}
},
methods: {
taskToDetail(row) {
if (row.taskType == "0") {
this.$router.push({
path: "/business/checkDetail",
query: {
taskId: row.taskId,
taskType: row.taskType,
},
});
} else if (row.taskType == "1") {
this.$router.push({
path: "/business/checkDetail",
query: {
taskId: row.taskId,
userId: row.userId,
taskType: row.taskType,
},
});
} else if (row.taskType == "6") {
this.$router.push({
path: "/business/checkDetail",
query: {
taskId: row.taskId,
userId: row.userId,
taskType: row.taskType,
},
});
}
},
taskProFormat(row, column) {
return this.selectDictLabel(this.taskOptions, row.taskStatus);
},
taskTypeFormat(row, column) {
return this.selectDictLabel(this.taskTypeOptions, row.taskType);
},
// availableUnits: "12" 物料单位可获取数
// processedUnits: "0" 已标注数
// realTimeQualifiedUnits: "0" 实时合格数
// taskId: "ProTask-0e4dd186-5f6a-41f6-afbe-7c250b82e1a1"
// totalMaterialUnits: "13" 物料单位总数
// 调取标注任务
async handleSelect(key) {
this.checkStatus = key ? key : 1;
let that = this;
if (this.interVal) {
clearInterval(this.interVal);
this.interVal = null;
}
if (key === undefined || key === "1") {
const res1 = await getuserProTask(this.queryParams, "LABEL");
this.total = res1.total;
const taskIdsARR1 = [];
res1.rows.forEach((item) => {
if (item.jobRole === "0") {
taskIdsARR1.push(item.taskId);
}
});
const data1 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR1,
jobRole: "0",
})
);
res1.rows.forEach((item) => {
data1.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
this.checkData1 = res1.rows.filter((item) => item.jobRole === "0");
this.interVal = setInterval(function () {
that.$nextTick(async () => {
const data1 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR1,
jobRole: "0",
})
);
res1.rows.forEach((item) => {
data1.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
that.checkData1 = res1.rows.filter((item) => item.jobRole === "0");
});
}, 10000);
} else if (key === "2") {
const res2 = await getuserProTask(this.queryParams, "CHECK");
this.total = res2.total;
const taskIdsARR2 = [];
res2.rows.forEach((item) => {
if (item.jobRole === "1") {
taskIdsARR2.push(item.taskId);
}
});
const data2 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR2,
jobRole: "1",
})
);
res2.rows.forEach((item) => {
data2.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
this.checkData2 = res2.rows.filter((item) => item.jobRole === "1");
this.interVal = setInterval(function () {
that.$nextTick(async () => {
const data2 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR2,
jobRole: "1",
})
);
res2.rows.forEach((item) => {
data2.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
that.checkData2 = res2.rows.filter((item) => item.jobRole === "1");
});
}, 10000);
}
},
// 分页
async handleProducePAG() {
let that = this;
if (this.interVal) {
clearInterval(this.interVal);
this.interVal = null;
}
if (this.checkStatus == 1) {
const res1 = await getuserProTask(this.queryParams, "LABEL");
this.total = res1.total;
const taskIdsARR1 = [];
res1.rows.forEach((item) => {
if (item.jobRole === "0") {
taskIdsARR1.push(item.taskId);
}
});
const data1 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR1,
jobRole: "0",
})
);
res1.rows.forEach((item) => {
data1.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
this.checkData1 = res1.rows.filter((item) => item.jobRole === "0");
this.interVal = setInterval(function () {
that.$nextTick(async () => {
const data1 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR1,
jobRole: "0",
})
);
res1.rows.forEach((item) => {
data1.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
that.checkData1 = res1.rows.filter((item) => item.jobRole === "0");
});
}, 10000);
} else if (this.checkStatus == 2) {
const res2 = await getuserProTask(this.queryParams, "CHECK");
this.total = res2.total;
const taskIdsARR2 = [];
res2.rows.forEach((item) => {
if (item.jobRole === "1") {
taskIdsARR2.push(item.taskId);
}
});
const data2 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR2,
jobRole: "1",
})
);
res2.rows.forEach((item) => {
data2.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
this.checkData2 = res2.rows.filter((item) => item.jobRole === "1");
this.interVal = setInterval(function () {
that.$nextTick(async () => {
const data2 = await getuserTimeInfo(
JSON.stringify({
taskIds: taskIdsARR2,
jobRole: "1",
})
);
res2.rows.forEach((item) => {
data2.data.forEach((list) => {
if (item.taskId == list.taskId) {
item.availableUnits = list.availableUnits;
item.processedUnits = list.processedUnits;
item.realTimeQualifiedUnits = list.realTimeQualifiedUnits;
item.totalMaterialUnits = list.totalMaterialUnits;
}
});
});
that.checkData2 = res2.rows.filter((item) => item.jobRole === "1");
});
}, 10000);
}
},vue路由跳转下一个界面为什么会去发送上一个界面的请求
最新发布