heli-mes/mes-ui/mes-ui-admin-vue3/src/views/heli/partprocess/detail.vue

271 lines
12 KiB
Vue
Raw Normal View History

2026-01-04 11:04:58 +08:00
<template>
<el-card class="hl-card" style="position: relative">
<template #header>
<span>详情页</span>
</template>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">子项目信息</span>
<label style="display: inline-flex; align-items: center; margin-left: 40px;">
2026-01-07 09:35:49 +08:00
<el-checkbox class="large-checkbox" v-model="formData.flag" style="order: 1;" @change="change"/>
2026-01-04 11:04:58 +08:00
<span style="order: 2; margin-left: 10px;">不显示已完成</span>
</label>
</template>
</el-card>
<ContentWrap>
2026-01-07 09:35:49 +08:00
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table" height="250" border @row-click="rowClick" :cell-class-name="cellClassName5">
2026-01-04 11:04:58 +08:00
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
2026-01-07 09:35:49 +08:00
<el-table-column label="任务" align="center" prop="subType" />
<el-table-column label="预计开始时间" align="center" prop="startTwoDimDate" :formatter="dateFormatter2" />
<el-table-column label="预计结束时间" align="center" prop="twoDimDate" :formatter="dateFormatter2" />
<el-table-column label="工单状态" align="center" prop="status" />
<el-table-column label="生产进度" align="center" prop="productionSchedule" >
<template #default="scope">
<el-progress :percentage="scope.row.productionSchedule" />
</template>
</el-table-column>
2026-01-04 11:04:58 +08:00
</el-table>
</ContentWrap>
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工单信息</span>
</template>
</el-card>
2026-01-07 09:35:49 +08:00
<ContentWrap v-if="type=='sheji'">
<el-table :data="list1" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="name" />
<el-table-column label="工艺设计" align="center" prop="type" />
<el-table-column label="预计开始时间" align="center" prop="startTwoDimDate" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="twoDimDate" :formatter="dateFormatter2"/>
<el-table-column label="预计工时(H)" align="center" prop="designNum" />
<el-table-column label="实际工时(H)" align="center" prop="workHours" />
<el-table-column label="负责人" align="center" prop="twoDimOwnerName" />
<el-table-column label="最后报工时间" align="center" prop="time" :formatter="dateFormatter2"/>
<el-table-column label="完工" align="center" prop="percentage" />
<el-table-column label="任务状态" align="center" prop="status" />
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='waixei'">
<el-table :data="list2" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName1">
2026-01-04 11:04:58 +08:00
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
2026-01-07 09:35:49 +08:00
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="要求完成日期" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="收货日期" align="center" prop="receivingTime" :formatter="dateFormatter2"/>
<el-table-column label="零件采购" align="center" prop="partsProcurement" />
<el-table-column label="派工单状态" align="center" prop="receiving" />
2026-01-04 11:04:58 +08:00
</el-table>
</ContentWrap>
2026-01-07 09:35:49 +08:00
<ContentWrap v-if="type=='jiagong'">
<el-table :data="list3" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName2">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="预计开始时间" align="center" prop="startTime" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="预计工时(天)" align="center" prop="workTime" />
<el-table-column label="实际工时(天)" align="center" prop="workingHour" />
<el-table-column label="报工进度(%)" align="center" prop="percentage" />
<el-table-column label="派工单状态" align="center" prop="report" />
<el-table-column label="是否过程检" align="center" prop="checkYn" >
<template #default="scope">
{{scope.row.checkYn=='0'?"是":"否"}}
</template>
</el-table-column>
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='guochengjian'">
<el-table :data="list4" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName3">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="零件名称" align="center" prop="materialName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="是否过程检" align="center" prop="checkYn" >
<template #default="scope">
{{scope.row.checkYn=='0'?"是":"否"}}
</template>
</el-table-column>
<el-table-column label="过程检状态" align="center" prop="report" />
<el-table-column label="负责人" align="center" prop="ownerName" />
2026-01-04 11:04:58 +08:00
2026-01-07 09:35:49 +08:00
</el-table>
</ContentWrap>
<ContentWrap v-if="type=='zhuangpei'">
<el-table :data="list5" :show-overflow-tooltip="true" class="hl-table" height="500" border :cell-class-name="cellClassName4">
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="子项目名称" align="center" prop="projectSubName" />
<el-table-column label="工序" align="center" prop="procedureName" />
<el-table-column label="预计开始时间" align="center" prop="startTime" :formatter="dateFormatter2"/>
<el-table-column label="预计结束时间" align="center" prop="endTime" :formatter="dateFormatter2"/>
<el-table-column label="负责人" align="center" prop="ownerName" />
<el-table-column label="预计工时(天)" align="center" prop="workTime" />
<el-table-column label="实际工时(天)" align="center" prop="workingHour" />
<el-table-column label="报工进度(%)" align="center" prop="percentage" />
<el-table-column label="派工单状态" align="center" prop="report" />
<el-table-column label="成品检" align="center" prop="finishedProduct" />
</el-table>
</ContentWrap>
2026-01-04 11:04:58 +08:00
<div class="text-center hl-footer">
<el-button @click="() => router.back()" size="large"> </el-button>
</div>
</el-card>
</template>
<script setup lang="ts">
import {inject, ref} from 'vue'
import {dateFormatter2} from "@/utils/formatTime";
import * as PlansubdetailApi from '@/api/heli/plansubdetail'
const loading = ref(false) // 列表的加载中
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const { query } = useRoute()
const router = useRouter()
const reload = inject('reload')
const formLoading = ref(false) // 表单的加载中1修改时的数据加载2提交的按钮禁用
2026-01-07 09:35:49 +08:00
const list = ref([])
const list1 = ref([]) // 设计数据
const list2 = ref([]) // 外协数据
const list3 = ref([]) // 加工数据
const list4 = ref([]) // 过程检数据
const list5 = ref([]) // 装配任务数据
const type = ref('')
2026-01-04 11:04:58 +08:00
const formData = reactive({
id:undefined,
projectSubId:undefined,
flag:true
})
//初始化方法
onMounted(async () => {
console.log(query)
formData.projectSubId = query.projectSubId
2026-01-07 09:35:49 +08:00
getList()
const queryParams = reactive({
projectSubId:formData.projectSubId
})
if (list.value){
const hasDesignTask = list.value.some(item => item.subType === "设计任务");
if (hasDesignTask){
list1.value= await PlansubdetailApi.getList1(queryParams)
type.value='sheji'
}
}
2026-01-04 11:04:58 +08:00
2026-01-07 09:35:49 +08:00
})
const change = (val) => {
getList()
}
/** 处理某一行的点击 */
const rowClick = async (row) => {
console.log(row);
const queryParams = reactive({
projectSubId:formData.projectSubId,
})
type.value=''
if (row.subType=='设计任务'){
list1.value= await PlansubdetailApi.getList1(queryParams)
if (list1.value.length>0){
type.value='sheji'
}
}else if (row.subType=='外协任务'){
list2.value= await PlansubdetailApi.getList2(queryParams)
if (list2.value.length>0){
type.value='waixei'
}
}else if (row.subType=='加工任务'){
list3.value= await PlansubdetailApi.getList3(queryParams)
if (list3.value.length>0){
type.value='jiagong'
}
}else if (row.subType=='过程检任务'){
list4.value= await PlansubdetailApi.getList4(queryParams)
if (list4.value.length>0){
type.value='guochengjian'
}
}else{
list5.value= await PlansubdetailApi.getList5(queryParams)
if (list5.value.length>0){
type.value='zhuangpei'
}
}
}
const cellClassName = ({ row,column }) => {
if (column.label === '任务状态' && row.statusFlag) {
return row.statusFlag === '1' ? 'warning-row1' : row.statusFlag === '0' ?'warning-row2':"";
}
}
const cellClassName1 = ({ row,column }) => {
if (column.label === '派工单状态' && row.receivingFlag) {
return row.receivingFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName2 = ({ row,column }) => {
if (column.label === '派工单状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName3 = ({ row,column }) => {
if (column.label === '过程检状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName4 = ({ row,column }) => {
if (column.label === '派工单状态' && row.reportFlag) {
return row.reportFlag === '1' ? 'warning-row1' :"";
}
}
const cellClassName5 = ({ row,column }) => {
if (column.label === '工单状态' && row.statusFlag) {
return row.statusFlag === '1' ? 'warning-row1' : row.statusFlag === '0' ?'warning-row2':"";
}
}
2026-01-04 11:04:58 +08:00
/** 查询设计列表 */
const getList = async () => {
loading.value = true
try {
2026-01-07 09:35:49 +08:00
const queryParams = reactive({
projectSubId:formData.projectSubId,
flag:formData.flag==true?"0":"1"
})
const data = await PlansubdetailApi.getList(queryParams)
2026-01-04 11:04:58 +08:00
list.value = data
} finally {
loading.value = false
}
}
</script>
<style>
.hl-card .alter-class {
position: relative;
border: solid 1px orange;
outline: solid 1px orange;
}
2026-01-07 09:35:49 +08:00
.warning-row1 {
background-color:#F08080 !important;
}
.warning-row2 {
background-color: #1E90FF !important; /* 道奇蓝 */
}
2026-01-04 11:04:58 +08:00
.large-checkbox {
transform: scale(1.5); /* 方法1使用scale放大 */
/* 或者 */
/* 方法2通过调整字体大小 */
/* font-size: 18px; */
}
</style>