首页控制台数据

This commit is contained in:
shijing 2023-12-21 10:22:10 +08:00
parent cb2418fcf1
commit 115045b520
3 changed files with 324 additions and 72 deletions

View File

@ -11,16 +11,15 @@ VUE_APP_TITLE = '中建材光子科技有限公司'
#VUE_APP_WS_API = 'ws://localhost:8000' #VUE_APP_WS_API = 'ws://localhost:8000'
# VUE_APP_API_BASEURL = http://222.222.144.147:6013/api # VUE_APP_API_BASEURL = http://222.222.144.147:6013/api
#VUE_APP_API_BASEURL = http://10.99.5.79:20309/api #VUE_APP_API_BASEURL = http://10.99.5.79:20309/api
# VUE_APP_API_BASEURL = http://49.232.14.174:2226/api
# VUE_APP_BASEURL = http://49.232.14.174:2226
# VUE_APP_API_BASEURL = http://127.0.0.1:2226/api # VUE_APP_API_BASEURL = http://127.0.0.1:2226/api
#测试环境
VUE_APP_API_BASEURL = http://49.232.14.174:2226/api
VUE_APP_BASEURL = http://49.232.14.174:2226
# #光子
#光子 # VUE_APP_API_BASEURL = http://49.232.14.174:2250/api
VUE_APP_API_BASEURL = http://49.232.14.174:2250/api # VUE_APP_BASEURL = http://49.232.14.174:2250
VUE_APP_BASEURL = http://49.232.14.174:2250
# 本地端口 # 本地端口
VUE_APP_PORT = 2800 VUE_APP_PORT = 2800

BIN
dist.rar

Binary file not shown.

View File

