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.

214 lines
6.6 KiB

<template>
<div>
<el-drawer
v-model="isShowDrawer"
title="详情"
direction="rtl"
size="80%"
v-loading="detailLoading"
>
<template #header>
<div class="font-size-18px">
{{ titleValueRef }} <span class="ml-20px font-size-16px">{{ titleNameRef }}</span>
</div>
</template>
<ContentWrap>
<Descriptions
:data="detailData"
labelClassName="label-class-name"
label-align="left"
direction="vertical"
:column="8"
:schema="allSchemas.detailSchema"
:columns="2"
width="200px"
/>
</ContentWrap>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick" style="margin-top: 5px;height: min-height:240px;">
<el-tab-pane label="工艺信息" name="processInfo">
<div class="mt-20px">
<el-space :size="10" spacer="|">
<span>名称<el-tag v-if="processRouteInfoSchema.processrouteInfo!=null">{{ processRouteInfoSchema.processrouteInfo.processName}} </el-tag></span>
<span>编码<el-tag v-if="processRouteInfoSchema.processrouteInfo!=null">{{ processRouteInfoSchema.processrouteInfo.processrouteCode}} </el-tag> </span>
<span>版本<el-tag v-if="processRouteInfoSchema.processrouteInfo!=null">{{ processRouteInfoSchema.processrouteInfo.routeVersion}} </el-tag> </span>
</el-space>
<el-divider />
<el-table
ref="tableRoute"
:data="nodeData"
:columns="nodeColumns"
border
stripe="true"
style="width: 100%"
>
<el-table-column prop="nodeSort" label="序号" align="center"/>
<el-table-column prop="preCode" label="前置工序" align="center">
<template #default="scope">
<div style="display: flex; align-items: center">
<el-tag
>{{ scope.row.preNodeName }}</el-tag
>
</div>
</template>
</el-table-column>
<el-table-column prop="processCode" label="当前工序" align="center" >
<template #default="scope">
<div style="display: flex; align-items: center">
<el-tag
>{{ scope.row.nodeName }}</el-tag
>
</div>
</template>
</el-table-column>
<el-table-column prop="nextCode" label="后置工序" align="center">
<template #default="scope">
<div style="display: flex; align-items: center">
<el-tag
>{{ scope.row.nextNodeName }}</el-tag
>
</div>
</template>
</el-table-column>
</el-table>
</div>
</el-tab-pane>
<el-tab-pane label="BOM信息" name="bomInfo"
><div class="mt-20px">
<el-table
ref="tableRoute"
:data="bomInfoSchemaData"
style="width: 100%"
>
<el-table-column prop="id" label="序号" align="center" />
<el-table-column prop="srcMaterialCode" label="品番" align="center" />
<el-table-column prop="srcMaterialModel" label="计量单位" align="center" />
<el-table-column prop="srcMaterialCounts" label="数量" align="center"/>
<el-table-column prop="processCode" label="工序编码" align="center" />
</el-table>
</div
></el-tab-pane>
</el-tabs>
</el-drawer>
</div>
</template>
<script lang="ts" setup>
import * as OrderDayApi from '@/api/mes/orderDay'
defineOptions({ name: 'orderDetail' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
const route = useRoute() // 路由信息
const routeName = ref()
routeName.value = route.name
routeName.value = routeName.value.substring(0, routeName.value.length - 4) + 'Detail'
const activeName = ref('processInfo')
const props = defineProps({
allSchemas: {
type: Object,
required: true,
default: null
}
})
const detailData = ref(props.allSchemas)
const bomInfoSchemaData = ref( [{srcMaterialCode:'----',
srcMaterialModel:'----',
srcMaterialCounts:'----',
processCode:'----',id:0}])
const processRouteInfoSchema = ref({
processrouteInfo: { processrouteCode: '', processName: '', routeVersion: '' },
processrouteNodeDetailList: []
})
const isShowDrawer = ref(false)
const detailLoading = ref(false)
const nodeColumns = ref([
{
label: '序号',
field: 'nodeSort'
},
{
label: '当前工序',
field: 'processCode'
},
{
label: '前置工序',
field: 'preCode'
},
{
label: '后置工序',
field: 'nextCode'
}
])
const nodeData = ref([{}])
// Tabs当前选择
const current = ref(0)
const handleClick = (item, index) => {
current.value = index
emit('changeTabs', item)
}
/** 打开弹窗 */
const formRef = ref()
const titleNameRef = ref()
const titleValueRef = ref()
const openDetail = async (row: any, titleName: any, titleValue: any, tableName: any) => {
titleNameRef.value = titleName
titleValueRef.value = titleValue
isShowDrawer.value = true
processRouteInfoSchema.value={ processrouteInfo: { processrouteCode: '', processName: '', routeVersion: '' }, processrouteNodeDetailList: [] }
bomInfoSchemaData.value = [{srcMaterialCode:'',
srcMaterialModel:'',
srcMaterialCounts:'',
processCode:'',id:0}]
if (row) {
detailLoading.value = true
try {
detailData.value = row
getDetailData(row)
} finally {
detailLoading.value = false
}
}
}
defineExpose({ openDetail, formRef }) // 提供 open 方法,用于打开弹窗
const getDetailData = async (row: any) => {
processRouteInfoSchema.value = await OrderDayApi.getProcessroutesDetail(row.processrouteCode)
let pam={planDayCode:row.planNoDay,productCode:row.productCode,planBatchCode:row.batchCode}
//console.log(pam)
bomInfoSchemaData.value = await OrderDayApi.getPlanBom(pam)
nodeData.value = processRouteInfoSchema.value.processrouteNodeDetailList
}
// 传递给父类
const emit = defineEmits([
'searchTableSuccessDetail',
'changeTabs',
'selectChangeDetail',
'detailOpenForm',
'tableFormButton',
'openImage',
'onBlur',
'detailBasicFormOnChange',
'formFormDateChange'
])
//监视属性
//watch()
</script>
<style lang="scss">
.el-drawer__body {
background: #f5f5f5 !important;
}
::v-deep(.label-class-name) {
color: #dedede;
}
</style>
<style scoped lang="scss"></style>