448 lines
16 KiB
Vue
448 lines
16 KiB
Vue
<template>
|
||
<div>
|
||
<el-card>
|
||
<!--<el-radio-group v-model="radio" @change="changeType">-->
|
||
<!--<el-radio :label="1">自制件</el-radio>-->
|
||
<!--<el-radio :label="2">采购部采购</el-radio>-->
|
||
<!--<el-radio :label="3">制造部采购</el-radio>-->
|
||
<!--</el-radio-group>-->
|
||
<span style="display:inline-block;margin-left: 10px">零件图号:</span>
|
||
<el-autocomplete
|
||
v-model="searchPick"
|
||
:fetch-suggestions="querySearch"
|
||
clearable
|
||
style="width: 200px;margin-left: 10px;"
|
||
size="small"
|
||
class="inline-input"
|
||
placeholder="请输入零件图号"
|
||
@select="handleSelect"
|
||
@clear="clearSelect"
|
||
/>
|
||
<!--<el-button type="text" @click="show1 = !show1" style="margin-left: 10px">高级查询</el-button>-->
|
||
<!--<div v-show="show1" style="margin-top: 20px" class="transition-box">-->
|
||
<!--<span style="display:inline-block;margin-left: 10px">项目名称:</span>-->
|
||
<!--<el-autocomplete-->
|
||
<!--v-model="searchCriteria"-->
|
||
<!--:fetch-suggestions="querySearch"-->
|
||
<!--clearable-->
|
||
<!--style="width: 200px;margin-left: 10px;"-->
|
||
<!--size="small"-->
|
||
<!--class="inline-input"-->
|
||
<!--placeholder="请输入零件或物料"-->
|
||
<!--@clear="clearSelect"-->
|
||
<!--@select="handleSelect"-->
|
||
<!--/>-->
|
||
<!--<span style="display:inline-block;margin-left: 10px">机床图号:</span>-->
|
||
<!--<el-input-->
|
||
<!--v-model="input_Mobile"-->
|
||
<!--:trigger-on-focus="false"-->
|
||
<!--clearable-->
|
||
<!--size="small"-->
|
||
<!--style="width: 200px;margin-right: 10px"-->
|
||
<!--placeholder="请输入内容"/>-->
|
||
<!--<span style="display:inline-block;margin-left: 10px">组号:</span>-->
|
||
<!--<el-input-->
|
||
<!--v-model="input_Mobile"-->
|
||
<!--:trigger-on-focus="false"-->
|
||
<!--clearable-->
|
||
<!--size="small"-->
|
||
<!--style="width: 200px;margin-right: 10px"-->
|
||
<!--placeholder="请输入内容"/>-->
|
||
<!--<span style="display:inline-block;margin-left: 10px">零件图号:</span>-->
|
||
<!--<el-input-->
|
||
<!--v-model="input_Mobile"-->
|
||
<!--:trigger-on-focus="false"-->
|
||
<!--clearable-->
|
||
<!--size="small"-->
|
||
<!--style="width: 200px;margin-right: 10px"-->
|
||
<!--placeholder="请输入内容"/>-->
|
||
<!--</div>-->
|
||
<div>
|
||
<el-divider content-position="right">零件档案</el-divider>
|
||
<div class="text">
|
||
<span style="display:inline-block;margin-left: 10px">零件图号:<el-tag size="small">{{ form.零件图号 }}</el-tag></span>
|
||
<el-divider direction="vertical"/>
|
||
<span style="display:inline-block;margin-left: 10px">零件名称:<el-tag size="small">{{ form.零件名称 }}</el-tag></span>
|
||
<el-divider direction="vertical"/>
|
||
<span style="display:inline-block;margin-left: 10px">投产数量:<el-tag size="small">{{ form.投产数量 }}</el-tag></span>
|
||
<el-divider direction="vertical"/>
|
||
<span style="display:inline-block;margin-left: 10px">所属机床:<el-tag size="small">{{ form.所属机床 }}</el-tag></span>
|
||
<el-divider direction="vertical"/>
|
||
<span style="display:inline-block;margin-left: 10px">所属组件:<el-tag size="small">{{ form.所属组件 }}</el-tag></span>
|
||
</div>
|
||
<el-divider content-position="right">生命周期</el-divider>
|
||
<div class="text item">
|
||
<el-row>
|
||
<el-col :span="4">
|
||
<el-timeline style="margin-top: 40px">
|
||
<el-timeline-item
|
||
v-for="(activity, index) in activities"
|
||
:key="index"
|
||
:icon="activity.icon"
|
||
:type="activity.type"
|
||
:color="activity.color"
|
||
:size="activity.size"
|
||
:timestamp="activity.timestamp">
|
||
{{ activity.content }}
|
||
</el-timeline-item>
|
||
</el-timeline>
|
||
</el-col>
|
||
<el-col :span="1">
|
||
<div style="width:1px;border:0.1px solid #DCDFE6;float:left;height:450px;"/>
|
||
</el-col>
|
||
<el-col :span="19" style="margin-top: 30px">
|
||
<div class="main">
|
||
<el-table :data="tableData1" :row-class-name="tableRowClassName1" class="table" style="max-height: 830px" highlight-current-row empty-text=" " border>
|
||
<el-table-column align="center" label="工序" show-overflow-tooltip width="100">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.工序顺序 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="工艺名" show-overflow-tooltip min-width="120">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.工艺名称 }}
|
||
</template>
|
||
</el-table-column>
|
||
<!--<el-table-column align="center" label="已完数量" show-overflow-tooltip min-width="70">-->
|
||
<!--<template slot-scope="scope">-->
|
||
<!--{{ scope.row.完成数量 }}-->
|
||
<!--</template>-->
|
||
<!--</el-table-column>-->
|
||
<el-table-column align="center" label="投产数" width="100">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.批次数量 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="完成数" width="100">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.完成数量 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="操作者" show-overflow-tooltip width="120">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.操作者 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="加工开始" width="160">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.加工开始时间 }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="加工结束" width="160">
|
||
<template slot-scope="scope">
|
||
{{ scope.row.完成日期 }}
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-divider content-position="right">跳转链接</el-divider>
|
||
<el-row style="margin-left: 20px">
|
||
<el-tooltip :open-delay="1000" effect="dark" content="转到零件状态查询模块" placement="top">
|
||
<el-button size="medium" type="text" @click="toStatusQuery">零件状态查询</el-button>
|
||
</el-tooltip>
|
||
<el-divider direction="vertical"/>
|
||
<!--<el-tooltip :open-delay="1000" effect="dark" content="转到加工进度查询模块" placement="top">-->
|
||
<!--<el-button size="medium" type="text" @click="toProcessingStatus">加工进度查询</el-button>-->
|
||
<!--</el-tooltip>-->
|
||
</el-row>
|
||
</div>
|
||
</div>
|
||
</el-card>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { SelectPart, SelectProcessingProgress } from '@/api/ManufacturingCenter/TraceabilityOfParts'
|
||
import { gettabledata1 } from '@/api/ManufacturingCenter/ProcessingStatusNew'
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
isOut: '请查询',
|
||
outName: '请查询',
|
||
outTime: '请查询',
|
||
active: '',
|
||
active1: '',
|
||
confirmationTime: '请查询',
|
||
Cutter: '请查询',
|
||
isMaterials: '请查询',
|
||
searchPick: '',
|
||
materialsType: '请查询',
|
||
restaurantsPick: [],
|
||
tableData1: [],
|
||
show: true,
|
||
show1: false,
|
||
// typeA: true,
|
||
// typeB: false,
|
||
// typeC: false,
|
||
radio: 1,
|
||
form: {
|
||
零件图号: '请查询',
|
||
投产数量: '请查询',
|
||
所属机床: '请查询',
|
||
所属组件: '请查询',
|
||
零件名称: '请查询'
|
||
},
|
||
activities: [{
|
||
id: 3,
|
||
content: '生产计划下达',
|
||
timestamp: '制造部:计划员',
|
||
type: '',
|
||
size: 'large'
|
||
}, {
|
||
id: 5,
|
||
content: '工艺定额',
|
||
timestamp: '工艺部:工艺员',
|
||
type: '',
|
||
size: 'large'
|
||
}, {
|
||
id: 7,
|
||
content: '生产加工',
|
||
timestamp: '金工车间:操作工',
|
||
type: '',
|
||
size: 'large'
|
||
}, {
|
||
id: 8,
|
||
content: '入库',
|
||
timestamp: '金工车间:库管员',
|
||
type: '',
|
||
size: 'large'
|
||
}, {
|
||
id: 9,
|
||
content: '出库',
|
||
timestamp: '金工车间:库管员',
|
||
type: '',
|
||
size: 'large'
|
||
}],
|
||
sudokus: [],
|
||
curSelect: null
|
||
}
|
||
},
|
||
methods: {
|
||
// changeType() {
|
||
// if(this.radio === 1) {
|
||
// this.typeA = true
|
||
// this.typeB = false
|
||
// this.typeC = false
|
||
// } else if(this.radio === 2) {
|
||
// this.typeA = false
|
||
// this.typeB = true
|
||
// this.typeC = false
|
||
// } else if(this.radio === 3) {
|
||
// this.typeA = false
|
||
// this.typeB = false
|
||
// this.typeC = true
|
||
// }
|
||
// },
|
||
touchstart: function(e) {
|
||
var that = this
|
||
var list = that.sudokus
|
||
for (var i = 0, len = list.length; i < len; ++i) {
|
||
if (list[i].id === e) {
|
||
that.curSelect = i
|
||
}
|
||
}
|
||
}, touchend: function() {
|
||
var that = this
|
||
that.curSelect = null
|
||
},
|
||
querySearch(queryString, cb) {
|
||
this.restaurantsPick = []
|
||
if (this.searchPick !== '' && this.searchPick !== null) {
|
||
SelectPart(this.searchPick).then(response => {
|
||
const res = response.data
|
||
res.forEach(item => {
|
||
this.restaurantsPick.push({
|
||
value: item.零件图号,
|
||
name: item.工艺计划流水号
|
||
})
|
||
})
|
||
return this.restaurantsPick
|
||
}).then(data => {
|
||
var restaurants = data
|
||
var results = queryString ? restaurants.filter(this.createFilterPick(queryString)) : restaurants
|
||
return results
|
||
}).then(data => {
|
||
cb(data)
|
||
})
|
||
}
|
||
},
|
||
toStatusQuery() {
|
||
this.$router.push('/ManufacturingCenter/StatusQuery')
|
||
},
|
||
toProcessingStatus() {
|
||
this.$router.push('/ManufacturingCenter/ProcessingStatus')
|
||
},
|
||
createFilterPick(queryString) {
|
||
return (restaurant) => {
|
||
return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) !== -1)
|
||
}
|
||
},
|
||
clearSelect() {
|
||
this.active = ''
|
||
this.active1 = ''
|
||
this.sudokus = []
|
||
this.isOut = '请查询'
|
||
this.outName = '请查询'
|
||
this.outTime = '请查询'
|
||
this.confirmationTime = '请查询'
|
||
this.Cutter = '请查询'
|
||
this.isMaterials = '请查询'
|
||
this.materialsType = '请查询'
|
||
this.form.零件图号 = '请查询'
|
||
this.form.投产数量 = '请查询'
|
||
this.form.所属机床 = '请查询'
|
||
this.form.所属组件 = '请查询'
|
||
this.form.零件名称 = '请查询'
|
||
for (let i = 0; i < this.activities.length; i++) {
|
||
this.activities[i].type = ''
|
||
}
|
||
this.show = true
|
||
},
|
||
// 工序状态变色
|
||
tableRowClassName1({ row, rowIndex }) {
|
||
row.index = rowIndex
|
||
if (parseInt(row.工序状态) > 3) {
|
||
return 'CompleteColor'
|
||
}
|
||
},
|
||
handleSelect(item) {
|
||
this.sudokus = []
|
||
this.show = false
|
||
this.active = ''
|
||
this.active1 = ''
|
||
this.confirmationTime = '请查询'
|
||
this.Cutter = '请查询'
|
||
this.isMaterials = '请查询'
|
||
this.materialsType = '请查询'
|
||
this.isOut = '请查询'
|
||
this.outName = '请查询'
|
||
this.outTime = '请查询'
|
||
for (let i = 0; i < this.activities.length; i++) {
|
||
this.activities[i].type = ''
|
||
}
|
||
SelectPart(0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', '', '', item.name).then(response => {
|
||
this.form.零件图号 = response.data[0].零件图号
|
||
this.form.投产数量 = response.data[0].批次数量
|
||
this.form.所属机床 = response.data[0].机床图号
|
||
this.form.所属组件 = response.data[0].组号
|
||
this.form.零件名称 = response.data[0].零件名称
|
||
})
|
||
SelectProcessingProgress(item.name).then(response => {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
this.sudokus.push({
|
||
id: response.data[i].工序顺序,
|
||
procedure: response.data[i].工艺名称,
|
||
planningTime: response.data[i].计划日期_短,
|
||
actualTime: response.data[i].完成日期_短 === null || response.data[i].完成日期_短 === '' ? '未完成' : response.data[i].完成日期_短,
|
||
name: response.data[i].工序状态 === 4 ? response.data[i].员工姓名 : '未完成',
|
||
color: response.data[i].进度颜色
|
||
})
|
||
}
|
||
})
|
||
SelectPart(0, '', 0, '', 0, '', 1, this.searchPick, 0, '', 0, '', 0, '', '', '', '').then(response => {
|
||
console.log(response, 8)
|
||
for (let i = 0; i < this.activities.length; i++) {
|
||
if (response.data[0].考核状态.toString() === this.activities[i].id.toString()) {
|
||
for (let j = 0; j <= i; j++) {
|
||
this.activities[j].type = 'success'
|
||
}
|
||
this.activities[i + 1].type = 'warning'
|
||
}
|
||
}
|
||
})
|
||
console.log(item, 11)
|
||
this.tableData1 = []
|
||
gettabledata1(item.name).then(response => {
|
||
if (response.data.length !== 0) {
|
||
for (let i = 0; i < response.data.length; i++) {
|
||
console.log(response.data[i])
|
||
this.tableData1.push({
|
||
工艺名称: response.data[i].工艺名称,
|
||
工序顺序: response.data[i].工序顺序,
|
||
加工开始时间: response.data[i].加工开始时间 ? response.data[i].加工开始时间 : '',
|
||
完成日期: response.data[i].加工完成时间 ? response.data[i].加工完成时间 : '',
|
||
操作者: response.data[i].姓名,
|
||
批次数量: response.data[i].批次数量,
|
||
工序流水号: response.data[i].工序流水号,
|
||
完成过程流水号: response.data[i].完成过程流水号,
|
||
工序状态: response.data[i].工序状态,
|
||
完成数量: response.data[i].完成数量
|
||
})
|
||
}
|
||
}
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
.el-textarea__inner, .el-radio__inner, .el-input__inner{
|
||
border: 1px solid #C0C4CC !important
|
||
}
|
||
.text{
|
||
font-size: 14px;
|
||
}
|
||
.sudoku_row{
|
||
height: 120px;
|
||
padding: 5px;
|
||
/*overflow-x: scroll;*/
|
||
display: flex;
|
||
align-items: center;
|
||
/*flex-wrap: wrap;*/
|
||
}
|
||
.sudoku_item{
|
||
margin-right: 10px;
|
||
display: flex;
|
||
height: 110px;
|
||
justify-content: center;
|
||
align-items: center;
|
||
flex-direction: column;
|
||
/*padding-top: 10px;*/
|
||
/*padding-bottom: 10px;*/
|
||
}
|
||
.opacity{
|
||
opacity: 0.4;
|
||
background: #e5e5e5;
|
||
}
|
||
.sudoku_item img{
|
||
margin-bottom: 3px;
|
||
display: block;
|
||
}
|
||
.main{
|
||
border: 1px solid #DCDFE6;
|
||
width:91.5%;
|
||
overflow-y: hidden;
|
||
overflow-x: auto;
|
||
color: #000;
|
||
font-size: 16px;
|
||
height: 430px;
|
||
}
|
||
.main p{height:300px;}
|
||
/*-------滚动条整体样式----*/
|
||
.main::-webkit-scrollbar {
|
||
width:8px;
|
||
height:8px;
|
||
}
|
||
/*滚动条里面小方块样式*/
|
||
.main::-webkit-scrollbar-thumb {
|
||
border-radius:100px;
|
||
-webkit-box-shadow:inset 0 0 5px rgba(0,0,0,0.2);
|
||
background:#DCDFE6;
|
||
}
|
||
/*滚动条里面轨道样式*/
|
||
.main::-webkit-scrollbar-track {
|
||
-webkit-box-shadow:inset 0 0 5px rgba(0,0,0,0.2);
|
||
border-radius:0;
|
||
background:white;
|
||
}
|
||
</style>
|
||
<style>
|
||
.CompleteColor{
|
||
background: #9bd7fc !important;
|
||
}
|
||
</style>
|