@ -19,27 +19,27 @@
<div style="padding-top: 20px;display: flex;"> <div style="padding-top: 20px;display: flex;">
<div class="countItem"> <div class="countItem">
<div class="countname">预制棒合格数</div> <div class="countname">预制棒合格数</div>
<p class="countnum">6700</p> <p class="countnum">{{dayPassNum7}}</p>
<p class="countrate">同比前天<span class="redColor"> 8.63%</span></p> <p class="countrate">同比前天<span class="redColor"> 8.63%</span></p>
</div> </div>
<div class="countItem"> <div class="countItem">
<div class="countname">预制管合格数</div> <div class="countname">预制管合格数</div>
<p class="countnum">6700</p> <p class="countnum">{{dayPassNum10}}</p>
<p class="countrate">同比前天<span class="redColor"> 8.63%</span></p> <p class="countrate">同比前天<span class="redColor"> 8.63%</span></p>
</div> </div>
<div class="countItem"> <div class="countItem">
<div class="countname">AVG合格数</div> <div class="countname">AVG合格数</div>
<p class="countnum">6700</p> <p class="countnum">{{dayAVGcountOk}}</p>
<p class="countrate">同比前天<span class="greenColor"> 8.63%</span></p> <p class="countrate">同比前天<span class="greenColor"> 8.63%</span></p>
</div> </div>
<div class="countItem"> <div class="countItem">
<div class="countname">预制棒管交付数</div> <div class="countname">预制棒管交付数</div>
<p class="countnum">6700</p> <p class="countnum">{{ dayPayNum6 }}</p>
<p class="countrate">同比前天<span class="redColor"> 8.63%</span></p> <p class="countrate">同比前天<span class="redColor"> 8.63%</span></p>
</div> </div>
<div class="countItem"> <div class="countItem">
<div class="countname">AVG交付数</div> <div class="countname">AVG交付数</div>
<p class="countnum">6700</p> <p class="countnum">{{dayAVGcountDelivered}}</p>
<p class="countrate">同比前天<span class="redColor"> 8.63%</span></p> <p class="countrate">同比前天<span class="redColor"> 8.63%</span></p>
</div> </div>
</div> </div>
@ -53,11 +53,11 @@
<div style="display: flex;justify-content: space-around;padding-top: 25px;font-size: 20px;"> <div style="display: flex;justify-content: space-around;padding-top: 25px;font-size: 20px;">
<div> <div>
<div>预制棒管</div> <div>预制棒管</div>
<p class="countnum">6700</p> <p class="countnum">{{ monthPayNum6 }}</p>
</div> </div>
<div> <div>
<div>AVG</div> <div>AVG</div>
<p class="countnum">6700</p> <p class="countnum">{{ monthPayNumAVG }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -65,23 +65,23 @@
<el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" /> <el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" />
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<div class="countname">预制棒合格率</div> <div class="countname">预制棒合格率</div>
<p class="countnum">80%</p> <p class="countnum" style="line-height: 82px">{{monthPassRate7}}%</p>
</div> </div>
</div> </div>
<div class="middleItem" style="display: flex;"> <div class="middleItem" style="display: flex;">
<el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" /> <el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" />
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<div class="countname">预制管合格率</div> <div class="countname">预制管合格率</div>
<p class="countnum">80%</p> <p class="countnum" style="line-height: 82px">{{monthPassRate10}}%</p>
<p class="countrate">同比上周 8.63%</p> <!-- <p class="countrate">同比上周 8.63%</p> -->
</div> </div>
</div> </div>
<div class="middleItem" style="display: flex;"> <div class="middleItem" style="display: flex;">
<el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" /> <el-progress type="circle" :stroke-width="15" :show-text="false" :percentage="25" />
<div style="margin-left: 20px;"> <div style="margin-left: 20px;">
<div class="countname">AVG合格率</div> <div class="countname">AVG合格率</div>
<p class="countnum">80%</p> <p class="countnum" style="line-height: 82px">{{monthRateAVG}}%</p>
<p class="countrate">同比上周 8.63%</p> <!-- <p class="countrate">同比上周 8.63%</p> -->
</div> </div>
</div> </div>
</div> </div>
@ -94,7 +94,12 @@
<div style="display: flex;justify-content: space-between;padding: 0 24px;"> <div style="display: flex;justify-content: space-between;padding: 0 24px;">
<div style="color: rgb(30, 30, 30);font-size: 16px;font-weight: 400;line-height: 24px;"> <div style="color: rgb(30, 30, 30);font-size: 16px;font-weight: 400;line-height: 24px;">
本月生产合格趋势</div> 本月生产合格趋势</div>
<div style="color: rgb(122, 121, 121);size: 12px;font-weight: 290;line-height: 22px;">... <div style="color: rgb(122, 121, 121);size: 12px;font-weight: 290;line-height: 22px;">
<el-radio-group v-model="deptName" @change="deptNameChange">
<el-radio label="6车间">6车间</el-radio>
<el-radio label="7车间">7车间</el-radio>
<el-radio label="10车间">10车间</el-radio>
</el-radio-group>
</div> </div>
</div> </div>
<div style="padding: 20px 24px 0 24px;background: #ffffff;"> <div style="padding: 20px 24px 0 24px;background: #ffffff;">
@ -117,12 +122,12 @@
</div> </div>
<div style="padding: 20px 24px 24px 24px;"> <div style="padding: 20px 24px 24px 24px;">
<el-table :data="tableData" style="width: 100%;height: 285px;"> <el-table :data="tableData" style="width: 100%;height: 285px;">
<el-table-column prop="index" label="序号" width="60" /> <el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column prop="name" label="名称" /> <el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="specification" label="规格" /> <el-table-column prop="specification" label="规格"></el-table-column>
<el-table-column prop="specification" label="型号" /> <el-table-column prop="model" label="型号"></el-table-column>
<el-table-column prop="unit" label="单位" /> <el-table-column prop="unit" label="单位"></el-table-column>
<el-table-column prop="count" label="库存" /> <el-table-column prop="count" label="库存"></el-table-column>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -180,7 +185,11 @@
<el-table-column prop="belong_dept_name" label="所在车间" /> <el-table-column prop="belong_dept_name" label="所在车间" />
<el-table-column prop="state" label="设备状态"> <el-table-column prop="state" label="设备状态">
<template #default="scope"> <template #default="scope">
{{ eqState_[scope.row.state] }} <el-tag class="ml-2" type="success" v-if="scope.row.state==10">{{ eqState_[scope.row.state] }}</el-tag>
<el-tag class="ml-2" type="warning" v-if="scope.row.state==20">{{ eqState_[scope.row.state] }}</el-tag>
<el-tag class="ml-2" type="info" v-if="scope.row.state==30">{{ eqState_[scope.row.state] }}</el-tag>
<el-tag class="ml-2" type="danger" v-if="scope.row.state==40">{{ eqState_[scope.row.state] }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -219,17 +228,16 @@ export default {
time: '', time: '',
day: '', day: '',
year_s: '', year_s: '',
day_s: '',
month_s: '', month_s: '',
deptName:'7车间',
yesterday:'',
yearData: [], yearData: [],
monthData: [], monthData: [],
warningNum: 0, warningNum: 0,
warningNum2: 0, warningNum2: 0,
tableData: [ chartData:[],
{ index: 1, name: 'GZKJ-01', specification: '500*30', unit: '个', count: 100 }, tableData: [],
{ index: 2, name: 'GZKJ-02', specification: '500*30', unit: '个', count: 100 },
{ index: 3, name: 'GZKJ-03', specification: '500*30', unit: '个', count: 100 },
{ index: 4, name: 'GZKJ-04', specification: '500*30', unit: '个', count: 100 },
],
equipList: [], equipList: [],
calendarValue: '', calendarValue: '',
eqState_: { eqState_: {
@ -238,6 +246,48 @@ export default {
30: '在修', 30: '在修',
40: '禁用', 40: '禁用',
}, },
dayPassNum7:0,
dayPassNum10:0,
dayPayNum6:0,//
monthPayNum6:0,
monthPassRate7:0,
monthPassRate10:0,
monthRateAVG:0,
dayAVGcountOk:0,
dayAVGcountDelivered:0,
monthPayNumAVG:0,
option:{
grid: { // px
top: '5%',
left: '1%',
right: '1%',
bottom: '5%',
containLabel: true
},
xAxis: {
type: 'category',
axisLabel: {
// show: false, // X
},
data: []
},
yAxis: {
type: 'value',
axisLabel: {
show: false, // X
},
},
series:{
data: [],
type: 'bar',
barMaxWidth: 50,
itemStyle: {
normal: { color: 'rgb(20, 141, 255)' }
}
}
}
} }
}, },
mounted() { mounted() {
@ -246,11 +296,21 @@ export default {
var myDate = new Date(); var myDate = new Date();
let year = myDate.getFullYear(); let year = myDate.getFullYear();
let month = myDate.getMonth() + 1; let month = myDate.getMonth() + 1;
let day = myDate.getDate();
that.year_s = year; that.year_s = year;
that.month_s = month; that.month_s = month;
that.initChart(); that.day_s = day;
let yesterday = new Date(myDate.getTime()-24*60*60*1000);
this.yesterday = yesterday.getFullYear()+"-" + (yesterday.getMonth()+1) + "-" + yesterday.getDate();
that.getdayData();
that.getMonthData();
this.getAVGDayData();
// that.initChart();
this.calendarValue = new Date(); this.calendarValue = new Date();
this.getEquipList() this.getEquipList();
this.getMaterialList();
this.getProductStatistic();
}, },
methods: { methods: {
getEquipList() { getEquipList() {
@ -258,6 +318,14 @@ export default {
this.equipList = res this.equipList = res
}) })
}, },
getMaterialList() {
this.$API.mtm.material.list.req({ page: 0, type: 10 }).then(res => {
this.tableData = res.filter(item=>{
return item.count>0;
});
console.log('getMaterialList',res)
})
},
// Class // Class
bindClass(type) { bindClass(type) {
let classInfo = { let classInfo = {
@ -289,47 +357,232 @@ export default {
interEquipment() { interEquipment() {
this.$router.replace({ path: '/em/equipmentc' }) this.$router.replace({ path: '/em/equipmentc' })
}, },
initChart() { // initChart() {
// // //
var dom = document.getElementById("barCharts"); // var dom = document.getElementById("barCharts");
var myChart = echarts.init(dom); // var myChart = echarts.init(dom);
let option = { // let option = {
grid: { // px // grid: { // px
top: '5%', // top: '5%',
left: '1%', // left: '1%',
right: '1%', // right: '1%',
bottom: '5%', // bottom: '5%',
containLabel: true // containLabel: true
}, // },
xAxis: { // xAxis: {
type: 'category', // type: 'category',
axisLabel: { // axisLabel: {
// show: false, // X // // show: false, // X
}, // },
data: ['1号', '2号', '3号', '4号', '5号', '6号', '7号', '8号', '9号', '10号'] // data: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
}, // },
yAxis: { // yAxis: {
type: 'value', // type: 'value',
axisLabel: { // axisLabel: {
show: false, // X // show: false, // X
}, // },
}, // },
series: [{ // series: [{
data: [10, 9, 8, 11, 12, 10, 9, 10, 8, 9, 10], // data: [10, 9, 8, 11, 12, 10, 9, 10, 8, 9, 10],
type: 'bar', // type: 'bar',
barMaxWidth: 50, // barMaxWidth: 50,
itemStyle: { // itemStyle: {
normal: { color: 'rgb(20, 141, 255)' } // normal: { color: 'rgb(20, 141, 255)' }
} // }
}] // }]
}; // };
myChart.setOption(option, true); // myChart.setOption(option, true);
// },
//&
getdayData(){
let that = this;
let date = that.yesterday;
let obj6 ={
query: {start_date:date,end_date:date},
};
let obj7 ={
query: {start_date:date,end_date:date,dept_name: "7车间"},
};
let obj10 ={
query: {start_date:date,end_date:date,dept_name: "10车间"},
};
//7
that.$API.bi.dataset.exec.req('lineDay', obj7).then((res7) => {
// console.log('7:',res7);
let list7 = res7.data2.ds0;
let sum = 0;
if(list7.length>0){
list7.forEach(item => {
sum = sum+item.合格数;
});
}
this.dayPassNum7 = sum;
// console.log('10:',this.dayPassNum7);
// debugger;
});
//10
that.$API.bi.dataset.exec.req('lineDay', obj10).then((res10) => {
console.log('10车间昨日合格数:',res10);
let list10 = res10.data2.ds0;
let sum = 0;
if(list10.length>0){
list10.forEach(item => {
sum = sum+item.合格数;
});
}
this.dayPassNum10 = sum;
// console.log('10:',this.dayPassNum10);
// debugger;
});
//6
that.$API.bi.dataset.exec.req('saleOutDay', obj6).then((res6) => {
// console.log('6:',res6);
let list6 = res6.data2.ds0;
let sum = 0;
if(list6.length>0){
list6.forEach(item => {
sum = sum+item.交付数;
});
}
this.dayPayNum6 = sum;
// console.log('6:',this.dayPayNum6);
// debugger;
});
},
//&
getMonthData(){
let that = this;
let start_date = that.year_s+'-'+that.month_s+'-01';
let end_date = that.year_s+'-'+that.month_s+'-'+that.day_s;
let obj6 ={
query: {start_date:start_date,end_date:end_date},
};
let obj7 ={
query: {start_date:start_date,end_date:end_date,dept_name: "7车间"},
};
let obj10 ={
query: {start_date:start_date,end_date:end_date,dept_name: "10车间"},
};
//7
that.$API.bi.dataset.exec.req('lineMonth', obj7).then((res7) => {
// console.log('7:',res7);
let list7 = res7.data2.ds0;
let sum = 0,rate=0;
if(list7.length>0){
list7.forEach(item => {
sum = sum+item.合格率;
});
rate = sum/list7.length;
}
this.monthPassRate7 = rate;
// console.log('7:',this.monthPassRate7);
// debugger;
});
//10
that.$API.bi.dataset.exec.req('lineMonth', obj10).then((res10) => {
// console.log('10:',res10);
this.monthPassRate10 = 0;
let list10 = res10.data2.ds0;
let sum = 0,rate=0;
if(list10.length>0){
list10.forEach(item => {
sum = sum+item.合格率;
});
rate = sum/list10.length;
}
this.monthPassRate10 = rate;
// console.log('10:',this.monthPassRate10);
// debugger;
});
//6
that.$API.bi.dataset.exec.req('saleOutMonth', obj6).then((res6) => {
// console.log('6:',res6);
let list6 = res6.data2.ds0;
let sum = 0;
list6.forEach(item => {
sum = sum+item.交付数;
});
this.monthPayNum6 = sum;
// console.log('6:',this.monthPayNum6);
// debugger;
});
//
},
//AVG
getAVGDayData(){
let that = this;
let date = that.yesterday;
this.$API.wpm.otherlog.list.req({product:'AVG',page:0,handle_date__gte:date,handle_date__lte:date}).then(res=>{
let list = res;
let count_ok = 0,count_delivered = 0;
if(list.length>0){
list.forEach(item=>{
count_ok=count_ok+item.count_ok;
count_delivered = count_delivered+item.count_delivered;
})
that.dayAVGcountOk = count_ok;
that.dayAVGcountDelivered = count_delivered;
}
})
}, },
getAVGMonthData(){
let that = this;
let start_date = that.year_s+'-'+that.month_s+'-01';
let end_date = that.year_s+'-'+that.month_s+'-'+that.day_s;
let obj ={
query: {start_date:start_date,end_date:end_date},
};
that.$API.bi.dataset.exec.req('AVGMonth', obj).then((res) => {
let list = res.data2.ds0;
let sum = 0,count_real=0,count_ok=0;
list.forEach(item => {
sum = sum+item.交付数;
count_ok = count_ok+item.count_ok;
count_real = count_real+item.count_real;
});
this.monthPayNumAVG = sum;
if(count_real!=0){
this.monthRateAVG = Math.floor((count_ok/count_real)*100)
}else{
this.monthRateAVG = 0;
}
});
},
getProductStatistic(){
let that = this;
let start_date = that.year_s+'-'+that.month_s+'-01';
let end_date = that.year_s+'-'+that.month_s+'-'+that.day_s;
let obj ={
query: {start_date:start_date,end_date:end_date,dept_name:this.deptName},
};
that.$API.bi.dataset.exec.req('productStatistic', obj).then((res) => {
console.log('productStatistic:',res);
let list = res.data2.ds0;
let chartData = [],xAxisData=[];
for(let i=0;i<that.day_s;i++){
xAxisData.push(i+'日')
for(let j=0;j<list.length;j++){
if(list[j].==i){
chartData[i]=Math.floor((list[j].合格数/list[j].任务数)*100) ;
}
}
}
this.chartData = chartData;
this.option.xAxis.data = xAxisData;
this.option.series.data = chartData;
//
var dom = document.getElementById("barCharts");
var myChart = echarts.init(dom);
myChart.setOption(this.option, true);
});
},
deptNameChange(){
this.getProductStatistic();
},
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.retangleWrap { .retangleWrap {
width: 100%; width: 100%;