This commit is contained in:
2023-08-21 18:14:08 +08:00
parent ec3e96f47d
commit 42934ae71f
2 changed files with 121 additions and 326 deletions

View File

@@ -21,261 +21,53 @@ export const deviceStatusList = (id) => post('api/deviceScreen/deviceStatusList'
/** 1.10近30天设备故障统计 */ /** 1.10近30天设备故障统计 */
export const errCensus = (id) => post('api/deviceScreen/errCensus', {}) export const errCensus = (id) => post('api/deviceScreen/errCensus', {})
export const productionStatistics = () => { /** 生产统计 */
let res = { export const productionStatistics = (id) => post('api/dashboard/productionStatistics', {})
'code': 200, // export const productionStatistics = () => {
'desc': '操作成功', // let res = {
'result': { // 'total': {
'planRes': [ // 'pressWeight': 0,
{ // 'dryWeight': 0,
'workorder_procedure': '压制', // 'sortWeight': 0
'label': '2', // },
'plan_qty': 20000, // 'mixProduction': [
'real_qty': 480 // {
}, // 'value': 0,
{ // 'name': 'string'
'workorder_procedure': '原料', // }
'label': '1', // ],
'plan_qty': 0, // 'pressProduction': {
'real_qty': 0 // 'dailyProductionQty': 0,
}, // 'dailyProductionWeight': 0,
{ // 'equipmentProduction': [
'workorder_procedure': '干燥', // {
'label': '3', // 'name': 'string',
'plan_qty': 0, // 'qty': 0,
'real_qty': 0 // 'weight': 0
}, // }
{ // ]
'workorder_procedure': '包装', // },
'label': '4', // 'finishedProductCompletionRate': [
'plan_qty': 0, // {
'real_qty': 0 // 'name': 'string',
} // 'completed': 0,
], // 'uncompleted': 0
'materialTask': [ // }
{ // ],
'plan_qty': '0', // 'workOrder': [
'real_qty': '0', // {
'label': '1', // 'workOrderCode': 'string',
'workorder_procedure': '原料' // 'equipment': 'string',
} // 'materialCode': 'string',
], // 'customer': 'string',
'finishedRes': [ // 'planned': 0,
{ // 'completed': 0,
'workorder_procedure': '压制', // 'status': 'string',
'label': '2', // 'planStartTime': 'string',
'plan_qty': 20000, // 'startTime': 'string',
'real_qty': 480 // 'endTime': 'string'
}, // }
{ // ]
'workorder_procedure': '原料', // }
'label': '1', // return res
'plan_qty': 0, // }
'real_qty': 0
},
{
'workorder_procedure': '干燥',
'label': '3',
'plan_qty': 0,
'real_qty': 0
},
{
'workorder_procedure': '包装',
'label': '4',
'plan_qty': 0,
'real_qty': 0
}
],
'productionTask': [
{
'workorder_id': '1650768844706480128',
'label': null,
'device_name': '压机5',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 1000000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-25 15:51:44',
'realproduceend_date': '-'
},
{
'workorder_id': '1650404416467193856',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 1000000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-24 15:42:59',
'realproduceend_date': '-'
},
{
'workorder_id': '1649612373595746304',
'label': null,
'device_name': '压机7',
'material_code': 'ZLMCZ1001C122211GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-22 11:29:10',
'realproduceend_date': '-'
},
{
'workorder_id': '1648878346865606656',
'label': null,
'device_name': '压机4',
'material_code': 'ZLMCZ1001C122211GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-20 10:43:55',
'realproduceend_date': '-'
},
{
'workorder_id': '1648195777525485568',
'label': null,
'device_name': '压机2',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 10000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-18 13:34:36',
'realproduceend_date': '-'
},
{
'workorder_id': '1647845461961498624',
'label': null,
'device_name': '压机1',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 10000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '3',
'order_status_name': '生产中',
'shift_type': null,
'realproducestart_date': '2023-04-17 14:18:58',
'realproduceend_date': '-'
},
{
'workorder_id': '1650040960085835776',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 100004,
'qualified_qty': 99807,
'unqualified_qty': 197,
'order_status': '5',
'order_status_name': '完成',
'shift_type': null,
'realproducestart_date': '2023-04-23 15:38:03',
'realproduceend_date': '2023-04-24 12:01:03'
},
{
'workorder_id': '1649231836326563840',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C122211GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 276285,
'qualified_qty': 263808,
'unqualified_qty': 12477,
'order_status': '5',
'order_status_name': '完成',
'shift_type': null,
'realproducestart_date': '2023-04-21 10:10:40',
'realproduceend_date': '2023-04-23 14:17:33'
},
{
'workorder_id': '1648871924408909824',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 0,
'qualified_qty': 0,
'unqualified_qty': 0,
'order_status': '5',
'order_status_name': '完成',
'shift_type': null,
'realproducestart_date': '2023-04-20 10:11:33',
'realproduceend_date': '2023-04-21 09:44:15'
},
{
'workorder_id': '1648869698739240960',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 100000,
'real_qty': 1652528,
'qualified_qty': 1549371,
'unqualified_qty': 103157,
'order_status': '5',
'order_status_name': '完成',
'shift_type': null,
'realproducestart_date': '2023-04-20 10:03:54',
'realproduceend_date': '2023-04-20 10:03:54'
},
{
'workorder_id': '1648860718914801664',
'label': null,
'device_name': '压机3',
'material_code': 'ZLMCZ1001C111122GM001BD20-8',
'material_name': null,
'cust_name': null,
'plan_qty': 10000,
'real_qty': 1652528,
'qualified_qty': 1549371,
'unqualified_qty': 103157,
'order_status': '5',
'order_status_name': '完成',
'shift_type': null,
'realproducestart_date': '-',
'realproduceend_date': '2023-04-20 09:37:49'
}
]
}
}
return res
}

View File

@@ -66,10 +66,10 @@
<div class="list_scroll_title"> <div class="list_scroll_title">
<span>订单</span><span>工序</span><span>设备</span><span>物料号</span><span>生产物料</span><span>厂家</span><span>计划量</span><span>生产量</span><span>生产状态</span><span>计划开始时间</span><span>开始时间</span><span>结束时间</span> <span>订单</span><span>工序</span><span>设备</span><span>物料号</span><span>生产物料</span><span>厂家</span><span>计划量</span><span>生产量</span><span>生产状态</span><span>计划开始时间</span><span>开始时间</span><span>结束时间</span>
</div> </div>
<vue-seamless-scroll :data="taskData" :class-option="classOption" class="content-block-scroll"> <vue-seamless-scroll :data="workOrder" :class-option="classOption" class="content-block-scroll">
<ul class="content-block-scroll-ul"> <ul class="content-block-scroll-ul">
<li v-for="(e, i) in taskData" :key="i"> <li v-for="(e, i) in workOrder" :key="i">
<span>{{e.device_name}}</span><span>{{e.material_code}}</span><span>{{e.plan_qty}}</span><span>{{e.real_qty}}</span><span>{{e.qualified_qty}}</span><span>{{e.unqualified_qty}}</span><span>{{e.order_status_name}}</span><span>{{e.realproducestart_date}}</span><span>{{e.realproduceend_date}}</span> <span>{{e.workOrderCode}}</span><span>{{e.workOrderCode}}</span><span>{{e.equipment}}</span><span>{{e.materialCode}}</span><span>{{e.materialCode}}</span><span>{{e.customer}}</span><span>{{e.planned}}</span><span>{{e.completed}}</span><span>{{e.status}}</span><span>{{e.planStartTime}}</span><span>{{e.startTime}}</span><span>{{e.endTime}}</span>
<!-- <span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.device_name}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.material_code}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.plan_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.real_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.qualified_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.unqualified_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.order_status_name}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.realproducestart_date}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.realproduceend_date}}</span> --> <!-- <span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.device_name}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.material_code}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.plan_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.real_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.qualified_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.unqualified_qty}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.order_status_name}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.realproducestart_date}}</span><span :class="{blue:e.order_status ==='1',yellow:e.order_status ==='2',green:e.order_status ==='3',red:e.order_status ==='4',orange:e.order_status ==='5'}">{{e.realproduceend_date}}</span> -->
</li> </li>
</ul> </ul>
@@ -103,9 +103,7 @@ export default {
materData: [], materData: [],
deviceData: [], deviceData: [],
resData: {}, resData: {},
taskData: [], workOrder: []
realqty: '',
planqty: ''
} }
}, },
computed: { computed: {
@@ -142,45 +140,50 @@ export default {
}, },
async initData () { async initData () {
let res = await productionStatistics() let res = await productionStatistics()
this.resData = res.result this.resData = res
this.showNum1 = (res.result.finishedRes[0].real_qty + '').split('') this.showNum1 = (res.total.pressWeight + '').split('')
this.showNum2 = (res.result.finishedRes[1].real_qty + '').split('') this.showNum2 = (res.total.dryWeight + '').split('')
this.showNum3 = (res.result.finishedRes[2].real_qty + '').split('') this.showNum3 = (res.total.sortWeight + '').split('')
this.taskData = [...res.result.productionTask] this.showNum4 = res.pressProduction.dailyProductionQty
this.showNum5 = res.pressProduction.dailyProductionWeight
this.workOrder = [...res.workOrder]
this.setEchart01()
this.getEchart1() this.getEchart1()
this.getEchart2() this.getEchart2()
this.realqty = res.result.materialTask[0].real_qty
this.planqty = res.result.materialTask[0].plan_qty
this.setEchart01()
// 五种状态:未成产、已下发、生产中、停止、完成 // 五种状态:未成产、已下发、生产中、停止、完成
}, },
setEchart01 () { setEchart01 () {
let data = [ // let data = [
{ // {
value: 10, // value: 10,
name: '1号砖' // name: '1号砖'
}, // },
{ // {
value: 20, // value: 20,
name: '2号砖' // name: '2号砖'
}, // },
{ // {
value: 30, // value: 30,
name: '3号砖' // name: '3号砖'
}, // },
{ // {
value: 40, // value: 40,
name: '4号砖' // name: '4号砖'
}, // },
{ // {
value: 50, // value: 50,
name: '5号砖' // name: '5号砖'
}, // },
{ // {
value: 60, // value: 60,
name: '6号砖' // name: '6号砖'
} // }
] // ]
let dataName = []
this.resData.mixProduction.map(el => {
dataName.push(el.name)
})
let data = this.resData.mixProduction
var option = { var option = {
legend: { legend: {
orient: 'horizontal', orient: 'horizontal',
@@ -193,7 +196,8 @@ export default {
itemGap: 30.86, itemGap: 30.86,
itemWidth: 14.16, itemWidth: 14.16,
itemHeight: 7.38, itemHeight: 7.38,
data: ['1号砖', '2号砖', '3号砖', '4号砖', '5号砖', '6号砖'] data: dataName
// data: ['1号砖', '2号砖', '3号砖', '4号砖', '5号砖', '6号砖']
}, },
color: ['#0966E8', '#39E083', '#ffee0e', '#f975aa', '#32c5ff', '#f7b502'], color: ['#0966E8', '#39E083', '#ffee0e', '#f975aa', '#32c5ff', '#f7b502'],
series: [ series: [
@@ -228,14 +232,14 @@ export default {
getEchart1 () { getEchart1 () {
// 基于准备好的dom初始化echarts实例 // 基于准备好的dom初始化echarts实例
var myChart = echarts.init(document.getElementById('echart_d1')) var myChart = echarts.init(document.getElementById('echart_d1'))
// var finishArr = [] var finishArr = []
// var unFinishArr = [] var unFinishArr = []
// var materArr = [] var materArr = []
// this.materData.map(el => { this.resData.finishedProductCompletionRate.map(el => {
// finishArr.push(el.finished_qty) finishArr.push(el.completed)
// unFinishArr.push(el.unfinished_qty) unFinishArr.push(el.uncompleted)
// materArr.push(el.material_code) materArr.push(el.name)
// }) })
// 指定图表的配置项和数据 // 指定图表的配置项和数据
var option = { var option = {
legend: { legend: {
@@ -263,8 +267,8 @@ export default {
// trigger: 'axis' // trigger: 'axis'
// }, // },
xAxis: { xAxis: {
data: ['1号砖', '2号砖', '3号砖', '4号砖'], // data: ['1号砖', '2号砖', '3号砖', '4号砖'],
// data: materArr, data: materArr,
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: '#fff' color: '#fff'
@@ -297,8 +301,8 @@ export default {
type: 'bar', type: 'bar',
barWidth: 14, barWidth: 14,
stack: '完成情况', stack: '完成情况',
data: [15, 20, 36, 10], // data: [15, 20, 36, 10],
// data: unFinishArr, data: unFinishArr,
itemStyle: { itemStyle: {
normal: { normal: {
color: '#32C5FF' color: '#32C5FF'
@@ -320,8 +324,8 @@ export default {
type: 'bar', type: 'bar',
barWidth: 14, barWidth: 14,
stack: '完成情况', stack: '完成情况',
data: [40, 57, 18, 20], // data: [40, 57, 18, 20],
// data: finishArr, data: finishArr,
itemStyle: { itemStyle: {
normal: { normal: {
color: '#F7B502' color: '#F7B502'
@@ -348,18 +352,17 @@ export default {
}, },
getEchart2 () { getEchart2 () {
// 基于准备好的dom初始化echarts实例 // 基于准备好的dom初始化echarts实例
var lineData = [4, 9, 8, 6, 8, 7, 3, 8] // var lineData = [4, 9, 8, 6, 8, 7, 3, 8]
var barData = [50002, 34120, 48370, 57370, 67582, 90892, 32321, 57370] // var barData = [50002, 34120, 48370, 57370, 67582, 90892, 32321, 57370]
var xData = ['1号机', '2号机', '3号机', '4号机', '5号机', '6号机', '7号机', '8号机'] // var xData = ['1号机', '2号机', '3号机', '4号机', '5号机', '6号机', '7号机', '8号机']
// var lineData = [] var lineData = []
// var barData = [] var barData = []
// var xData = [] var xData = []
// this.deviceData.map(el => { this.resData.pressProduction.equipmentProduction.map(el => {
// console.log(el.produce_qty) lineData.push(el.weight)
// lineData.push(el.produce_qty) barData.push(el.qty)
// barData.push(el.produce_num) xData.push(el.name)
// xData.push(el.device_name) })
// })
var option = { var option = {
legend: { legend: {
top: 20, top: 20,
@@ -611,7 +614,7 @@ export default {
.desc1 .desc1
position absolute position absolute
top .56rem top .56rem
left 2rem left 1.3rem
span span
color #32C5FF color #32C5FF
font-size .16rem font-size .16rem