| | |
| | | <template> |
| | | <view class="container"> |
| | | <!-- 宁波捷丰项目 --> |
| | | <uni-transition :duration="duration" :mode-class="homeMode" :show="homeViewShow"> |
| | | <view class="home-view"> |
| | | <view class="head"> |
| | |
| | | <image src="../../static/a1.png" mode="aspectFit"></image> |
| | | <view class="flex-col" style="width: calc(100% - 5vw);"> |
| | | <view class="flex-row" style="position: relative;" > |
| | | <view style="width: 2vw;padding-left: 5vw;;font-size: 2vw;">{{baseInfo.xDistance}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 7vw;">m</view> |
| | | <view style="width: 2vw;padding-left: 2vw;;font-size: 2vw;">{{baseInfo.xDistance}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 10vw;">m</view> |
| | | </view> |
| | | <view style="height: 100%;text-align: left;text-indent: 2em;">累计走行距离(米)</view> |
| | | </view> |
| | |
| | | <image src="../../static/b1.png" mode="aspectFit"></image> |
| | | <view class="flex-col" style="width: calc(100% - 5vw);"> |
| | | <view class="flex-row" style="position: relative;" > |
| | | <view style="width: 2vw;padding-left: 5vw;;font-size: 2vw;">{{baseInfo.yDistance}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 7vw;">m</view> |
| | | <view style="width: 2vw;padding-left: 2vw;;font-size: 2vw;">{{baseInfo.yDistance}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 10vw;">m</view> |
| | | </view> |
| | | <view style="height: 100%;text-align: left;text-indent: 2em;">累计升降距离(米)</view> |
| | | </view> |
| | |
| | | <image src="../../static/c1.png" mode="aspectFit"></image> |
| | | <view class="flex-col" style="width: calc(100% - 5vw);"> |
| | | <view class="flex-row" style="position: relative;" > |
| | | <view style="width: 2vw;padding-left: 5vw;;font-size: 2vw;">{{baseInfo.xDuration}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 7vw;">s</view> |
| | | <view style="-width: 2vw;padding-left: 2vw;;font-size: 2vw;">{{baseInfo.xDuration}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 10vw;">s</view> |
| | | </view> |
| | | <view style="height: 100%;text-align: left;text-indent: 2em;">累计走行时长(秒)</view> |
| | | </view> |
| | |
| | | <image src="../../static/d1.png" mode="aspectFit"></image> |
| | | <view class="flex-col" style="width: calc(100% - 5vw);"> |
| | | <view class="flex-row" style="position: relative;" > |
| | | <view style="width: 2vw;padding-left: 5vw;;font-size: 2vw;">{{baseInfo.yDuration}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 7vw;">s</view> |
| | | <view style="width: 2vw;padding-left: 2vw;;font-size: 2vw;">{{baseInfo.yDuration}}</view> |
| | | <view style="position: absolute;bottom: 0;left: 10vw;">s</view> |
| | | </view> |
| | | <view style="height: 100%;text-align: left;text-indent: 2em;">累计升降时长(秒)</view> |
| | | </view> |
| | |
| | | |
| | | <!-- null --> |
| | | <view style="height: 2%;"></view> |
| | | |
| | | |
| | | |
| | | <view style="height: 43%;"> |
| | | <view style="height: 51%;"> |
| | | <y-box> |
| | | <view class="box-item"> |
| | | <view class="flex-row" style="width: 100%;"> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="flex-row" style="width: 100%;"> |
| | | <!-- 左 --> |
| | | <view class="charts-box-ring"> |
| | | <qiun-data-charts type="ring" :opts="{legend:{position:'bottom'}}" :eopts="ringOpts" :chartData="chartsDataPie2" :echartsH5="true" :echartsApp="true"/> |
| | | </view> |
| | | <!-- 右 --> |
| | | <view> |
| | | <!-- 库位使用情况 --> |
| | | <!-- left --> |
| | | <view style="margin-left: 5%;"> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">在库</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.stockCount}}</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">长总库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.longAllLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info" style="margin-top: 2vh;"> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">在库</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.emptyCount}}</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">使用库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.longUseLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info" style="margin-top: 2vh;"> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">在库</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.noneCount}}</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">空库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.longEmptyLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">禁用库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.longXLoc}}</view> |
| | | </view> |
| | | </view> |
| | | <view style="margin-left: 5%;"> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">短总库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.shortAllLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">使用库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.shortUseLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">空库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.shortEmptyLoc}}</view> |
| | | </view> |
| | | <view class="flex-row sub-info"> |
| | | <image src="../../static/g1.png" mode="aspectFit"></image> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;">禁用库位</view> |
| | | <view style="width: 8vw;height: 4vw;line-height: 4vw;font-size: 2vw;">{{baseInfo.shortXLoc}}</view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | </y-box> |
| | | </view> |
| | | <view style="height: 2%;"></view> |
| | | <view style="height: 18%;"> |
| | | <view style="height: 10%;"> |
| | | <y-box> |
| | | <view class="flex-col" style="width: 100%;height: 100%;font-size: 4vh;justify-content: center;letter-spacing: 1vh;"> |
| | | <!-- 嘉善边锋机械股份有限公司 --> |
| | |
| | | <view class="info-main"> |
| | | <view class="info-box"> |
| | | <y-box> |
| | | <view class="info-box-text"> |
| | | <view class="flex-col info-box-text-item">目标站:{{infoText.staNo}}</view> |
| | | <view class="flex-col info-box-text-item">商品编号:{{infoText.matnr}}</view> |
| | | <view class="flex-col info-box-text-item">商品名称:{{infoText.maknx}}</view> |
| | | <view class="flex-col info-box-text-item">商品规格:{{infoText.specs}}</view> |
| | | <view class="flex-col info-box-text-item">数量:{{infoText.count}}</view> |
| | | <!-- 文本容器 --> |
| | | <view class="text-content"> |
| | | <!-- head --> |
| | | <view class="swiper-head"> |
| | | <view style="width: 10%;">序号</view> |
| | | <view style="width: 12%;">订单号</view> |
| | | <view style="width: 12%;">工作号</view> |
| | | <view style="width: 12%;">箱码</view> |
| | | <view style="width: 12%;">商品编号</view> |
| | | <view style="width: 12%;">商品名称</view> |
| | | <view style="width: 10%;">规格</view> |
| | | <view style="width: 10%;">数量</view> |
| | | <view style="width: 10%;">结余</view> |
| | | </view> |
| | | <!-- body --> |
| | | <view class="swiper-body"> |
| | | <!-- swiper 一些说明 |
| | | circular 是否采用衔接滑动,即播放到末尾后重新回到开头 |
| | | vertical 滑动方向是否为纵向 |
| | | display-multiple-items 同时显示的滑块数量 --> |
| | | <swiper class="swiper-body-main" vertical="true" |
| | | display-multiple-items="8" |
| | | circular="true" :autoplay="true" :interval="3000" :duration="1000"> |
| | | <swiper-item class="swiper-item" v-for="(item,i) in locs" :key="i"> |
| | | <view style="width: 10%;">No:{{i+1}}</view> |
| | | <view style="width: 12%;">{{item.orderNo ? item.orderNo : '--'}}</view> |
| | | <view style="width: 12%;">{{item.wrkNo ? item.wrkNo : '--'}}</view> |
| | | <view style="width: 12%;">{{item.suppCode ? item.suppCode : '--'}}</view> |
| | | <view style="width: 12%;">{{item.matnr}}</view> |
| | | <view style="width: 12%;">{{item.maktx}}</view> |
| | | <view style="width: 10%;">{{item.specs ? item.specs : '--'}}</view> |
| | | <view style="width: 10%;">{{item.anfme ? item.anfme : '--'}}</view> |
| | | <view style="width: 10%;">{{item.volume ? item.volume : '--'}}</view> |
| | | </swiper-item> |
| | | </swiper> |
| | | </view> |
| | | </view> |
| | | </y-box> |
| | | </view> |
| | |
| | | <input type="text" v-model="baseUrl"> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="desc">站点:</view> |
| | | <view class="input"> |
| | | <input type="text" v-model="devNo"> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- button --> |
| | | <view class="eject-button"> |
| | |
| | | data() { |
| | | return { |
| | | series: [], |
| | | homeViewShow: true, |
| | | infoViewShow: false , |
| | | homeViewShow: false, |
| | | infoViewShow: true , |
| | | errorInfoViewShow: false, |
| | | homeMode: [], |
| | | infoMode: [], |
| | |
| | | stockCount: '', |
| | | emptyCount: '', |
| | | noneCount: '', |
| | | longAllLoc: '', |
| | | shortAllLoc: '', |
| | | longEmptyLoc: '', |
| | | shortEmptyLoc: '', |
| | | longUseLoc: '', |
| | | shortUseLoc: '', |
| | | longXLoc: '', |
| | | shortXLoc: '', |
| | | }, |
| | | chartsData: { |
| | | "Line": { |
| | |
| | | infoType: 0, |
| | | text: '', |
| | | infoText: { |
| | | title: '全板出库', |
| | | staNo: "200", |
| | | matnr: "300", |
| | | maknx: "400", |
| | | specs: "500", |
| | | count: "600", |
| | | error: "利用立体仓库设备可实现仓库高层合理化、存取自动化、操作简便化;。" |
| | | title: '', |
| | | staNo: "", |
| | | matnr: "", |
| | | maknx: "", |
| | | specs: "", |
| | | count: "", |
| | | error: "" |
| | | }, |
| | | |
| | | |
| | | |
| | | swiperList: [], |
| | | devNo: 'CS-313', |
| | | locs: [] |
| | | } |
| | | }, |
| | | onShow() { |
| | |
| | | const BasePort = uni.getStorageSync('BasePort'); |
| | | const BaseCrnId = uni.getStorageSync('BaseCrnId'); |
| | | const PROJ = uni.getStorageSync('UPROJ'); |
| | | const DEVNO = uni.getStorageSync('devNo'); |
| | | that.baseUrl = PROJ |
| | | that.baseIP = BaseIP |
| | | that.baseLedId = BaseLedId |
| | | that.basePort = BasePort |
| | | that.baseCrnId = BaseCrnId |
| | | this.getUrl() |
| | | that.devNo = DEVNO |
| | | // this.getUrl() |
| | | }, |
| | | onLoad() { |
| | | |
| | | // this.getServerData() |
| | | this.getDate() |
| | | setInterval(()=>{ |
| | | this.getDate() |
| | | this.getInfo() |
| | | this.getError() |
| | | setTimeout(()=> { |
| | | this.getUrl() |
| | | // 测试用 |
| | | // this.getInfo2() |
| | | // this.getError2() |
| | | this.controller() |
| | | },1000) |
| | | setInterval(()=>{ |
| | | // this.controller() |
| | | },2000) |
| | | // 测试用 |
| | | |
| | | this.getVisualized() |
| | | },1000) |
| | | }, |
| | | methods: { |
| | | getUrl() { |
| | | this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePort + "/" +this.baseUrl |
| | | }, |
| | | // getServerData() { |
| | | // this.chartsDataLine1=JSON.parse(JSON.stringify(demodata.Line)) |
| | | // this.chartsDataPie2=JSON.parse(JSON.stringify(demodata.PieA)) |
| | | // }, |
| | | getVisualized() { |
| | | let that = this |
| | | let param = {devNo: `${that.devNo}`} |
| | | uni.request({ |
| | | url: `${that.commonUrl}/rpc/info`, |
| | | header: { |
| | | 'Access-Control-Allow-Origin': '*', |
| | | 'Access-Control-Allow-Methods': 'GET,POST,OPTIONS', |
| | | 'Access-Control-Allow-Headers': 'X-Request-with,Content-Type', |
| | | }, |
| | | sslVerify: false, |
| | | withCredentials: true, |
| | | method: 'POST', |
| | | data: JSON.stringify(param), |
| | | success(res) { |
| | | res = res.data |
| | | that.result = res |
| | | if (res.code === 200) { |
| | | console.log(res.data.agvWaitPakins); |
| | | if (res.data.agvWrkDetls != null) { |
| | | that.locs = res.data.agvWrkDetls |
| | | if (res.data.agvWrkMast) { |
| | | if (res.data.agvWrkMast.ioType == 107) { |
| | | that.infoText.title = '盘点出库' |
| | | } else if (res.data.agvWrkMast.ioType == 103) { |
| | | that.infoText.title = '拣料出库' |
| | | } else { |
| | | that.infoText.title = '全板出库' |
| | | } |
| | | } else{ |
| | | that.infoText.title = '入库作业' |
| | | } |
| | | } else if (res.data.agvWaitPakins != null) { |
| | | that.locs = res.data.agvWaitPakins |
| | | that.infoText.title = '入库作业' |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | getServerData() { |
| | | this.chartsDataLine1=JSON.parse(JSON.stringify(this.chartsData.Line)) |
| | | this.chartsDataPie2=JSON.parse(JSON.stringify(this.chartsData.Pie)) |
| | | }, |
| | | // 获取错误信息 |
| | | getInfo2() { |
| | | let that = this |
| | |
| | | that.infoText.title = '检料出库' |
| | | } |
| | | that.infoText.staNo = res.data[0].staNo |
| | | that.infoText.specs = res.data[0].matDtos[0].specs |
| | | that.infoText.maknx = res.data[0].matDtos[0].maknx |
| | | that.infoText.count = res.data[0].matDtos[0].count |
| | | that.swiperList = res.data[0].matDtos |
| | | // that.infoText.matnr = res.data[0].matDtos[0].matnr |
| | | // that.infoText.specs = res.data[0].matDtos[0].specs |
| | | // that.infoText.maknx = res.data[0].matDtos[0].maknx |
| | | // that.infoText.count = res.data[0].matDtos[0].count |
| | | } else { |
| | | if (that.infoType == 2 || that.infoType == 3) { |
| | | return; |
| | |
| | | that.infoText.title = '全板出库' |
| | | } else if(res.data[0].ioType === 103) { |
| | | that.infoText.title = '检料出库' |
| | | } else if(res.data[0].ioType === 107) { |
| | | that.infoText.title = '盘点出库' |
| | | } |
| | | that.infoText.staNo = res.data[0].staNo |
| | | that.infoText.specs = res.data[0].matDtos[0].specs |
| | | that.infoText.maknx = res.data[0].matDtos[0].maknx |
| | | that.infoText.count = res.data[0].matDtos[0].count |
| | | that.swiperList = res.data[0].matDtos |
| | | // that.infoText.matnr = res.data[0].matDtos[0].matnr |
| | | // that.infoText.specs = res.data[0].matDtos[0].specs |
| | | // that.infoText.maknx = res.data[0].matDtos[0].maknx |
| | | // that.infoText.count = res.data[0].matDtos[0].count |
| | | } else { |
| | | if (that.infoType == 2 || that.infoType == 3) { |
| | | return; |
| | |
| | | let that = this |
| | | uni.request({ |
| | | url: that.commonUrl + "/monitor/led/error", |
| | | data: {ledId:that.baseLedId}, |
| | | method:"GET", |
| | | success(result) { |
| | | var res = result.data |
| | |
| | | var errorInfo = res.data |
| | | if (that.infoType == 1) { |
| | | that.infoType = 3 |
| | | that.infoText.title = "异常" |
| | | that.infoText.title = "其他信息" |
| | | // that.infoText.title = "异常" |
| | | that.infoText.error = errorInfo |
| | | return |
| | | } |
| | | that.infoType = 2 |
| | | that.infoText.title = "异常" |
| | | that.infoText.title = "其他信息" |
| | | // that.infoText.title = "异常" |
| | | that.infoText.error = errorInfo |
| | | } else { |
| | | if (that.infoType == 1) { |
| | |
| | | uni.setStorageSync('BasePort',this.basePort); |
| | | uni.setStorageSync('BaseCrnId',this.baseCrnId); |
| | | uni.setStorageSync('UPROJ',this.baseUrl); |
| | | uni.setStorageSync('devNo',this.devNo); |
| | | this.getUrl() |
| | | this.ejectShow = false |
| | | }, |
| | |
| | | uni.request({ |
| | | url: that.commonUrl + "/monitor/loc/rep", |
| | | method:'GET', |
| | | data: { |
| | | crnId: that.baseCrnId, |
| | | }, |
| | | success(result) { |
| | | var res = result.data |
| | | if (res.code === 200) { |
| | | console.log(res.data.pie); |
| | | that.chartsData.Pie.series[0].data = res.data.pie |
| | | that.stockCount = res.data.stockCunt |
| | | that.emptyCount = res.data.emptyCount |
| | | that.noneCount = res.data.noneCount |
| | | that.used = res.data.used |
| | | that.usedPr = res.data.usedPr |
| | | that.baseInfo.longAllLoc = res.data.longAllLoc |
| | | that.baseInfo.shortAllLoc = res.data.shortAllLoc |
| | | that.baseInfo.longEmptyLoc = res.data.longEmptyLoc |
| | | that.baseInfo.shortEmptyLoc = res.data.shortEmptyLoc |
| | | that.baseInfo.longUseLoc = res.data.longUseLoc |
| | | that.baseInfo.shortUseLoc = res.data.shortUseLoc |
| | | that.baseInfo.longXLoc = res.data.longXLoc |
| | | that.baseInfo.shortXLoc = res.data.shortXLoc |
| | | that.baseInfo.used = res.data.used |
| | | that.baseInfo.usedPr = res.data.usedPr |
| | | } |
| | | } |
| | | }) |
| | |
| | | |
| | | <style> |
| | | /* @import url("../../static/css/common.css"); */ |
| | | @import url("home.css"); |
| | | /* 列 */ |
| | | .flex-col { |
| | | display: flex; |
| | |
| | | /* background-color: #00ffff; */ |
| | | } |
| | | .sub-info { |
| | | margin-top: 1vh; |
| | | font-size: 1.5vw; |
| | | } |
| | | .sub-info image { |
| | |
| | | .eject{ |
| | | position: relative; |
| | | width: 40vw; |
| | | height: 40vh; |
| | | height: 50vh; |
| | | background-color: #fff; |
| | | border-radius: 2rem; |
| | | } |