568 lines
18 KiB
Vue
568 lines
18 KiB
Vue
<!--
|
||
* @Author: zwq
|
||
* @Date: 2021-07-19 15:18:30
|
||
* @LastEditors: zhp
|
||
* @LastEditTime: 2024-03-26 09:57:35
|
||
* @Description:
|
||
-->
|
||
<template>
|
||
<div id="container" ref="container" class="visual-container" :style="styles">
|
||
<el-row class="container-title" :style="{
|
||
height: 88 + 'px',
|
||
lineHeight: 88 + 'px',
|
||
fontSize: 31 + 'px'
|
||
}">
|
||
<img src="../../assets/img/logo.png" style="width:1.1em;position:relative;top:.22em" alt="">
|
||
许昌安彩AGV原片周转看板
|
||
<h3 class="unit">单位:河南汇融数字科技有限公司</h3>
|
||
<h3 class="time">{{ times }}</h3>
|
||
<!-- <el-button
|
||
type="text"
|
||
class="title-button"
|
||
:style="{ right: 33 + 'px', top: 37 + 'px' }"
|
||
@click="changeFullScreen"
|
||
>
|
||
<svg-icon v-if="isFullScreen" icon-class="unFullScreenView" />
|
||
<svg-icon v-else icon-class="fullScreenView" />
|
||
</el-button> -->
|
||
</el-row>
|
||
<el-row class="container-main flex-col" type="flex">
|
||
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="15 * beilv" type="flex" class="flex-1">
|
||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||
<base-container :beilv="1" :size="'middle'" :title="'搬运任务'" :title-icon="'task'" :back="'energy'">
|
||
<base-table1 :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="qualityYearTableProps"
|
||
:table-data="qualityYearList" />
|
||
</base-container>
|
||
</el-col>
|
||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||
<base-container :beilv="1" :size="'middle'" :title="'周转进度'" :title-icon="'order'" :back="'energy'">
|
||
<div style="width:100%; overflow: hidden scroll;">
|
||
<el-row v-for="op in orderProcessList" :key="op.id" style="margin-bottom: 1em">
|
||
<p v-if="op.outRate === 1" class="now-secondary-title" style="color:#4679FD">
|
||
<i class="el-icon-check" />
|
||
{{ op.name }}
|
||
</p>
|
||
<p v-else class="now-secondary-title">{{ op.name }}</p>
|
||
<el-progress define-back-color="rgba(32, 57, 96, 1)" text-color="white" :percentage="op.outRate * 100"
|
||
class="custom-progress-bar" />
|
||
</el-row>
|
||
</div>
|
||
</base-container>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
<el-row :style="{ padding: '0 ' + 9 + 'px' }" :gutter="12 * beilv" type="flex" class="flex-1">
|
||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||
<base-container :beilv="1" :height="256" :size="'middle'" :title="'库存管理'" :title-icon="'productLine'"
|
||
:back="'energy'">
|
||
<base-table :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="inventoryTableProps"
|
||
:table-data="inventoryList" />
|
||
</base-container>
|
||
</el-col>
|
||
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
|
||
<base-container :beilv="1" :height="318 + 338 + 16" :size="'middle'" :title="'库位信息'" :title-icon="'info'"
|
||
:back="'energy'">
|
||
<base-table2 :page="1" :limit="999" :show-index="false" :beilv="1" :table-config="locationTableProps"
|
||
:table-data="locationList" />
|
||
</base-container>
|
||
</el-col>
|
||
</el-row>
|
||
</el-row>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import baseContainer from './components/baseContainer'
|
||
import baseTable1 from './components/baseTable'
|
||
import baseTable from './components/baseTable'
|
||
import baseTable2 from './components/baseTable'
|
||
import screenfull from 'screenfull'
|
||
const locationTableProps = [
|
||
{
|
||
prop: 'eqName',
|
||
label: '库位名称'
|
||
},
|
||
{
|
||
prop: 'eqCode',
|
||
label: '存放物件名称'
|
||
},
|
||
{
|
||
prop: 'productCode',
|
||
label: '编码'
|
||
},
|
||
{
|
||
prop: 'level',
|
||
label: '存放位置',
|
||
// subcomponent: alarmLevel,
|
||
// align: 'center'
|
||
},
|
||
{
|
||
prop: 'unit',
|
||
label: '单位',
|
||
// subcomponent: alarmLevel,
|
||
// align: 'center'
|
||
},
|
||
{
|
||
prop: 'product',
|
||
label: '数量'
|
||
},
|
||
{
|
||
prop: 'time',
|
||
label: '入库时间'
|
||
}
|
||
]
|
||
|
||
const locationList = [
|
||
{ eqName: '备件库D-D区-14', eqCode: '原件', level: '中', product: '12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '辅料库D-D区-1', eqCode: '螺丝刀', level: '下', product: ' 123', productCode: 'WLXX20210415000158', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 辅料库A-D区-1', eqCode: '清洗剂', level: '上', product: ' 123', productCode: 'WLXX20210415000157', unit: '瓶', time: '2023年9月10日'
|
||
},
|
||
{ eqName: '备件库D-D区-14', eqCode: '原件', level: '中', product: '12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '辅料库D-D区-1', eqCode: '螺丝刀', level: '下', product: ' 123', productCode: 'WLXX20210415000158', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 辅料库A-D区-1', eqCode: '清洗剂', level: '上', product: ' 123', productCode: 'WLXX20210415000157', unit: '瓶', time: '2023年9月10日'
|
||
},
|
||
{ eqName: '备件库D-D区-14', eqCode: '原件', level: '中', product: '12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '辅料库D-D区-1', eqCode: '螺丝刀', level: '下', product: ' 123', productCode: 'WLXX20210415000158', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 辅料库A-D区-1', eqCode: '清洗剂', level: '上', product: ' 123', productCode: 'WLXX20210415000157', unit: '瓶', time: '2023年9月10日'
|
||
},
|
||
{ eqName: '备件库D-D区-14', eqCode: '原件', level: '中', product: '12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '辅料库D-D区-1', eqCode: '螺丝刀', level: '下', product: ' 123', productCode: 'WLXX20210415000158', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 辅料库A-D区-1', eqCode: '清洗剂', level: '上', product: ' 123', productCode: 'WLXX20210415000157', unit: '瓶', time: '2023年9月10日'
|
||
},
|
||
{ eqName: '备件库D-D区-14', eqCode: '原件', level: '中', product: '12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '辅料库D-D区-1', eqCode: '螺丝刀', level: '下', product: ' 123', productCode: 'WLXX20210415000158', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 辅料库A-D区-1', eqCode: '清洗剂', level: '上', product: ' 123', productCode: 'WLXX20210415000157', unit: '瓶', time: '2023年9月10日'
|
||
}
|
||
]
|
||
const inventoryTableProps = [
|
||
{
|
||
prop: 'eqName',
|
||
label: '物件名称'
|
||
},
|
||
{
|
||
prop: 'eqCode',
|
||
label: '存放区域'
|
||
},
|
||
{
|
||
prop: 'productCode',
|
||
label: '编码'
|
||
},
|
||
{
|
||
prop: 'level',
|
||
label: '规格',
|
||
// subcomponent: alarmLevel,
|
||
// align: 'center'
|
||
},
|
||
{
|
||
prop: 'unit',
|
||
label: '单位',
|
||
// subcomponent: alarmLevel,
|
||
// align: 'center'
|
||
},
|
||
{
|
||
prop: 'product',
|
||
label: '数量'
|
||
},
|
||
{
|
||
prop: 'time',
|
||
label: '入库时间'
|
||
}
|
||
]
|
||
|
||
const inventoryList = [
|
||
{ eqName: '原片', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '磨轮', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20210415000158', unit: '片', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 包装辅材', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20210415000157', unit: '片', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 螺丝刀', eqCode: '备件库', level: '', product: ' 123', productCode: 'WLXX20220919000147', unit: '个', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 清洗剂', eqCode: '备件库', level: '200mm', product: ' 123', productCode: 'WLXX20220919000147', unit: '瓶', time: '2023年9月10日' },
|
||
{ eqName: '原片', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20220919000147', unit: '片', time: '2023年9月10日' },
|
||
{ eqName: '磨轮', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20210415000158', unit: '片', time: '2023年9月10日' },
|
||
{
|
||
eqName: ' 包装辅材', eqCode: '辅料库', level: '133*289', product: ' 12323', productCode: 'WLXX20210415000157', unit: '片', time: '2023年9月10日'
|
||
},
|
||
{
|
||
eqName: ' 螺丝刀', eqCode: '备件库', level: '', product: ' 123', productCode: 'WLXX20220919000147', unit: '个', time: '2023年9月10日'
|
||
},
|
||
{
|
||
eqName: ' 清洗剂', eqCode: '备件库', level: '200mm', product: ' 123', productCode: 'WLXX20220919000147', unit: '瓶', time: '2023年9月10日'
|
||
}
|
||
]
|
||
const qualityYearTableProps = [
|
||
{
|
||
prop: 'eqName',
|
||
label: '作业号'
|
||
},
|
||
{
|
||
prop: 'eqCode',
|
||
label: '执行叉车'
|
||
},
|
||
{
|
||
prop: 'level',
|
||
label: '库位',
|
||
// subcomponent: alarmLevel,
|
||
// align: 'center'
|
||
},
|
||
{
|
||
prop: 'product',
|
||
label: '成品规格'
|
||
},
|
||
{
|
||
prop: 'productCode',
|
||
label: '成品编码'
|
||
},
|
||
{
|
||
prop: 'time',
|
||
label: '时间'
|
||
}
|
||
]
|
||
|
||
const qualityYearList = [
|
||
{ eqName: 'RQ20230910', eqCode: '1-01', level: '成品库D-D区-14', product: ' 2.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月10日' },
|
||
{ eqName: 'RQ20230911', eqCode: '1-02', level: '成品库A-A区-1', product: ' 3.2-1033*2089', productCode: 'CP563232323', time: '2023年9月11日' },
|
||
{ eqName: 'RQ20230912', eqCode: '2-01', level: '成品库D-D区-1', product: ' 1.2-1033*2089', productCode: 'CP5651696321', time: '2023年9月12日' },
|
||
{ eqName: 'RQ20230913', eqCode: '1-03', level: '成品库A-B区-1', product: ' 2.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月13日' },
|
||
{ eqName: 'RQ20230914', eqCode: '2-02', level: '成品库D-D区-2', product: ' 3.2-1033*2089', productCode: 'CP565169322', time: '2023年9月14日' },
|
||
{ eqName: 'RQ20230915', eqCode: '1-01', level: '成品库B-A区-4', product: ' 1.2-1033*2089', productCode: 'CP56516962323', time: '2023年9月15日' },
|
||
{ eqName: 'RQ20230916', eqCode: '1-03', level: '成品库A-A区-2', product: ' 2.2-1033*2089', productCode: 'CP5651694343', time: '2023年9月16日' },
|
||
{ eqName: 'RQ20230917', eqCode: '1-02', level: '成品库C-D区-12', product: '4.2-1033*2089', productCode: 'CP5651692323', time: '2023年9月17日' },
|
||
{ eqName: 'RQ20230918', eqCode: '2-01', level: '成品库A-D区-4', product: ' 5.2-1033*2089', productCode: 'CP5651696232', time: '2023年9月18日' },
|
||
{ eqName: 'RQ20230919', eqCode: '2-02', level: '成品库C-D区-9', product: ' 1.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月19日' },
|
||
{ eqName: 'RQ20230920', eqCode: '2-03', level: '成品库D-D区-4', product: ' 5.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月20日' },
|
||
{ eqName: 'RQ20230920', eqCode: '2-04', level: '成品库D-D区-4', product: ' 2.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月20日' },
|
||
{ eqName: 'RQ20230920', eqCode: '2-05', level: '成品库A-D区-4', product: ' 5.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月20日' },
|
||
{ eqName: 'RQ20230920', eqCode: '3-03', level: '成品库B-D区-4', product: ' 3.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月20日' },
|
||
{ eqName: 'RQ20230920', eqCode: '1-03', level: '成品库C-D区-4', product: ' 2.2-1033*2089', productCode: 'CP5651696323', time: '2023年9月20日' }
|
||
]
|
||
export default {
|
||
name: 'ProductionMonitoringCockpit',
|
||
components: {
|
||
baseContainer,
|
||
baseTable1,
|
||
baseTable,
|
||
baseTable2
|
||
// TopRadioGroup,
|
||
// doubleYChart
|
||
// LinearBarChart
|
||
// pieChart1,
|
||
// pieChart2
|
||
// pieChart3
|
||
// BaseVideo
|
||
},
|
||
data() {
|
||
return {
|
||
beilv: 1,
|
||
beilv2: 1,
|
||
clientWidth: 0,
|
||
times:undefined,
|
||
value: 100,
|
||
qualityYearTableProps,
|
||
inventoryTableProps,
|
||
inventoryList,
|
||
locationList,
|
||
locationTableProps,
|
||
qualityYearList,
|
||
isFullScreen: false,
|
||
orderProcessList: [
|
||
{
|
||
name: '作业号RQ232323',
|
||
outRate: '0.8'
|
||
},
|
||
{
|
||
name: '作业号RQ2232232',
|
||
outRate: '0.7'
|
||
},
|
||
{
|
||
name: '作业号RQ2232232',
|
||
outRate: '1'
|
||
},
|
||
{
|
||
name: '作业号RQ2545444',
|
||
outRate: '0.6'
|
||
},
|
||
{
|
||
name: '作业号RQ232322',
|
||
outRate: '0.5'
|
||
},
|
||
{
|
||
name: '作业号RQ20230911',
|
||
outRate: '0.4'
|
||
}
|
||
],
|
||
// qualityTableProps1,
|
||
modelMonth: '',
|
||
// logoutTime: 43200000,
|
||
// qualityTableProps2,
|
||
// qualityList2,
|
||
dateType: '0',
|
||
}
|
||
},
|
||
computed: {
|
||
// ...mapGetters(['sidebar']),
|
||
styles() {
|
||
const v = Math.floor(this.value * this.beilv2 * 100) / 10000
|
||
return {
|
||
transform: `scale(${v})`,
|
||
transformOrigin: 'top left'
|
||
}
|
||
}
|
||
},
|
||
|
||
watch: {
|
||
clientWidth(val) {
|
||
if (!this.timer) {
|
||
this.clientWidth = val
|
||
this.beilv2 = this.clientWidth / 1920
|
||
this.timer = true
|
||
let _this = this
|
||
setTimeout(function () {
|
||
_this.timer = false
|
||
}, 500)
|
||
}
|
||
// 这里可以添加修改时的方法
|
||
this.windowWidth(val);
|
||
}
|
||
},
|
||
created() {
|
||
// this.fetchList('exception-alarm')
|
||
// this.fetchList('inAndOutOfEachLine')
|
||
// this.fetchList('order-process')
|
||
// this.fetchList('line-chart-data')
|
||
this.init()
|
||
this.getTimes()
|
||
this.windowWidth(document.documentElement.clientWidth)
|
||
setTimeout(() => {
|
||
window.location.reload()
|
||
}, 86400000)
|
||
},
|
||
mounted() {
|
||
const _this = this;
|
||
window.onresize = () => {
|
||
return (() => {
|
||
_this.clientWidth = `${document.documentElement.clientWidth}`
|
||
this.beilv2 = _this.clientWidth / 1920
|
||
})()
|
||
}
|
||
},
|
||
methods: {
|
||
getTimes() {
|
||
setInterval(this.getTimesInterval, 1000);
|
||
},
|
||
getTimesInterval: function () {
|
||
let _this = this;
|
||
let year = new Date().getFullYear(); //获取当前时间的年份
|
||
let month = new Date().getMonth() + 1; //获取当前时间的月份
|
||
let day = new Date().getDate(); //获取当前时间的天数
|
||
let hours = new Date().getHours(); //获取当前时间的小时
|
||
let minutes = new Date().getMinutes(); //获取当前时间的分数
|
||
let seconds = new Date().getSeconds(); //获取当前时间的秒数
|
||
//当小于 10 的是时候,在前面加 0
|
||
if (hours < 10) {
|
||
hours = "0" + hours;
|
||
}
|
||
if (minutes < 10) {
|
||
minutes = "0" + minutes;
|
||
}
|
||
if (seconds < 10) {
|
||
seconds = "0" + seconds;
|
||
}
|
||
//拼接格式化当前时间
|
||
this.times = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
|
||
},
|
||
windowWidth(value) {
|
||
this.clientWidth = value
|
||
},
|
||
change() {
|
||
this.isFullScreen = screenfull.isFullscreen
|
||
},
|
||
init() {
|
||
if (screenfull.enabled) {
|
||
screenfull.on('change', this.change)
|
||
}
|
||
},
|
||
destroy() {
|
||
if (screenfull.enabled) {
|
||
screenfull.off('change', this.change)
|
||
}
|
||
},
|
||
changeFullScreen() {
|
||
console.log(this.beilv);
|
||
if (!screenfull.enabled) {
|
||
this.$message({
|
||
message: 'you browser can not work',
|
||
type: 'warning'
|
||
})
|
||
return false
|
||
}
|
||
screenfull.toggle(this.$refs.container)
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
|
||
|
||
.visual-container {
|
||
width: 1920px;
|
||
height: 1080px;
|
||
background: url('../../assets/img/OperationalOverview/back.png') no-repeat;
|
||
background-size: cover;
|
||
// opacity: .8;
|
||
.container-title {
|
||
width: 100%;
|
||
background: url('../../assets/img/OperationalOverview/title.png') no-repeat;
|
||
background-size: 100% 100%;
|
||
color: #00fff0;
|
||
text-align: center;
|
||
word-spacing:8px;
|
||
position: relative;
|
||
.unit{
|
||
position: absolute;
|
||
left: 290px;
|
||
top:25px;
|
||
color: rgba($color: #ffffff, $alpha: 8);
|
||
font-size: 20px;
|
||
}
|
||
.time{
|
||
position: absolute;
|
||
left: 1360px;
|
||
top:25px;
|
||
color: rgba($color: #ffffff, $alpha: 8);
|
||
font-size: 20px;
|
||
}
|
||
.title-button {
|
||
color: #00fff0;
|
||
font-size: 20px;
|
||
position: absolute;
|
||
}
|
||
}
|
||
|
||
.container-main {
|
||
padding: 10px;
|
||
}
|
||
}
|
||
|
||
.now-team-title {
|
||
margin: 0;
|
||
margin-top: -1em;
|
||
font-size: 1.2em;
|
||
line-height: 2em;
|
||
color: #fff;
|
||
}
|
||
|
||
.main-title {
|
||
text-align: center;
|
||
}
|
||
|
||
.now-secondary-title {
|
||
margin: 0;
|
||
font-size: 1em;
|
||
line-height: 2em;
|
||
color: #fff;
|
||
}
|
||
|
||
.now-team-content {
|
||
font-size: 3em;
|
||
line-height: 1em;
|
||
color: #52fff1;
|
||
text-align: center;
|
||
}
|
||
|
||
::v-deep .el-progress-bar__inner {
|
||
background-color: unset;
|
||
background-image: linear-gradient(to right, #4573fe, #47f8dc);
|
||
}
|
||
.visual-select {
|
||
position: absolute;
|
||
right: 1em;
|
||
top: 2em;
|
||
}
|
||
|
||
// .container-main {
|
||
// padding: 5px;
|
||
// }
|
||
|
||
</style>
|
||
|
||
<style lang="scss" >
|
||
.visual-container {
|
||
::-webkit-scrollbar {
|
||
width: 8px;
|
||
height: 8px;
|
||
background-color: transparent;
|
||
}
|
||
|
||
::-webkit-scrollbar-track-piece {
|
||
background: #1b2b3d;
|
||
}
|
||
|
||
::-webkit-scrollbar-corner {
|
||
background: #1b2b3d;
|
||
}
|
||
|
||
::-webkit-scrollbar-track {
|
||
width: 6px;
|
||
background: #1b2b3d;
|
||
-webkit-border-radius: 2em;
|
||
-moz-border-radius: 2em;
|
||
border-radius: 2em;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb {
|
||
background: rgba($color: #5bc4be, $alpha: 0.7);
|
||
background-clip: padding-box;
|
||
min-height: 28px;
|
||
-webkit-border-radius: 2em;
|
||
-moz-border-radius: 2em;
|
||
border-radius: 2em;
|
||
transition: background-color 0.3s;
|
||
cursor: pointer;
|
||
}
|
||
|
||
::-webkit-scrollbar-thumb:hover {
|
||
background-color: rgba($color: #5bc4be, $alpha: 1);
|
||
}
|
||
}
|
||
.el-input {
|
||
min-height: 10px;
|
||
}
|
||
|
||
// .el-input__inner {
|
||
// background-color: rgba($color: #31878c, $alpha: 0.29);
|
||
// border: rgba($color: #31878c, $alpha: 0.29);
|
||
// color: aliceblue;
|
||
// }
|
||
|
||
.el-divider--vertical {
|
||
height: 174px;
|
||
width: 1px;
|
||
border: rgba(255, 255, 255, 0.15);
|
||
color: rgba(255, 255, 255, 0.15);
|
||
margin-left: 3em;
|
||
}
|
||
</style>
|
||
|
||
<style scoped>
|
||
.flex-col {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.flex-1 {
|
||
flex: 1 1;
|
||
}
|
||
.h-full {
|
||
height: calc(100vh - 150px);
|
||
}
|
||
/* .container-main {
|
||
min-height: calc(100vh - 10em);
|
||
} */
|
||
</style>
|