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

340 lines
14 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-11 16:00:17 +08:00
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" class="hl-table custom-hover-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>
2026-01-11 16:00:17 +08:00
<label style="display: inline-flex; align-items: center; margin-left: 40px;">
<el-checkbox class="large-checkbox" v-model="formData.statusflag" style="order: 1;" @change="change1"/>
<span style="order: 2; margin-left: 10px;">不显示已完成</span>
</label>
2026-01-04 11:04:58 +08:00
</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" />
2026-01-11 16:00:17 +08:00
<el-table-column label="采购数量" align="center" prop="purchaseAmounts" />
2026-01-07 09:35:49 +08:00
<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" />
2026-01-11 16:00:17 +08:00
<el-table-column label="派工数量" align="center" prop="amount" />
2026-01-07 09:35:49 +08:00
<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-11 16:00:17 +08:00
<el-table-column label="报工时间" align="center" prop="endTime" :formatter="dateFormatter2"/>
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" />
2026-01-11 16:00:17 +08:00
<el-table-column label="派工数量" align="center" prop="amount" />
2026-01-07 09:35:49 +08:00
<el-table-column label="预计工时(天)" align="center" prop="workTime" />
2026-01-11 16:00:17 +08:00
<el-table-column label="派工人数" align="center" prop="bgAmount" />
2026-01-07 09:35:49 +08:00
<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-11 16:00:17 +08:00
const type1 = ref('')
2026-01-04 11:04:58 +08:00
const formData = reactive({
id:undefined,
projectSubId:undefined,
2026-01-11 16:00:17 +08:00
flag:true,
statusflag:true
2026-01-04 11:04:58 +08:00
})
//初始化方法
onMounted(async () => {
console.log(query)
formData.projectSubId = query.projectSubId
2026-01-11 16:00:17 +08:00
await getList()
2026-01-07 09:35:49 +08:00
const queryParams = reactive({
2026-01-11 16:00:17 +08:00
projectSubId:formData.projectSubId,
statusflag:formData.statusflag
2026-01-07 09:35:49 +08:00
})
if (list.value){
2026-01-11 16:00:17 +08:00
const hasDesignTask = list.value.some(item => item.subType == "设计任务");
2026-01-07 09:35:49 +08:00
if (hasDesignTask){
list1.value= await PlansubdetailApi.getList1(queryParams)
type.value='sheji'
2026-01-11 16:00:17 +08:00
type1.value='sheji'
2026-01-07 09:35:49 +08:00
}
}
2026-01-04 11:04:58 +08:00
2026-01-07 09:35:49 +08:00
})
const change = (val) => {
getList()
}
2026-01-11 16:00:17 +08:00
const change1 =async (val) => {
const queryParams = reactive({
projectSubId:formData.projectSubId,
statusflag:formData.statusflag
})
type.value=type1.value
if (type.value=='sheji'){
list1.value= await PlansubdetailApi.getList1(queryParams)
if (list1.value.length<=0){
type1.value=type.value
type.value=''
}
}else if (type.value=='waixei'){
list2.value= await PlansubdetailApi.getList2(queryParams)
if (list2.value.length<=0){
type1.value=type.value
type.value=''
}
}else if (type.value=='jiagong'){
list3.value= await PlansubdetailApi.getList3(queryParams)
if (list3.value.length<=0){
type1.value=type.value
type.value=''
}
}else if (type.value=='guochengjian'){
list4.value= await PlansubdetailApi.getList4(queryParams)
if (list4.value.length<=0){
type1.value=type.value
type.value=''
}
}else if (type.value=='zhuangpei'){
list5.value= await PlansubdetailApi.getList5(queryParams)
console.log(list5.value.length)
if (list5.value.length<=0){
type1.value=type.value
type.value=''
}
}
}
2026-01-07 09:35:49 +08:00
/** 处理某一行的点击 */
const rowClick = async (row) => {
2026-01-11 16:00:17 +08:00
console.log(type1.value);
2026-01-07 09:35:49 +08:00
const queryParams = reactive({
projectSubId:formData.projectSubId,
2026-01-11 16:00:17 +08:00
statusflag:formData.statusflag
2026-01-07 09:35:49 +08:00
})
type.value=''
2026-01-11 16:00:17 +08:00
2026-01-07 09:35:49 +08:00
if (row.subType=='设计任务'){
list1.value= await PlansubdetailApi.getList1(queryParams)
if (list1.value.length>0){
type.value='sheji'
}
2026-01-11 16:00:17 +08:00
type1.value='sheji'
2026-01-07 09:35:49 +08:00
}else if (row.subType=='外协任务'){
list2.value= await PlansubdetailApi.getList2(queryParams)
if (list2.value.length>0){
type.value='waixei'
}
2026-01-11 16:00:17 +08:00
type1.value='waixei'
2026-01-07 09:35:49 +08:00
}else if (row.subType=='加工任务'){
list3.value= await PlansubdetailApi.getList3(queryParams)
if (list3.value.length>0){
type.value='jiagong'
}
2026-01-11 16:00:17 +08:00
type1.value='jiagong'
2026-01-07 09:35:49 +08:00
}else if (row.subType=='过程检任务'){
list4.value= await PlansubdetailApi.getList4(queryParams)
if (list4.value.length>0){
type.value='guochengjian'
}
2026-01-11 16:00:17 +08:00
type1.value='guochengjian'
2026-01-07 09:35:49 +08:00
}else{
list5.value= await PlansubdetailApi.getList5(queryParams)
if (list5.value.length>0){
type.value='zhuangpei'
}
2026-01-11 16:00:17 +08:00
type1.value='zhuangpei'
2026-01-07 09:35:49 +08:00
}
}
const cellClassName = ({ row,column }) => {
if (column.label === '任务状态' && row.statusFlag) {
2026-01-11 16:00:17 +08:00
return row.statusFlag === '1' ? 'warning-row1' :"";
2026-01-07 09:35:49 +08:00
}
}
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) {
2026-01-11 16:00:17 +08:00
return row.statusFlag === '1' ? 'warning-row1' :"";
2026-01-07 09:35:49 +08:00
}
}
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>
2026-01-11 16:00:17 +08:00
<style scoped>
:deep(.warning-row1) {
background-color:#d9001b !important;
}
2026-01-04 11:04:58 +08:00
.large-checkbox {
transform: scale(1.5); /* 方法1使用scale放大 */
/* 或者 */
/* 方法2通过调整字体大小 */
/* font-size: 18px; */
}
2026-01-11 16:00:17 +08:00
/* 添加 hover 效果 */
.custom-hover-table ::v-deep .el-table__body tr:hover>td {
background-color: #e8e8e8 !important;
cursor: pointer; /* 如果需要鼠标变为手型 */
}
/* 如果表格有固定列,也需要设置 hover 效果 */
.custom-hover-table ::v-deep .el-table__fixed,
.custom-hover-table ::v-deep .el-table__fixed-right {
box-shadow: none;
}
.custom-hover-table ::v-deep .el-table__fixed tr:hover>td,
.custom-hover-table ::v-deep .el-table__fixed-right tr:hover>td {
background-color: #e8e8e8 !important;
}
2026-01-04 11:04:58 +08:00
</style>