生产数据

This commit is contained in:
朱菊兰 2023-06-16 16:19:40 +08:00
parent 8164b2d677
commit 0aa208aa0b
30 changed files with 712 additions and 714 deletions

1
dist/css/1653.72b2e894.css vendored Normal file
View File

@ -0,0 +1 @@
.main-box[data-v-afb2cca2]{width:100%;padding:8px 6px 0 16px}.main-box .left-box[data-v-afb2cca2],.main-box .right-box[data-v-afb2cca2]{border-radius:8px;background-color:#fff;height:calc(100vh - 148px)}.main-box .left-box[data-v-afb2cca2]{padding:16px 10px 0;overflow-y:auto}.main-box .right-box[data-v-afb2cca2]{padding:16px}

1
dist/css/1965.1dc83e33.css vendored Normal file
View File

@ -0,0 +1 @@
.glassWasteReport .el-table{display:flex;flex-direction:column}.glassWasteReport .el-table__body-wrapper{order:1}.glassWasteReport .el-table__fixed-body-wrapper{top:116px!important}.glassWasteReport .el-table__fixed-footer-wrapper{z-index:0;top:81px!important}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.wasteMachineReport .el-table th.el-table__cell{height:28px}.wasteMachineReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:60px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteMachineReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:80px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.wasteLocationReport .el-table th.el-table__cell{height:28px}.wasteLocationReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:48px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.wasteLocationReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:68px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.glassDefectReport .baseMsg{font-size:14px;height:40px;line-height:40px;display:flex;border:1px solid #e8e8e8;border-radius:4px;margin-bottom:20px}.glassDefectReport .baseMsg li{width:25%;text-align:center;padding:0 10px;border-right:1px solid #e8e8e8;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.glassDefectReport .baseMsg li span{font-weight:600}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type{border-bottom:none}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type div.cell{text-align:right}.glassDefectReport .el-table th.el-table__cell{height:28px}.glassDefectReport .el-table thead.is-group tr:first-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:48px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.glassDefectReport .el-table thead.is-group tr:last-of-type th:first-of-type:before{content:"";position:absolute;height:35px;top:0;left:68px;background-color:#ebeef5;transform:rotate(-35deg);transform-origin:top;width:1px}.finalInspectionData[data-v-4f3b2616]{width:100%}.finalInspectionData .box-top[data-v-4f3b2616]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-4f3b2616]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-4f3b2616]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-4f3b2616],.finalInspectionData .box .right-box[data-v-4f3b2616]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-4f3b2616],.finalInspectionData .box .right-box .table-box[data-v-4f3b2616]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-4f3b2616]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-4f3b2616]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

View File

@ -1 +0,0 @@
.finalInspectionData[data-v-6bd3173e]{width:100%}.finalInspectionData .box-top[data-v-6bd3173e]{width:100%;padding:8px 16px 0}.finalInspectionData .box-top .search-box[data-v-6bd3173e]{height:62px;padding:10px 16px;box-sizing:border-box;border-radius:8px;background-color:#fff}.finalInspectionData .box[data-v-6bd3173e]{width:100%;padding:8px 8px 0 16px}.finalInspectionData .box .left-box[data-v-6bd3173e],.finalInspectionData .box .right-box[data-v-6bd3173e]{height:calc(100vh - 220px);padding:16px;border-radius:8px;background-color:#fff}.finalInspectionData .box .left-box .table-box[data-v-6bd3173e],.finalInspectionData .box .right-box .table-box[data-v-6bd3173e]{margin-top:16px;height:calc(100vh - 290px);overflow:auto}.finalInspectionData .box .left-box .table-button[data-v-6bd3173e]{display:inline-block;height:30px;width:100%;text-align:center;padding-top:4px;margin-bottom:16px;font-size:14px;color:#0b58ff;border-radius:4px;border:1px dotted #0b58ff;cursor:pointer}.finalInspectionData .box .right-box .title[data-v-6bd3173e]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;margin-right:8px;vertical-align:middle}

View File

@ -1 +0,0 @@
.main-box[data-v-97276a96]{width:100%;padding:8px 6px 0 16px}.main-box .left-box[data-v-97276a96],.main-box .right-box[data-v-97276a96]{border-radius:8px;background-color:#fff;height:calc(100vh - 148px)}.main-box .left-box[data-v-97276a96]{padding:16px 10px 0;overflow-y:auto}.main-box .right-box[data-v-97276a96]{padding:16px}

View File

@ -1 +1 @@
.bottom-box[data-v-5624e103]{overflow-x:auto;display:flex}.bottom-box .bottom-left[data-v-5624e103],.bottom-box .bottom-right[data-v-5624e103]{display:inline-block}.bottom-box .bottom-left[data-v-5624e103]{width:290px;margin-right:8px}.bottom-box .bottom-left .dataTab li[data-v-5624e103]{width:65px}.bottom-box .bottom-right[data-v-5624e103]{width:calc(100% - 300px)}.bottom-box .bottom-right .dataTab li[data-v-5624e103]{width:7.7%;min-width:60px}.title[data-v-5624e103]{display:inline-block;height:66px;width:30px;font-size:14px;line-height:14px;font-weight:500;padding:5px 8px 0;color:rgba(0,0,0,.85);background-color:#fafafa;border-top-left-radius:5px;border-bottom-left-radius:5px}.dataTab[data-v-5624e103]{display:flex;flex-flow:row nowrap}.dataTab li[data-v-5624e103]{font-size:14px;border-right:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.dataTab li p[data-v-5624e103]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dataTab li .tabHead[data-v-5624e103]{height:31px;background:#e9ebf0}.dataTab li .tabHead[data-v-5624e103],.dataTab li .tabValue[data-v-5624e103]{padding:8px}.dataTab li .tabValue[data-v-5624e103]{height:35px}.box[data-v-1c347a00]{position:relative}.box .text1[data-v-1c347a00],.box .text2[data-v-1c347a00],.box .text3[data-v-1c347a00],.box .text4[data-v-1c347a00]{position:absolute}.box .text1[data-v-1c347a00]{top:30px;left:0}.box .text2[data-v-1c347a00]{top:30px;right:0}.box .text3[data-v-1c347a00]{bottom:10px;left:0}.box .text4[data-v-1c347a00]{bottom:10px;right:0}.defectScatterPlot[data-v-71b0f520]{height:calc(100vh - 206px);overflow:auto}.defectScatterPlot .split-pane[data-v-71b0f520]{height:100%;border-radius:8px}.defectScatterPlot .left-box[data-v-71b0f520]{margin-left:16px;padding:16px 16px 0;background-color:#fff}.defectScatterPlot .right-box[data-v-71b0f520]{margin-right:16px}.defectScatterPlot .right-box .inner-box[data-v-71b0f520]{height:100%;margin-left:16px;padding:16px 16px 0;border-radius:8px;overflow:auto;background-color:#fff;font-size:14px}.defectScatterPlot .right-box .inner-box .line1[data-v-71b0f520]{margin-bottom:18px}.defectScatterPlot .right-box .inner-box .line2[data-v-71b0f520]{margin-bottom:12px}.defectScatterPlot .right-box .inner-box .line2 .el-checkbox[data-v-71b0f520]{margin-right:8px}.defectScatterPlot .title[data-v-71b0f520]{font-size:14px;color:rgba(0,0,0,.85)}.defectScatterPlot .title[data-v-71b0f520]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;vertical-align:middle;margin-right:8px} .bottom-box[data-v-5624e103]{overflow-x:auto;display:flex}.bottom-box .bottom-left[data-v-5624e103],.bottom-box .bottom-right[data-v-5624e103]{display:inline-block}.bottom-box .bottom-left[data-v-5624e103]{width:290px;margin-right:8px}.bottom-box .bottom-left .dataTab li[data-v-5624e103]{width:65px}.bottom-box .bottom-right[data-v-5624e103]{width:calc(100% - 300px)}.bottom-box .bottom-right .dataTab li[data-v-5624e103]{width:7.7%;min-width:60px}.title[data-v-5624e103]{display:inline-block;height:66px;width:30px;font-size:14px;line-height:14px;font-weight:500;padding:5px 8px 0;color:rgba(0,0,0,.85);background-color:#fafafa;border-top-left-radius:5px;border-bottom-left-radius:5px}.dataTab[data-v-5624e103]{display:flex;flex-flow:row nowrap}.dataTab li[data-v-5624e103]{font-size:14px;border-right:1px solid #e8e8e8;border-bottom:1px solid #e8e8e8}.dataTab li p[data-v-5624e103]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dataTab li .tabHead[data-v-5624e103]{height:31px;background:#e9ebf0}.dataTab li .tabHead[data-v-5624e103],.dataTab li .tabValue[data-v-5624e103]{padding:8px}.dataTab li .tabValue[data-v-5624e103]{height:35px}.box[data-v-2ee4d940]{position:relative}.box .text1[data-v-2ee4d940],.box .text2[data-v-2ee4d940],.box .text3[data-v-2ee4d940],.box .text4[data-v-2ee4d940]{position:absolute}.box .text1[data-v-2ee4d940]{top:30px;left:0}.box .text2[data-v-2ee4d940]{top:30px;right:0}.box .text3[data-v-2ee4d940]{bottom:10px;left:0}.box .text4[data-v-2ee4d940]{bottom:10px;right:0}.defectScatterPlot[data-v-79550084]{height:calc(100vh - 206px);overflow:auto}.defectScatterPlot .split-pane[data-v-79550084]{height:100%;border-radius:8px}.defectScatterPlot .left-box[data-v-79550084]{margin-left:16px;padding:16px 16px 0;background-color:#fff}.defectScatterPlot .right-box[data-v-79550084]{margin-right:16px}.defectScatterPlot .right-box .inner-box[data-v-79550084]{height:100%;margin-left:16px;padding:16px 16px 0;border-radius:8px;overflow:auto;background-color:#fff;font-size:14px}.defectScatterPlot .right-box .inner-box .line1[data-v-79550084]{margin-bottom:18px}.defectScatterPlot .right-box .inner-box .line2[data-v-79550084]{margin-bottom:12px}.defectScatterPlot .right-box .inner-box .line2 .el-checkbox[data-v-79550084]{margin-right:8px}.defectScatterPlot .title[data-v-79550084]{font-size:14px;color:rgba(0,0,0,.85)}.defectScatterPlot .title[data-v-79550084]:before{content:"";display:inline-block;width:4px;height:16px;background:#0b58ff;border-radius:1px;vertical-align:middle;margin-right:8px}

2
dist/index.html vendored
View File

@ -1 +1 @@
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.b748d9c1.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> <!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>tft-mes</title><script defer="defer" src="/js/chunk-vendors.a42f8636.js"></script><script defer="defer" src="/js/app.26ea233c.js"></script><link href="/css/app.68cbc19b.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but tft-mes doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>

1
dist/js/1653.bc452354.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/1965.f053e7a5.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunktft_mes"]=self["webpackChunktft_mes"]||[]).push([[6354],{6354:function(t,e,a){a.r(e),a.d(e,{default:function(){return p}});var l=function(){var t=this,e=t._self._c;return e("el-row",{staticClass:"main-box",attrs:{gutter:10}},[e("el-col",{attrs:{span:4}},[e("div",{staticClass:"left-box"},[e("el-tree",{attrs:{data:t.data,"node-key":"id","default-expand-all":""},on:{"node-click":t.clickDevice}})],1)]),e("el-col",{attrs:{span:20}},[e("div",{staticClass:"right-box"},[e("search-bar",{attrs:{formConfigs:t.formConfig},on:{headBtnClick:t.buttonClick}}),e("base-table",{attrs:{page:t.listQuery.current,limit:t.listQuery.size,"table-props":t.tableProps,"table-data":t.tableData,"max-height":t.tableH}}),e("pagination",{attrs:{limit:t.listQuery.size,total:t.total}})],1)])],1)},i=[],r=a(475);const s=[{prop:"unitAndDevice",label:"单元/设备名称",width:300},{prop:"startTime",label:"开始时间"},{prop:"endTime",label:"结束时间"},{prop:"inputNum",label:"投入数量"},{prop:"outputNum",label:"输出数量"},{prop:"lossesNum",label:"损失数量"}];var n={name:"ProductionData",data(){return{data:[{id:1,label:"产线1",isAllowDrag:!1,children:[{id:4,label:"精切磨边",parent:1,isAllowDrag:!1,children:[{id:9,label:"精切磨边设备1",parent:4,isAllowDrag:!0},{id:10,label:"精切磨边设备2",parent:4,isAllowDrag:!0}]},{id:2,label:"磨边后清洗",isAllowDrag:!1,parent:1,children:[{id:5,label:"磨边后清洗设备1",parent:2,isAllowDrag:!0},{id:6,label:"磨边后清洗设备2",parent:2,isAllowDrag:!0}]}]}],defaultProps:{children:"children",label:"label"},formConfig:[{type:"datePicker",label:"开始时间",dateType:"date",format:"yyyy-MM-dd",valueFormat:"yyyy-MM-dd",placeholder:"开始时间",param:"testTime",defaultSelect:"2022-08-11"},{type:"button",btnName:"查询",name:"search",color:"primary"},{type:"separate"},{type:"button",btnName:"导出",name:"export",color:"primary",plain:!0}],tableProps:s,tableData:[],tableH:(0,r.NC)(275),total:0,listQuery:{current:1,size:20},centervisible:!1,addOrEditTitle:""}},mounted(){window.addEventListener("resize",(()=>{this.tableH=(0,r.NC)(275)}));for(let t=0;t<30;t++){let e={unitAndDevice:"精切磨边模块/精切模块",startTime:"2022-07-07",endTime:"2022-08-11"};e.inputNum=99+t,e.outputNum=100+t,e.lossesNum=t,this.tableData.push(e)}},methods:{getList(){console.log("getList")},clickDevice(){},buttonClick(t){switch(console.log(t),t.btnName){case"search":this.getList();break;default:}},successSubmit(t){alert(t),this.handleCancel()}}},o=n,d=a(1001),c=(0,d.Z)(o,l,i,!1,null,"97276a96",null),p=c.exports}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/js/app.26ea233c.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -99,6 +99,25 @@ export function workOrderImportTemplate(data) {
export const uploadPath = '/api/order/workOrder/import' export const uploadPath = '/api/order/workOrder/import'
// 生产数据
export function proDataPage(data) {
return request({
url: '/order/ProData/page',
method: 'post',
data
})
}
export function proDataExport(data) {
return request({
url: '/order/ProData/export',
method: 'post',
responseType: 'blob',
data,
timeout: 60000
})
}
// 下架包装 // 下架包装
export function unloadPalletPage(data) { export function unloadPalletPage(data) {
return request({ return request({

View File

@ -481,15 +481,6 @@ export const routes = [
}, },
component: () => component: () =>
import('../views/qualityManagement/productTraceability') import('../views/qualityManagement/productTraceability')
},
{
path: 'finalInspectionDailyReport',
name: 'finalInspectionDailyReport',
meta: {
title: '终检日报表'
},
component: () =>
import('../views/qualityManagement/finalInspectionDailyReport')
} }
] ]
}, },

View File

@ -3,10 +3,13 @@
<el-col :span="4"> <el-col :span="4">
<div class="left-box"> <div class="left-box">
<el-tree <el-tree
:data="data" :data="treeData"
node-key="id" node-key="name"
:props="defaultProps"
default-expand-all default-expand-all
:highlight-current="true"
@node-click="clickDevice" @node-click="clickDevice"
ref="deviceTree"
> >
</el-tree> </el-tree>
</div> </div>
@ -27,31 +30,38 @@
</el-row> </el-row>
</template> </template>
<script> <script>
import { tableHeight } from '@/utils/index' import { tableHeight, timeFormatter } from '@/utils/index'
import { getTreeData } from '@/api/app'
import { proDataPage, proDataExport } from '@/api/productionScheduling'
import moment from 'moment'
const tableProps = [ const tableProps = [
{ {
prop: 'unitAndDevice', prop: 'name',
label: '单元/设备名称', label: '单元/设备名称',
width: 300 width: 300
}, },
{ {
prop: 'startTime', prop: 'startTime',
label: '开始时间' label: '开始时间',
minWidth: 160,
filter: timeFormatter
}, },
{ {
prop: 'endTime', prop: 'endTime',
label: '结束时间' label: '结束时间',
minWidth: 160,
filter: timeFormatter
}, },
{ {
prop: 'inputNum', prop: 'glassInNum',
label: '投入数量' label: '投入数量'
}, },
{ {
prop: 'outputNum', prop: 'glassOutNum',
label: '输出数量' label: '输出数量'
}, },
{ {
prop: 'lossesNum', prop: 'glassMissNum',
label: '损失数量' label: '损失数量'
} }
] ]
@ -59,69 +69,24 @@ export default {
name: 'ProductionData', name: 'ProductionData',
data() { data() {
return { return {
data: [ treeData: [],
{
id: 1,
label: '产线1',
isAllowDrag: false,
children: [
{
id: 4,
label: '精切磨边',
parent: 1,
isAllowDrag: false,
children: [
{
id: 9,
label: '精切磨边设备1',
parent: 4,
isAllowDrag: true
},
{
id: 10,
label: '精切磨边设备2',
parent: 4,
isAllowDrag: true
}
]
},
{
id: 2,
label: '磨边后清洗',
isAllowDrag: false,
parent: 1,
children: [
{
id: 5,
label: '磨边后清洗设备1',
parent: 2,
isAllowDrag: true
},
{
id: 6,
label: '磨边后清洗设备2',
parent: 2,
isAllowDrag: true
}
]
}
]
}
],
defaultProps: { defaultProps: {
children: 'children', children: 'children',
label: 'label' label: 'name'
}, },
formConfig: [ formConfig: [
{ {
type: 'datePicker', type: 'datePicker',
label: '开始时间', label: '开始时间',
dateType: 'date', dateType: 'datetimerange',
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd HH:mm:ss',
valueFormat: 'yyyy-MM-dd', valueFormat: 'yyyy-MM-ddTHH:mm:ss',
placeholder: '开始时间', rangeSeparator: '-',
param: 'testTime', startPlaceholder: '开始时间',
defaultSelect: '2022-08-11' endPlaceholder: '结束时间',
param: 'timeVal',
defaultSelect: [],
width: 350
}, },
{ {
type: 'button', type: 'button',
@ -146,7 +111,9 @@ export default {
total: 0, total: 0,
listQuery: { listQuery: {
current: 1, current: 1,
size: 20 size: 20,
unitName: '',
eqName: ''
}, },
centervisible: false, centervisible: false,
addOrEditTitle: '' addOrEditTitle: ''
@ -156,29 +123,80 @@ export default {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = tableHeight(275) this.tableH = tableHeight(275)
}) })
for (let i = 0; i < 30; i++) { this.formConfig[0].defaultSelect = [
let obj = {} moment().format('yyyy-MM-DD') + 'T00:00:00',
obj.unitAndDevice = '精切磨边模块/精切模块' moment().format('yyyy-MM-DD') + 'T23:59:59'
obj.startTime = '2022-07-07' ]
obj.endTime = '2022-08-11' this.listQuery.startTime = moment().format('yyyy-MM-DD') + 'T00:00:00'
obj.inputNum = 99 + i this.listQuery.endTime = moment().format('yyyy-MM-DD') + 'T23:59:59'
obj.outputNum = 100 + i this.getTree()
obj.lossesNum = i
this.tableData.push(obj)
}
}, },
methods: { methods: {
getList() { getTree() {
console.log('getList') getTreeData().then((res) => {
this.treeData = res.data
this.listQuery.unitName = res.data[0].children[0].name
setTimeout(() => {
this.$refs.deviceTree.setCurrentKey(this.listQuery.unitName)
}, 100)
this.getList()
})
},
getList() {
proDataPage({ ...this.listQuery }).then((res) => {
console.log(res)
if (res.code === 0 && res.data) {
this.tableData = res.data.records
this.total = res.data.total
} else {
this.tableData = []
this.total = 0
}
})
},
clickDevice(val) {
if (!val.children) {
//
this.listQuery.eqName = val.name
this.listQuery.unitName = ''
} else if (val.children && val.parent) {
this.listQuery.eqName = ''
this.listQuery.unitName = val.name
}
this.getList()
}, },
clickDevice() {},
buttonClick(val) { buttonClick(val) {
console.log(val) console.log(val)
switch (val.btnName) { switch (val.btnName) {
case 'search': case 'search':
this.listQuery.startTime = val.timeVal ? val.timeVal[0] : ''
this.listQuery.endTime = val.timeVal ? val.timeVal[1] : ''
this.getList() this.getList()
break break
default: default:
proDataExport({ ...this.listQuery }).then((response) => {
console.log(response)
let fileName = ''
const contentDisposition = response.headers['content-disposition']
if (contentDisposition) {
fileName = decodeURIComponent(
contentDisposition.slice(
contentDisposition.indexOf('filename=') + 9
)
)
}
const blob = new Blob([response.data])
const reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = (e) => {
const a = document.createElement('a')
a.download = fileName
a.href = e.target.result
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
}
})
} }
}, },
successSubmit(res) { successSubmit(res) {

View File

@ -1,30 +0,0 @@
<template>
<div>
<el-tag size="medium">{{ showTotal }}</el-tag>
</div>
</template>
<script>
export default {
name: 'TableTags',
data() {
return {
showTotal: ''
}
},
props: {
injectData: {
type: Object,
default: () => ({})
}
},
mounted() {
console.log(this.injectData)
console.log(this.injectData.prop)
if (this.injectData.prop === 'ct1') {
this.showTotal = this.injectData.ct1
} else if (this.injectData.prop === 'ct2') {
this.showTotal = this.injectData.ct2
}
}
}
</script>

View File

@ -34,7 +34,6 @@ export default {
}, },
data() { data() {
return { return {
chartDom: '',
chart: '', chart: '',
chartHeight: tableHeight(446), chartHeight: tableHeight(446),
list: [ list: [
@ -120,8 +119,8 @@ export default {
) { ) {
this.chart.dispose() // Dom this.chart.dispose() // Dom
} }
this.chartDom = document.getElementById('defectScatterPlotChart') var chartDom = document.getElementById('defectScatterPlotChart')
this.chart = echarts.init(this.chartDom) this.chart = echarts.init(chartDom)
let legendList = [] let legendList = []
let seriesList = [] let seriesList = []
for (let i in this.defectMsg) { for (let i in this.defectMsg) {
@ -130,8 +129,8 @@ export default {
let obj = {} let obj = {}
for (let j of this.defectMsg[i]) { for (let j of this.defectMsg[i]) {
let arr2 = [] let arr2 = []
arr2.push(parseInt(j.xpos))
arr2.push(parseInt(j.ypos)) arr2.push(parseInt(j.ypos))
arr2.push(parseInt(j.xpos))
arr1.push(arr2) arr1.push(arr2)
} }
obj.name = this.transLabel(i) obj.name = this.transLabel(i)
@ -169,6 +168,10 @@ export default {
}, },
itemWidth: 10 // itemWidth: 10 //
}, },
brush: {
toolbox: ['rect', 'clear'],
xAxisIndex: 0
},
grid: { grid: {
x: 60, x: 60,
y: 60, y: 60,
@ -187,7 +190,10 @@ export default {
lineStyle: { lineStyle: {
color: 'rgba(0, 0, 0, 0.15)' color: 'rgba(0, 0, 0, 0.15)'
} }
} },
max: 2600,
min: 0,
interval: 100
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
@ -201,30 +207,76 @@ export default {
lineStyle: { lineStyle: {
color: 'rgba(0, 0, 0, 0.15)' color: 'rgba(0, 0, 0, 0.15)'
} }
} },
max: 2250,
min: 0,
interval: 100
}, },
series: seriesList series: seriesList
// series: [
// {
// name: 'S',
// type: 'scatter',
// data: dataS,
// symbolSize: 5
// },
// {
// name: 'M',
// type: 'scatter',
// data: dataM,
// symbolSize: 5
// },
// {
// name: 'L',
// type: 'scatter',
// data: dataL,
// symbolSize: 5
// }
// ]
} }
let that = this
this.chart.on('brushSelected', function (params) {
var brushed = []
var brushComponent = params.batch[0]
var total = 0
var xLong = 0
var yLong = 0
if (params.batch[0].areas[0]) {
xLong = parseInt(
params.batch[0].areas[0].coordRange[0][1] -
params.batch[0].areas[0].coordRange[0][0]
)
yLong = parseInt(
params.batch[0].areas[0].coordRange[1][1] -
params.batch[0].areas[0].coordRange[1][0]
)
}
for (var sIdx = 0; sIdx < brushComponent.selected.length; sIdx++) {
var rawIndices = brushComponent.selected[sIdx].dataIndex.length
total += rawIndices
brushed.push(
brushComponent.selected[sIdx].seriesName + ' : ' + rawIndices
)
}
brushed.push('总计 : ' + total)
that.chart.setOption({
title: {
backgroundColor: 'rgba(0, 0, 0, 0.5)',
text: 'SELECTED DATA: \n' + brushed.join('\n'),
right: params.batch[0].areas[0] ? '10%' : -100,
bottom: params.batch[0].areas[0] ? 0 : -500,
textStyle: {
fontSize: 12,
fontWeight: 'normal',
color: '#fff'
}
},
graphic: [
{
type: 'group',
left: params.batch[0].areas[0]
? params.batch[0].areas[0].range[0][0]
: -100,
top: params.batch[0].areas[0]
? params.batch[0].areas[0].range[1][1] + 5
: -100,
children: [
{
type: 'text',
z: 100,
style: {
fill: '#333',
width: 220,
overflow: 'break',
text: xLong + '*' + yLong,
font: '12px Microsoft YaHei'
}
}
]
}
]
})
})
option && this.chart.setOption(option) option && this.chart.setOption(option)
} }
} }

View File

@ -1,545 +0,0 @@
<template>
<div class="page-box">
<search-bar
:formConfigs="formConfig"
ref="searchBarForm"
@headBtnClick="buttonClick"
/>
<base-table
:page="listQuery.current"
:limit="listQuery.size"
:table-props="tableProp"
:table-data="tableData"
:span-method="spanMethod"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils/index'
import TableTags from './components/TableTags.vue'
const tableProp = [
{
prop: 'process',
label: '区域',
fixed: true
},
{
prop: 'equipmentName',
label: '项目指标',
minWidth: 150,
fixed: true
},
{
label: '白班(8:00-20:00)',
align: 'center',
children: [
{ prop: 'b1', label: '7-8', width: 60 },
{ prop: 'b2', label: '8-9', width: 60 },
{ prop: 'b3', label: '9-10', width: 60 },
{ prop: 'b4', label: '10-11', width: 60 },
{ prop: 'b5', label: '11-12', width: 60 },
{ prop: 'b6', label: '12-13', width: 60 },
{ prop: 'b7', label: '13-14', width: 60 },
{ prop: 'b8', label: '14-15', width: 60 },
{ prop: 'b9', label: '15-16', width: 60 },
{ prop: 'b10', label: '16-17', width: 60 },
{ prop: 'b11', label: '17-18', width: 60 },
{ prop: 'b12', label: '18-19', width: 60 },
{ prop: 'ct1', label: '合计', subcomponent: TableTags }
]
},
{
label: '夜班(20:00-8:00)',
align: 'center',
children: [
{ prop: 'y1', label: '19-20', width: 60 },
{ prop: 'y2', label: '20-21', width: 60 },
{ prop: 'y3', label: '21-22', width: 60 },
{ prop: 'y4', label: '22-23', width: 60 },
{ prop: 'y5', label: '23-24', width: 60 },
{ prop: 'y6', label: '0-1', width: 60 },
{ prop: 'y7', label: '1-2', width: 60 },
{ prop: 'y8', label: '2-3', width: 60 },
{ prop: 'y9', label: '3-4', width: 60 },
{ prop: 'y10', label: '4-5', width: 60 },
{ prop: 'y11', label: '5-6', width: 60 },
{ prop: 'y12', label: '6-7', width: 60 },
{ prop: 'ct2', label: '合计', subcomponent: TableTags }
]
}
]
export default {
name: 'FinalInspectionDailyReport',
data() {
return {
formConfig: [
{
type: 'datePicker',
label: '日期选择',
dateType: 'date',
format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd',
param: 'timeVal',
width: 200
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary'
},
{
type: 'separate'
},
{
type: 'button',
btnName: '导出',
name: 'export',
color: 'primary',
plain: true
}
],
listQuery: {
current: 1,
size: 20
},
tableH: tableHeight(300),
tableProp,
tableData: [],
span: []
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(300)
})
this.getData()
},
methods: {
buttonClick(val) {
console.log(val)
},
getData() {
;(this.tableData = [
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 108,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 103,
equipmentName: '上片投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 102,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 99,
equipmentName: '机器人投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '良品总投入数',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '工序损耗',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '后清洗输出',
process: '综合'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '上片损失',
process: '上片'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '精切损失',
process: '精切'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '精切抽检',
process: '精切'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '磨边损失',
process: '磨边'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '磨边抽检',
process: '磨边'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '前清洗损失',
process: '前清洗'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '边检损失',
process: '边检'
},
{
b1: 1,
b2: 2,
b3: 3,
b4: 4,
b5: 5,
b6: 6,
b7: 7,
b8: 8,
b9: 9,
b10: 10,
b11: 11,
b12: 12,
ct1: 100,
y1: 1,
y2: 2,
y3: 3,
y4: 4,
y5: 5,
y6: 6,
y7: 7,
y8: 8,
y9: 9,
y10: 10,
y11: 11,
y12: 12,
ct2: 100,
equipmentName: '复投损失',
process: '复投'
}
]),
this.getSpanArr(this.tableData)
},
getSpanArr(data) {
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.span.push(1)
this.index = 0
} else {
if (data[i].process === data[i - 1].process) {
this.span[this.index] += 1
this.span.push(0)
} else {
this.span.push(1)
this.index = i
}
}
}
},
spanMethod({ rowIndex, columnIndex }) {
if (columnIndex === 1) {
const _row = this.span[rowIndex]
return {
rowspan: _row,
colspan: 1
}
}
}
}
}
</script>

View File

@ -92,10 +92,13 @@ const tableProps = [
fixed: 'left', fixed: 'left',
minWidth: 120 minWidth: 120
}, },
{
prop: 'package',
label: '包装工位'
},
{ {
prop: 'testTime', prop: 'testTime',
label: '检验时间', label: '检验时间',
fixed: 'left',
filter: timeFormatter, filter: timeFormatter,
minWidth: 160 minWidth: 160
}, },

View File

@ -29,7 +29,7 @@
<div v-if="reportTitle"> <div v-if="reportTitle">
<span class="title">{{ reportTitle }}</span> <span class="title">{{ reportTitle }}</span>
</div> </div>
<div class="table-box" v-if="reportTitle === '玻璃基板缺陷统计'"> <div class="table-box" v-if="reportTitle === '玻璃基板品质报表'">
<glass-quality-report :tableData="glassQualityArr" /> <glass-quality-report :tableData="glassQualityArr" />
</div> </div>
<div class="table-box" v-if="reportTitle === '厚度汇总报表'"> <div class="table-box" v-if="reportTitle === '厚度汇总报表'">
@ -41,6 +41,18 @@
:tableData2="packReportArr" :tableData2="packReportArr"
/> />
</div> </div>
<div class="table-box" v-if="reportTitle === '玻璃判废统计表'">
<glass-waste-report :tableData="wasteReportArr" />
</div>
<div class="table-box" v-if="reportTitle === '判废机组统计表'">
<waste-machine-report :tableData="wasteMachineArr" />
</div>
<div class="table-box" v-if="reportTitle === '判废位置统计表'">
<waste-location-report :tableData="wasteLocationArr" />
</div>
<div class="table-box" v-if="reportTitle === '玻璃基板缺陷报表'">
<glass-defect-report :tableData="glassDefectArr" />
</div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -60,6 +72,10 @@ import {
import glassQualityReport from './finalInspectionDataReport/glassQualityReport.vue' import glassQualityReport from './finalInspectionDataReport/glassQualityReport.vue'
import glassThickReport from './finalInspectionDataReport/glassThickReport.vue' import glassThickReport from './finalInspectionDataReport/glassThickReport.vue'
import glassPackReport from './finalInspectionDataReport/glassPackReport.vue' import glassPackReport from './finalInspectionDataReport/glassPackReport.vue'
import glassWasteReport from './finalInspectionDataReport/glassWasteReport.vue'
import wasteMachineReport from './finalInspectionDataReport/wasteMachineReport.vue'
import wasteLocationReport from './finalInspectionDataReport/wasteLocationReport.vue'
import glassDefectReport from './finalInspectionDataReport/glassDefectReport.vue'
import moment from 'moment' import moment from 'moment'
import { timeFormatter } from '@/utils' import { timeFormatter } from '@/utils'
const tablePropsL = [ const tablePropsL = [
@ -82,7 +98,15 @@ const tablePropsL = [
] ]
export default { export default {
name: 'FinalInspectionData', name: 'FinalInspectionData',
components: { glassQualityReport, glassThickReport, glassPackReport }, components: {
glassQualityReport,
glassThickReport,
glassPackReport,
glassWasteReport,
wasteMachineReport,
wasteLocationReport,
glassDefectReport
},
data() { data() {
return { return {
formConfig: [ formConfig: [
@ -112,9 +136,13 @@ export default {
type: 'select', type: 'select',
label: '报表类型', label: '报表类型',
selectOptions: [ selectOptions: [
{ id: '玻璃基板缺陷统计', name: '玻璃基板缺陷统计' }, { id: '玻璃基板品质报表', name: '玻璃基板品质报表' },
{ id: '终检下片包装', name: '终检下片包装' }, { id: '终检下片包装', name: '终检下片包装' },
{ id: '厚度汇总报表', name: '厚度汇总报表' } { id: '厚度汇总报表', name: '厚度汇总报表' },
{ id: '玻璃判废统计表', name: '玻璃判废统计表' },
{ id: '判废机组统计表', name: '判废机组统计表' },
{ id: '判废位置统计表', name: '判废位置统计表' },
{ id: '玻璃基板缺陷报表', name: '玻璃基板缺陷报表' }
], ],
param: 'fullInspectionType1', param: 'fullInspectionType1',
defaultSelect: '', defaultSelect: '',
@ -153,7 +181,23 @@ export default {
glassQualityArr: [], // glassQualityArr: [], //
thickReportArr: [], // thickReportArr: [], //
packReportArr: [], // packReportArr: [], //
packClaReportArr: [] packClaReportArr: [],
wasteReportArr: [{ name1: 11 }, { name1: 22 }], //
wasteMachineArr: [
{ name: '颗粒/面检数超标', name1: '11' },
{ name: '颗粒/缺陷聚集', name1: '22' },
{ name: '划伤', name1: '33' },
{ name: '面磨印记', name1: '44' },
{ name: '磨痕', name1: '55' }
],
wasteLocationArr: [
{ name: '颗粒/面检数超标', name1: '11' },
{ name: '颗粒/缺陷聚集', name1: '22' },
{ name: '划伤', name1: '33' },
{ name: '面磨印记', name1: '44' },
{ name: '磨痕', name1: '55' }
],
glassDefectArr: []
} }
}, },
mounted() { mounted() {
@ -220,7 +264,7 @@ export default {
for (let i of this.selectArr) { for (let i of this.selectArr) {
arr.push(i.glassId) arr.push(i.glassId)
} }
if (this.reportTitle === '玻璃基板缺陷统计') { if (this.reportTitle === '玻璃基板品质报表') {
this.exportGlassReport(arr) this.exportGlassReport(arr)
} else if (this.reportTitle === '厚度汇总报表') { } else if (this.reportTitle === '厚度汇总报表') {
this.exportThickReport(arr) this.exportThickReport(arr)
@ -258,7 +302,7 @@ export default {
arr.push(i.glassId) arr.push(i.glassId)
} }
switch (this.reportTitle) { switch (this.reportTitle) {
case '玻璃基板缺陷统计': case '玻璃基板品质报表':
this.getGlassReport(arr) this.getGlassReport(arr)
break break
case '厚度汇总报表': case '厚度汇总报表':

View File

@ -1,5 +1,11 @@
<template> <template>
<div class="finalDataTable"> <div class="glassDefectReport">
<ul class="baseMsg">
<li><span>单位:</span>um</li>
<li :title="glassId"><span>玻璃ID:</span>{{ glassId }}</li>
<li><span>生产日期:</span>2022.12.24 14:45:34</li>
<li><span>等级:</span>G1</li>
</ul>
<base-table :table-props="tablePropsT" :table-data="tableDataT" /> <base-table :table-props="tablePropsT" :table-data="tableDataT" />
<base-table :table-props="tablePropsB" :table-data="tableDataB" /> <base-table :table-props="tablePropsB" :table-data="tableDataB" />
</div> </div>
@ -240,13 +246,14 @@ const tablePropsB = [
} }
] ]
export default { export default {
name: 'FinalDataTable', name: 'glassDefectReport',
data() { data() {
return { return {
tablePropsT, tablePropsT,
tableDataT: [], tableDataT: [],
tablePropsB, tablePropsB,
tableDataB: [] tableDataB: [],
glassId: '203839738763,5324723648623,87423745327845,23645326,4532675444'
} }
}, },
mounted() { mounted() {
@ -627,7 +634,28 @@ export default {
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.finalDataTable { .glassDefectReport {
.baseMsg {
font-size: 14px;
height: 40px;
line-height: 40px;
display: flex;
border: 1px solid #e8e8e8;
border-radius: 4px;
margin-bottom: 20px;
li {
width: 25%;
text-align: center;
padding: 0 10px;
border-right: 1px solid #e8e8e8;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
span {
font-weight: 600;
}
}
}
.el-table thead.is-group tr:first-of-type th:first-of-type { .el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none; border-bottom: none;
} }

View File

@ -0,0 +1,183 @@
<template>
<div class="glassWasteReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
:page="1"
:limit="20"
show-summary
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
prop: 'glassId',
label: 'ID'
},
{
prop: 'name1',
label: '合格'
},
{
prop: 'lineA',
label: '前工程不良',
children: [
{
prop: 'name2',
label: '气泡数量'
},
{
prop: 'name3',
label: '气泡尺寸'
},
{
prop: 'name4',
label: '上表锡数量'
},
{
prop: 'name5',
label: '上表锡尺寸'
},
{
prop: 'name6',
label: '下表锡数量'
},
{
prop: 'name7',
label: '下表锡尺寸'
},
{
prop: 'name8',
label: '欠点数合计'
},
{
prop: 'name9',
label: '缺陷聚集'
},
{
prop: 'name10',
label: '结瘤'
},
{
prop: 'name11',
label: 'PT'
},
{
prop: 'name12',
label: '结石'
},
{
prop: 'name13',
label: '其他'
}
]
},
{
prop: 'lineB',
label: '后工程不良',
children: [
{
prop: 'age',
label: '颗粒/面检数超'
},
{
prop: 'age1',
label: '划伤'
},
{
prop: 'age2',
label: '颗粒/缺陷聚集'
},
{
prop: 'age3',
label: '轮印'
},
{
prop: 'age4',
label: '面磨印记'
},
{
prop: 'age5',
label: '残留'
},
{
prop: 'age6',
label: '污渍'
},
{
prop: 'age7',
label: '纤维'
},
{
prop: 'age8',
label: '水渍'
},
{
prop: 'age9',
label: '磨痕'
},
{
prop: 'age10',
label: '气浮擦伤'
},
{
prop: 'age11',
label: '雾面'
},
{
prop: 'age12',
label: '异物'
},
{
prop: 'age13',
label: '其他'
}
]
}
]
export default {
name: 'glassWasteReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
},
methods: {}
}
</script>
<style lang="scss">
.glassWasteReport {
.el-table {
display: flex;
flex-direction: column;
}
.el-table__body-wrapper {
order: 1;
}
.el-table__fixed-body-wrapper {
top: 116px !important;
}
.el-table__fixed-footer-wrapper {
z-index: 0;
top: 81px !important;
}
}
</style>

View File

@ -0,0 +1,124 @@
<template>
<div class="wasteLocationReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
label: '九宫格',
children: [
{
prop: 'name',
label: '判废原因',
minWidth: 110
}
]
},
{
prop: 'name1',
label: '1#'
},
{
prop: 'name2',
label: '2#'
},
{
prop: 'name3',
label: '3#'
},
{
prop: 'name4',
label: '4#'
},
{
prop: 'name5',
label: '5#'
},
{
prop: 'name6',
label: '6#'
},
{
prop: 'name7',
label: '7#'
},
{
prop: 'name8',
label: '8#'
},
{
prop: 'name9',
label: '9#'
},
{
prop: 'name10',
label: '整板'
}
]
export default {
name: 'wasteLocationReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
}
}
</script>
<style lang="scss">
.wasteLocationReport {
.el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none;
}
.el-table thead.is-group tr:first-of-type th:first-of-type div.cell {
text-align: right;
}
.el-table th.el-table__cell {
height: 28px;
}
.el-table thead.is-group tr:first-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 48px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
.el-table thead.is-group tr:last-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 68px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
}
</style>

View File

@ -0,0 +1,112 @@
<template>
<div class="wasteMachineReport">
<base-table
:table-props="tableProps"
:table-data="tableData"
:max-height="tableH"
/>
</div>
</template>
<script>
import { tableHeight } from '@/utils'
const tableProps = [
{
label: '研磨机组',
children: [
{
prop: 'name',
label: '判废原因',
minWidth: 110
}
]
},
{
prop: 'name1',
label: '1#'
},
{
prop: 'name2',
label: '2#'
},
{
prop: 'name3',
label: '3#'
},
{
prop: 'name4',
label: '4#'
},
{
prop: 'name5',
label: '5#'
},
{
prop: 'name6',
label: '6#'
},
{
prop: 'name7',
label: '7#'
}
]
export default {
name: 'wasteMachineReport',
data() {
return {
tableProps,
tableH: tableHeight(292)
}
},
mounted() {
window.addEventListener('resize', () => {
this.tableH = tableHeight(292)
})
},
props: {
tableData: {
type: Array,
required: true,
default: () => {
return []
}
}
}
}
</script>
<style lang="scss">
.wasteMachineReport {
.el-table thead.is-group tr:first-of-type th:first-of-type {
border-bottom: none;
}
.el-table thead.is-group tr:first-of-type th:first-of-type div.cell {
text-align: right;
}
.el-table th.el-table__cell {
height: 28px;
}
.el-table thead.is-group tr:first-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 60px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
.el-table thead.is-group tr:last-of-type th:first-of-type:before {
content: '';
position: absolute;
height: 35px;
top: 0;
left: 80px;
background-color: #ebeef5;
transform: rotate(-35deg);
-webkit-transform-origin: top;
transform-origin: top;
width: 1px;
}
}
</style>