612 lines
20 KiB
Vue
612 lines
20 KiB
Vue
<template>
|
|
<div class="n_container">
|
|
<div class="n_header">
|
|
<div class="n_header_h1">
|
|
<h1>据控制中心</h1>
|
|
</div>
|
|
</div>
|
|
<div class="n_body_container">
|
|
<div class="n_body_container_wraper">
|
|
<div class="n_content">
|
|
<div class="item_wrap item_wrap_bg">
|
|
<div class="item_tip">
|
|
<div class="item_tip_left">当日拆码垛</div>
|
|
</div>
|
|
<div class="item_content">
|
|
<div id="sortpack_echart_1" style="width: 100%; height: 100%;"></div>
|
|
</div>
|
|
</div>
|
|
<div class="item_wrap item_wrap_bg">
|
|
<div class="item_tip">
|
|
<div class="item_tip_left">当日成品</div>
|
|
</div>
|
|
<div class="item_content">
|
|
<div id="sortpack_echart_2" style="width: 100%; height: 100%;"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="n_content">
|
|
<div class="item_wrap">
|
|
<div class="item_tip">
|
|
<div class="item_tip_left">半托缓存</div>
|
|
</div>
|
|
<div class="item_content">
|
|
<div class="scroll_wrap">
|
|
<ul class="scroll_tab_1">
|
|
<li>货位</li>
|
|
<li>物料编码</li>
|
|
<li>数量</li>
|
|
<li>压机号</li>
|
|
<li>碾次</li>
|
|
<li>入库时间</li>
|
|
</ul>
|
|
<div class="scroll_container_1 scroll_container_2">
|
|
<vue-seamless-scroll :data="HalfSupportCacheList" :class-option="defaultOption1">
|
|
<ul class="scroll-ul_1">
|
|
<li v-for="(e, i) in HalfSupportCacheList" :key="i">
|
|
<div class="scroll-ul_1_div">{{e.point_name}}</div>
|
|
<div class="scroll-ul_1_div">{{e.material_code}}</div>
|
|
<div class="scroll-ul_1_div">{{e.qty}}</div>
|
|
<div class="scroll-ul_1_div">{{e.device_code}}</div>
|
|
<div class="scroll-ul_1_div">{{ e.mix_num }}</div>
|
|
<div class="scroll-ul_1_div">{{ e.instorage_time }}</div>
|
|
</li>
|
|
</ul>
|
|
</vue-seamless-scroll>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="item_wrap">
|
|
<div class="item_tip">
|
|
<div class="item_tip_left">包装区物料</div>
|
|
</div>
|
|
<div class="item_content">
|
|
<div class="scroll_wrap">
|
|
<ul class="scroll_tab_1 scroll_tab_3">
|
|
<li>点位</li>
|
|
<li>物料编码</li>
|
|
<li>数量</li>
|
|
<li>压机号</li>
|
|
<li>碾次</li>
|
|
<li>出入时间</li>
|
|
</ul>
|
|
<div class="scroll_container_1">
|
|
<vue-seamless-scroll :data="PackingAreaTaskList" :class-option="defaultOption2">
|
|
<ul class="scroll-ul_1">
|
|
<li v-for="(e, i) in PackingAreaTaskList" :key="i">
|
|
<div class="scroll-ul_1_div">{{e.point_name}}</div>
|
|
<div class="scroll-ul_1_div">{{e.material_code}}</div>
|
|
<div class="scroll-ul_1_div">{{e.qty}}</div>
|
|
<div class="scroll-ul_1_div">{{e.device_code}}</div>
|
|
<div class="scroll-ul_1_div">{{ e.mix_num }}</div>
|
|
<div class="scroll-ul_1_div">{{ e.instorage_time }}</div>
|
|
</li>
|
|
</ul>
|
|
</vue-seamless-scroll>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tooltip_wrap right_tooltip_wrap" :style="expand ? 'opacity: 1' : 'opacity: 0.1'">
|
|
<div class="tooltip_pages" :style="expand ? 'width: 300px' : 'width: 0'">
|
|
<router-link to="/setup" class="tooltip_page">配置</router-link>
|
|
<router-link to="/hnlktwo" class="tooltip_page">1</router-link>
|
|
<router-link to="/takeshapetwo" class="tooltip_page">2</router-link>
|
|
<router-link to="/firedrytwo" class="tooltip_page">3</router-link>
|
|
<div class="tooltip_page current_page pointer">4</div>
|
|
<router-link to="/pdtwo" class="tooltip_page">5</router-link>
|
|
</div>
|
|
<div class="tooltip_arrow pointer" @click="expandTooltip" v-text="expand ? '<<' : '>>'"></div>
|
|
</div>
|
|
<div class="style_block" style="left: calc(100% / 3);top:0;"></div>
|
|
<div class="style_block" style="background: green;left: calc(100% / 3);top:calc(100% / 3);"></div>
|
|
<div class="style_block" style="left: calc(100% / 3);bottom: 0"></div>
|
|
<div class="style_block" style="background: green;left: calc(200% / 3);top:0;"></div>
|
|
<div class="style_block" style="left: calc(200% / 3);top:calc(100% / 3);"></div>
|
|
<div class="style_block" style="background: blue;left: calc(200% / 3);bottom: 0"></div>
|
|
<div class="style_block" style="background: green;left: 0;top:0;"></div>
|
|
<div class="style_block" style="left: 0;top:calc(100% / 3);"></div>
|
|
<div class="style_block" style="background: green;left: 0;bottom: 0"></div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { sortingAndPackaging } from '@js/getData2'
|
|
export default {
|
|
data () {
|
|
return {
|
|
interTime: this.$store.getters.setTime,
|
|
timer: null,
|
|
expand: false,
|
|
myCharts1: '',
|
|
myCharts2: '',
|
|
SortingDayList: [],
|
|
PackingAreaTaskList: [],
|
|
HalfSupportCacheList: [],
|
|
CPDayList: []
|
|
}
|
|
},
|
|
computed: {
|
|
defaultOption1 () {
|
|
return {
|
|
step: 0.4, // 数值越大速度滚动越快
|
|
limitMoveNum: 9, // 开始无缝滚动的数据量 this.dataList.length
|
|
hoverStop: true, // 是否开启鼠标悬停stop
|
|
direction: 1, // 0向下 1向上 2向左 3向右
|
|
openWatch: true, // 开启数据实时监控刷新dom
|
|
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
|
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
|
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
|
|
}
|
|
},
|
|
defaultOption2 () {
|
|
return {
|
|
step: 0.4, // 数值越大速度滚动越快
|
|
limitMoveNum: 8, // 开始无缝滚动的数据量 this.dataList.length
|
|
hoverStop: true, // 是否开启鼠标悬停stop
|
|
direction: 1, // 0向下 1向上 2向左 3向右
|
|
openWatch: true, // 开启数据实时监控刷新dom
|
|
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
|
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
|
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
|
|
}
|
|
},
|
|
defaultOption3 () {
|
|
return {
|
|
step: 0.4, // 数值越大速度滚动越快
|
|
limitMoveNum: 8, // 开始无缝滚动的数据量 this.dataList.length
|
|
hoverStop: true, // 是否开启鼠标悬停stop
|
|
direction: 1, // 0向下 1向上 2向左 3向右
|
|
openWatch: true, // 开启数据实时监控刷新dom
|
|
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
|
|
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
|
|
waitTime: 1000 // 单步运动停止的时间(默认值1000ms)
|
|
}
|
|
}
|
|
},
|
|
mounted () {
|
|
this._sortingAndPackaging()
|
|
this.refresh()
|
|
},
|
|
beforeDestroy () {
|
|
clearInterval(this.timer)
|
|
},
|
|
methods: {
|
|
refresh () {
|
|
this.timer = setInterval(() => {
|
|
this._sortingAndPackaging()
|
|
}, this.interTime)
|
|
},
|
|
async _sortingAndPackaging () {
|
|
let res = await sortingAndPackaging()
|
|
if (res.code === 200) {
|
|
if (res.result.hasOwnProperty('SortingDayList')) {
|
|
this.SortingDayList = [...res.result.SortingDayList]
|
|
if (this.SortingDayList.length) {
|
|
this.setEchart1()
|
|
}
|
|
}
|
|
if (res.result.hasOwnProperty('PackingAreaTaskList')) {
|
|
this.PackingAreaTaskList = [...res.result.PackingAreaTaskList]
|
|
}
|
|
if (res.result.hasOwnProperty('HalfSupportCacheList')) {
|
|
this.HalfSupportCacheList = [...res.result.HalfSupportCacheList]
|
|
}
|
|
if (res.result.hasOwnProperty('CPDayList')) {
|
|
this.CPDayList = [...res.result.CPDayList]
|
|
if (this.CPDayList.length) {
|
|
this.setEchart2()
|
|
}
|
|
}
|
|
}
|
|
},
|
|
setEchart1 () {
|
|
let barName = []
|
|
let barData1 = []
|
|
let barData2 = []
|
|
this.SortingDayList.map(el => {
|
|
barName.push(el.material_code)
|
|
barData1.push(el.total_stripping_qty)
|
|
barData2.push(el.total_palletizing_qty)
|
|
})
|
|
let option = {
|
|
grid: {
|
|
top: 50,
|
|
left: 0,
|
|
right: 0,
|
|
bottom: 0,
|
|
containLabel: true
|
|
},
|
|
legend: {
|
|
icon: 'rect',
|
|
textStyle: {
|
|
color: '#fff',
|
|
fontSize: 14,
|
|
lineHeight: 14
|
|
},
|
|
itemGap: 30.86,
|
|
itemWidth: 14.16,
|
|
itemHeight: 7.38,
|
|
data: [{name: '拆垛数', itemStyle: {color: '#0E90FD'}}, {name: '码垛数', itemStyle: {color: '#33CCCC'}}]
|
|
},
|
|
xAxis: {
|
|
type: 'category',
|
|
axisTick: {
|
|
show: false
|
|
},
|
|
axisLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
width: 2,
|
|
color: '#8FABBF'
|
|
}
|
|
},
|
|
axisLabel: {
|
|
interval: 0,
|
|
textStyle: {
|
|
color: '#8FABBF',
|
|
fontSize: 16
|
|
}
|
|
// rotate: 50
|
|
},
|
|
data: barName
|
|
},
|
|
yAxis: {
|
|
type: 'value',
|
|
name: '单位:块',
|
|
axisLine: {
|
|
show: false
|
|
},
|
|
splitNumber: 2,
|
|
axisTick: {
|
|
show: false
|
|
},
|
|
axisLabel: {
|
|
textStyle: {
|
|
color: '#8FABBF',
|
|
fontSize: 14
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
type: [8, 4],
|
|
dashOffset: 4,
|
|
color: '#8FABBF'
|
|
}
|
|
}
|
|
},
|
|
series: [
|
|
{
|
|
name: '拆垛数',
|
|
type: 'bar',
|
|
barWidth: '8',
|
|
barGap: '200%',
|
|
itemStyle: {
|
|
normal: {
|
|
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 1,
|
|
color: 'rgba(96,112,128,0.10)',
|
|
opacity: 1
|
|
},
|
|
{
|
|
offset: 0,
|
|
color: '#0E90FD',
|
|
opacity: 0.1
|
|
}
|
|
])
|
|
}
|
|
},
|
|
data: barData1
|
|
},
|
|
{
|
|
name: '码垛数',
|
|
type: 'bar',
|
|
barWidth: '8',
|
|
barGap: '200%',
|
|
itemStyle: {
|
|
normal: {
|
|
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 0,
|
|
color: '#33CCCC',
|
|
opacity: 1
|
|
},
|
|
{
|
|
offset: 1,
|
|
color: 'rgba(31,89,89,0.25)',
|
|
opacity: 0.25
|
|
}
|
|
])
|
|
}
|
|
},
|
|
data: barData2
|
|
}
|
|
]
|
|
}
|
|
let echart = document.getElementById('sortpack_echart_1')
|
|
if (this.myCharts1 !== '') {
|
|
this.myCharts1.dispose()
|
|
}
|
|
if (echart !== null) {
|
|
this.myCharts1 = this.$echarts.init(echart)
|
|
this.myCharts1.setOption(option)
|
|
window.addEventListener('resize', () => {
|
|
this.myCharts1.resize()
|
|
})
|
|
}
|
|
},
|
|
setEchart2 () {
|
|
let barName = []
|
|
let barData1 = []
|
|
let barData2 = []
|
|
let barData3 = []
|
|
this.CPDayList.map(el => {
|
|
barName.push(el.material_code)
|
|
barData1.push(el.inventory_qty)
|
|
barData2.push(el.qualified_in_qty)
|
|
barData3.push(el.unqualified_in_qty)
|
|
})
|
|
let option = {
|
|
grid: {
|
|
top: 50,
|
|
left: 0,
|
|
right: 0,
|
|
bottom: 0,
|
|
containLabel: true
|
|
},
|
|
legend: {
|
|
icon: 'rect',
|
|
textStyle: {
|
|
color: '#fff',
|
|
fontSize: 14,
|
|
lineHeight: 14
|
|
},
|
|
itemGap: 30.86,
|
|
itemWidth: 14.16,
|
|
itemHeight: 7.38,
|
|
data: [{name: '库存数', itemStyle: {color: '#0E90FD'}}, {name: '合格入库', itemStyle: {color: '#33CCCC'}}, {name: '不合格入库', itemStyle: {color: '#EAAD24'}}]
|
|
},
|
|
xAxis: {
|
|
type: 'category',
|
|
axisTick: {
|
|
show: false
|
|
},
|
|
axisLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
width: 2,
|
|
color: '#8FABBF'
|
|
}
|
|
},
|
|
axisLabel: {
|
|
interval: 0,
|
|
textStyle: {
|
|
color: '#8FABBF',
|
|
fontSize: 16
|
|
}
|
|
// rotate: 50
|
|
},
|
|
data: barName
|
|
},
|
|
yAxis: {
|
|
type: 'value',
|
|
name: '单位:块',
|
|
axisLine: {
|
|
show: false
|
|
},
|
|
splitNumber: 2,
|
|
axisTick: {
|
|
show: false
|
|
},
|
|
axisLabel: {
|
|
textStyle: {
|
|
color: '#8FABBF',
|
|
fontSize: 14
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
type: [8, 4],
|
|
dashOffset: 4,
|
|
color: '#8FABBF'
|
|
}
|
|
}
|
|
},
|
|
series: [
|
|
{
|
|
name: '库存数',
|
|
type: 'bar',
|
|
barWidth: '8',
|
|
barGap: '200%',
|
|
itemStyle: {
|
|
normal: {
|
|
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 1,
|
|
color: 'rgba(96,112,128,0.10)',
|
|
opacity: 1
|
|
},
|
|
{
|
|
offset: 0,
|
|
color: '#0E90FD',
|
|
opacity: 0.1
|
|
}
|
|
])
|
|
}
|
|
},
|
|
data: barData1
|
|
},
|
|
{
|
|
name: '合格入库',
|
|
type: 'bar',
|
|
barWidth: '8',
|
|
barGap: '200%',
|
|
itemStyle: {
|
|
normal: {
|
|
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 0,
|
|
color: '#33CCCC',
|
|
opacity: 1
|
|
},
|
|
{
|
|
offset: 1,
|
|
color: 'rgba(31,89,89,0.25)',
|
|
opacity: 0.25
|
|
}
|
|
])
|
|
}
|
|
},
|
|
data: barData2
|
|
},
|
|
{
|
|
name: '不合格入库',
|
|
type: 'bar',
|
|
barWidth: '8',
|
|
barGap: '200%',
|
|
itemStyle: {
|
|
normal: {
|
|
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
|
|
{
|
|
offset: 0,
|
|
color: '#B68845',
|
|
opacity: 1
|
|
},
|
|
{
|
|
offset: 1,
|
|
color: 'rgba(134,98,45,0.25)',
|
|
opacity: 0.25
|
|
}
|
|
])
|
|
}
|
|
},
|
|
data: barData3
|
|
}
|
|
]
|
|
}
|
|
let echart = document.getElementById('sortpack_echart_2')
|
|
if (this.myCharts2 !== '') {
|
|
this.myCharts2.dispose()
|
|
}
|
|
if (echart !== null) {
|
|
this.myCharts2 = this.$echarts.init(echart)
|
|
this.myCharts2.setOption(option)
|
|
window.addEventListener('resize', () => {
|
|
this.myCharts2.resize()
|
|
})
|
|
}
|
|
},
|
|
expandTooltip () {
|
|
this.expand = !this.expand
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="stylus" scoped>
|
|
@import '~@css/mixin'
|
|
.n_container
|
|
position relative
|
|
_wh(100%, 100%)
|
|
overflow hidden
|
|
.n_header
|
|
position relative
|
|
z-index 0
|
|
_wh(100%, 8%)
|
|
_bis('../../../images/bg_header.jpg')
|
|
.n_header_h1
|
|
_wh(100%, 100%)
|
|
_fj(row, flex-start)
|
|
_bis('../../../images/top_right.png',auto,,left)
|
|
h1
|
|
_font(32px, 1, #fff,,right)
|
|
padding-bottom 2%
|
|
letter-spacing 6px
|
|
font-family "阿里妈妈数黑体" !important
|
|
padding-left 3px
|
|
.n_body_container
|
|
position relative
|
|
z-index 8
|
|
_wh(100%, 92%)
|
|
padding 10px 50px 20px 40px
|
|
_bis('../../../images/bg_content_r.jpg')
|
|
.n_body_container_wraper
|
|
_wh(100%, 100%)
|
|
.n_content
|
|
_wh(100%, 49.75%)
|
|
_fj(row)
|
|
&:nth-child(2)
|
|
margin-top .5%
|
|
.item_wrap
|
|
_wh(calc(50% - 8px), 100%)
|
|
&:nth-child(2)
|
|
margin-left 16px
|
|
.item_wrap_bg
|
|
background-image linear-gradient(to bottom, #070b1c, transparent)
|
|
.item_tip
|
|
_wh(100%, 32px)
|
|
line-height 32px
|
|
padding 0 10px
|
|
_bis('../../../images/bg_title_s.png')
|
|
.item_tip_left
|
|
_wh(60%, 100%)
|
|
font-family "SourceHanSansCN"
|
|
_font(18px, inherit, #fff, 700, left)
|
|
letter-spacing 2px
|
|
text-shadow 0 0 9px #159AFF
|
|
padding-left 34px
|
|
_bis('../../../images/bg_title_tip.png', 22px, 22px, left)
|
|
.item_content
|
|
_wh(100%, calc(100% - 32px))
|
|
padding 10px 0
|
|
.scroll_wrap
|
|
_wh(100%, 100%)
|
|
padding 0 5px
|
|
border 1px solid rgba(8,205,248,0.3)
|
|
.scroll_tab_1
|
|
_wh(100%, 40px)
|
|
border-bottom 1px solid rgba(8,205,248,0.3)
|
|
li
|
|
float left
|
|
width 16%
|
|
_font(14px,40px,#78B1DE,,center)
|
|
word-wrap break-word
|
|
word-break break-all
|
|
white-space nowrap
|
|
padding 0 5px
|
|
overflow hidden
|
|
box-sizing border-box
|
|
&:nth-child(6)
|
|
width 20%
|
|
.scroll_container_1
|
|
width 100%
|
|
height calc(100% - 40px)
|
|
overflow hidden
|
|
.scroll-ul_1
|
|
li
|
|
_wh(100%, 44px)
|
|
border-bottom 1px solid rgba(8,205,248,0.3)
|
|
&:nth-child(even)
|
|
background rgba(1,24,52,0.60)
|
|
box-shadow inset 0px 1px 0px 0px rgba(13,89,115,0.3)
|
|
.scroll-ul_1_div
|
|
float left
|
|
_wh(16%, 44px)
|
|
_fj(row, center)
|
|
_font(14px, 16px, #fff,,center)
|
|
word-wrap break-word
|
|
word-break break-all
|
|
// white-space nowrap
|
|
padding 0 5px
|
|
overflow hidden
|
|
&:nth-child(6)
|
|
width 20%
|
|
</style>
|