1.增加余料库存管理

2.切割完成后,存在余料的,自动生成带来源图纸的余料信息
3.余料上料,自动同步余料库存,余料被哪个套料图使用
4.余料报工,切割完成,存在余料的,自动生成带来源图纸余料信息
5.调整技术准备,导出数据筛选从套料图号中获取
6.抛丸完成后自动设置光电为六区,进行切割报工
7.增加看板数据表显示看板图形对应数据
master
董哲奇 2 weeks ago
parent 2fdebc9806
commit bc6c0b93d8

@ -59,3 +59,7 @@ export const getKqData=function(){
method: 'get',
})
}
export const getData=()=>{
return request({url:'/sc/getYdjhByMonth'})
}

@ -1,9 +1,16 @@
import 作业计划完成量统计 from "@/views/cxtj/作业计划完成量统计";
import 技术准备 from "@/views/cxtj/技术准备";
import 看板对应数据 from "@/views/cxtj/看板对应数据表";
const methods={
'/scgl/jh/cxtj1':作业计划完成量统计(),
'/scgl/sc/cxtj_jszb':技术准备()
'/scgl/sc/cxtj_jszb':技术准备(),
'/scgl/jh/cxtj_rikwc':看板对应数据('riwc'),
'/scgl/jh/cxtj_zkwc':看板对应数据('zhouwc'),
'/scgl/jh/cxtj_ykwc':看板对应数据('yuewc'),
'/scgl/jh/cxtj_rikcl':看板对应数据('ricl'),
'/scgl/jh/cxtj_zkcl':看板对应数据('zhoucl'),
'/scgl/jh/cxtj_ykcl':看板对应数据('yuecl'),
}
const init=(page)=>{

@ -0,0 +1,184 @@
<template>
<el-container>
<el-container style="padding-top: 10px">
<el-container>
<el-main>
<VxeGrid ref="bFangRef" v-bind="gridOptions" />
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
import init from "@/views/cxtj/index";
import XEUtils from 'xe-utils'
import {getData} from "@/api/kban";
export default {
name:'CXTJ',
data(){
return{
gridOptions:{},
}
},
created(){
const {data:options,init:_init}=init(this.$route.path)
this.gridOptions=options
},
mounted(){
this.$nextTick(()=>{
this.init('yuewc')
})
},
methods:{
init(type){
getData().then(res=>{
const _data=JSON.parse(res.data)
let begin=XEUtils.toDateString(XEUtils.now(),'yyyy/MM/dd')
let end=XEUtils.toDateString(XEUtils.getWhatDay(XEUtils.now(), 1),'yyyy/MM/dd')
const endOfMonth=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
switch (type){
case 'riwc':
this.gridOptions.data= this.完成率计算(_data,begin,end,endOfMonth).point
break
case 'zhouwc':
begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
this.gridOptions.data= this.完成率计算(_data,begin,end,endOfMonth).point
break
case 'yuewc':
begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
this.gridOptions.data=this.完成率计算(_data,begin,end,endOfMonth).point
break
case 'ricl':
this.gridOptions.data=this.完成率计算(_data,begin,end,endOfMonth).wc
break
case 'zhoucl':
begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
this.gridOptions.data= this.完成率计算(_data,begin,end,endOfMonth).wc
break
case 'yuecl':
begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
this.gridOptions.data= this.完成率计算(_data,begin,end,endOfMonth).wc
break
}
})
},
完成率计算(data,date,nextDate,endOfMonth){
const wc=[],point=[]
const 一跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['7','8'].includes(item.kw))
const 一跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['7','8'].includes(item.kw)).length
let 一跨完成率='100'
if (一跨计划数量){
一跨完成率=(一跨完成数据.length/一跨计划数量*100).toFixed(2)
}
point.push({kua:'1跨',c:一跨完成率,n:一跨完成率>100?'0':(100-一跨完成率).toFixed(2)})
wc.push({ label: '1跨', quantity: 一跨完成数据.length, weight: 一跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue?.bcshzl||0)/1000;
}, 0) },)
const 二跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '三区')
const 二跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '三区').length
let 二跨完成率='100'
if (二跨计划数量){
二跨完成率=(二跨完成数据.length/二跨计划数量*100).toFixed(2)
}
point.push({kua:'2跨',c:二跨完成率,n:二跨完成率>100?'0':(100-二跨完成率).toFixed(2)})
wc.push({ label: '2跨', quantity: 二跨完成数据.length, weight: 二跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
const 三跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw))
const 三跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw)).length
let 三跨完成率='100'
if (三跨计划数量){
三跨完成率=(三跨完成数据.length/三跨计划数量*100).toFixed(2)
}
point.push({kua:'3跨',c:三跨完成率,n:三跨完成率>100?'0':(100-三跨完成率).toFixed(2)})
wc.push({ label: '3跨', quantity: 三跨完成数据.length, weight: 三跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
const 四跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '四区')
const 四跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '四区').length
let 四跨完成率='100'
if (四跨计划数量){
四跨完成率=(四跨完成数据.length/四跨计划数量*100).toFixed(2)
}
point.push({kua:'4,5,6跨',c:四跨完成率,n:四跨完成率>100?'0':(100-四跨完成率).toFixed(2)})
wc.push({ label: '4、5、6跨', quantity: 四跨完成数据.length, weight: 四跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
return {point,wc}
}
}
}
</script>
<style lang="scss" scoped>
.el-header {
margin: 0;
padding: 5px 0;
height: auto;
}
.el-container {
padding: 0;
margin: 0;
}
.el-main {
padding: 0;
}
.el-col {
padding: 0;
}
.el-aside {
background: #fff;
padding: 0;
}
.el-container {
padding: 0;
}
.el-row {
margin-bottom: 5px;
}
.el-row:last-child {
margin-bottom: 0;
}
.tableStyles {
background: #0a76a4;
}
.my-dropdown {
width: 450px;
height: 250px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
::v-deep .mytable .vxe-input {
display: flex !important;
}
::v-deep .el-form-item{
margin-bottom: 0px !important;
}
</style>

@ -1,12 +1,12 @@
import request from '@/utils/request'
import XLSX from 'xlsx'
import { VXETable } from 'vxe-table'
const 技术准备=()=>{
const list=()=>{
request({url:'/jszb/getFlowInfoList',method:'get',params:data.formData})
.then(res => {
console.log(res.data)
data.options.data=res.data
})
}
@ -29,7 +29,7 @@ const 技术准备=()=>{
const exportMethod=({options})=>{
const workBook = XLSX.utils.book_new();
const T型材Group=['SG2']
const T型材Group=['S2T','N2T']
const {sheet:T型材重量sheet}=处理数据(T型材Group,(list)=>{
return list.map(item=>{
@ -130,7 +130,7 @@ const 技术准备=()=>{
XLSX.utils.book_append_sheet(workBook, 曲外板sheet, "曲外板");
const {sheet:lastSheet}=处理数据(['NCA','NCB','NCC','NCG','NCJ','NCL','NCP','NCT'],(list)=>{
return list.map(item=>{
return list.filter(item=>['Z','D'].includes(item.option3)).map(item=>{
return {
船名:item.ch,
分段号:item.fd,
@ -154,7 +154,7 @@ const 技术准备=()=>{
}
const 处理数据=(groups,fun)=>{
const list=data.filter(item=>groups.includes(item.type0))
const list=data.filter(item=>groups.includes(item.nestingInfo?.substring(4,7)))
return {list:fun(list),sheet:XLSX.utils.json_to_sheet(_data)}
}

@ -0,0 +1,157 @@
import request from '@/utils/request'
import XEUtils from 'xe-utils'
const 看板对应数据=(type)=>{
const init=()=>{
getData().then(res=>{
const _data=JSON.parse(res.data)
let begin=XEUtils.toDateString(XEUtils.now(),'yyyy/MM/dd')
let end=XEUtils.toDateString(XEUtils.getWhatDay(XEUtils.now(), 1),'yyyy/MM/dd')
const endOfMonth=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
switch (type){
case 'riwc':
data.options.data= 完成率计算(_data,begin,end,endOfMonth).point
break
case 'zhouwc':
begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
data.options.data= 完成率计算(_data,begin,end,endOfMonth).point
break
case 'yuewc':
begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
data.options.data=完成率计算(_data,begin,end,endOfMonth).point
break
case 'ricl':
data.options.data=完成率计算(_data,begin,end,endOfMonth).wc
break
case 'zhoucl':
begin=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 0,1,0),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatWeek (XEUtils.now(), 1,1,0),'yyyy/MM/dd')
data.options.data= 完成率计算(_data,begin,end,endOfMonth).wc
break
case 'yuecl':
begin=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'first'),'yyyy/MM/dd')
end=XEUtils.toDateString(XEUtils.getWhatMonth(XEUtils.now(), 0,'last'),'yyyy/MM/dd')
data.options.data= 完成率计算(_data,begin,end,endOfMonth).wc
break
}
})
}
const data={
options:{
align:'center',
border: true,
resizable: true,
keepSource:true,
size:'mini',
showOverflow: true,
editConfig:{trigger: 'click', mode: 'cell', showStatus: true},
highlightCurrentRow:true,
columns:[],
data:[],
},
}
switch (type){
case 'riwc':
case 'zhouwc':
case 'yuewc':
data.columns=columns0
break
case 'ricl':
case 'zhoucl':
case 'yuecl':
data.columns=columns1
break
default:
data.columns=columns0
}
return {data,init}
}
const columns0=[
{ type: 'seq', width: 60, title: '序号' },
{ field: 'kua', title: '跨',},
{ field: 'c', title: '完成',},
{ field: 'n', title: '未完成',},
]
const columns1=[
{ type: 'seq', width: 60, title: '序号' },
{ field: 'dc_ch', title: '船号',},
{ field: 'c', title: '完成',},
{ field: 'n', title: '未完成',},
]
const 完成率计算=(data,date,nextDate,endOfMonth)=>{
const wc=[],point=[]
const 一跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['7','8'].includes(item.kw))
const 一跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['7','8'].includes(item.kw)).length
let 一跨完成率='100'
if (一跨计划数量){
一跨完成率=(一跨完成数据.length/一跨计划数量*100).toFixed(2)
}
point.push({kua:'1跨',c:一跨完成率,n:一跨完成率>100?'0':(100-一跨完成率).toFixed(2)})
wc.push({ label: '1跨', quantity: 一跨完成数据.length, weight: 一跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue?.bcshzl||0)/1000;
}, 0) },)
const 二跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '三区')
const 二跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '三区').length
let 二跨完成率='100'
if (二跨计划数量){
二跨完成率=(二跨完成数据.length/二跨计划数量*100).toFixed(2)
}
point.push({kua:'2跨',c:二跨完成率,n:二跨完成率>100?'0':(100-二跨完成率).toFixed(2)})
wc.push({ label: '2跨', quantity: 二跨完成数据.length, weight: 二跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
const 三跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw))
const 三跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '二区'&&['6','13','14'].includes(item.kw)).length
let 三跨完成率='100'
if (三跨计划数量){
三跨完成率=(三跨完成数据.length/三跨计划数量*100).toFixed(2)
}
point.push({kua:'3跨',c:三跨完成率,n:三跨完成率>100?'0':(100-三跨完成率).toFixed(2)})
wc.push({ label: '3跨', quantity: 三跨完成数据.length, weight: 三跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
const 四跨完成数据=data.filter(item=> item.qgfkrq >= date && item.qgfkrq < nextDate && item.zyq1 === '四区')
const 四跨计划数量=data.filter(item=> item.qgjhrq >= date && item.qgjhrq < endOfMonth && item.zyq1 === '四区').length
let 四跨完成率='100'
if (四跨计划数量){
四跨完成率=(四跨完成数据.length/四跨计划数量*100).toFixed(2)
}
point.push({kua:'4,5,6跨',c:四跨完成率,n:四跨完成率>100?'0':(100-四跨完成率).toFixed(2)})
wc.push({ label: '4、5、6跨', quantity: 四跨完成数据.length, weight: 四跨完成数据.reduce((accumulator, currentValue) => {
return accumulator + (currentValue.bcshzl||0)/1000;
}, 0) },)
return {point,wc}
}
const getData=()=>{
return request({url:'/sc/getYdjhByMonth'})
}
export default 看板对应数据

@ -0,0 +1,103 @@
<template>
<el-container>
<el-container style="padding-top: 10">
<el-container>
<el-main>
<VxeGrid ref="vGrid" :scroll-y="{enabled: true}" :scroll-x="{enabled: true,gt:10}" v-bind="gridOptions">
<template #name_czbh="{ data }">
<ProjectSelect ref="projectSelectRef" clearable :_style="{width:'150px'}" />
</template>
<template #name_xqch="{ data }">
<ProjectSelect ref="xqProjectSelectRef" clearable :_style="{width:'150px'}" />
</template>
</VxeGrid>
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
import ProjectSelect from "@/components/ProjectSelect/index.vue";
import init from "./index";
export default {
components: {ProjectSelect},
data(){
return{
gridOptions:{},
}
},
created(){
const {options}=init(this)
this.gridOptions=options
},
}
</script>
<style lang="scss" scoped >
.el-header{margin:0;padding: 5px;height:auto;
.el-input{
width: 140px;
}
.el-select{
width: 140px;
}
}
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;height: 32px;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {}
.el-row:last-child {margin-bottom: 0; }
.tableStyles{
background: #0a76a4;
}
.my-dropdown {
width: 400px;
height: 400px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
.mytable1{
}
.borderClass{
}
.vxe-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.el-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.keyword-lighten {
color: #000;
background-color: #FFFF00;
}
.vxe-textarea--inner {
line-height: inherit;
}
.el-form-item__label-wrap {
margin-left: 0px !important;
float: left;
}
.fontClass{
font-size: 12px;
font-weight: bold;
}
</style>
Loading…
Cancel
Save