309 lines
7.8 KiB
Vue
309 lines
7.8 KiB
Vue
<!--
|
||
filename: ProcessBomList.vue
|
||
author: liubin
|
||
date: 2023-10-20 15:00:58
|
||
description:
|
||
-->
|
||
|
||
<template>
|
||
<section class="process-bom">
|
||
<SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" />
|
||
<!-- <small-title :no-padding="true">
|
||
设备名称: {{ name }}
|
||
</small-title> -->
|
||
<div class="btns" style="
|
||
text-align: right;
|
||
position: absolute;
|
||
top: 20px;
|
||
right: 20px;
|
||
display: flex;
|
||
">
|
||
<!-- <el-input icon="el-icon-search" placeholder="搜索" v-model="searchText" style="margin-left: 20px">
|
||
<i slot="prefix" class="el-input__icon el-icon-search"></i>
|
||
</el-input>
|
||
<el-button type="primary" plain :disabled="currentDet == null" class="btn-create" icon="el-icon-plus">
|
||
分配设备
|
||
</el-button> -->
|
||
</div>
|
||
|
||
<!-- 列表 -->
|
||
<el-row>
|
||
<div style="margin-bottom: 10px;font-size: 16px;">设备名称:{{ name }}</div>
|
||
<el-col class="custom-tabs">
|
||
<el-tabs v-model="activeName" :stretch="true" @tab-click="handleTabClick">
|
||
<el-tab-pane :label="'\u2002物料追溯\u2002'" name="material">
|
||
<!-- 列表 -->
|
||
<base-table class="base-table__margin" :table-props="materialTableProps" :page="1" :limit="10"
|
||
:table-data="materialList" @emitFun="handleEmitFun"></base-table>
|
||
</el-tab-pane>
|
||
<el-tab-pane :label="'\u3000参数追溯\u3000'" name="value" style="overflow: inherit">
|
||
<base-table class="base-table__margin" :table-props="valueTableProps" :page="1" :limit="10"
|
||
:table-data="valueList" @emitFun="handleEmitFun"></base-table>
|
||
</el-tab-pane>
|
||
</el-tabs>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<!-- 分页组件 -->
|
||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||
@pagination="getList" />
|
||
</section>
|
||
</template>
|
||
|
||
<script>
|
||
// import SmallTitle from './SmallTitle';
|
||
import {
|
||
getDetMaterial,
|
||
getDetValue
|
||
} from '@/api/quality/processTraceabilityDetail';
|
||
import StatusBtn from './statusBtn.vue'
|
||
export default {
|
||
name: 'ProcessBom',
|
||
components: {
|
||
// SmallTitle
|
||
},
|
||
props: {
|
||
currentDet: {
|
||
type: Object,
|
||
default: null
|
||
}
|
||
},
|
||
data() {
|
||
return {
|
||
detId:undefined,
|
||
activeName: 'material',
|
||
searchBarFormConfig: [{ label: '设备参数及物料追溯' },
|
||
{
|
||
type: 'datePicker',
|
||
label: '时间段',
|
||
dateType: 'daterange', // datetimerange
|
||
// format: 'yyyy-MM-dd HH:mm:ss',
|
||
format: 'yyyy-MM-dd',
|
||
valueFormat: 'yyyy-MM-dd HH:mm:ss',
|
||
rangeSeparator: '-',
|
||
startPlaceholder: '开始日期',
|
||
endPlaceholder: '结束日期',
|
||
defaultTime: ['00:00:00', '23:59:59'],
|
||
param: 'timeVal',
|
||
// width: 350,
|
||
},
|
||
{
|
||
type: 'button',
|
||
btnName: '查询',
|
||
name: 'search',
|
||
color: 'primary',
|
||
},],
|
||
materialTableProps: [
|
||
// {
|
||
// prop: 'createTime',
|
||
// label: '添加时间',
|
||
// fixed: true,
|
||
// width: 180,
|
||
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
||
// },
|
||
{ prop: 'name', label: '物料名称' },
|
||
{ prop: 'planNum', label: '预计使用数量' },
|
||
{ prop: 'actualNum', label: '实际使用数量' },
|
||
],
|
||
name:null,
|
||
materialList: [],
|
||
valueTableProps: [
|
||
// {
|
||
// prop: 'createTime',
|
||
// label: '添加时间',
|
||
// fixed: true,
|
||
// width: 180,
|
||
// filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
|
||
// },
|
||
{ prop: 'name', label: '参数名' },
|
||
{
|
||
prop: 'status', label: '设定范围最小- 最大 / 标准',
|
||
subcomponent: StatusBtn
|
||
},
|
||
{
|
||
prop: '', label: '最小值',
|
||
children: [
|
||
{
|
||
prop: 'minValueSet',
|
||
label: '值'
|
||
},
|
||
{
|
||
prop: 'minValueAppearTime',
|
||
label: '出现时间'
|
||
}
|
||
]
|
||
},
|
||
{
|
||
prop: '', label: '最大值',
|
||
children: [
|
||
{
|
||
prop: 'maxValueSet',
|
||
label: '值'
|
||
},
|
||
{
|
||
prop: 'maxValueAppearTime',
|
||
label: '出现时间'
|
||
}
|
||
]
|
||
},
|
||
{
|
||
prop: 'averageValueAppear', label: '平均值',
|
||
},
|
||
],
|
||
valueList: [],
|
||
total: 0,
|
||
tableBtn: [],
|
||
queryParams: {
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
},
|
||
searchText: ''
|
||
};
|
||
},
|
||
// components: {
|
||
// SmallTitle,
|
||
// },
|
||
watch: {
|
||
currentDet: {
|
||
handler(val) {
|
||
if (val != null) {
|
||
this.getList(val);
|
||
this.detId = val.detId
|
||
console.log(val);
|
||
} else {
|
||
this.clearList();
|
||
}
|
||
},
|
||
immediate: true,
|
||
deep: true
|
||
}
|
||
},
|
||
methods: {
|
||
handleSearchBarBtnClick(val) {
|
||
console.log(val)
|
||
getDetMaterial({
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
orderId: this.$route.query.orderId,
|
||
flowDetId: [this.detId],
|
||
// orderId: this.$route.query.orderId,
|
||
|
||
},).then((res) => {
|
||
console.log(res);
|
||
})
|
||
// if (timeVal && timeVal.length > 0) {
|
||
// this.queryParams.time = timeVal;
|
||
// } else {
|
||
// this.queryParams.time = [];
|
||
// }
|
||
// await this.handleQuery();
|
||
},
|
||
handleEmitFun() { },
|
||
handleTableBtnClick() { },
|
||
put(payload) {
|
||
return this.http(this.updateUrl, 'put', payload);
|
||
},
|
||
post(payload) {
|
||
return this.http(this.addUrl, 'post', payload);
|
||
},
|
||
recv(payload) {
|
||
return this.http(this.pageUrl, 'get', payload);
|
||
},
|
||
info(payload) {
|
||
return this.http(this.infoUrl, 'get', payload);
|
||
},
|
||
http(url, method, payload) {
|
||
return this.$axios({
|
||
url,
|
||
method,
|
||
params: method === 'get' ? payload : null,
|
||
data: method !== 'get' ? payload : null,
|
||
})
|
||
},
|
||
|
||
// getList({ detId, detName, detDesc, flowId, sectionName } = {}) {
|
||
// console.log('get list')
|
||
|
||
// },
|
||
handleTabClick(val) {
|
||
// console.log(this.activeName);
|
||
if (this.activeName === 'material') {
|
||
getDetMaterial({
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
orderId: this.$route.query.orderId,
|
||
flowDetId: [this.detId],
|
||
// orderId: this.$route.query.orderId,
|
||
|
||
},).then((res) => {
|
||
if (res.data.length != []) {
|
||
this.materialList = res.data[0].data
|
||
this.name = res.data[0].name
|
||
}
|
||
})
|
||
} else {
|
||
getDetValue({
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
orderId: this.$route.query.orderId,
|
||
flowDetId: [this.detId],
|
||
// orderId: this.$route.query.orderId,
|
||
|
||
}).then((res) => {
|
||
if (res.data.length != []) {
|
||
this.valueList = res.data[0].data
|
||
this.name = res.data[0].name
|
||
}
|
||
})
|
||
}
|
||
},
|
||
getList(val) {
|
||
console.log(val);
|
||
getDetMaterial({
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
orderId: this.$route.query.orderId,
|
||
flowDetId: [this.detId],
|
||
}).then((res) => {
|
||
console.log(res);
|
||
if (res.data.length != []) {
|
||
this.materialList = res.data[0].data
|
||
this.name = res.data[0].name
|
||
}
|
||
})
|
||
},
|
||
clearList() {
|
||
this.list = [];
|
||
}
|
||
},
|
||
};
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.process-bom {
|
||
position: relative;
|
||
flex: 1;
|
||
padding: 12px 20px;
|
||
background: #fff;
|
||
border-radius: 8px;
|
||
}
|
||
:deep(.custom-tabs) {
|
||
.el-tabs__header {
|
||
margin-bottom: 8px;
|
||
display: inline-block;
|
||
transform: translateY(-12px);
|
||
}
|
||
|
||
.el-tabs__content {
|
||
overflow: visible;
|
||
}
|
||
|
||
.el-tabs__item {
|
||
padding-left: 0 !important;
|
||
padding-right: 0 !important;
|
||
line-height: 36px !important;
|
||
height: 36px;
|
||
}
|
||
}
|
||
</style>
|