|
@@ -1,3 +1,291 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div>大屏</div>
|
|
|
|
|
-</template>
|
|
|
|
|
|
|
+ <div class="mot_page">
|
|
|
|
|
+ <div class="mot_head">放芯查数据展示平台</div>
|
|
|
|
|
+ <div class="fxc_top">
|
|
|
|
|
+ <div class="fxc_top_item">
|
|
|
|
|
+ <img src="../../assets/images/fxc_img2.png">
|
|
|
|
|
+ <div class="fxc_top_txt">
|
|
|
|
|
+ <div class="fxc_top_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+produced" :key="index" :num="item || 0" :color="'#3AB46D'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_type">已生产(个)</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_item">
|
|
|
|
|
+ <img src="../../assets/images/fxc_img3.png">
|
|
|
|
|
+ <div class="fxc_top_txt">
|
|
|
|
|
+ <div class="fxc_top_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+finished" :key="index" :num="item || 0" :color="'#EF4598'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_type">已结束(个)</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_item">
|
|
|
|
|
+ <img src="../../assets/images/fxc_img4.png">
|
|
|
|
|
+ <div class="fxc_top_txt">
|
|
|
|
|
+ <div class="fxc_top_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+transit" :key="index" :num="item || 0" :color="'#F8B30E'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_type">运输中(个)</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_item">
|
|
|
|
|
+ <img src="../../assets/images/fxc_img5.png">
|
|
|
|
|
+ <div class="fxc_top_txt">
|
|
|
|
|
+ <div class="fxc_top_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+used" :key="index" :num="item || 0" :color="'#3E9DFF'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_top_type">已使用(个)</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_left">
|
|
|
|
|
+ <div class="fxc_tit">温度监测</div>
|
|
|
|
|
+ <div class="fxc_left_top">
|
|
|
|
|
+ <div class="fxc_lt_item">
|
|
|
|
|
+ <div class="fxc_lt_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+normal" :key="index" :num="item || 0"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lt_type">正常</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lt_item">
|
|
|
|
|
+ <div class="fxc_lt_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+warning" :key="index" :num="item || 0" :color="'#3AB46D'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lt_type">预警</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lt_item">
|
|
|
|
|
+ <div class="fxc_lt_num">
|
|
|
|
|
+ <numCard v-for="(item,index) in ''+error" :key="index" :num="item || 0" :color="'#3AB46D'"></numCard>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lt_type">报警</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_left_btm">
|
|
|
|
|
+ <img class="fxc_left_btm_img" src="../../assets/images/fxc_img11.png">
|
|
|
|
|
+ <pie3d :id="'pie3d1'" :value1="1220" :value2="1000" :value3="1200"></pie3d>
|
|
|
|
|
+ <div class="fxc_left_btm_txt">预警</div>
|
|
|
|
|
+ <div class="fxc_lb_con">
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>全程温度<span>{{1220}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>实时温控<span>{{1000}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>追溯标签<span>{{1200}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_left_btm">
|
|
|
|
|
+ <img class="fxc_left_btm_img" src="../../assets/images/fxc_img11.png">
|
|
|
|
|
+ <pie3d :id="'pie3d2'" :value1="1230" :value2="1100" :value3="1200"></pie3d>
|
|
|
|
|
+ <div class="fxc_left_btm_txt">报警</div>
|
|
|
|
|
+ <div class="fxc_lb_con">
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>全程温度<span>{{1220}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>实时温控<span>{{1000}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_lb_item">
|
|
|
|
|
+ <i></i>追溯标签<span>{{1200}}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_mid">
|
|
|
|
|
+ <div class="fxc_map">
|
|
|
|
|
+ <mapPage></mapPage>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_mid_con1">
|
|
|
|
|
+ <div class="fxc_win_icon1"></div>
|
|
|
|
|
+ <div class="fxc_win_icon2"></div>
|
|
|
|
|
+ <div class="fxc_win_icon3"></div>
|
|
|
|
|
+ <div class="fxc_win_icon4"></div>
|
|
|
|
|
+ <div class="fxc_mc1_txt">
|
|
|
|
|
+ 检测对象:货物<br>
|
|
|
|
|
+ 当前温度:42℃<br>
|
|
|
|
|
+ 最低温度:12℃<br>
|
|
|
|
|
+ 检测状态:正常<br>
|
|
|
|
|
+ 更新时间:2021-09-09 12:00
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_mid_con2">
|
|
|
|
|
+ <div class="fxc_win_icon1"></div>
|
|
|
|
|
+ <div class="fxc_win_icon2"></div>
|
|
|
|
|
+ <div class="fxc_win_icon3"></div>
|
|
|
|
|
+ <div class="fxc_win_icon4"></div>
|
|
|
|
|
+ <div class="fxc_mc2_con">
|
|
|
|
|
+ <lineChart></lineChart>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_right1">
|
|
|
|
|
+ <div class="fxc_tit">储运状态</div>
|
|
|
|
|
+ <div class="fxc_right1_con">
|
|
|
|
|
+ <barChart></barChart>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="fxc_right2">
|
|
|
|
|
+ <div class="fxc_tit">监测数量</div>
|
|
|
|
|
+ <div class="fxc_right2_con">
|
|
|
|
|
+ <huan2d :id="'huan2d1'" :value1="1220" :value2="1000" :value3="1200"></huan2d>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="no_login" @click="goLogin">
|
|
|
|
|
+ <div>去登录</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</template>
|
|
|
|
|
+<script>
|
|
|
|
|
+import NumCard from "../../components/fangxincha/numberCard"//
|
|
|
|
|
+import Pie3d from "../../components/fangxincha/pie3d2"//
|
|
|
|
|
+import Huan3d from "../../components/fangxincha/huan3d"//
|
|
|
|
|
+import Huan2d from "../../components/fangxincha/huan2d"//
|
|
|
|
|
+import MapPage from "../../components/fangxincha/map"//高德地图
|
|
|
|
|
+import LineChart from "../../components/fangxincha/lineChart"//
|
|
|
|
|
+import BarChart from "../../components/fangxincha/barChart"//
|
|
|
|
|
+import { getFxcToken,getFxclistChainLocal,getFxcProductTypeChipCount,getFxcProductChipState,getFxcChainStatus } from '@/api/screen'
|
|
|
|
|
+export default({
|
|
|
|
|
+ name:"Shop",
|
|
|
|
|
+ components: {
|
|
|
|
|
+ NumCard,
|
|
|
|
|
+ Pie3d,
|
|
|
|
|
+ MapPage,
|
|
|
|
|
+ LineChart,
|
|
|
|
|
+ BarChart,
|
|
|
|
|
+ Huan3d,
|
|
|
|
|
+ Huan2d,
|
|
|
|
|
+ },
|
|
|
|
|
+ data () {
|
|
|
|
|
+ return {
|
|
|
|
|
+ attrs:["produced","finished","transit","used","normal","warning","error"],
|
|
|
|
|
+ produced:6780,
|
|
|
|
|
+ finished:6780,
|
|
|
|
|
+ transit:6780,
|
|
|
|
|
+ used:6780,
|
|
|
|
|
+ normal:6780,
|
|
|
|
|
+ warning:6780,
|
|
|
|
|
+ error:6780,
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ created () {
|
|
|
|
|
+ this.changeNum()
|
|
|
|
|
+ // this.randomNum()
|
|
|
|
|
+ this.getLoginToken()
|
|
|
|
|
+ // this.$store.dispatch("FxcLogin").then((res)=>{
|
|
|
|
|
+ // var fxcToken = this.$store.getters.fxcToken
|
|
|
|
|
+ // this.getListChainLocal(fxcToken)
|
|
|
|
|
+ // this.getProductTypeChipCount(fxcToken)
|
|
|
|
|
+ // this.getProductChipState(fxcToken)
|
|
|
|
|
+ // })
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ getLoginToken(){
|
|
|
|
|
+ getFxcToken().then(response => {
|
|
|
|
|
+ var fxcToken = response.token
|
|
|
|
|
+ this.getListChainLocal(fxcToken)
|
|
|
|
|
+ this.getProductTypeChipCount(fxcToken)
|
|
|
|
|
+ this.getProductChipState(fxcToken)
|
|
|
|
|
+ this.getChainStatus(fxcToken)
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ getListChainLocal(token){
|
|
|
|
|
+ getFxclistChainLocal(token).then(response => {
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ getProductChipState(token){
|
|
|
|
|
+ getFxcProductChipState(token).then(response => {
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ getProductTypeChipCount(token){
|
|
|
|
|
+ getFxcProductTypeChipCount(token).then(response => {
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ getChainStatus(token){
|
|
|
|
|
+ getFxcChainStatus(token).then(response => {
|
|
|
|
|
+
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ changeNum(){
|
|
|
|
|
+ const that = this
|
|
|
|
|
+ var list = that.attrs
|
|
|
|
|
+ for(var i in list){
|
|
|
|
|
+ that.randomNum(list[i])
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ randomNum(key){
|
|
|
|
|
+ const that = this
|
|
|
|
|
+ that[key+"Timer"] = window.setInterval(()=>{
|
|
|
|
|
+ //数字每次变化1-10之间
|
|
|
|
|
+ var rdNum = Math.floor(1+Math.random()*9)
|
|
|
|
|
+ that[key]=that[key]+rdNum
|
|
|
|
|
+ },2000)
|
|
|
|
|
+ },
|
|
|
|
|
+ goLogin(){
|
|
|
|
|
+ this.$router.push({
|
|
|
|
|
+ name: 'SignIn',
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+ }
|
|
|
|
|
+})
|
|
|
|
|
+</script>
|
|
|
|
|
+<style>
|
|
|
|
|
+html{ font-size:calc(100vw / 19.2);}
|
|
|
|
|
+body{ font-size:14px; background: #031934;}
|
|
|
|
|
+.mot_page{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; background: url(../../assets/images/opt_bg.png); background-size: 100% 100%; }
|
|
|
|
|
+.fxc_page{ position: absolute; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; background: url(../../assets/images/fxc_bg1.png); background-size: 100% 100%; }
|
|
|
|
|
+.mot_head{ position: absolute; top: 0; left: 0; width: 100%; height: 11vh; line-height: 11vh; color: #53A0FF; font-size:2vw; text-align: center;font-weight: bold;
|
|
|
|
|
+background-image:-webkit-linear-gradient(bottom,#53A0FF,#ffffff);-webkit-background-clip:text;background-clip: text;-webkit-text-fill-color:transparent;
|
|
|
|
|
+/*-webkit-text-stroke:1px #ffffff; font-style: italic;*/letter-spacing:1vw;}
|
|
|
|
|
+.fxc_head{ position: absolute; top: 0; left: 0; width: 100%; height: 11vh; display: flex; align-items: center; justify-content: center;}
|
|
|
|
|
+.fxc_head img{ width: 27vw;}
|
|
|
|
|
+.fxc_top{ position: absolute; top: 0; left: 0; right: 0;}
|
|
|
|
|
+.fxc_top_item{ position: absolute; left: 2.4vw; top: 3.7vh; width: 12.6vw; height: 11.1vh; background:url(../../assets/images/fxc_img9.png); background-size: 100% 100%; display: flex; align-items: center; justify-content: center; box-sizing: border-box; padding: 0 0 0 0.6vw;}
|
|
|
|
|
+.fxc_top_item img{ width: 2.6vw; height: 2.6vw; margin: 0 0.5vw 0 0;}
|
|
|
|
|
+.fxc_top_num{ font-size:1.25vw; line-height: 1em; font-weight: bold; display: flex;}
|
|
|
|
|
+.fxc_top_type{ font-size: 1vw; color: #65A3F7;}
|
|
|
|
|
+.fxc_top_item:nth-child(2){ left: 16.3vw;}
|
|
|
|
|
+.fxc_top_item:nth-child(3){ left: 71.1vw;}
|
|
|
|
|
+.fxc_top_item:nth-child(4){ left: 85.1vw;}
|
|
|
|
|
+.fxc_left{position: absolute; padding: 2vh 0 0 0; top: 23.1vh; left: 2.7vw; width: 25.8vw; height: 73.4vh; background: rgba(14, 97, 182, 0.14);border: 2px solid;border-image: linear-gradient(90deg, #093B77, #3E8EFF, #0C4480) 2 2;}
|
|
|
|
|
+.fxc_tit{ position: absolute; height: 4.4vh; width: 22vw; top: -4.3vh; background: url(../../assets/images/fxc_img1.png); background-size: 100% 100%; left: 50%; font-size: 0.9vw; font-weight: bold; color: #C6DFFF; margin: 0 -11vw; text-align: center; line-height: 4.4vh;}
|
|
|
|
|
+.fxc_left_top{ width: 21.7vw; margin: auto; height: 16.5vh; display: flex; justify-content: space-between; align-items: center;background: url(../../assets/images/fxc_img12.png); background-size: 100% 100%;}
|
|
|
|
|
+.fxc_left_btm{ width: 90%; height: 26vh; position: relative; margin:0 0;}
|
|
|
|
|
+.fxc_lt_item{ flex: auto; width: 100%; text-align: center; border-left: 1px solid #3089F3;}
|
|
|
|
|
+.fxc_lt_item:nth-child(1){ border: none;}
|
|
|
|
|
+.fxc_lt_num{ display: flex; justify-content: center; align-items: center; font-size: 1.8vw;}
|
|
|
|
|
+.fxc_lt_type{ font-size: 1.2vw; color: #75AFFE;}
|
|
|
|
|
+.fxc_mid{ position: absolute; top: 17.8vh; left: 29.6vw; width: 44.5vw; height: 78.3vh;background: url(../../assets/images/fxc_map.png) center center no-repeat; background-size:7.5rem 5.21rem;}
|
|
|
|
|
+.fxc_mid_con1{ position: absolute; bottom: 0; left: 1.5vw; width: 11.4vw; height: 23.4vh; height: 1.5rem; background: rgba(2,43,145, 0.5); box-sizing: border-box;}
|
|
|
|
|
+.fxc_win_icon1::before{ content: ""; position: absolute; top:-4px; left:-4px; width: 2px; height: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon1::after{ content: ""; position: absolute; top:-4px; left:-4px; height: 2px; width: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon2::before{ content: ""; position: absolute; bottom:-4px; left:-4px; width: 2px; height: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon2::after{ content: ""; position: absolute; bottom:-4px; left:-4px; height: 2px; width: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon3::before{ content: ""; position: absolute; top:-4px; right:-4px; width: 2px; height: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon3::after{ content: ""; position: absolute; top:-4px; right:-4px; height: 2px; width: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon4::before{ content: ""; position: absolute; bottom:-4px; right:-4px; width: 2px; height: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_win_icon4::after{ content: ""; position: absolute; bottom:-4px; right:-4px; height: 2px; width: 1vw; background: #2DC1FF;}
|
|
|
|
|
+.fxc_mc1_txt{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; padding: 0 0 0 1vw; line-height: 3.7vh;line-height: 0.24rem; font-size: 0.6vw; color: #65A3F7;}
|
|
|
|
|
+.fxc_mid_con2{ position: absolute; bottom: 0; right: 1.5vw; width: 13.8vw; height: 26.8vh; background: rgba(4,57,217, 0.5); box-sizing: border-box;}
|
|
|
|
|
+.fxc_right1{ position: absolute; top: 22vh; right: 2.4vw; width: 22.8vw; height: 34.3vh;background: rgba(14, 97, 182, 0.14);border: 2px solid;border-image: linear-gradient(90deg, #093B77, #3E8EFF, #0C4480) 2 2;}
|
|
|
|
|
+.fxc_left_btm_txt{ position: absolute; bottom: 0; left:30%; width: 2rem; margin: 0 0 0 -0.93rem; font-size: 0.16rem; color: #ffffff; text-align: center;}
|
|
|
|
|
+
|
|
|
|
|
+.fxc_right2{ position: absolute; top:62.1vh; right: 2.4vw; width: 22.8vw; height: 34.3vh;background: rgba(14, 97, 182, 0.14);border: 2px solid;border-image: linear-gradient(90deg, #093B77, #3E8EFF, #0C4480) 2 2;}
|
|
|
|
|
+.fxc_lb_con{position: absolute; top: 10px; bottom:20px; right: 10px; display: flex; flex-direction: column; align-items: center; justify-content:center;}
|
|
|
|
|
+.fxc_lb_item{ margin: 6px auto; color: #ffffff; font-size: 0.18rem; line-height: 0.18rem;}
|
|
|
|
|
+.fxc_lb_item i{ display: inline-block; width:0.2rem; height: 0.12rem; margin-right:0.08rem;}
|
|
|
|
|
+.fxc_lb_item span{ margin-left: 0.08rem;}
|
|
|
|
|
+.fxc_lb_item:nth-child(1) i{background: #23D9E9;}
|
|
|
|
|
+.fxc_lb_item:nth-child(2) i{background: #89D44B;}
|
|
|
|
|
+.fxc_lb_item:nth-child(3) i{background: #E82A30;}
|
|
|
|
|
+.fxc_lb_item:nth-child(1) span{color: #23D9E9;}
|
|
|
|
|
+.fxc_lb_item:nth-child(2) span{color: #89D44B;}
|
|
|
|
|
+
|
|
|
|
|
+.no_login{ position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.4); z-index: 1; display: flex; justify-content: center; align-items: center;}
|
|
|
|
|
+.no_login>div{ width: auto; padding: 20px; background: #ffffff; font-size: 20px; line-height: 36px; border-radius: 5px; color: #2DC1FF;}
|
|
|
|
|
+</style>
|