Files
screen-lnsh/src/pages/HomePage.vue
2023-03-06 16:18:34 +08:00

1417 lines
47 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<section>
<t-header index='0'></t-header>
<div class="content clearfix">
<div class="fl block_left">
<div class="item_block block_1">
<div class="border-top"></div>
<div class="dot_top"></div>
<div class="echart_item">
<div id="echart_d1" style="width: 100%;height:100%;"></div>
</div>
</div>
<div class="item_block block_1">
<div class="border-top"></div>
<div class="dot_top"></div>
<div class="echart_item">
<div id="echart_d2" style="width: 100%;height:100%;"></div>
</div>
</div>
<div class="item_block block_2">
<div class="border-top"></div>
<div class="dot_top"></div>
<h2>最近五个故障设备</h2>
<div class="scroll_item">
<ul class="scroll_tab">
<li>故障时间</li>
<li>设备编号</li>
<li>设备名称</li>
<li>当前状态</li>
</ul>
<div class="scroll_container">
<vue-seamless-scroll :data="deviceRows" :class-option="defaultOption">
<ul class="content-block-scroll-ul">
<li v-for="(e, i) in deviceRows" :key="i">
<div><p>{{e.faultyTime}}</p></div>
<div><p>{{e.deviceCode}}</p></div>
<div><p>{{e.deviceName}}</p></div>
<div><p>{{['暂停', '运行', '故障', '关机'][Number(e.pointStatus) - 1]}}</p></div>
</li>
</ul>
</vue-seamless-scroll>
</div>
</div>
</div>
</div>
<div class="fr block_right">
<div class="workshop">
<div class="line_test">
<div class="workshop_bg">
<div class="hr_abs hr1">
<div class="guan guan1" v-for="(e, i) in area2" :key="i" :class="['', 'a_1', 'a_2', 'a_3', 'a_4', 'a_5'][Number(e.status)]" @click="getInfo('2', e)"></div>
</div>
<div class="hr_abs hr2">
<div class="guan guan1" v-for="(e, i) in area3" :key="i" :class="['', 'a_1', 'a_2', 'a_3', 'a_4', 'a_5'][Number(e.status)]" @click="getInfo('2', e)"></div>
</div>
<div class="hr_abs hr3">
<div class="guan guan1" v-for="(e, i) in area4" :key="i" :class="['', 'a_1', 'a_2', 'a_3', 'a_4', 'a_5'][Number(e.status)]" @click="getInfo('2', e)"></div>
</div>
<div class="hr_abs hr4">
<div class="hnj_item" v-for="e in area1" :key="e.device_uuid">
<div class="jiazi"></div>
<div class="guan guan2"></div>
<div class="hnj" :class="'nj_' + e.status" @click="getInfo('1', e)"></div>
</div>
</div>
<div v-if="area5.length > 0" class="hr_abs hr5">
<div class="yam_item">
<div class="yam_bg"></div>
<div class="yam_left yal1_4"></div>
<div class="yam_right yar1_4"></div>
<div class="yam_inner yai1_4"></div>
</div>
<div class="yam_item" v-for="(e, i) in area5" :key="i">
<div class="yam_bg"></div>
<div class="yam_left" :class="'yal1_' + e.press.leftpress.status" @click="getInfo('1', e.press.leftpress)"></div>
<div class="yam_right" :class="'yar1_' + e.press.rightpress.status" @click="getInfo('1', e.press.rightpress)"></div>
<div class="yam_inner" :class="'yai1_' + e.robot.status" @click="getInfo('1', e.robot)"></div>
<div v-if="e.presspoint.MP01.status === '1'" class="yam_mtp_l"></div>
<div v-if="e.presspoint.MD01.status === '1'" class="yam_mtp_l yam_mtp_l1"></div>
<div v-if="e.presspoint.MP02.status === '1'" class="yam_mtp_r"></div>
<div v-if="e.presspoint.MD02.status === '1'" class="yam_mtp_r yam_mtp_r1"></div>
<div v-if="e.presspoint.MDJXSKD.status === '2'" class="yam_ktp"></div>
</div>
<div class="yam_item">
<div class="yam_bg"></div>
<div class="yam_left yal1_4"></div>
<div class="yam_right yar1_4"></div>
<div class="yam_inner yai1_4"></div>
</div>
</div>
<div v-if="area6.truss.length > 0" class="hr_abs hr6" :style="{'left': area6.truss[0].x}">
<div class="diaoz" :class="'dz_' + area6.truss[0].status" @click="getInfo('1', area6.truss[0])"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr7">
<div class="kyc" v-for="e in goods.slice(0,area7[4].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr8">
<div class="mtp" v-for="e in goods.slice(0,area7[5].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr9">
<div class="yao" :class="'yao1_' + area7[0].status" @click="getInfo('1', area7[0])"></div>
</div>
<div class="hr_abs hr10">
<div class="yao yao1_4"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr11">
<div class="mtp" v-for="e in goods.slice(0,area7[0].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr12">
<div class="mtp" v-for="e in goods.slice(0,area7[2].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr23">
<div class="mtp" v-for="e in goods.slice(0,area7[1].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area7.length > 0" class="hr_abs hr24">
<div class="mtp" v-for="e in goods.slice(0,area7[3].vehicle_num)" :key="e.id"></div>
</div>
<div v-if="area6.trusspoint.length > 0" class="hr_abs hr13">
<div v-if="area6.trusspoint[0].status === '1'" class="mtp"></div>
</div>
<div v-if="area8.headpoint.length > 0" class="hr_abs hr14">
<div class="kyc" v-for="(e, i) in area8.headpoint" :key="i" :class="{'hide': e.status === '0'}"></div>
</div>
<div v-if="area8.head.length > 0" class="hr_abs hr15">
<div class="dtj" :class="'dtj_' + area8.head[0].status" @click="getInfo('1', area8.head[0])"></div>
</div>
<div v-if="area9.length > 0" class="hr_abs hr16" :style="{'left': area9[0].x}">
<div class="bdc" :class="'bdc_' + area9[0].status" @click="getInfo('1', area9[0])"></div>
</div>
<div class="hr_abs hr20">
<div class="mtp2_block" v-for="(e,i) in area10" :key="i">
<div class="mtp2" v-for="(el,i) in e.mpoint" :key="i" :class="{'hide': el.status === '0'}"></div>
</div>
</div>
<div class="hr_abs hr17">
<div class="jxs1" v-for="(e, i) in area10" :key="i" :class="'jxs1_' + e.crobot.status" @click="getInfo('1', e.crobot)"></div>
</div>
<div class="hr_abs hr18">
<div class="jxs2" v-for="(e, i) in area10" :key="i" :class="'jxs1_' + e.mrobot.status" @click="getInfo('1', e.mrobot)"></div>
</div>
<div class="hr_abs hr19">
<div class="mtp_block" v-for="(e, i) in area10" :key="i">
<div class="mtp" v-for="(el, i) in e.cpoint" :key="i" :class="{'hide': el.status === '0'}"></div>
</div>
</div>
<div class="hr_abs hr21">
<div class="guding"></div>
<div class="guding"></div>
<div class="guding"></div>
<div class="guding"></div>
</div>
<div class="hr_abs hr22" :style="{'left': area11.agv1.web_x_coor, 'top': area11.agv1.web_y_coor}">
<div class="agv" :class="'agv_' + area11.agv1.angle"></div>
</div>
<div class="hr_abs hr22" :style="{'left': area11.agv2.web_x_coor, 'top': area11.agv2.web_y_coor}">
<div class="agv" :class="'agv_' + area11.agv2.angle"></div>
</div>
</div>
</div>
</div>
<!-- 2.3.4货架 -->
<div class="tag_block clear">
<div class="fl">
<div class="tag_type tag_sb">货架</div>
<div class="tag_type">
<div class="type_color green2"></div>
<div class="tag_text">静置中</div>
</div>
<div class="tag_type">
<div class="type_color green"></div>
<div class="tag_text">空盅</div>
</div>
<div class="tag_type">
<div class="type_color gray"></div>
<div class="tag_text">禁用</div>
</div>
<div class="tag_type">
<div class="type_color yellow"></div>
<div class="tag_text">静置完成</div>
</div>
<div class="tag_type">
<div class="type_color orange"></div>
<div class="tag_text">强制完成</div>
</div>
</div>
<div class="fr">
<div class="tag_type tag_sb">设备</div>
<div class="tag_type">
<div class="type_color green2"></div>
<div class="tag_text">运行</div>
</div>
<div class="tag_type">
<div class="type_color yellow"></div>
<div class="tag_text">暂停</div>
</div>
<div class="tag_type">
<div class="type_color gray"></div>
<div class="tag_text">停机</div>
</div>
<div class="tag_type">
<div class="type_color orange"></div>
<div class="tag_text">故障</div>
</div>
</div>
</div>
</div>
</div>
<!-- 混碾机LB0001 -->
<div v-if="obj.deviceclass_code === 'LB0001'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">当前生产{{form.material_name}}</div>
<div class="pop_tip">已生产{{form.produce_num}}KG</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
<table class="pop_table">
<tr>
<th width="48%">本日生产</th>
<th width="26%">已生产数量</th>
<th>单位</th>
</tr>
<tr v-for="(e,i) in allrows1" :key="i">
<td>{{e.material_name}}</td>
<td>{{e.produce_num}}</td>
<td>{{e.unit_name}}</td>
</tr>
</table>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 压力机LB0004机械手LB0006 -->
<div v-if="obj.deviceclass_code === 'LB0004' || (obj.deviceclass_code === 'LB0006' && obj.device_code !== 'CDJQR01' && obj.device_code !== 'MDJXS01')" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">当前生产{{form.material_name}}</div>
<div class="pop_tip">已生产{{form.produce_num}}KG</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
<table class="pop_table">
<tr>
<th width="48%">本日生产</th>
<th width="26%">生产厂家</th>
<th>已生产</th>
</tr>
<tr v-for="(e,i) in allrows2" :key="i">
<td>{{e.material_name}}</td>
<td>{{e.factory_name}}</td>
<td>{{e.produce_num}}</td>
</tr>
</table>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 衍架LB0010 -->
<div v-if="obj.deviceclass_code === 'LB0010'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">搬运托盘数{{form.in_produce_num}}</div>
<div class="pop_tip">搬入准备车道{{form.in_prepare}}</div>
<div class="pop_tip">搬入1号窑{{form.in_first}}</div>
<div class="pop_tip">搬入2号窑{{form.in_second}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 空车道LB0011准备车道LB0012-暂存LB0014 -->
<!-- <div v-if="obj.deviceclass_code === 'LB0011' || obj.deviceclass_code === 'LB0012' || obj.deviceclass_code === 'LB0014'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen', 'forange', 'fgray'][Number(form.status) - 1]">{{['待机', '生产中', '故障', '关机'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">当前窑车数</div>
<div class="pop_tip">容量</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div> -->
<!-- 窑LB0013 -->
<div v-if="obj.deviceclass_code === 'LB0013'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">窑1窑车数{{form.vehicle_num01}}</div>
<div class="pop_tip">窑2窑车数 {{form.vehicle_num02}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
<table class="pop_table">
<tr>
<th width="48%">本日生产</th>
<th width="26%">生产厂家</th>
<th>已生产</th>
</tr>
<tr v-for="(e,i) in allrows2" :key="i">
<td>{{e.material_name}}</td>
<td>{{e.factory_name}}</td>
<td>{{e.produce_num}}</td>
</tr>
</table>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- RGVLB0015 -->
<div v-if="obj.deviceclass_code === 'LB0015'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">运行状态{{form.run_type}}</div>
<div class="pop_tip">完成托盘数{{form.carrier_num}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 拆垛机械手码垛机械手LB0006 -->
<div v-if="obj.deviceclass_code === 'LB0006' && obj.device_code === 'CDJQR01'|| obj.device_code === 'MDJXS01'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">完成托盘数{{form.carrier_num}}</div>
<div class="pop_tip">完成数量{{form.produce_total_num}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 叠盘机LB0016 -->
<div v-if="obj.deviceclass_code === 'LB0016'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">完成托盘数{{form.carrier_num}}</div>
<div class="pop_tip">完成垛数{{form.stack_num}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- AGVLB0019 -->
<div v-if="obj.deviceclass_code === 'LB0019'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">{{form.device_name}}</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">当前载具{{form.carrier_no}}</div>
<div class="pop_tip">当前任务{{form.task_no}}</div>
<div class="pop_tip">已完成搬运{{form.carrier_num}}</div>
<div class="pop_tip">剩余电量{{form.left_electricity}}</div>
<div class="pop_tip">故障信息{{form.error_info}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
<!-- 罐LB0002 -->
<div v-if="obj.deviceclass_code === 'LB0002'" class="popover_block">
<div class="popver_bg">
<div class="popver_block">
<div class="pop_info_name">&nbsp;</div>
<div class="pop_info_tip">
<div v-if="device === '1'" class="pop_status">
<div class="pop_status_dot" :class="['yellow', 'green2', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fyellow', 'fgreen2', 'forange', 'fgray'][Number(form.status) - 1]">{{['暂停', '运行', '故障', '停机'][Number(form.status) - 1]}}</div>
</div>
<div v-if="device === '2'" class="pop_status">
<div class="pop_status_dot" :class="['green', 'green2', 'yellow', 'orange', 'gray'][Number(form.status) - 1]"></div>
<div class="pop_status_text" :class="['fgreen', 'fgreen2', 'fyellow', 'forange', 'fgray'][Number(form.status) - 1]">{{['空盅', '静置中', '静置完成', '强制完成', '禁用'][Number(form.status) - 1]}}</div>
</div>
<div class="pop_tip">货位{{form.struct_code}}</div>
<div class="pop_tip">载具 {{form.storagevehicle_code}}</div>
<div class="pop_tip">物料{{form.material_code}}</div>
<div class="pop_tip">名称{{form.material_name}}</div>
<div class="pop_tip">重量(kg){{form.ivt_qty}}</div>
<div class="pop_tip">入库时间{{form.instorage_time}}</div>
<div class="pop_tip">静置(h){{form.finish_times}}</div>
</div>
</div>
<div class="iconfont icon-guanbi close_btn" @click="closePop"></div>
</div>
<div class="mask" @click="closePop"></div>
</div>
</section>
</template>
<script>
import THeader from '@components/header.vue'
import TCircle from '@components/circle.vue'
import { workshopCondition } from '@js/getData2'
export default {
name: 'HomePage',
components: {
THeader,
TCircle
},
data () {
return {
interTime: this.$store.getters.setTime,
timer: null,
area1: [],
area2: [],
area3: [],
area4: [],
area5: [],
area6: {trusspoint: [], truss: []},
area7: [],
area8: {headpoint: [], head: []},
area9: [],
area10: [],
area11: {agv1: {}, agv2: {}},
goods: [{id: 1}, {id: 2}, {id: 3}, {id: 4}, {id: 5}, {id: 6}, {id: 7}, {id: 8}, {id: 9}, {id: 10}, {id: 11}, {id: 12}, {id: 13}, {id: 14}, {id: 15}, {id: 16}, {id: 17}, {id: 18}, {id: 19}, {id: 20}, {id: 21}, {id: 22}, {id: 23}, {id: 24}, {id: 25}],
dayRows: [],
weekRows: [],
deviceRows: [],
obj: {},
device: '',
form: {},
allrows1: [],
allrows2: []
}
},
computed: {
defaultOption () {
return {
step: 0.2, // 数值越大速度滚动越快
limitMoveNum: 4, // 开始无缝滚动的数据量 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.initData1()
this._workshopCondition()
this.refresh()
},
beforeDestroy () {
clearInterval(this.timer)
},
methods: {
refresh () {
this.timer = setInterval(() => {
// this.initData1()
this._workshopCondition()
}, this.interTime)
},
async _workshopCondition () {
let res = await workshopCondition()
this.dayRows = [...res.result.runningStatus]
this.weekRows = [...res.result.faultyStatus]
this.deviceRows = [...res.result.faultyInfo]
if (this.dayRows.length > 0) {
this.setEchart1()
}
if (this.weekRows.length > 0) {
this.setEchart2()
}
},
rectClick () {
var ev = window.event
// 获取相对于当前所指向对象的位置坐标
alert('x:' + ev.offsetX + 'y:' + ev.offsetY)
},
setEchart1 () {
let arr1 = []
let arr2 = []
let arr3 = []
this.dayRows.map(el => {
arr1.push(el.workorder_procedure)
arr2.push(el.deviceQty)
arr3.push(el.faultyDevice)
})
let option = {
title: {
text: '设备故障次数(昨天/今天)',
x: 10,
y: 8,
textStyle: {
fontWeight: 'normal',
fontSize: 16,
lineHeight: 22,
color: '#fff'
}
},
legend: {
top: 13,
left: 243,
itemGap: 28,
itemWidth: 10,
itemHeight: 10,
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255,0.60)',
lineHeight: 17
},
data: ['总设备数', '故障设备数']
},
grid: {
top: 47,
left: 17,
right: 15,
bottom: 9,
containLabel: true
},
xAxis: [{
type: 'category',
boundaryGap: true,
axisLine: {
show: true,
lineStyle: {
color: '#253249'
}
},
axisLabel: {
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255,0.6)',
margin: 6.2
}
},
axisTick: {
show: false
},
data: arr1
}],
yAxis: [{
type: 'value',
min: 0,
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
margin: 2,
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255,0.60)'
}
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: 'rgba(255,255,255,0.2)'
}
}
}],
series: [
{
name: '总设备数',
type: 'bar',
barWidth: 10,
itemStyle: {
color: '#F7B502'
},
data: arr2
},
{
name: '故障设备数',
type: 'bar',
barWidth: 10,
itemStyle: {
color: '#32C5FF'
},
barGap: '100%',
data: arr3
}
]
}
let echart = document.getElementById('echart_d1')
let myChart = this.$echarts.init(echart)
myChart.setOption(option)
window.addEventListener('resize', function () {
myChart.resize()
})
},
setEchart2 () {
let arr1 = []
let arr2 = []
this.weekRows.map(el => {
arr1.push(el.deviceName)
arr2.push(el.faultyFrequency)
})
let yAxisData = ['TOP1', 'TOP2', 'TOP3', 'TOP4', 'TOP5']
let option = {
title: {
text: '近一周故障次数前五设备',
x: 10,
y: 8,
textStyle: {
fontWeight: 'normal',
fontSize: 16,
lineHeight: 22,
color: '#fff'
}
},
grid: {
top: 47,
left: 17,
right: 15,
bottom: 0,
containLabel: false
},
yAxis: [
{
type: 'category',
inverse: true,
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
fontSize: 12,
color: '#fff',
align: 'left'
},
margin: 0,
formatter: '{value}\n{a|占位}\n{a|占位}',
rich: {
a: {
color: 'rgba(255, 255, 255, 0)',
lineHeight: 20
}
}
},
data: yAxisData
},
{
type: 'category',
inverse: true,
offset: -50,
position: 'left',
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
textStyle: {
fontSize: 12,
color: '#fff',
align: 'left'
},
formatter: '{value}\n{a|占位}\n{a|占位}',
rich: {
a: {
color: 'rgba(255, 255, 255, 0)',
lineHeight: 20
}
}
},
data: arr1
},
{
type: 'category',
inverse: true,
offset: 0,
axisLine: {
show: false
},
axisTick: {
show: false
},
axisLabel: {
inside: true,
textStyle: {
fontSize: 12,
color: '#8db0ff',
align: 'right'
},
formatter: '{value}\n{a|占位}\n{a|占位}',
rich: {
a: {
color: 'rgba(255, 255, 255, 0)',
lineHeight: 20
}
}
},
data: arr2
}
],
xAxis: {
show: false
},
series: [
{
type: 'bar',
data: arr2,
barWidth: 6,
itemStyle: {
normal: {
color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, ['#0080DE', '#32C5FF'].map((color, offset) => ({color, offset})))
}
},
showBackground: true,
backgroundStyle: {
color: 'rgba(0, 205, 236, 0.1)'
}
}
]
}
let echart = document.getElementById('echart_d2')
let myChart = this.$echarts.init(echart)
myChart.setOption(option)
window.addEventListener('resize', function () {
myChart.resize()
})
},
initData1 () {
let data = {
'_SRVNAME': 'service.st.al.realivt',
'_SRVMETHOD': 'queryDevicesInhomePage',
'_DATA': JSON.stringify({
accountId: '-1'
})
}
this
.$post(data)
.then(res => {
if (res.code === '1') {
this.area1 = res.result.area1.content
this.area2 = res.result.area2.content
this.area3 = res.result.area3.content
this.area4 = res.result.area4.content
this.area5 = res.result.area5.content
this.area6 = res.result.area6.content
this.area7 = res.result.area7.content
this.area8 = res.result.area8.content
this.area9 = res.result.area9.content
this.area10 = res.result.area10.content
this.area11 = res.result.area11.content
} else {
this.toast(res.desc)
}
})
},
getData (i, obj) {
let data = {
'_SRVNAME': 'service.st.al.realivt',
'_SRVMETHOD': 'queryDeviceByIdInhomePage',
'_DATA': JSON.stringify({
accountId: '-1',
device_uuid: obj.device_uuid
})
}
this
.$post(data)
.then(res => {
if (res.code === '1') {
this.form = res.result.form
// if (res.result.hasOwnProperty('allrows1')) {
// this.allrows1 = res.result.form.allrows1
// }
// if (res.result.hasOwnProperty('allrows2')) {
// this.allrows2 = res.result.form.allrows2
// }
this.allrows1 = res.result.form.allrows1
this.allrows2 = res.result.form.allrows2
this.obj = obj
this.device = i
} else {
this.toast(res.desc)
}
})
},
getInfo (i, obj) {
this.getData(i, obj)
},
closePop () {
this.obj = {}
}
}
}
</script>
<style lang="stylus" scoped>
@import '~@css/mixin'
.content
_wh(100% , calc(100% - 84px))
padding 20px 49px 0
.block_left
_wh(554px, 100%)
.block_right
position relative
_wh(calc(100% - 603px), 924px)
overflow hidden
.item_block
position relative
background #000F2B
border 1px solid #31384B
.border-top
position absolute
top -2px
left 0
_wh(100%,1px)
background #32C5FF
z-index 2019
.dot_top
position absolute
top -5px
left -5px
_wh(8px,9px)
background #32C5FF
z-index 2020
.block_1
_wh(100%, 300px)
margin-bottom 15px
.block_2
_wh(100%, 294px)
h2
_font(16px,22px,,,left)
margin 12px 0 10px 12px
.scroll_item
width 100%
height calc(100% - 44px)
padding 0 12px
.scroll_tab
li
float left
_font(12px,32px,rgba(255,255,255,0.60))
background #262F52
box-sizing border-box
&:nth-child(1), &:nth-child(2)
width 30%
&:nth-child(3), &:nth-child(4)
width 20%
.scroll_container
width 100%
height calc(100% - 32px)
overflow hidden
.content-block-scroll-ul
li
div
float left
height 40px
overflow hidden
white-space nowrap
p
_font(12px,40px,#fff)
&:nth-child(1), &:nth-child(2)
width 30%
&:nth-child(3), &:nth-child(4)
width 20%
&:nth-child(4) p
_font(12px,40px,#F7B502)
&:nth-child(even) div
background rgba(38,47,82,0.50)
.tag_block
position absolute
width 970px
bottom 0
left 50%
margin-left -485px
.tag_type
display inline-block
margin 0 9px
.type_color
display inline-block
_wh(10px,10px)
border-radius 50%
.tag_text
display inline-block
_font(14px,20px)
.tag_sb
margin-right 0
_font(16px,20px, $green2)
.workshop
_wh(100%,902px)
margin 0 auto
.line_test
_wh(949px, 902px)
margin 0 auto
// _bis('../assets/images/homepg/aaa.png')
.workshop_bg
position relative
_wh(949px,902px)
margin 0 auto
_bis('../assets/images/homepg/1.png')
.hr_abs
position absolute
.hr1
width 144px
top -4px
left 160px
.hr2
top 74px
left 90px
width 365px
.hr3
width 324px
top 74px
left 520px
.hr4
width 470px
top 3px
left 333px
.hr5
width 870px
top 213px
left 171px
.hr6
width 22px
top 336px
// left 296px
.hr7
top 372px
left 407px
.hr8
top 370px
left 432px
.hr9
top 362px
left 452px
.hr10
top 362px
left 547px
.hr11
top 370px
left 462px
height 216px
overflow hidden
.hr12
top 602px
left 462px
height 168px
overflow hidden
.hr13
top 348px
left 512px
.hr14
top 705px
left 386px
.kyc
_wh(9px,10px)
margin-bottom 1px
.hr15
top 772px
left 381px
.hr16
top 775px
// left 306px
.hr17
top 793px
left 417px
.hr18
top 846px
left 425px
.hr19
top 804px
left 414px
.mtp
float left
margin-right 13px
&:nth-child(2n)
margin-right 24px
.mtp_block
float left
width 59px
.mtp2_block
float left
width 59px
.hr20
top 843px
left 409px
.hr21
top 863px
left 431px
.hr22
top 0
left 0
.hr23
top 370px
left 484px
height 216px
overflow hidden
.hr24
top 602px
left 487px
height 168px
overflow hidden
.diaoz
_wh(22px,26px)
.dz_1
_bis('../assets/images/homepg/dz1_1.png')
.dz_2
_bis('../assets/images/homepg/dz1_2.png')
.dz_3
_bis('../assets/images/homepg/dz1_3.png')
.dz_4
_bis('../assets/images/homepg/dz1_4.png')
.guan
_wh(12px,14px)
.a_1
_bis('../assets/images/homepg/a1_1.png')
.a_2
_bis('../assets/images/homepg/a1_2.png')
.a_3
_bis('../assets/images/homepg/a1_3.png')
.a_4
_bis('../assets/images/homepg/a1_4.png')
.a_5
_bis('../assets/images/homepg/a1_5.png')
.guan1
float left
margin-right 5px
&:nth-child(2n)
margin-right 7px
.hnj_item
position relative
float left
_wh(30px,30px)
margin-right 22px
.jiazi
_wh(30px,30px)
_bis('../assets/images/homepg/jz.png')
.guan2
position absolute
top 17px
left 9.5px
_bis('../assets/images/homepg/a1_2.png')
.hnj
position absolute
top 4px
left 9.5px
_wh(12px,20px)
.nj_1
_bis('../assets/images/homepg/nj1_1.png')
.nj_2
_bis('../assets/images/homepg/nj1_2.png')
.nj_3
_bis('../assets/images/homepg/nj1_3.png')
.nj_4
_bis('../assets/images/homepg/nj1_4.png')
.yam_item
position relative
float left
_wh(90px,90px)
margin-right 64px
.yam_bg
_wh(90px,90px)
_bis('../assets/images/homepg/ya1_1.png')
.yam_left
position absolute
top -22px
left -5px
_wh(44px,78px)
.yal1_1
_bis('../assets/images/homepg/yal1_1.png')
.yal1_2
_bis('../assets/images/homepg/yal1_2.png')
.yal1_3
_bis('../assets/images/homepg/yal1_3.png')
.yal1_4
_bis('../assets/images/homepg/yal1_4.png')
.yam_right
position absolute
top -22px
left 60px
_wh(44px,78px)
.yar1_1
_bis('../assets/images/homepg/yar1_1.png')
.yar1_2
_bis('../assets/images/homepg/yar1_2.png')
.yar1_3
_bis('../assets/images/homepg/yar1_3.png')
.yar1_4
_bis('../assets/images/homepg/yar1_4.png')
.yam_inner
position absolute
top 29px
left 42px
_wh(12px,20px)
.yai1_1
_bis('../assets/images/homepg/yai1_1.png')
.yai1_2
_bis('../assets/images/homepg/yai1_2.png')
.yai1_3
_bis('../assets/images/homepg/yai1_3.png')
.yai1_4
_bis('../assets/images/homepg/yai1_4.png')
.yam_mtp_l
position absolute
top 41px
left 22px
_wh(13px,17px)
_bis('../assets/images/homepg/mtp.png')
.yam_mtp_l1
top 58px
left 22px
.yam_mtp_r
position absolute
top 41px
left 58px
_wh(13px,17px)
_bis('../assets/images/homepg/mtp.png')
.yam_mtp_r1
top 58px
left 58px
.yam_ktp
position absolute
top 64px
left 42px
_wh(10px,11px)
_bis('../assets/images/homepg/ktp.png')
.yao
_wh(52px,240px)
.yao1_1
_bis('../assets/images/homepg/yao1_1.png')
.yao1_2
_bis('../assets/images/homepg/yao1_2.png')
.yao1_3
_bis('../assets/images/homepg/yao1_3.png')
.yao1_4
_bis('../assets/images/homepg/yao1_4.png')
.kyc
_wh(11px,16px)
_bis('../assets/images/homepg/kyc.png')
margin-bottom 6px
.mtp
_wh(11px,11px)
_bis('../assets/images/homepg/mtp.png')
margin-bottom 1px
.mtp2
_wh(11px,11px)
_bis('../assets/images/homepg/mtp.png')
.dtj
_wh(17px,21px)
.dtj_1
_bis('../assets/images/homepg/dtj1_1.png')
.dtj_2
_bis('../assets/images/homepg/dtj1_2.png')
.dtj_3
_bis('../assets/images/homepg/dtj1_3.png')
.dtj_4
_bis('../assets/images/homepg/dtj1_4.png')
.bdc
_wh(25px,15px)
.bdc_1
_bis('../assets/images/homepg/bdc1_1.png')
.bdc_2
_bis('../assets/images/homepg/bdc1_2.png')
.bdc_3
_bis('../assets/images/homepg/bdc1_3.png')
.bdc_4
_bis('../assets/images/homepg/bdc1_4.png')
.jxs1
float left
_wh(20px,10px)
margin-right 39px
.jxs1_1
_bis('../assets/images/homepg/jxs1_1.png')
.jxs1_2
_bis('../assets/images/homepg/jxs1_2.png')
.jxs1_3
_bis('../assets/images/homepg/jxs1_3.png')
.jxs1_4
_bis('../assets/images/homepg/jxs1_4.png')
.jxs2
float left
_wh(21px,16px)
_bis('../assets/images/homepg/jxs2_1.png')
margin-right 38px
.jxs2_1
_bis('../assets/images/homepg/jxs2_1.png')
.jxs2_2
_bis('../assets/images/homepg/jxs2_2.png')
.jxs2_3
_bis('../assets/images/homepg/jxs2_3.png')
.jxs2_4
_bis('../assets/images/homepg/jxs2_4.png')
.guding
float left
_wh(10px,35px)
_bis('../assets/images/homepg/6.png')
margin-right 49px
.agv
position absolute
left -21px
top -19px
_wh(42px,38px)
.agv_1
_bis('../assets/images/homepg/agv_z.png')
.agv_2
_bis('../assets/images/homepg/agv_b.png')
.agv_3
_bis('../assets/images/homepg/agv_l.png')
.agv_4
_bis('../assets/images/homepg/agv_r.png')
.popover_block
position fixed
left 0
top 0
_wh(100%,100%)
z-index 100000
.mask
_wh(100%,100%)
background-color rgba(0,0,0,0.4)
.popver_bg
position absolute
left 50%
top 50%
_wh(500px,288px)
margin-left -250px
margin-top -144px
padding 20px 18px 36px 10px
overflow hidden
_bis('../assets/images/popover_1.png')
.popver_block
padding 8px 0 0 12px
background top center / 100% 18px url(../assets/images/popover_line.png) no-repeat
_wh(100%,100%)
overflow hidden
.pop_info_name
width 100%
_font(14px,20px,#32C5FF,,left)
text-shadow 2px 2px 4px #A6E6FF
margin-bottom 8px
margin-top 8px
.pop_info_tip
position relative
height 196px
overflow-y scroll
.pop_status
position absolute
right 0
top 0
.pop_tip
font-size 14px
line-height 28px
.pop_status_dot
display inline-block
width 10px
height 10px
border-radius 50%
background-color #fff
.pop_status_text
display inline-block
font-size 14px
color #fff
.pop_table
width 100%
margin-top 10px
border-collapse separate
border 1px solid #2595DE
border-spacing 0
border-radius 4px 4px 0 0
tr
th
opacity 0.7
_font(12px,32px,rgba(255,255,255,0.60))
background #3D6CAA
padding 0 10px
border-right 1px solid #2595DE
border-bottom 1px solid #2595DE
&:nth-child(1)
text-align left
&:last-child
border-right none
td
_font(12px,14px)
height 36px
vertical-align middle
padding 0 10px
border-right 1px solid #2595DE
border-bottom 1px solid #2595DE
&:nth-child(1)
text-align left
&:last-child
border-right none
&:last-child td
border-bottom none
.close_btn
position absolute
top 2px
right 8px
font-size 14px
line-height 34px
padding 0 16px
border-radius 5px
cursor pointer
.green
background-color $green
.green2
background-color $green2
.yellow
background-color $yellow
.gray
background-color $gray
.orange
background-color $orange
.fgreen
color $green
.fgreen2
color $green2
.fyellow
color $yellow
.fgray
color $gray
.forange
color $orange
@media screen and (max-width:1800px)
.tag_block
width 100%
margin-left -50%
.tag_type
margin 0 5px
.block_left
_wh(454px, 100%)
.block_right
_wh(949px, 924px)
</style>