363 lines
12 KiB
Vue
363 lines
12 KiB
Vue
<template>
|
|
<div class="app-container">
|
|
<el-card>
|
|
<div style="margin-top: 7px; margin-bottom: 7px">
|
|
<el-input v-model="supplierNameValue" size="small" placeholder="外协厂家零件图号表单号项目名称" style="width: 220px" clearable/>
|
|
<el-date-picker v-model="timer" type="daterange" value-format="yyyy-MM-dd" size="small" range-separator="~" start-placeholder="开始日期" end-placeholder="结束日期"/>
|
|
<el-select v-model="MaterialsValue" placeholder="外协状态" filterable size="small" style="width: 120px" clearable>
|
|
<el-option
|
|
v-for="item in Materials"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"/>
|
|
</el-select>
|
|
<el-button icon="el-icon-search" type="primary" size="small" plain @click="pageCurrent = 1;pageSize = 50;getTableData()">查询</el-button>
|
|
<el-button type="primary" class="el-icon-download" size="small" style="margin: 10px 0 0 10px" plain @click="exportExcel">导出</el-button>
|
|
</div>
|
|
</el-card>
|
|
<el-card>
|
|
<el-table v-loading="loading" :data="tableData" border stripe size="mini" height="700" style="width: 1210px">
|
|
<el-table-column label="序号" align="center" type="index" width="50"/>
|
|
<el-table-column label="外协状态" align="center" width="90px">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="Number(scope.row.到货状态)!==1" type="warning" size="mini">未到</el-tag>
|
|
<el-tag v-if="Number(scope.row.到货状态)===1" type="success" size="mini">已到</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="项目名称" align="center" width="140px">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.项目名称 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="零件图号" align="center" width="160px">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.零件图号 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="零件名称" align="center" width="120px">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.零件名称 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="数量" align="center" width="70">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.批次数量 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="外协工序" align="center" width="100">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.外协工序 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="外协厂家" align="center" width="160px">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.外协厂家名称 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="外协单号" align="center" width="200">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.表单号 }}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="外协日期" align="center" width="100">
|
|
<template slot-scope="scope">
|
|
{{ scope.row.任务下达日期.substr(0,10) }}
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div class="block" style="margin-top: 10px;">
|
|
<el-pagination
|
|
:current-page="pageCurrent"
|
|
:page-sizes="[10, 20, 30, 50, 100]"
|
|
:page-size="pageSize"
|
|
:total="total"
|
|
layout="total, sizes, prev, pager, next, jumper"
|
|
@size-change="handleSizeChanges"
|
|
@current-change="handleCurrentChanges"/>
|
|
</div>
|
|
</el-card>
|
|
<el-card>
|
|
<div id="myChart1" :style="{width: '100%', height: '400px', margin: 'auto'}"/>
|
|
</el-card>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { searchTable, getprocedure, search1 } from '@/api/Outsourcing/OutsourcingPartsQuery'
|
|
import echarts from 'echarts'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
timer: '',
|
|
supplierNameValue: '',
|
|
loading: false,
|
|
total: 0,
|
|
MaterialsValue: '',
|
|
Materials: [{
|
|
value: 0,
|
|
label: '未到'
|
|
}, {
|
|
value: 1,
|
|
label: '已到'
|
|
}],
|
|
tableData: [],
|
|
procedure: [],
|
|
pageCurrent: 1,
|
|
pageSize: 50,
|
|
tableData1: []
|
|
}
|
|
},
|
|
created() {
|
|
this.getTableData()
|
|
this.search1()
|
|
},
|
|
methods: {
|
|
formatJson(filterVal, jsonData) {
|
|
return jsonData.map(v => filterVal.map(j => {
|
|
return v[j]
|
|
}))
|
|
},
|
|
exportExcel() {
|
|
this.tableData1 = []
|
|
let check, check1, check2
|
|
this.supplierNameValue ? check = 1 : check = 0
|
|
if (this.MaterialsValue !== '' && this.MaterialsValue !== null) {
|
|
check1 = 1
|
|
} else {
|
|
check1 = 0
|
|
}
|
|
if (this.timer === null) {
|
|
this.timer = ''
|
|
}
|
|
if (this.timer[1] === undefined || this.timer[0] === undefined || this.timer[1] === null || this.timer[0] === null) {
|
|
check2 = 0
|
|
} else {
|
|
check2 = 1
|
|
}
|
|
searchTable(check, this.supplierNameValue, check1, this.MaterialsValue, check2, this.timer[0], this.timer[1], 100000000, this.pageCurrent).then(response => {
|
|
for (let i = 0; i < response.data.rows.length; i++) {
|
|
this.tableData1.push({
|
|
到货状态: response.data.rows[i].到货状态 === '0' ? '未到' : '已到',
|
|
项目名称: response.data.rows[i].项目名称,
|
|
零件图号: response.data.rows[i].零件图号,
|
|
零件名称: response.data.rows[i].零件名称,
|
|
批次数量: response.data.rows[i].批次数量,
|
|
外协厂家名称: response.data.rows[i].外协厂家名称,
|
|
表单号: response.data.rows[i].表单号,
|
|
工艺计划流水号: response.data.rows[i].工艺计划流水号,
|
|
单件是否外协: response.data.rows[i].单件是否外协,
|
|
任务下达日期: response.data.rows[i].任务下达日期 ? response.data.rows[i].任务下达日期.split(' ')[0] : '',
|
|
外协工序: ''
|
|
})
|
|
}
|
|
for (let i = 0; i < this.tableData1.length; i++) {
|
|
getprocedure(this.tableData1[i].工艺计划流水号, this.tableData1[i].单件是否外协).then(response => {
|
|
this.procedure[i] = ''
|
|
for (let j = 0; j < response.data.length; j++) {
|
|
this.procedure[i] = this.procedure[i] + ' ' + response.data[j].工艺名称简称
|
|
}
|
|
this.tableData1[i].外协工序 = this.procedure[i]
|
|
})
|
|
}
|
|
}).then(() => {
|
|
setTimeout(this.exportExcel1, 500)
|
|
})
|
|
},
|
|
exportExcel1() {
|
|
import('@/vendor/Export2Excel').then(excel => {
|
|
const tHeader = ['外协状态', '项目名称', '零件图号', '零件名称', '数量', '外协工序', '外协厂家', '外协单号', '外协日期']
|
|
const filterVal = ['到货状态', '项目名称', '零件图号', '零件名称', '批次数量', '外协工序', '外协厂家名称', '表单号', '任务下达日期']
|
|
const list = this.tableData1
|
|
const data = this.formatJson(filterVal, list)
|
|
excel.export_json_to_excel({
|
|
header: tHeader,
|
|
data,
|
|
filename: '外协零件表',
|
|
autoWidth: true,
|
|
bookType: 'xlsx'
|
|
})
|
|
})
|
|
},
|
|
getTableData() {
|
|
this.tableData = []
|
|
this.loading = true
|
|
let check, check1, check2
|
|
this.supplierNameValue ? check = 1 : check = 0
|
|
if (this.MaterialsValue !== '' && this.MaterialsValue !== null) {
|
|
check1 = 1
|
|
} else {
|
|
check1 = 0
|
|
}
|
|
if (this.timer === null) {
|
|
this.timer = ''
|
|
}
|
|
if (this.timer[1] === undefined || this.timer[0] === undefined || this.timer[1] === null || this.timer[0] === null) {
|
|
check2 = 0
|
|
} else {
|
|
check2 = 1
|
|
}
|
|
searchTable(check, this.supplierNameValue, check1, this.MaterialsValue, check2, this.timer[0], this.timer[1], this.pageSize, this.pageCurrent).then(response => {
|
|
for (let i = 0; i < response.data.rows.length; i++) {
|
|
this.tableData.push({
|
|
到货状态: response.data.rows[i].到货状态,
|
|
项目名称: response.data.rows[i].项目名称,
|
|
零件图号: response.data.rows[i].零件图号,
|
|
零件名称: response.data.rows[i].零件名称,
|
|
批次数量: response.data.rows[i].批次数量,
|
|
外协厂家名称: response.data.rows[i].外协厂家名称,
|
|
表单号: response.data.rows[i].表单号,
|
|
工艺计划流水号: response.data.rows[i].工艺计划流水号,
|
|
单件是否外协: response.data.rows[i].单件是否外协,
|
|
任务下达日期: response.data.rows[i].任务下达日期,
|
|
外协工序: ''
|
|
})
|
|
}
|
|
this.getProcedure(this.tableData)
|
|
this.total = response.data.total
|
|
this.loading = false
|
|
})
|
|
},
|
|
getProcedure(row) {
|
|
for (let i = 0; i < row.length; i++) {
|
|
getprocedure(row[i].工艺计划流水号, row[i].单件是否外协).then(response => {
|
|
this.procedure[i] = ''
|
|
for (let j = 0; j < response.data.length; j++) {
|
|
this.procedure[i] = this.procedure[i] + ' ' + response.data[j].工艺名称简称
|
|
}
|
|
this.tableData[i].外协工序 = this.procedure[i]
|
|
})
|
|
}
|
|
},
|
|
handleSizeChanges(val) {
|
|
this.pageCurrent = 1
|
|
this.pageSize = val
|
|
this.getTableData()
|
|
},
|
|
handleCurrentChanges(val) {
|
|
this.pageCurrent = val
|
|
this.getTableData()
|
|
},
|
|
// 统计图
|
|
search1() {
|
|
search1().then(response => {
|
|
this.res1 = response.data
|
|
}).then(() => {
|
|
var myChart1 = echarts.init(document.getElementById('myChart1'))
|
|
myChart1.clear()
|
|
this.drawLine1(this.res1)
|
|
})
|
|
},
|
|
drawLine1(data) {
|
|
var dataX = []
|
|
var lineData1 = []
|
|
for (let i = 0; i < data.length; i++) {
|
|
dataX.push(data[i].外协厂家名称)
|
|
lineData1.push(data[i].时间)
|
|
}
|
|
var myChart1 = echarts.init(document.getElementById('myChart1'))
|
|
myChart1.clear()
|
|
myChart1.setOption({
|
|
grid: {
|
|
left: '3%',
|
|
right: '8%',
|
|
bottom: '3%',
|
|
containLabel: true
|
|
},
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
axisPointer: {
|
|
type: 'shadow'
|
|
}
|
|
},
|
|
xAxis: {
|
|
type: 'category',
|
|
name: '外协厂家',
|
|
axisLabel: {
|
|
interval: 0,
|
|
rotate: 0,
|
|
margin: 10
|
|
},
|
|
data: dataX
|
|
},
|
|
yAxis: {
|
|
type: 'value',
|
|
name: '天',
|
|
min: 0,
|
|
scale: 'true'
|
|
},
|
|
series: [
|
|
{
|
|
name: '加工时间(天)',
|
|
type: 'bar',
|
|
color: '#67C23A',
|
|
label: {
|
|
normal: {
|
|
show: true,
|
|
position: 'inside'
|
|
}
|
|
},
|
|
data: lineData1
|
|
}
|
|
]
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
span{
|
|
margin: 0px;
|
|
}
|
|
.wrapper{
|
|
width: 225px;
|
|
height: 50px;
|
|
overflow: hidden;
|
|
border: 1px solid #b8c7d9;
|
|
float: left;
|
|
margin: 0px;
|
|
}
|
|
.content{
|
|
position: relative;
|
|
padding: 8px 8px 0 8px;
|
|
}
|
|
.action{
|
|
position: absolute;
|
|
top: 4px;
|
|
right: 8px;
|
|
}
|
|
.delete{
|
|
padding: 0 5px;
|
|
border-radius: 3px;
|
|
color: #0f84b0;
|
|
font-size: 12px;
|
|
}
|
|
.delete:hover{
|
|
background: -webkit-linear-gradient(top,#0ba9e3,#0099d3);
|
|
color: #fff;
|
|
}
|
|
a{
|
|
text-decoration: none;
|
|
}
|
|
.icon{
|
|
width: 30px;
|
|
height: 30px;
|
|
display: inline-block;
|
|
margin-right: 7px;
|
|
margin-top: 2px;
|
|
font-size: 26px;
|
|
}
|
|
.info{
|
|
position: absolute;
|
|
left: 44px;
|
|
line-height: 30px;
|
|
display: inline-block;
|
|
color: #999;
|
|
}
|
|
.el-card {
|
|
padding: 0px !important;
|
|
margin: 0px !important;
|
|
}
|
|
</style>
|