fix: 大屏及部分bug修复

This commit is contained in:
caoqianming 2023-11-13 08:51:08 +08:00
parent 155a4c7b7e
commit 283321f238
6 changed files with 1541 additions and 1598 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -1,17 +1,17 @@
<template>
<el-container class="dashboard">
<el-header class="header">
<div>10车间生产数据大看板</div>
<div style="font-weight: bold;">10车间生产数据看板</div>
<div style="font-size: 14px;margin-top:18px">2023-11-01 08:00</div>
</el-header>
<el-main>
<el-row style="height: 60%" :gutter="10">
<el-col :xs="24" :md="10">
<el-row style="height: 34%;" :gutter="10">
<el-row style="height: 38%;" :gutter="10">
<el-col :xs="8" :md="8">
<div class="box">
<div class="boxtitle bgimg">
<div class="boxlabel"></div>
<div>今日任务</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">今日任务</div>
</div>
<div style="height: 4px;"></div>
<div class="boxmain flex_center bigdata border">
@ -24,8 +24,7 @@
<el-col :xs="8" :md="8">
<div class="box">
<div class="boxtitle bgimg">
<div class="boxlabel"></div>
<div>昨日合格</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">昨日合格</div>
</div>
<div style="height: 4px;"></div>
<!-- <dv-decoration-9 style="height:11rem; width: 11rem;margin:auto;">
@ -38,8 +37,7 @@
<el-col :xs="8" :md="8">
<div class="box">
<div class="boxtitle bgimg">
<div class="boxlabel"></div>
<div>累计合格</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">累计合格</div>
</div>
<div style="height: 4px;"></div>
<!-- <dv-decoration-9 style="height:11rem; width: 11rem;margin:auto;">
@ -51,14 +49,15 @@
</el-col>
</el-row>
<div style="height:2%"></div>
<dv-decoration3 style="width:100%;height:4%;" />
<!-- <dv-decoration3 style="width:100%;height:4%;" /> -->
<el-row style="height:60%">
<el-col>
<div class="box">
<div class="boxtitle">
<div style="margin:auto; font-size: 18px; margin-top: 6px">人员到岗
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">人员到岗
</div>
</div>
<div style="height: 2px;"></div>
<div class="boxmain">
<dv-scroll-board :config="taskBoard" style="width:100%;height:100%"
@mouseover="mouseoverHandler" @click="clickHandler" />
@ -129,7 +128,7 @@
<el-col :xs="24" :md="14">
<div class="box" :dur="20">
<div class="boxtitle">
<div style="margin:auto; font-size: 18px; margin-top: 6px">任务进度</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">任务进度</div>
</div>
<div style="height: 2px;"></div>
<div class="boxmain">
@ -198,7 +197,7 @@
<el-col :xs="24" :md="9">
<div class="box">
<div class="boxtitle">
<div style="margin:auto; font-size: 18px; margin-top: 6px">全年生产统计</div>
<div style="margin-left: 6px;font-size: 18px; margin-top: 6px">全年生产统计</div>
</div>
<div class="boxmain" id="chart1">
</div>
@ -207,7 +206,7 @@
<el-col :xs="24" :md="9">
<div class="box">
<div class="boxtitle">
<div style="margin:auto; font-size: 18px; margin-top: 6px">本月合格率统计</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">本月合格率统计</div>
</div>
<div class="boxmain" id="chart2">
</div>
@ -216,7 +215,7 @@
<el-col :xs="24" :md="6">
<div class="box">
<div class="boxtitle">
<div style="margin:auto; font-size: 18px; margin-top: 6px">昨日合格统计</div>
<div style="margin-left: 6px; font-size: 18px; margin-top: 6px">昨日合格统计</div>
</div>
<div class="boxmain" id="chart3">
</div>
@ -231,7 +230,7 @@
background-image: url("https://cdn-upload.datav.aliyun.com/upload/download/1678758744858-EWBrlDVf.jpg");
/* url("/public/img/bg.jpg"); */
color: #fff;
font-family: "微软雅黑" !important;
font-family: "Microsoft Yahei" !important;
}
.header {
@ -239,8 +238,13 @@
border-bottom: none;
/* background: url("https://cdn-upload.datav.aliyun.com/upload/download/1675143770257-pNifja_p.webp"); */
background-size: 100% 100%;
font-size: 28px;
justify-content: center;
font-size: 26px;
display: block;
height: 80px;
color: rgb(149, 255, 255);
font-family: 'Microsoft Yahei';
text-align: center;
padding: 12px 0px;
}
@ -265,7 +269,7 @@
.bgimg {
background-image: url('https://cdn-upload.datav.aliyun.com/upload/download/1678762309227-E6RP8z2R.png');
background-size: 100% 100%;
background-size: 140% 100%;
}
.boxlabel {
@ -329,7 +333,7 @@ export default {
data() {
return {
basicOption: {
// backgroundColor: '',
backgroundColor: '',
tooltip: {
trigger: 'axis',
axisPointer: {
@ -576,7 +580,33 @@ export default {
chart2Option.series[0].type = 'line'
chart2Option.series[1].type = 'line'
let chart2 = this.setChart("chart2", chart2Option)
let chart3Option = deepCopy(this.basicOption)
let chart3Option = {
backgroundColor: '',
legend: {
top: 'bottom'
},
series: [
{
name: 'Nightingale Chart',
type: 'pie',
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius: 8
},
data: [
{ value: 40, name: 'rose 1' },
{ value: 38, name: 'rose 2' },
{ value: 32, name: 'rose 3' },
{ value: 30, name: 'rose 4' },
{ value: 28, name: 'rose 5' },
{ value: 26, name: 'rose 6' },
{ value: 22, name: 'rose 7' },
{ value: 18, name: 'rose 8' }
]
}
]
};
let chart3 = this.setChart("chart3", chart3Option)
},

View File

@ -10,7 +10,7 @@
<div class="panel_title">本月全厂主要数据</div>
<el-row :gutter="16" style="height: 72px;margin-top: 4px">
<el-col :span="12" class="panel_item">
<div class="panel_label"><img src="img/elec.png" style="height: 24px;vertical-align:middle;"/>动力电消耗</div>
<div class="panel_label"><img src="img/elec.png" style="height: 24px;vertical-align:middle;" />动力电消耗</div>
<div class="pannel_number">
<span class="panel_value">{{ factoryData.elec_consume }}</span>
<span class="panel_unit">(kW·h)</span>
@ -66,7 +66,8 @@
</div>
</el-col>
<el-col :span="12" class="panel_item">
<div class="panel_label"><img src="img/total_production.png" style="height: 24px;vertical-align:middle;" />产品产量</div>
<div class="panel_label"><img src="img/total_production.png"
style="height: 24px;vertical-align:middle;" />产品产量</div>
<div class="pannel_number">
<span class="panel_value">{{ sectionData.total_production }}</span>
<span class="panel_unit">(t)</span>
@ -82,7 +83,7 @@
</div>
</el-col>
<el-col :span="12" class="panel_item" v-if="showKgcet">
<div class="panel_label"><img src="img/coal.png" style="height: 24px;vertical-align:bottom;"/>单位产品标煤耗</div>
<div class="panel_label"><img src="img/coal.png" style="height: 24px;vertical-align:bottom;" />单位产品标煤耗</div>
<div class="pannel_number">
<span class="panel_value">{{ sectionData.coal_consume_unit }}</span>
<span class="panel_unit">(kgce/t)</span>
@ -137,15 +138,15 @@ import 'animate.css';
export default {
data() {
return {
query:{
year_s:2023,
month_s:8,
type:'month_s',
page:0
query: {
year_s: 2023,
month_s: 8,
type: 'month_s',
page: 0
},
factoryData: {},
sectionData: {},
nowDay:1,
nowDay: 1,
initialAlpha: -Math.PI / 0.89,
initialBeta: Math.PI / 3.3,
initialRadius: 18,
@ -175,12 +176,12 @@ export default {
xAxis: {
data: ['一月', '二月', '三月', '四月', '五月', '六月'],
},
yAxis: { type: 'value'},
yAxis: { type: 'value' },
series: [
{
name: '销量',
type: 'bar',
barwidth:10,
barwidth: 10,
label: {
show: true,
position: 'top'
@ -211,33 +212,33 @@ export default {
bottom: "15%"
}
},
year_start:0,
end_time:'',
start_time:'',
xAxisData:[],
arrMonth:[],
year_start: 0,
end_time: '',
start_time: '',
xAxisData: [],
arrMonth: [],
chart1Option: {},
chart2Option: {},
chart3Option: {},
chart4Option: {},
chart5Option: {},
chart6Option: {},
seriesData1:[0,0,0,0,0,0],
seriesData2:[0,0,0,0,0,0],
seriesData3:[0,0,0,0,0,0],
seriesData3_2:[0,0,0,0,0,0],
seriesData4:[0,0,0,0,0,0],
seriesData5:[0,0,0,0,0,0],
seriesData6:[0,0,0,0,0,0],
path:"ws://49.232.14.174:2226/ws/my/?token=",
ws:null,
mgroupValues:{
电石渣:{total:'0',elec:'0'},
原料磨:{total:'0',elec:'0'},
煤磨:{total:'0',elec:'0'},
回转窑:{total:'0',elec:'0'},
水泥磨:{total:'0',elec:'0'},
水泥包装:{total:'0',elec:'0'}
seriesData1: [0, 0, 0, 0, 0, 0],
seriesData2: [0, 0, 0, 0, 0, 0],
seriesData3: [0, 0, 0, 0, 0, 0],
seriesData3_2: [0, 0, 0, 0, 0, 0],
seriesData4: [0, 0, 0, 0, 0, 0],
seriesData5: [0, 0, 0, 0, 0, 0],
seriesData6: [0, 0, 0, 0, 0, 0],
path: "ws://49.232.14.174:2226/ws/my/?token=",
ws: null,
mgroupValues: {
电石渣: { total: '0', elec: '0' },
原料磨: { total: '0', elec: '0' },
煤磨: { total: '0', elec: '0' },
回转窑: { total: '0', elec: '0' },
水泥磨: { total: '0', elec: '0' },
水泥包装: { total: '0', elec: '0' }
},
}
},
@ -247,35 +248,35 @@ export default {
this.addListener();
let myDate = new Date();
let year = myDate.getFullYear();
let month = myDate.getMonth()+1;
let month = myDate.getMonth() + 1;
let day = myDate.getDate();
that.nowDay = day;
that.query.year_s = year;
that.query.month_s = month;
this.initDomStyle();
this.$nextTick(() => {
this.$API.enm.enstat.req({type:'month_s',month_s:month,year_s:year,page:0}).then((res1) => {
console.log('工段数据:',res1)
this.$API.enm.enstat.req({ type: 'month_s', month_s: month, year_s: year, page: 0 }).then((res1) => {
console.log('工段数据:', res1)
// debugger
res1.forEach(item=>{
if(item.mgroup_name=='电石渣'){
that.mgroupValues.电石渣.total = item.total_production+'';
that.mgroupValues.电石渣.elec=item.elec_consume_unit+'';
}else if(item.mgroup_name=='原料磨'){
that.mgroupValues.原料磨.total=item.total_production+'';
that.mgroupValues.原料磨.elec=item.elec_consume_unit+'';
}else if(item.mgroup_name=='煤磨'){
that.mgroupValues.煤磨.total=item.total_production+'';
that.mgroupValues.煤磨.elec=item.elec_consume_unit+'';
}else if(item.mgroup_name=='回转窑'){
that.mgroupValues.回转窑.total=item.total_production+'';
that.mgroupValues.回转窑.elec=item.elec_consume_unit+'';
}else if(item.mgroup_name=='水泥磨'){
that.mgroupValues.水泥磨.total=item.total_production+'';
that.mgroupValues.水泥磨.elec=item.elec_consume_unit+'';
}else if(item.mgroup_name=='水泥包装'){
that.mgroupValues.水泥包装.total=item.total_production+'';
that.mgroupValues.水泥包装.elec=item.elec_consume_unit+'';
res1.forEach(item => {
if (item.mgroup_name == '电石渣') {
that.mgroupValues.电石渣.total = item.total_production + '';
that.mgroupValues.电石渣.elec = item.elec_consume_unit + '';
} else if (item.mgroup_name == '原料磨') {
that.mgroupValues.原料磨.total = item.total_production + '';
that.mgroupValues.原料磨.elec = item.elec_consume_unit + '';
} else if (item.mgroup_name == '煤磨') {
that.mgroupValues.煤磨.total = item.total_production + '';
that.mgroupValues.煤磨.elec = item.elec_consume_unit + '';
} else if (item.mgroup_name == '回转窑') {
that.mgroupValues.回转窑.total = item.total_production + '';
that.mgroupValues.回转窑.elec = item.elec_consume_unit + '';
} else if (item.mgroup_name == '水泥磨') {
that.mgroupValues.水泥磨.total = item.total_production + '';
that.mgroupValues.水泥磨.elec = item.elec_consume_unit + '';
} else if (item.mgroup_name == '水泥包装') {
that.mgroupValues.水泥包装.total = item.total_production + '';
that.mgroupValues.水泥包装.elec = item.elec_consume_unit + '';
}
})
})
@ -283,29 +284,29 @@ export default {
that.initFactory();
}, 1000);
});
let month1= month>9?month:'0'+month;
let end_time = year+'-'+month1+'-01 10:00:00';
let year_s=year;
if(month<6){
year_s = year-1;
let month1 = month > 9 ? month : '0' + month;
let end_time = year + '-' + month1 + '-01 10:00:00';
let year_s = year;
if (month < 6) {
year_s = year - 1;
}
let arr = [],xAxisData = [];
let arr = [], xAxisData = [];
let monthItem = month;
for (let i = 0; i < 6; i++) {
arr.push(monthItem);
if(monthItem === 1) {
if (monthItem === 1) {
monthItem = 12;
} else {
monthItem--;
}
}
arr.reverse();
for(let i=0;i<6;i++){
let item = arr[i]+'月'
for (let i = 0; i < 6; i++) {
let item = arr[i] + '月'
xAxisData.push(item);
}
let month0= arr[0]>9?arr[0]:'0'+arr[0];
let start_time = year_s+'-'+month0+'-01 10:00:00';
let month0 = arr[0] > 9 ? arr[0] : '0' + arr[0];
let start_time = year_s + '-' + month0 + '-01 10:00:00';
that.arrMonth = arr;
that.year_start = year_s;
that.xAxisData = xAxisData;
@ -325,10 +326,12 @@ export default {
},
methods: {
// Class
bindClass(type){
let classInfo = { socketDom: true, redColor: false,
orangeColor:false, yellowColor:false, blueColor:true }
if(type==''){
bindClass(type) {
let classInfo = {
socketDom: true, redColor: false,
orangeColor: false, yellowColor: false, blueColor: true
}
if (type == '') {
classInfo.redColor = true
}
return classInfo
@ -336,34 +339,34 @@ export default {
init() {
var that = this
// console.log(tool.cookie.get("TOKEN"))
if(typeof(WebSocket) === "undefined"){
if (typeof (WebSocket) === "undefined") {
alert("您的浏览器不支持socket")
}else{
this.ws = new WebSocket(this.path+tool.cookie.get("TOKEN"))
} else {
this.ws = new WebSocket(this.path + tool.cookie.get("TOKEN"))
//
this.ws.onopen = ()=> {
this.ws.onopen = () => {
// console.log("socket");
setTimeout(()=>{
that.ws.send(JSON.stringify({'type': 'event'}))
},500)
setTimeout(() => {
that.ws.send(JSON.stringify({ 'type': 'event' }))
}, 500)
}
//
this.ws.onmessage = (msg)=>{
this.ws.onmessage = (msg) => {
let data = JSON.parse(msg.data)
console.log(data)
if(data.type=='event'){
if (data.type == 'event') {
that.bindClass();
}if(data.type=='ticket'){
} if (data.type == 'ticket') {
}if(data.type=='remaind'){
} if (data.type == 'remaind') {
}
};
// error
this.ws.onerror = function(error) {
this.ws.onerror = function (error) {
console.log('ws断开,尝试重连')
setTimeout(()=>{
setTimeout(() => {
this.ws = null;
this.init()
}, 5000)
@ -389,34 +392,34 @@ export default {
getFactoryData() {
var that = this;
that.$API.enm.enstat2.req(that.query).then((res) => {
if(res.length>0){
if (res.length > 0) {
that.factoryData = res[0]
}else{}
} else { }
})
//
let obj = {};
obj.type = 'month_s';
obj.start_time = that.start_time;
obj.end_time = that.end_time;
obj.page=0;
obj.page = 0;
this.$API.enm.enstat2.req(obj).then((res1) => {
let list0 = res1.sort(this.compare('month_s'));
let list = list0.sort(this.compare('year_s'));
let seriesData1 = [0,0,0,0,0,0],
seriesData2 = [0,0,0,0,0,0],
seriesData3 = [0,0,0,0,0,0],
seriesData3_2 = [0,0,0,0,0,0];
list.forEach(item=>{
let seriesData1 = [0, 0, 0, 0, 0, 0],
seriesData2 = [0, 0, 0, 0, 0, 0],
seriesData3 = [0, 0, 0, 0, 0, 0],
seriesData3_2 = [0, 0, 0, 0, 0, 0];
list.forEach(item => {
let index = that.arrMonth.indexOf(item.month_s);
seriesData1[index] = Number(item.elec_consume)
seriesData2[index] = Number(item.pcoal_consume)
seriesData3[index] = Number(item.water_consume)
seriesData3_2[index] = Number(item.cair_consume)
})
that.seriesData1=seriesData1;
that.seriesData2=seriesData2;
that.seriesData3=seriesData3;
that.seriesData3_2=seriesData3_2;
that.seriesData1 = seriesData1;
that.seriesData2 = seriesData2;
that.seriesData3 = seriesData3;
that.seriesData3_2 = seriesData3_2;
that.initCharts();
})
},
@ -426,35 +429,35 @@ export default {
obj.type = 'month_s';
obj.start_time = that.start_time;
obj.end_time = that.end_time;
obj.mgroup__name=that.activeSectionName;
obj.page=0;
obj.mgroup__name = that.activeSectionName;
obj.page = 0;
this.$API.enm.enstat.req(obj).then((res) => {
let list0 = res.sort(this.compare('month_s'));
let list = list0.sort(this.compare('year_s'));
let seriesData4 = [0,0,0,0,0,0],
seriesData5 = [0,0,0,0,0,0],
seriesData6 = [0,0,0,0,0,0];
list.forEach(item=>{
let seriesData4 = [0, 0, 0, 0, 0, 0],
seriesData5 = [0, 0, 0, 0, 0, 0],
seriesData6 = [0, 0, 0, 0, 0, 0];
list.forEach(item => {
let index = that.arrMonth.indexOf(item.month_s);
seriesData4[index] = Number(item.elec_consume_unit)
seriesData5[index] = Number(item.total_production)
seriesData6[index] = Number(item.run_rate)
})
that.seriesData4=seriesData4;
that.seriesData5=seriesData5;
that.seriesData6=seriesData6;
that.seriesData4 = seriesData4;
that.seriesData5 = seriesData5;
that.seriesData6 = seriesData6;
that.initCharts1();
})
},
getDayData(){
getDayData() {
var that = this;
let obj = {};
obj.type = 'day_s';
obj.year_s = that.query.year_s;
obj.month_s = that.query.month_s;
obj.day_s = that.nowDay;
obj.mgroup__name=that.activeSectionName;
obj.page=0;
obj.mgroup__name = that.activeSectionName;
obj.page = 0;
this.$API.enm.enstat.req(obj).then((res) => {
that.sectionData = res[0];
})
@ -481,12 +484,12 @@ export default {
},
data: that.seriesData1
}]
that.setChart('chart1',that.chart1Option);
that.setChart('chart1', that.chart1Option);
this.chart2Option = deepCopy(that.basicOption)
this.chart2Option.series[0].type = 'line';
this.chart2Option.series[0].data = that.seriesData2;
this.setChart('chart2', this.chart2Option);
this.chart3Option =deepCopy(that.basicOption)
this.chart3Option = deepCopy(that.basicOption)
this.chart3Option.series = [
{
name: '工业水',
@ -629,7 +632,7 @@ export default {
setTimeout(() => {
try {
myChart.setOption(option);
} catch (error) {}
} catch (error) { }
}, 500)
},
initFactory() {
@ -794,7 +797,7 @@ export default {
rect1.addControl(label);
rect1.linkWithMesh(mesh);
rect1.linkOffsetY = -30;
if(value=='电石渣'){
if (value == '电石渣') {
rect1.linkOffsetY = -200;
var line = new BABYLON_GUI.Line();
line.lineWidth = 4;
@ -817,7 +820,7 @@ export default {
// console.log('fly to')
//
let position = mesh._parentNode._position
if(mesh._parentNode.id=='__root__'){
if (mesh._parentNode.id == '__root__') {
position = mesh.position
}
const cameraPosition = new BABYLON.Vector3(
@ -856,7 +859,7 @@ export default {
mgroupName.shadowOffsetX = -2;
mgroupName.shadowOffsetY = 2;
data_view.addControl(mgroupName);
const mgroup =new BABYLON_GUI.Rectangle('mgroup');
const mgroup = new BABYLON_GUI.Rectangle('mgroup');
mgroup.height = "3px";
mgroup.width = "160px";
mgroup.thickness = 0;
@ -869,34 +872,34 @@ export default {
var wd = 2;
var hd = 2;
for (let i = 0; i < wd; i++) {
grid.addRowDefinition(1/wd);
grid.addRowDefinition(1 / wd);
}
for (let j = 0; j < hd; j++) {
grid.addColumnDefinition(1/hd);
grid.addColumnDefinition(1 / hd);
}
for (let i = 0; i < wd; i++) {
for (let j = 0; j < hd; j++) {
var rc= new BABYLON_GUI.TextBlock("rc"+i+j);
var rc = new BABYLON_GUI.TextBlock("rc" + i + j);
rc.width = "100%";
// rc.height = "100%";
rc.thickness = 0;
if(j==0&&i==0){
if (j == 0 && i == 0) {
rc.width = "120px";
rc.text = "产品产量:";
rc.color = "white";
rc.fontSize = '16px';
}else if(j==0&&i==1){
} else if (j == 0 && i == 1) {
rc.width = "120px";
rc.color = "white";
rc.fontSize = '16px';
rc.text = "单位产品电耗:";
}else if(j==1&&i==0){
} else if (j == 1 && i == 0) {
// rc.text = that.mgroupValues[value].total;
rc.text = "123";
rc.width = "80px";
rc.fontSize = '18px';
rc.color = "rgb(44,237,255)";
}else if(j==1&&i==1){
} else if (j == 1 && i == 1) {
// rc.text = that.mgroupValues[value].total;
rc.text = "456";
rc.width = "80px";
@ -907,7 +910,7 @@ export default {
}
}
data_view.addControl(grid);
var mgroup_close = BABYLON_GUI.Button.CreateSimpleButton("mgroup_close"+value,'关闭');
var mgroup_close = BABYLON_GUI.Button.CreateSimpleButton("mgroup_close" + value, '关闭');
mgroup_close.width = "70px"
mgroup_close.height = "25px";
mgroup_close.color = "white";
@ -916,7 +919,7 @@ export default {
mgroup_close.background = 'rgb(44,237,255,.5)';
mgroup_close.HORIZONTAL_ALIGNMENT_RIGHT = 5;
mgroup_close.onPointerClickObservable.add(() => {
console.log('data_view',data_view)
console.log('data_view', data_view)
data_view.isVisible = false;
})
data_view.addControl(mgroup_close);
@ -924,7 +927,7 @@ export default {
advancedTexture.addControl(data_view);
data_view.linkWithMesh(mesh);
data_view.linkOffsetY = -120;
if(value=='电石渣'){
if (value == '电石渣') {
data_view.linkOffsetY = -290;
}
}
@ -1009,7 +1012,7 @@ export default {
if (pickResult.hit) {
const mesh = pickResult.pickedMesh;
highlightLayer.removeAllMeshes();
if(/.*[\u4e00-\u9fa5]+.*$/.test(mesh.name)&&mesh.name!=='地面1'&&mesh.name!=='绿地'&&mesh.name!=='停车场') {
if (/.*[\u4e00-\u9fa5]+.*$/.test(mesh.name) && mesh.name !== '地面1' && mesh.name !== '绿地' && mesh.name !== '停车场') {
// mesh
highlightLayer.addMesh(mesh, new BABYLON.Color3(1, 1, 0.5));
that.currentLightMesh = mesh;
@ -1051,23 +1054,23 @@ export default {
obj.type = 'month_s';
obj.start_time = that.start_time;
obj.end_time = that.end_time;
obj.mgroup__name=val;
obj.page=0;
obj.mgroup__name = val;
obj.page = 0;
this.$API.enm.enstat.req(obj).then((res) => {
let list0 = res.sort(this.compare('month_s'));
let list = list0.sort(this.compare('year_s'));
let seriesData4 = [0,0,0,0,0,0],
seriesData5 = [0,0,0,0,0,0],
seriesData6 = [0,0,0,0,0,0];
list.forEach(item=>{
let seriesData4 = [0, 0, 0, 0, 0, 0],
seriesData5 = [0, 0, 0, 0, 0, 0],
seriesData6 = [0, 0, 0, 0, 0, 0];
list.forEach(item => {
let index = that.arrMonth.indexOf(item.month_s);
seriesData4[index] = Number(item.elec_consume_unit)
seriesData5[index] = Number(item.total_production)
seriesData6[index] = Number(item.run_rate)
})
that.seriesData4=seriesData4;
that.seriesData5=seriesData5;
that.seriesData6=seriesData6;
that.seriesData4 = seriesData4;
that.seriesData5 = seriesData5;
that.seriesData6 = seriesData6;
that.initCharts1();
const element_main = document.querySelector('.right_main');
element_main.classList.add('animate__animated', 'animate__fadeIn');
@ -1081,35 +1084,35 @@ export default {
//
element.classList.remove('animate__fadeIn');
});
const sectionUI = this.myui.getControlByName(val+'_rect')
const sectionUI = this.myui.getControlByName(val + '_rect')
sectionUI.onPointerDownObservable.notifyObservers();
})
},
getMgroupChartData(name){
getMgroupChartData(name) {
var that = this;
let obj = {};
obj.type = 'month_s';
obj.start_time = that.start_time;
obj.end_time = that.end_time;
obj.mgroup__name=name;
obj.page=0;
obj.mgroup__name = name;
obj.page = 0;
this.$API.enm.enstat.req(obj).then((res) => {
let list0 = res.sort(this.compare('month_s'));
let list = list0.sort(this.compare('year_s'));
let seriesData4 = [0,0,0,0,0,0],
seriesData5 = [0,0,0,0,0,0],
seriesData6 = [0,0,0,0,0,0];
list.forEach(item=>{
let seriesData4 = [0, 0, 0, 0, 0, 0],
seriesData5 = [0, 0, 0, 0, 0, 0],
seriesData6 = [0, 0, 0, 0, 0, 0];
list.forEach(item => {
let index = that.arrMonth.indexOf(item.month_s);
seriesData4[index] = Number(item.elec_consume_unit)
seriesData5[index] = Number(item.total_production)
seriesData6[index] = Number(item.run_rate)
})
that.seriesData4=seriesData4;
that.seriesData5=seriesData5;
that.seriesData6=seriesData6;
that.seriesData4 = seriesData4;
that.seriesData5 = seriesData5;
that.seriesData6 = seriesData6;
that.initCharts1();
})
},
@ -1181,23 +1184,30 @@ header {
justify-content: center;
font-size: 30px;
}
.left_main,.right_main {
.left_main,
.right_main {
z-index: 10;
position: absolute;
top: 40px;
width: 20%;
}
.right_main {
right: 0;
}
.left_other,.right_other {
.left_other,
.right_other {
position: absolute;
top: 240px;
width: 20%;
}
.right_other {
right: 0
}
.panel {
padding: 4px 8px;
overflow: auto;
@ -1209,6 +1219,7 @@ header {
border: 1px solid transparent;
margin: 6px 6px;
}
.panel_title {
height: 30px;
margin-bottom: 4px;
@ -1216,24 +1227,29 @@ header {
font-weight: bold;
color: #fff;
}
.panel_item {
color: #fff;
padding: 6px;
background: linear-gradient(40deg, rgba(11, 101, 140, 0.451), rgba(0, 34, 48, 0.335));
}
.panel_label {
font-size: 16px;
margin-bottom: 6px;
}
.pannel_number{
.pannel_number {
position: relative;
}
.panel_value {
padding-left: 1em;
font-size: 22px;
font-weight: bold;
text-align: right;
}
.panel_unit {
right: 5px;
color: #aebfe9;
@ -1241,10 +1257,12 @@ header {
text-align: right;
position: absolute;
}
.chart {
width: 100%;
height: 220px;
}
.dropdown {
/* top: 20%;
font-size: 18px;
@ -1281,6 +1299,7 @@ header {
line-height: 3.7vw;
margin: 0 0.1vw 0.1vw 0.1vw;
}
.dropdown-item:hover,
.dropdown-item.active {
/* background-color: #ddd; */
@ -1295,6 +1314,4 @@ header {
text-align: center;
background: url(./../../../public/img/menu_active.png) no-repeat;
background-size: 100%;
}
</style>
}</style>

View File

@ -7,22 +7,28 @@
</el-header>
<el-main style="padding:0" id="mainBlock">
<el-row style="height:100%">
<!-- <div style="position: absolute;left: 0;width:20%;z-index:10">
<div style="position: absolute;left: 0;width:20%;z-index:10">
<div style="display:flex;flex-direction: column;height:100%;padding:20px">
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块一</div>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块一
</div>
<div id="line1" style="width:100%;height:92%;background:rgba(50,144,118,.1)"></div>
</div>
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块二</div>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块二
</div>
<div id="bar1" style="width:100%;height:92%;background:rgba(50,144,118,.1)"></div>
</div>
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块三</div>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块三
</div>
<div id="line2" style="width:100%;height:92%;background:rgba(50,144,118,.1)"></div>
</div>
</div>
</div> -->
</div>
<el-col :span="24">
<div class="model">
<div id="loadingScreen">
@ -36,22 +42,29 @@
<canvas id="renderCanvas"></canvas>
</div>
</el-col>
<!-- <div style="position: absolute;right: 0;width:20%;z-index:10">
<div style="position: absolute;right: 0;width:20%;z-index:10">
<div style="display:flex;flex-direction: column;height:100%;padding:20px">
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块四</div>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块四
</div>
<div id="pie" style="width:100%;height:92%;background:rgba(50,144,118,.1)"></div>
</div>
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块五</div>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块五
</div>
<div id="line3" style="width:100%;height:92%;background:rgba(50,144,118,.1)"></div>
</div>
<div class="flexItem" style="flex:1">
<div class="blockTitle"><div class="blockTitleIcon"></div>模块六</div>
<dv-scroll-board id="scrollTable" :config="taskBoard" :style="{'width':'100%','height':blockHeight}"/>
<div class="blockTitle">
<div class="blockTitleIcon"></div>模块六
</div>
<dv-scroll-board id="scrollTable" :config="taskBoard"
:style="{ 'width': '100%', 'height': blockHeight }" />
</div>
</div>
</div>
</div> -->
</el-row>
</el-main>
<div id="inforBlock" class="inforBlock" v-show="infoVisibel">
@ -62,7 +75,8 @@
<p class="title">10车间</p>
<div class="infoCantier">
<div class="leftBlock">
<el-progress width="50" type="circle" color="rgba(54, 217, 187, 1)" :percentage="25" id="dashbordProcess"/>
<el-progress width="50" type="circle" color="rgba(54, 217, 187, 1)" :percentage="25"
id="dashbordProcess" />
<span>完成进度</span>
</div>
<div class="rightBlock">
@ -102,7 +116,7 @@ import 'animate.css';
export default {
data() {
return {
blockHeight:null,
blockHeight: null,
taskBoard: {
header: ['姓名', '车间', '到岗'],
headerBGC: 'rgb(10,63,68)',
@ -120,13 +134,13 @@ export default {
index: true,
columnWidth: [50],
align: ['center'],
loadedPercent:0,
percentage:0,
percentage:0
loadedPercent: 0,
percentage: 0,
percentage: 0
},
initialAlpha: -Math.PI / 1.2,
initialBeta: Math.PI / 2.5,
initialRadius: 15,
initialAlpha: -Math.PI / 4.5,
initialBeta: Math.PI / 2,
initialRadius: 3,
initialTarget: null,
scene: null,
myui: null,
@ -134,28 +148,28 @@ export default {
engine: null,
loadedPercent: 0,
currentLightMesh: null,
infoVisibel:false,
infoVisibel: false,
updateTime: '2023-08-17 16:00:00',
nodesLists:{
'单身宿舍.005_primitive3':{total:'0',elec:'0',name:'办公楼'},
'立方体.015_primitive1':{total:'0',elec:'0',name:'加工车间'},
'立方体.004_primitive1':{total:'0',elec:'0',name:'配料车间'},
'立方体.003_primitive1':{total:'0',elec:'0',name:'成型车间'},
'立立方体.002_primitive1':{total:'0',elec:'0',name:'成型车间'},
nodesLists: {
'单身宿舍.005_primitive3': { total: '0', elec: '0', name: '办公楼' },
'立方体.015_primitive1': { total: '0', elec: '0', name: '加工车间' },
'立方体.004_primitive1': { total: '0', elec: '0', name: '配料车间' },
'立方体.003_primitive1': { total: '0', elec: '0', name: '成型车间' },
'立立方体.002_primitive1': { total: '0', elec: '0', name: '成型车间' },
},
}
},
mounted() {
let height = document.getElementById('mainBlock').clientHeight;
let height0 = height/3-50;
this.blockHeight = height0+'px'
let height0 = height / 3 - 50;
this.blockHeight = height0 + 'px'
this.$nextTick(() => {
// this.initChart();
this.initChart();
this.initDomStyle();
this.initFactory();
})
},
methods:{
methods: {
initDomStyle() {
//
var windowHeight = window.innerHeight;
@ -165,9 +179,9 @@ export default {
if (windowWidth > 960) {
dashboard.style.overflow = 'hidden';
model.style.position = 'absolute';
model.style.height = (windowHeight - 3) + 'px';
model.style.height = (windowHeight - 70) + 'px';
model.style.top = 0
}else {
} else {
dashboard.style.overflow = 'auto';
var chartHeight = windowWidth * 0.6;
model.style.position = 'relative';
@ -180,6 +194,7 @@ export default {
},
initFactory() {
var that = this;
const canvas = document.getElementById("renderCanvas"); // Get the canvas element
const engine = new BABYLON.Engine(canvas, true); // Generate the BABYLON 3D engine
BABYLON.DefaultLoadingScreen.prototype.displayLoadingUI = function () {
@ -192,6 +207,9 @@ export default {
const createScene = function () {
const scene = new BABYLON.Scene(engine);
scene.clearColor = BABYLON.Color3.Black(); //BABYLON.Color3(1, 0, 1);
//
var material = new BABYLON.PBRMaterial("groundMaterial", scene);
material.metallic = 1; //
const ground = BABYLON.MeshBuilder.CreateGround("ground", { width: 10, height: 10 });
const groundMaterial = new BABYLON_GRID.GridMaterial("groundMaterial", scene);
groundMaterial.majorUnitFrequency = 5;
@ -202,18 +220,19 @@ export default {
//
const backgroundImage = new BABYLON.Layer('', 'img/photon_bg.png', scene, true);
const camera = new BABYLON.ArcRotateCamera("camera", that.initialAlpha, that.initialBeta, that.initialRadius, new BABYLON.Vector3(0, 0.5, 0.2));
const camera = new BABYLON.ArcRotateCamera("camera", that.initialAlpha, that.initialBeta, that.initialRadius, new BABYLON.Vector3(0, 0.5, 0.3));
that.initialTarget = camera.getTarget();
// camera.lowerBetaLimit = Math.PI / 2.6;
camera.upperBetaLimit = Math.PI / 2.3; //
camera.attachControl(canvas, true);
camera.maxZ = 1000; //
camera.wheelDeltaPercentage = 0.02;
//
camera.lowerRadiusLimit = 3;
camera.upperRadiusLimit = 3;
camera.lowerRadiusLimit = 2;
camera.upperRadiusLimit = 6;
//
const light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(1, 1, 0));
light.intensity =0.1;
light.intensity = 0.3;
// GUI
const advancedTexture = BABYLON_GUI.AdvancedDynamicTexture.CreateFullscreenUI("myUI");
that.myui = advancedTexture;
@ -261,8 +280,8 @@ export default {
mesh_name.color = 'white';
mesh_name.fontSize = '14px';
mesh_rect.addControl(mesh_name);
var remoteGlbUrl = process.env.VUE_APP_BASEURL + "/media/model/photon3.glb";
BABYLON.SceneLoader.Append(remoteGlbUrl, "", scene, function (scene) {
// var remoteGlbUrl = process.env.VUE_APP_BASEURL + "/media/model/photon3.glb";
BABYLON.SceneLoader.Append('glb/', "photon3.glb", scene, function (scene) {
//
// scene.lights[1].setEnabled(false);
// setEnable
@ -378,7 +397,7 @@ export default {
// mesh_rect.isVisible = true;
// that.infoVisibel = true;
// }
if(mesh.name=='单身宿舍.005_primitive3') {
if (mesh.name == '单身宿舍.005_primitive3') {
//宿.003_primitive3
// mesh
highlightLayer.addMesh(mesh, new BABYLON.Color3(1, 1, 0.5));
@ -389,21 +408,21 @@ export default {
// mesh_rect.isVisible = true;
that.infoVisibel = true;
hl1.addMesh(mesh, new BABYLON.Color3(12/255, 250/255, 252/255), true);
hl1.addMesh(mesh, new BABYLON.Color3(12 / 255, 250 / 255, 252 / 255), true);
hl1.blurVerticalSize = 5;
hl1.blurHorizontalSize = 5;
function worldToScreen(point, camera, scene,engine) {
function worldToScreen(point, camera, scene, engine) {
return BABYLON.Vector3.Project(point,
BABYLON.Matrix.Identity(),
scene.getTransformMatrix(),
camera.viewport.toGlobal(engine.getRenderWidth(), engine.getRenderHeight()));
}
var pos = worldToScreen(mesh.absolutePosition,camera,scene,engine);
var pos = worldToScreen(mesh.absolutePosition, camera, scene, engine);
let infoBlock = document.getElementById('inforBlock');
infoBlock.style.left = (Math.floor(pos.x)+250)+'px';
infoBlock.style.top = (Math.floor(pos.y)-250)+'px';
infoBlock.style.left = (Math.floor(pos.x)) + 'px';
infoBlock.style.top = (Math.floor(pos.y) - 250) + 'px';
}
}else{
} else {
that.infoVisibel = false;
}
});
@ -413,13 +432,13 @@ export default {
const pickResult = scene.pick(scene.pointerX, scene.pointerY);
if (pickResult.hit) {
console.log('000000000000');
console.log('pickResult',pickResult);
console.log('pickResult', pickResult);
const mesh = pickResult.pickedMesh;
if (camera.target != mesh.position) {
// console.log('fly to')
//
let position = mesh._parentNode._position
if(mesh._parentNode.id=='__root__'){
if (mesh._parentNode.id == '__root__') {
position = mesh.position
}
const cameraPosition = new BABYLON.Vector3(
@ -436,42 +455,42 @@ export default {
});
// checkbox.isChecked = true; //
// scene.onPointerObservable.add((pointerInfo) => {
// switch (pointerInfo.type) {
// case BABYLON.PointerEventTypes.POINTERDOWN:
// console.log(scene.pointerX, scene.pointerY);
// const pickResult = scene.pick(scene.pointerX, scene.pointerY);
// if (pickResult.hit) {
// console.log('000000000000');
// console.log('pickResult', pickResult);
// const mesh = pickResult.pickedMesh;
// if (camera.target != mesh.position) {
// // console.log('fly to')
// //
// let position = mesh._parentNode._position
// if (mesh._parentNode.id == '__root__') {
// position = mesh.position
// }
// const cameraPosition = new BABYLON.Vector3(
// mesh.position.x + 9 * Math.sin(camera.beta) * Math.cos(Math.PI),
// mesh.position.y + 9 * Math.cos(camera.beta),
// mesh.position.z + 9 * Math.sin(camera.beta) * Math.sin(Math.PI)
// );
// var ease = new BABYLON.CubicEase();
// ease.setEasingMode(BABYLON.EasingFunction.EASINGMODE_EASEINOUT);
// BABYLON.Animation.CreateAndStartAnimation('at5', camera, 'position', 45, 200, camera.position, cameraPosition, 0, ease);
// BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease);
// }
// }
// }
// })
return scene;
};
const scene = createScene(); //Call the createScene function
scene.debugLayer.show()
// scene.debugLayer.show()
engine.runRenderLoop(function () {
scene.render();
scene.onPointerObservable.add((pointerInfo) => {
switch (pointerInfo.type) {
case BABYLON.PointerEventTypes.POINTERDOWN:
console.log(scene.pointerX, scene.pointerY);
const pickResult = scene.pick(scene.pointerX, scene.pointerY);
if (pickResult.hit) {
console.log('000000000000');
console.log('pickResult',pickResult);
const mesh = pickResult.pickedMesh;
if (camera.target != mesh.position) {
// console.log('fly to')
//
let position = mesh._parentNode._position
if(mesh._parentNode.id=='__root__'){
position = mesh.position
}
const cameraPosition = new BABYLON.Vector3(
mesh.position.x + 9 * Math.sin(camera.beta) * Math.cos(Math.PI),
mesh.position.y + 9 * Math.cos(camera.beta),
mesh.position.z + 9 * Math.sin(camera.beta) * Math.sin(Math.PI)
);
var ease = new BABYLON.CubicEase();
ease.setEasingMode(BABYLON.EasingFunction.EASINGMODE_EASEINOUT);
BABYLON.Animation.CreateAndStartAnimation('at5', camera, 'position', 45, 200, camera.position, cameraPosition, 0, ease);
BABYLON.Animation.CreateAndStartAnimation('at51', camera, 'target', 45, 200, camera.target, position, 0, ease);
}
}
}
})
});
this.engine = engine;
this.scene = scene;
@ -479,7 +498,7 @@ export default {
engine.resize();
});
},
initChart(){
initChart() {
//1
let chartDom = document.getElementById('line1');
chartDom.style.height = this.blockHeight;
@ -496,11 +515,11 @@ export default {
},
legend: {
icon: "stack",
right:0,
right: 0,
data: [{
backgroundColor:'rgb(1,235,239)',
name:'Line 1',
itemStyle:{
backgroundColor: 'rgb(1,235,239)',
name: 'Line 1',
itemStyle: {
// color:'rgb(1,235,239)',
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
@ -512,15 +531,16 @@ export default {
color: 'rgb(5, 158, 163)'
}])
},
textStyle:{
color:'#fff'
textStyle: {
color: '#fff'
}
}, {
name:'Line 2',
textStyle:{
color:'#fff'
}}],
itemStyle:{
name: 'Line 2',
textStyle: {
color: '#fff'
}
}],
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
@ -550,10 +570,10 @@ export default {
boundaryGap: false,
data: ['2日', '3日', '四日', '5日', '6日', '7日', '8日'],
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
}
],
@ -562,10 +582,10 @@ export default {
name: "合格率(%)",
type: 'value',
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
splitLine: {
show: false,
@ -587,7 +607,7 @@ export default {
stack: 'Total',
smooth: true,
lineStyle: {
width: 1,color:'rgb(1,235,239)'
width: 1, color: 'rgb(1,235,239)'
},
showSymbol: false,
@ -615,7 +635,7 @@ export default {
stack: 'Total',
smooth: true,
lineStyle: {
width: 1,color:'rgb(250,205,0)'
width: 1, color: 'rgb(250,205,0)'
},
showSymbol: false,
areaStyle: {
@ -651,14 +671,14 @@ export default {
}
},
legend: {
right:0,
data:[
right: 0,
data: [
{
name:'棒',
textStyle:{
color:'#fff'
name: '棒',
textStyle: {
color: '#fff'
},
itemStyle:{
itemStyle: {
// color:'rgb(1,235,239)',
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
@ -671,11 +691,11 @@ export default {
}])
},
}, {
name:'管',
textStyle:{
color:'#fff'
name: '管',
textStyle: {
color: '#fff'
},
itemStyle:{
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
@ -701,10 +721,10 @@ export default {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月'],
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
}
],
@ -713,10 +733,10 @@ export default {
name: "数量(个)",
type: 'value',
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
splitLine: {
show: true,
@ -736,7 +756,7 @@ export default {
emphasis: {
focus: 'series'
},
itemStyle:{
itemStyle: {
// color:'rgb(1,235,239)',
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
@ -748,18 +768,18 @@ export default {
color: 'rgb(5, 158, 163)'
}])
},
barWidth:15,
barWidth: 15,
data: [120, 132, 101, 134, 90, 230]
},
{
name: '管',
type: 'bar',
stack: 'Ad',
barWidth:20,
barWidth: 20,
emphasis: {
focus: 'series'
},
itemStyle:{
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
@ -785,14 +805,14 @@ export default {
trigger: 'axis'
},
legend: {
right:0,
right: 0,
data: [{
name:'温度',
textStyle:{
color:'#fff'
name: '温度',
textStyle: {
color: '#fff'
},
itemStyle:{
itemStyle: {
// color:'rgb(1,235,239)',
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
@ -820,23 +840,23 @@ export default {
xAxis: {
type: 'category',
boundaryGap: false,
data: ['1', '2', '3', '4', '5', '6','7','8','9','10'],
data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
},
yAxis: {
name:'温度',
name: '温度',
type: 'value',
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
splitLine: {
show: true,
@ -852,8 +872,8 @@ export default {
name: '温度',
type: 'line',
stack: 'Total',
symbolSize:8, //线
symbol:'circle',
symbolSize: 8, //线
symbol: 'circle',
itemStyle: {
// symbol
normal: {
@ -869,7 +889,7 @@ export default {
}
},
smooth: 0.5, // 线
data: [10, 10, 0, 0, -10, -8, 0,10, 10, 0, 0, -10, -8, 0],
data: [10, 10, 0, 0, -10, -8, 0, 10, 10, 0, 0, -10, -8, 0],
lineStyle: {
color: {
type: 'linear',
@ -909,10 +929,10 @@ export default {
containLabel: true
},
legend: {
right:0,
right: 0,
data: ['数量', '合格率'],
textStyle:{
color:'#fff'
textStyle: {
color: '#fff'
}
},
xAxis: [
@ -923,10 +943,10 @@ export default {
type: 'shadow'
},
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
}
],
@ -937,10 +957,10 @@ export default {
min: 0,
interval: 50,
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
axisLabel: {
color:'#ffffff'
color: '#ffffff'
},
splitLine: {
show: true,
@ -959,10 +979,10 @@ export default {
interval: 20,
axisLabel: {
formatter: '{value} %',
color:'#ffffff'
color: '#ffffff'
},
nameTextStyle: {
color:'#ffffff'
color: '#ffffff'
},
splitLine: {
show: true,
@ -983,9 +1003,9 @@ export default {
return value;
}
},
barWidth:15,
barWidth: 15,
data: [120, 132, 101, 134, 90, 230],
itemStyle:{
itemStyle: {
borderRadius: [5, 5, 0, 0],
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
@ -1005,21 +1025,21 @@ export default {
// 255,120,0
tooltip: {
valueFormatter: function (value) {
return value ;
return value;
}
},
symbol:'circle',
symbolSize:8,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
// symbol
normal: {
color:'rgb(255,120,0)'
color: 'rgb(255,120,0)'
}
},
lineStyle:{
color:'rgb(255,120,0)'
lineStyle: {
color: 'rgb(255,120,0)'
},
data:[50, 55, 40, 60, 38, 95]
data: [50, 55, 40, 60, 38, 95]
}
]
};
@ -1029,11 +1049,11 @@ export default {
pieDom.style.height = this.blockHeight;
let pieChart = echarts.init(pieDom);
let pieoption = {
color:['rgb(155,248,249)','rgb(248,189,118)','rgb(110,181,249)'],
color: ['rgb(155,248,249)', 'rgb(248,189,118)', 'rgb(110,181,249)'],
legend: {
top: 'bottom',
textStyle:{
color:'#fff'
textStyle: {
color: '#fff'
}
},
grid: {
@ -1059,7 +1079,7 @@ export default {
center: ['50%', '50%'],
roseType: 'area',
itemStyle: {
borderRadius:2
borderRadius: 2
},
data: [
{ value: 40, name: '棒' },
@ -1075,80 +1095,106 @@ export default {
}
</script>
<style>
.container{
background:url('/public/img/photon_bg.png') no-repeat;
background-size:cover;
.container {
background: url('/public/img/photon_bg.png') no-repeat;
background-size: cover;
}
.pageHeader{
height:70px;
.pageHeader {
height: 70px;
font-size: 28px;
background:none;
border-bottom:none;
position:relative;
display:block;
text-align:center;
color:#ffffff;
padding:1px;
background:url('/public/img/photon_header.png') no-repeat;
background-size:100% 100%;
background: none;
border-bottom: none;
position: relative;
display: block;
text-align: center;
color: #ffffff;
padding: 1px;
background: url('/public/img/photon_header.png') no-repeat;
background-size: 100% 100%;
}
.top-line{
.top-line {
height: 1px;
width: 3%;
position: absolute;
bottom: 13px;
background: rgba(54, 217, 187, 1);
}
.top-line-left{
.top-line-left {
left: 24%;
}
.top-line-right{
.top-line-right {
right: 24%;
}
.flexItem{
.flexItem {
/* padding:40px; */
}
.blockTitle{
color:#fff;
height:40px;
padding-left:10px;
font-size:16px;
line-height:30px;
background:url('/public/img/photon_title.png');
.blockTitle {
color: #fff;
height: 40px;
padding-left: 10px;
font-size: 16px;
line-height: 30px;
background: url('/public/img/photon_title.png');
background-size: 100% 100%;
}
.blockTitleIcon{
width:20px;
height:20px;
margin-top:10px;margin-right:5px;
display:inline-block;
.blockTitleIcon {
width: 20px;
height: 20px;
margin-top: 10px;
margin-right: 5px;
display: inline-block;
animation: rotate 3s infinite;
transform-origin: center center;
background:url('/public/img/photon_title_icon.png');
background: url('/public/img/photon_title_icon.png');
background-size: 100% 100%;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
@keyframes rotate {
0% { transform: rotate(0deg); }
25% { transform: rotate(90deg); }
50% { transform: rotate(180deg); }
75% { transform: rotate(270deg); }
100% { transform: rotate(360deg); }
25% {
transform: rotate(90deg);
}
.row-item{
height:40px!important;
line-height:40px!important;
50% {
transform: rotate(180deg);
}
75% {
transform: rotate(270deg);
}
100% {
transform: rotate(360deg);
}
}
.row-item {
height: 40px !important;
line-height: 40px !important;
/* background-color:rgb(10,63,68)!important; */
}
#scrollTable>.hader{
background:rgb(10,63,68)!important;
background-color:#0a3f44!important;
#scrollTable>.hader {
background: rgb(10, 63, 68) !important;
background-color: #0a3f44 !important;
}
.model {
top: 0;
width: 100%;
height:100%;
height: 100%;
}
#renderCanvas {
width: 100%;
height: 100%
@ -1166,17 +1212,18 @@ export default {
}
.inforBlock {
left:60%;
top:30%;
width:420px;
height:150px;
position:absolute;
font-weight:500;
color:#fff;
padding:20px;
font-size:14px;
box-sizing:border-box;
background: linear-gradient(to bottom left,rgba(25,154,118,.5),rgba(31,44,50,.5));
left: 60%;
top: 30%;
width: 420px;
height: 150px;
position: absolute;
font-weight: 500;
color: #fff;
padding: 20px;
font-size: 14px;
box-sizing: border-box;
background: linear-gradient(to bottom left, rgba(25, 154, 118, .5), rgba(31, 44, 50, .5));
/* border:1px solid rgba(1,235,239,.2); */
.border_corner {
z-index: 2500;
@ -1186,31 +1233,36 @@ export default {
background: rgba(0, 0, 0, 0);
border: 2px solid rgba(54, 217, 187, 1);
}
.border_left_top {
top: 0;
left: 0;
border-right: none;
border-bottom: none;
}
.border_right_top {
top: 0;
right: 0;
border-left: none;
border-bottom: none;
}
.border_left_bottom {
bottom: 0;
left: 0;
border-right: none;
border-top: none;
}
.border_right_bottom {
bottom: 0;
right: 0;
border-left: none;
border-top: none;
}
.title{
.title {
font-size: 20px;
font-weight: 600;
position: absolute;
@ -1223,41 +1275,50 @@ export default {
border-bottom: 3px solid green;
padding: 0 5px 5px; */
}
.infoCantier{
display:flex;
.leftBlock{
width:80px;
margin-right:30px;
.infoCantier {
display: flex;
.leftBlock {
width: 80px;
margin-right: 30px;
}
.rightBlock{
display:flex;
flex-direction:column;
.rightBlock {
display: flex;
flex-direction: column;
justify-content: space-between;
.countWrap{
display:flex;
justify-content:space-between;
width:280px;
margin-top:10px
.countWrap {
display: flex;
justify-content: space-between;
width: 280px;
margin-top: 10px
}
}
}
}
.numberFont{
font-size:22px;font-weight:bold;
.numberFont {
font-size: 22px;
font-weight: bold;
}
.numberUnit{
font-size:12px;
.numberUnit {
font-size: 12px;
}
#dashbordProcess .el-progress-circle{
height: 60px!important;
width: 60px!important;
#dashbordProcess .el-progress-circle {
height: 60px !important;
width: 60px !important;
}
.el-progress--circle .el-progress__text {
display: block;
margin-top: 1px;
color:#fff;
font-size: 20px!important;
font-weight: bold!important;
}
color: #fff;
font-size: 20px !important;
font-weight: bold !important;
}
</style>

View File

@ -3,26 +3,19 @@
<el-main id="topContainer" class="nopadding" style="position: relative;height: 50%;margin-bottom: 10px;">
<el-row :gutter="10">
<el-col :span="activeSpan" style="border-right: 1px solid #eeeeee;position: relative;">
<div class="right-panel btnWrap" v-if="activeName=='8车间'||activeName=='退火'">
<div class="right-panel btnWrap" v-if="activeName == '8车间' || activeName == '退火'">
<el-button type="primary" icon="el-icon-plus" @click="add">新增</el-button>
</div>
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="混料工序" name="8车间">
<scTable
ref="table8"
:apiObj="apiObjMlog"
row-key="id"
stripe
:height="tableHeightHalf"
:params="params8"
hidePagination
hideDo
>
<el-table-column type="index" width="50"/>
<scTable ref="table8" :apiObj="apiObjMlog" row-key="id" stripe :height="tableHeightHalf" :params="params8"
hidePagination hideDo>
<el-table-column type="index" width="50" />
<el-table-column label="配料日期" prop="handle_date">
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
@ -37,59 +30,39 @@
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="180">
<template #default="scope">
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="table_edit(scope.row)" v-auth="'equipment'">
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="primary"
@click="addHandover(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="addHandover(scope.row)" v-auth="'equipment'">
转交接单
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="table_del(scope.row,'8车间')"
v-auth="'equipment'"
>
<el-link type="danger" @click="table_del(scope.row, '8车间')" v-auth="'equipment'">
删除
</el-link>
</template>
</el-table-column>
</scTable>
<div class="tableTitle">交接记录</div>
<scTable
ref="table8"
:apiObj="apiObjHandover"
row-key="id"
stripe
:height="tableHeightHalf"
:params="params82"
hidePagination
hideDo
@selection-change="handleSelectionChange"
>
<el-table-column type="index" width="50"/>
<scTable ref="table8" :apiObj="apiObjHandover" row-key="id" stripe :height="tableHeightHalf"
:params="params82" hidePagination hideDo @selection-change="handleSelectionChange">
<el-table-column type="index" width="50" />
<el-table-column type="selection" width="40" />
<el-table-column label="送料日期" prop="send_date">
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
</el-table-column>
<el-table-column label="批次" prop="batch">
</el-table-column>
<el-table-column label="数量/桶数" prop="count_real">
<el-table-column label="数量/桶数" prop="count">
</el-table-column>
<el-table-column label="每桶重量/kg" prop="count_real_eweight">
<el-table-column label="每桶重量/kg" prop="count_eweight">
</el-table-column>
<el-table-column label="交送人" prop="send_user_name">
</el-table-column>
@ -97,19 +70,11 @@
</el-table-column>
<el-table-column label="操作" fixed="right" align="left">
<template #default="scope">
<el-link
type="primary"
@click="handover_edit(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="handover_edit(scope.row)" v-auth="'equipment'">
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="table_del(scope.row,'8车间')"
v-auth="'equipment'"
>
<el-link type="danger" @click="table_del(scope.row, '8车间')" v-auth="'equipment'">
删除
</el-link>
</template>
@ -117,21 +82,14 @@
</scTable>
</el-tab-pane>
<el-tab-pane label="退火" name="退火">
<scTable
ref="table8"
:apiObj="apiObjMlog"
row-key="id"
stripe
:height="tableHeightHalf"
:params="paramsth"
hidePagination
hideDo
>
<el-table-column type="index" width="50"/>
<scTable ref="table8" :apiObj="apiObjMlog" row-key="id" stripe :height="tableHeightHalf" :params="paramsth"
hidePagination hideDo>
<el-table-column type="index" width="50" />
<el-table-column label="配料日期" prop="handle_date">
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
@ -146,19 +104,11 @@
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="180">
<template #default="scope">
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="table_edit(scope.row)" v-auth="'equipment'">
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="table_del(scope.row,'8车间')"
v-auth="'equipment'"
>
<el-link type="danger" @click="table_del(scope.row, '8车间')" v-auth="'equipment'">
删除
</el-link>
</template>
@ -172,17 +122,9 @@
<el-button type="primary" icon="el-icon-plus" @click="addHandover2">新增</el-button>
</div>
</div>
<scTable
ref="table8"
:apiObj="apiObjHandover"
row-key="id"
stripe
:height="tableHeightHalf"
:params="params82"
hidePagination
hideDo
>
<el-table-column type="index" width="50"/>
<scTable ref="table8" :apiObj="apiObjHandover" row-key="id" stripe :height="tableHeightHalf"
:params="params82" hidePagination hideDo>
<el-table-column type="index" width="50" />
<el-table-column label="交接日期" prop="send_date">
</el-table-column>
<el-table-column label="批次号" prop="batch" show-overflow-tooltip>
@ -195,19 +137,11 @@
</el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="180">
<template #default="scope">
<el-link
type="primary"
@click="editHandover2(scope.row)"
v-auth="'equipment'"
>
<el-link type="primary" @click="editHandover2(scope.row)" v-auth="'equipment'">
编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="danger"
@click="delHandover2(scope.row,'8车间')"
v-auth="'equipment'"
>
<el-link type="danger" @click="delHandover2(scope.row, '8车间')" v-auth="'equipment'">
删除
</el-link>
</template>
@ -221,23 +155,15 @@
<el-button type="primary" @click="getMaterial">领料</el-button>
</div>
</div>
<scTable
ref="table8"
:apiObj="apiObjMetarial"
row-key="id"
stripe
:height="tableHeightHalf"
:params="paramsMaterial"
hidePagination
hideDo
@selection-change="handleSelectionChange"
>
<el-table-column type="index" width="50"/>
<scTable ref="table8" :apiObj="apiObjMetarial" row-key="id" stripe :height="tableHeightHalf"
:params="paramsMaterial" hidePagination hideDo @selection-change="handleSelectionChange">
<el-table-column type="index" width="50" />
<el-table-column type="selection" width="40" />
<el-table-column label="送料日期" prop="send_date">
</el-table-column>
<el-table-column label="产物" prop="material" show-overflow-tooltip>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
<template #default="scope"><span v-if="scope.row.material_out_">{{ scope.row.material_out_.name
}}</span>
</template>
</el-table-column>
<el-table-column label="设备" prop="equipment_name">
@ -276,18 +202,9 @@
</el-row>
</el-tab-pane>
<el-tab-pane label="7车间" name="7车间">
<scTable
ref="table7"
:apiObj="apiObjMtask"
row-key="id"
stripe
:height="tableHeight"
:params="params7"
hidePagination
hideDo
@row-click="rowClick"
>
<el-table-column type="index" width="50"/>
<scTable ref="table7" :apiObj="apiObjMtask" row-key="id" stripe :height="tableHeight" :params="params7"
hidePagination hideDo @row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
<span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
@ -312,7 +229,7 @@
</el-table-column>
<el-table-column label="状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40" type="primary">
<el-tag v-if="scope.row.state !== 40" type="primary">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
@ -322,30 +239,17 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="60">
<template #default="scope">
<el-link
type="primary"
@click="table_submit(scope.row)"
v-auth="'equipment'"
:disabled="scope.row.state==40"
>提交
<el-link type="primary" @click="table_submit(scope.row)" v-auth="'equipment'"
:disabled="scope.row.state == 40">提交
</el-link>
</template>
</el-table-column>
</scTable>
</el-tab-pane>
<el-tab-pane label="10车间" name="10车间">
<scTable
ref="table10"
:apiObj="apiObjMtask"
row-key="id"
stripe
:height="tableHeight"
:params="params10"
hidePagination
hideDo
@row-click="rowClick"
>
<el-table-column type="index" width="50"/>
<scTable ref="table10" :apiObj="apiObjMtask" row-key="id" stripe :height="tableHeight" :params="params10"
hidePagination hideDo @row-click="rowClick">
<el-table-column type="index" width="50" />
<el-table-column label="产品名称" prop="material" show-overflow-tooltip>
<template #default="scope">
<span v-if="scope.row.material_out_">{{ scope.row.material_out_.name }}</span>
@ -367,7 +271,7 @@
</el-table-column>
<el-table-column label="状态" prop="state">
<template #default="scope">
<el-tag v-if="scope.row.state!==40" type="primary">
<el-tag v-if="scope.row.state !== 40" type="primary">
{{ state_[scope.row.state] }}
</el-tag>
<el-tag v-else type="success">
@ -377,12 +281,8 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="60">
<template #default="scope">
<el-link
type="primary"
@click="table_submit(scope.row)"
v-auth="'equipment'"
:disabled="scope.row.state==40"
>提交
<el-link type="primary" @click="table_submit(scope.row)" v-auth="'equipment'"
:disabled="scope.row.state == 40">提交
</el-link>
</template>
</el-table-column>
@ -390,18 +290,18 @@
</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="12" v-if="activeName!=='8车间'&&activeName!=='退火'">
<div v-if="activeName=='退火'" style="font-size:16px;padding:10px 0;border-bottom:1px solid #eeeeee">退火日志</div>
<el-col :span="12" v-if="activeName !== '8车间' && activeName !== '退火'">
<div v-if="activeName == '退火'" style="font-size:16px;padding:10px 0;border-bottom:1px solid #eeeeee">退火日志</div>
<el-form v-else label-width="100px" style="border-bottom: 1px solid #eeeeee;padding: 4px 0;">
<el-row>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item class="infoForm" label="产品名称:">
<span v-if="choseData&&choseData.material_out_">{{ choseData.material_out_.name }}</span>
<span v-if="choseData && choseData.material_out_">{{ choseData.material_out_.name }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
<el-form-item class="infoForm" label="产品型号:">
<span v-if="choseData&&choseData.material_out_">{{ choseData.material_out_.number }}</span>
<span v-if="choseData && choseData.material_out_">{{ choseData.material_out_.number }}</span>
</el-form-item>
</el-col>
<el-col :md="8" :sm="12" :xs="24">
@ -425,19 +325,13 @@
</el-row>
</el-form>
<div style="margin-top: 10px;">
<el-button type="primary" icon="el-icon-plus" @click="add" :disabled="choseData&&choseData.state==40">新增</el-button>
<el-button type="primary" icon="el-icon-plus" @click="add"
:disabled="choseData && choseData.state == 40">新增</el-button>
</div>
<!-- 7车间 -->
<scTable
ref="table"
:data="flogs"
row-key="id"
stripe
:height="rightHeight"
:params="query"
v-if="activeName=='7车间'"
>
<el-table-column type="index" width="40"/>
<scTable ref="table" :data="flogs" row-key="id" stripe :height="rightHeight" :params="query"
v-if="activeName == '7车间'">
<el-table-column type="index" width="40" />
<el-table-column label="锅号" prop="equipment_name">
</el-table-column>
<el-table-column label="产品名称" prop="material_out_">
@ -456,7 +350,7 @@
</el-table-column>
<el-table-column label="合格率" prop="count">
<template #default="scope">
<span>{{ scope.row.count_ok/scope.row.count_real }}</span>
<span>{{ scope.row.count_ok / scope.row.count_real }}</span>
</template>
</el-table-column>
<el-table-column label="不合格原因及数量" align="center">
@ -483,34 +377,19 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="100" align="center">
<template #default="scope">
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
:disabled="choseData.state==40"
>编辑
<el-link type="primary" @click="table_edit(scope.row)" v-auth="'equipment'"
:disabled="choseData.state == 40">编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="primary"
@click="table_del(scope.row)"
:disabled="choseData.state==40"
>删除
<el-link type="primary" @click="table_del(scope.row)" :disabled="choseData.state == 40">删除
</el-link>
</template>
</el-table-column>
</scTable>
<!-- 10车间 -->
<scTable
ref="table"
:data="flogs"
row-key="id"
stripe
:height="rightHeight"
:params="query"
v-if="activeName=='10车间'"
>
<el-table-column type="index" width="40"/>
<scTable ref="table" :data="flogs" row-key="id" stripe :height="rightHeight" :params="query"
v-if="activeName == '10车间'">
<el-table-column type="index" width="40" />
<el-table-column label="班次" prop="shift_name">
</el-table-column>
<el-table-column label="出管总数" prop="count_real">
@ -527,7 +406,7 @@
</el-table-column>
<el-table-column label="合格率" prop="count">
<template #default="scope">
<span>{{ scope.row.count_ok/scope.row.count_real }}</span>
<span>{{ scope.row.count_ok / scope.row.count_real }}</span>
</template>
</el-table-column>
<el-table-column label="不合格原因及数量" align="center">
@ -554,19 +433,11 @@
</el-table-column>
<el-table-column label="操作" fixed="right" width="100" align="center">
<template #default="scope">
<el-link
type="primary"
@click="table_edit(scope.row)"
v-auth="'equipment'"
:disabled="choseData.state==40"
>编辑
<el-link type="primary" @click="table_edit(scope.row)" v-auth="'equipment'"
:disabled="choseData.state == 40">编辑
</el-link>
<el-divider direction="vertical"></el-divider>
<el-link
type="primary"
:disabled="choseData.state==40"
@click="table_del(scope.row)"
>删除
<el-link type="primary" :disabled="choseData.state == 40" @click="table_del(scope.row)">删除
</el-link>
</template>
</el-table-column>
@ -574,45 +445,24 @@
</el-col>
</el-row>
</el-main>
<save-dialog
v-if="dialog.save"
ref="saveDialog"
:mtask = "mtask"
:brothersList="brothersList"
:activeType = "activeName"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<save-dialog v-if="dialog.save" ref="saveDialog" :mtask="mtask" :brothersList="brothersList" :activeType="activeName"
@success="handleSaveSuccess" @closed="dialog.save = false"></save-dialog>
<handover-dialog
v-if="dialog.handover"
ref="handoverDialog2"
@success="handleSuccess"
@closed="dialog.handover = false"
></handover-dialog>
<el-dialog
title="交接单"
ref="handoverDialog"
v-model="handoverVisible"
:size="1000"
destroy-on-close
@closed="handoverVisible = false"
>
<handover-dialog v-if="dialog.handover" ref="handoverDialog2" @success="handleSuccess"
@closed="dialog.handover = false"></handover-dialog>
<el-dialog title="交接单" ref="handoverDialog" v-model="handoverVisible" :size="1000" destroy-on-close
@closed="handoverVisible = false">
<el-form ref="dialogForm" :model="handoverForm" :rules="rules" label-width="120px">
<el-row>
<el-col :md="12" :sm="24">
<el-form-item label="送料日期" prop="send_date">
<el-date-picker
v-model="handoverForm.send_date"
type="date"
value-format="YYYY-MM-DD"
style="width:100%"
/>
<el-date-picker v-model="handoverForm.send_date" type="date" value-format="YYYY-MM-DD" style="width:100%" />
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="接收部门" prop="recive_dept">
<el-select v-model="handoverForm.recive_dept" placeholder="接收部门" clearable style="width:100%" @change="getUserList2">
<el-select v-model="handoverForm.recive_dept" placeholder="接收部门" clearable style="width:100%"
@change="getUserList2">
<el-option v-for="item in group" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
@ -626,35 +476,15 @@
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="接收人" prop="recive_user">
<el-select
v-model="handoverForm.recive_user"
placeholder="接收人"
clearable
style="width:100%"
>
<el-option
v-for="item in userList2"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="handoverForm.recive_user" placeholder="接收人" clearable style="width:100%">
<el-option v-for="item in userList2" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="交送人" prop="send_user">
<el-select
v-model="handoverForm.send_user"
placeholder="交送人"
clearable
style="width:100%"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="handoverForm.send_user" placeholder="交送人" clearable style="width:100%">
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
@ -668,14 +498,14 @@
</el-container>
</template>
<script>
import {generateExcel} from "@/utils/exportExcel.js";
import { generateExcel } from "@/utils/exportExcel.js";
import saveDialog from "./worktask_form.vue";
import handoverDialog from "./handover_form.vue";
import GanttComponent from '@/components/GanttComponent.vue';
export default {
name: "rparty",
components: {
GanttComponent,saveDialog,handoverDialog
GanttComponent, saveDialog, handoverDialog
},
data() {
return {
@ -684,34 +514,34 @@ export default {
projectId: '',
tasks: {
data: [
{number:'GZ20231012',model:'GB2',cate:'100*50*2',count:300,text: "一天任务",start_date: "2023-10-12",id:'2023101800',duration: 2,progress: 1},
{number:'GZ20231013',model:'GB2',cate:'100*50*2',count:300,text: "一天任务",start_date: "2023-10-13",id:'2023101801',duration: 1,progress: 1},
{number:'GZ20231014',model:'GB2',cate:'100*50*2',count:200, text: "一天任务",start_date: "2023-10-14",id:'2023101802',duration: 1,progress: 0.8},
{number:'GZ20231015',model:'ZB2',cate:'100*50*2',count:100, text: "一天任务", start_date: "2023-10-15",id:'2023101803',duration: 1,progress: 0.6},
{ number: 'GZ20231012', model: 'GB2', cate: '100*50*2', count: 300, text: "一天任务", start_date: "2023-10-12", id: '2023101800', duration: 2, progress: 1 },
{ number: 'GZ20231013', model: 'GB2', cate: '100*50*2', count: 300, text: "一天任务", start_date: "2023-10-13", id: '2023101801', duration: 1, progress: 1 },
{ number: 'GZ20231014', model: 'GB2', cate: '100*50*2', count: 200, text: "一天任务", start_date: "2023-10-14", id: '2023101802', duration: 1, progress: 0.8 },
{ number: 'GZ20231015', model: 'ZB2', cate: '100*50*2', count: 100, text: "一天任务", start_date: "2023-10-15", id: '2023101803', duration: 1, progress: 0.6 },
]
},
dialog: {
save: false,
handover:false
handover: false
},
handoverVisible:false,
handoverVisible: false,
// apiObj: this.$API.pm.mtask.list,
params7:{
belong_dept_name:'7车间',
date:'2023-10-24'
params7: {
belong_dept_name: '7车间',
date: '2023-10-24'
},
params10: {
belong_dept_name:'10车间',
date:'2023-10-20'
belong_dept_name: '10车间',
date: '2023-10-20'
},
params8:{
mgroup__belong_dept__name:'8车间',
params8: {
mgroup__belong_dept__name: '8车间',
},
params82:{
send_dept__name:'8车间',
params82: {
send_dept__name: '8车间',
},
paramsth:{
belong_dept_name:'8车间',
paramsth: {
belong_dept_name: '8车间',
},
apiObjMlog: null,
apiObjHandover: null,
@ -719,19 +549,19 @@ export default {
apiObjMtask: null,
apiObj: null,
apiObjMetarial:this.$API.wpm.wmaterial.list,
paramsMaterial:{belong_dept__name:'8车间',page:0},
form:{},
handoverForm:{},
flogs:[],
selectedIds:[],
flogsData: [{id: 1, name: 'John Doe', dob: new Date(1970,1,1)}],
columns : [
apiObjMetarial: this.$API.wpm.wmaterial.list,
paramsMaterial: { belong_dept__name: '8车间', page: 0 },
form: {},
handoverForm: {},
flogs: [],
selectedIds: [],
flogsData: [{ id: 1, name: 'John Doe', dob: new Date(1970, 1, 1) }],
columns: [
{ header: 'Id', key: 'id', wpx: 40 },
{ header: 'Name', key: 'name', wch: 15 },
{ header: 'D.O.B.', key: 'dob', width: 32 }
],
activeName:'8车间',
activeName: '8车间',
selection: [],
state_: {
10: '创建中',
@ -739,45 +569,45 @@ export default {
30: '生产中',
40: '已提交',
},
choseData:{},
mtask:'',
activeSpan:24,
rightHeight:null,
tableHeight:null,
tableHeightHalf:null,
formList:[
choseData: {},
mtask: '',
activeSpan: 24,
rightHeight: null,
tableHeight: null,
tableHeightHalf: null,
formList: [
{
count1:0,
count2:0,
rate:0,
count_no1:0,
count_no2:0,
count_no3:0,
count_noall:0,
material:0,
count1: 0,
count2: 0,
rate: 0,
count_no1: 0,
count_no2: 0,
count_no3: 0,
count_noall: 0,
material: 0,
}
],
peifen_kg:0,
userList:[],
userList2:[],
brothersList:[]
peifen_kg: 0,
userList: [],
userList2: [],
brothersList: []
};
},
created() {
//gantt
gantt.clearAll();
},
mounted(){
mounted() {
let heights = document.getElementById('topContainer').clientHeight;
console.log('heights',heights)
this.tableHeight = (heights-50)+'px';
this.tableHeightHalf = (heights-100)/2+'px';
let rightHeight = heights-100;
this.rightHeight = rightHeight/2+'px';
console.log('heights', heights)
this.tableHeight = (heights - 50) + 'px';
this.tableHeightHalf = (heights - 100) / 2 + 'px';
let rightHeight = heights - 100;
this.rightHeight = rightHeight / 2 + 'px';
let NowDate = new Date();
let month = NowDate.getMonth()>8?NowDate.getMonth()+1:'0'+(NowDate.getMonth()+1)
this.params7.date = NowDate.getFullYear()+'-'+(NowDate.getMonth()+1)+'-'+NowDate.getDate();
this.params10.date = NowDate.getFullYear()+'-'+(NowDate.getMonth()+1)+'-'+NowDate.getDate();
let month = NowDate.getMonth() > 8 ? NowDate.getMonth() + 1 : '0' + (NowDate.getMonth() + 1)
this.params7.date = NowDate.getFullYear() + '-' + (NowDate.getMonth() + 1) + '-' + NowDate.getDate();
this.params10.date = NowDate.getFullYear() + '-' + (NowDate.getMonth() + 1) + '-' + NowDate.getDate();
this.apiObjMtask = this.$API.pm.mtask.daylist;
this.apiObjMlog = this.$API.wpm.mlog.list;
this.apiObjHandover = this.$API.wpm.handover.list;
@ -791,33 +621,33 @@ export default {
this.group = res;
});
},
getUserList(){
getUserList() {
let that = this;
this.$API.system.user.list.req({belong_dept__name:this.activeName,page:0}).then(res=>{
this.$API.system.user.list.req({ belong_dept__name: this.activeName, page: 0 }).then(res => {
that.userList = res;
});
},
getUserList2(){
getUserList2() {
let that = this;
this.$API.system.user.list.req({belong_dept:this.handoverForm.recive_dept,page:0}).then(res=>{
this.$API.system.user.list.req({ belong_dept: this.handoverForm.recive_dept, page: 0 }).then(res => {
that.userList2 = res;
});
},
handleClick(val){
handleClick(val) {
console.log(val.index);
if(val.index==0||val.index==1){
if (val.index == 0 || val.index == 1) {
this.activeSpan = 24
}else{
} else {
this.activeSpan = 12
}
this.choseData = null;
this.flogs = [];
},
table_submit(row){
table_submit(row) {
let obj = {};
obj.ids = [];
obj.ids.push(row.id);
this.$API.pm.mtask.submit.req(obj).then(res=>{
this.$API.pm.mtask.submit.req(obj).then(res => {
debugger;
})
},
@ -834,18 +664,18 @@ export default {
},
//
add() {
if(this.activeName=='8车间'||this.activeName=='退火'){
if (this.activeName == '8车间' || this.activeName == '退火') {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
}else{
if(this.choseData&&this.choseData.id){
} else {
if (this.choseData && this.choseData.id) {
this.dialog.save = true;
this.$nextTick(() => {
this.$refs.saveDialog.open("add");
});
}else{
} else {
this.$message.warning("请选择任务");
}
}
@ -865,7 +695,7 @@ export default {
});
},
//
async table_del(row,type) {
async table_del(row, type) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
}).then(() => {
@ -875,16 +705,16 @@ export default {
}).catch((err) => {
return err;
});
}).catch(() => {});
}).catch(() => { });
},
rowClick(row){
rowClick(row) {
this.choseData = row;
this.mtask = row.id;
this.$API.wpm.mlog.list.req({mtask:row.id,page:0}).then(res=>{
this.$API.wpm.mlog.list.req({ mtask: row.id, page: 0 }).then(res => {
this.flogs = res;
})
this.$TOOL.data.set("MATERIAL_OBJECT", row.material_out_);
if(this.activeName == '10车间'){
if (this.activeName == '10车间') {
this.brothersList = [];
this.brothersList = row.material_out_.brothers;
}
@ -895,19 +725,19 @@ export default {
this.$refs.table8.refresh();
this.$refs.table10.refresh();
},
handleSuccess(){
handleSuccess() {
},
handleQuery() {
// this.$refs.table.queryData(this.query)
debugger;
generateExcel(this.columns,this.flogsData,'测试')
generateExcel(this.columns, this.flogsData, '测试')
},
resetQuery() {
this.query = {};
},
//
addHandover(row){
addHandover(row) {
this.handoverForm.send_date = '';
this.handoverForm.mlog = row.id;
this.handoverForm.batch = row.batch;
@ -919,7 +749,7 @@ export default {
this.handoverForm.recive_user = '';
this.handoverVisible = true;
},
addHandover2(){
addHandover2() {
let that = this;
that.dialog.handover = true;
that.$nextTick(() => {
@ -933,7 +763,7 @@ export default {
this.$refs.handoverDialog2.open("edit").setData(row);
});
},
delHandover2(row){
delHandover2(row) {
this.$confirm(`确定删除吗?`, "提示", {
type: "warning",
}).then(() => {
@ -943,68 +773,73 @@ export default {
}).catch((err) => {
return err;
});
}).catch(() => {});
}).catch(() => { });
},
handover_edit(row){
handover_edit(row) {
Object.assign(this.handoverForm, row);
this.getUserList2();
console.log('this.handoverVisible:',this.handoverForm)
console.log('this.handoverVisible:', this.handoverForm)
this.handoverVisible = true;
},
submitHandover(){
this.$API.wpm.handover.create.req(this.handoverForm).then(res=>{
submitHandover() {
this.$API.wpm.handover.create.req(this.handoverForm).then(res => {
})
},
handleSelectionChange(selection){
handleSelectionChange(selection) {
this.selectedIds = [];
selection.forEach(item => {
this.selectedIds.push(item.id)
});
},
submitMaterialCount(){
submitMaterialCount() {
let obj = {};
obj = this.choseData;
obj.peifen_kg = this.peifen_kg;
this.$API.pm.mtask.update.req(this.mtask,obj).then(res=>{
this.$API.pm.mtask.update.req(this.mtask, obj).then(res => {
console.log('配粉料数');
})
},
getMaterial(){
getMaterial() {
this.$router.push({ name: "mio" })
},
},
};
</script>
<style scoped>
.btnWrap{
.btnWrap {
display: inline-block;
position:absolute;
right:20px;
margin-top:4px;
z-index:100
}
.el-main.nopadding{
padding:0 20px 0 20px
}
.gantt-container {
position: absolute;
right: 20px;
margin-top: 4px;
z-index: 100
}
.el-main.nopadding {
padding: 0 20px 0 20px
}
.gantt-container {
height: 30%;
}
.ganntClass {
}
.ganntClass {
background-color: #fff;
padding: 10px;
border-radius: 4px;
}
.cateItem{
}
.cateItem {
justify-content: space-between;
display:flex;
border-bottom:1px solid #eeeeee;
}
.tableTitle{
height:40px;
display: flex;
border-bottom: 1px solid #eeeeee;
}
.tableTitle {
height: 40px;
font-size: 16px;
padding-top: 5px;
margin-top: 10px;
border-top: 1px solid rgb(238, 238, 238);
}
}
</style>