| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 |
- <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_con1">
- <div class="fxc_left_ctit">标签类型</div>
- <div class="fxc_left_ch1">
- <pie4Chart :warningState="warningState"></pie4Chart>
- </div>
- </div>
- <div class="fxc_left_cline"></div>
- <div class="fxc_left_con2">
- <div class="fxc_left_ctit">预警情况</div>
- <div class="fxc_left_ch2">
- <div>
- <pie2Chart :warningState="warningState" :id="'pie2Chart20'"></pie2Chart>
- </div>
- <div>
- <pie2Chart :warningState="warningState" :id="'pie2Chart11'"></pie2Chart>
- </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" @click="hideInfo">
- <div class="fxc_map">
- <mapPage :markers="markers"></mapPage>
- </div>
- <div class="fxc_mid_con1" v-if="markerInfo">
- <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">
- 检测对象:{{markerInfo.name||"--"}}<br>
- 当前温度:{{markerInfo.lastTemperature||"--"}}℃<br>
- 最低温度:{{markerInfo.minTemperature||"--"}}℃<br>
- 检测状态:{{markerInfo.statusStr||"--"}}<br>
- 更新时间:{{markerInfo.updateTime||"--"}}
- </div>
- </div>
- <div class="fxc_mid_con2" v-if="chaintemp">
- <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 :chaintemp="chaintemp"></lineChart>
- </div>
- </div>
- </div>
- <div class="fxc_right1">
- <div class="fxc_tit">储运状态</div>
- <div class="fxc_right1_con">
- <barChart :chipStates="chipStates"></barChart>
- </div>
- </div>
- <div class="fxc_right2">
- <div class="fxc_tit">监测数量</div>
- <div class="fxc_right2_con">
- <!-- <huan2d :id="'huan2d1'" :chipCountData="chipCountData"></huan2d> -->
- <huan2d :id="'huan2d1'" :chipCountData="chipCountData" :value1="1220" :value2="1000" :value3="1200"></huan2d>
- </div>
- </div>
- <div class="no_login" @click="goLogin" v-if="!token">
- <div>去登录</div>
- </div>
- </div>
- </template>
- <script>
- import NumCard from "../../components/fangxincha/numberCard"//
- import pie4Chart from "../../components/fangxincha/huan4"//
- import pie2Chart from "../../components/fangxincha/huan2"//
- 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,getFxcWarningState,getFxcProductChipState,getFxcChainStatus,getFxcChainInfo,getFxcChainTemperature } from '@/api/screen'
- export default({
- name:"Shop",
- components: {
- NumCard,
- Pie3d,
- MapPage,
- LineChart,
- BarChart,
- Huan3d,
- Huan2d,
- pie4Chart,
- pie2Chart,
- },
- data () {
- return {
- attrs:["produced","finished","transit","used","normal","warning","error"],
- produced:6780,
- finished:6780,
- transit:6780,
- used:6780,
- normal:6780,
- warning:6780,
- error:6780,
- token:"",
- markers:[],
- markerInfo:"",
- chaintemp:"",
- chainStatus:{},
- warningState:{},
- chipCountData:[],
- chipStates:[],
- }
- },
- created () {
- this.token = localStorage.getItem("token");
- if(this.token){
- this.getListChainLocal()
- this.getProductTypeChipCount()
- this.getProductChipState()
- this.getChainStatus()
- this.getWarningState()
- }else{
- 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(){
- getFxclistChainLocal().then(response => {
- this.markers = response.data
- });
- },
- getWarningState(){
- getFxcWarningState().then(response => {
- this.warningState = response.data
- });
- },
- getProductChipState(){
- getFxcProductChipState().then(response => {
- this.chipStates = response.data
- });
- },
- getProductTypeChipCount(){
- getFxcProductTypeChipCount().then(response => {
- var data = response.data
- var list = []
- for(var i in data){
- list[i] = []
- list[i][0] = data[i].productTypeName
- list[i][1] = data[i].num
- }
- this.chipCountData = list
- });
- },
- getChainStatus(){
- getFxcChainStatus().then(response => {
- var data = response.data
- this.produced = data.total
- this.finished = data.inTrans
- this.transit = data.inStore
- this.used = data.inEnd
- this.normal = data.temperatureDTO.normal
- this.warning = data.temperatureDTO.warning
- this.error = data.temperatureDTO.alarm
- });
- },
- getChainInfo(id){
- getFxcChainInfo({id}).then(response => {
- var data = response.data
- data.status && (data.statusStr = {"00": "已入库", "10": "已出库", "20": "已结束"}[data.status])
- this.markerInfo = data
- });
- },
- getChainTemperature(id){
- getFxcChainTemperature({id}).then(response => {
- var data = response.data
- this.chaintemp = data.length && data
- });
- },
- hideInfo(){
- this.markerInfo = null
- this.chaintemp = null
- },
- 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;}
- .fxc_left_con1{ width: 23vw; height:24.4vh; margin: auto; position: relative;}
- .fxc_left_con2{ width: 23vw; height: 26.9vh; margin: auto; position: relative;}
- .fxc_left_ctit{ font-size: 0.7vw; line-height: 0.28rem; color:#ffffff; position: relative; z-index: 1;}
- .fxc_left_ch1{ position: absolute; top: 0; left: 0; right: 0; bottom: 0;}
- .fxc_left_ch2{ position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: stretch;}
- .fxc_left_ch2 div{ height: 100%; width: 100%; position: relative;}
- .fxc_left_cline{ width: 21.8vw; height: 1px; background: #0653AF; margin: auto;}
- </style>
|