#
zjj
2025-05-28 36909d121a6f1b4c3f4540b8c64c80e872d105ae
Monitor-APP/pages/index/index.vue
@@ -6,7 +6,7 @@
         <view class="head">
            <text @click="port()">自动仓库WCS监控平台</text>
            <view class="time-tools">{{year}}-{{month}}-{{day}}&nbsp{{hours}}:{{minutes}}:{{seconds}}&nbsp{{week}}</view>
            <view class="button-left" @click="url()"></view>
            <view class="button-left" @click="ejected()"></view>
            <view class="button-right" @click="ledId()"></view>
         </view>
         <view class="main">
@@ -16,24 +16,58 @@
                  <view class="box-border box-border2"></view>
                  <view class="box-border box-border3"></view>
                  <view class="box-border box-border4"></view>
                  <!-- 全板出库 -->
                  <view style="width: 10%;height: 100%;display:inline-block;float: left;text-align: center;padding-top: 180px;">
                     <text>{{title}}</text>
                  <view style="width: 100%;height: 100%;" v-show="!errorShow">
                     <!-- 分有无订单划分两部分 -->
                     <!-- 左侧信息 -->
                     <view style="" :class="width">
                        <!-- 全板出库 -->
                        <view class="box-items">{{title}}</view>
                        <!-- 目标站 -->
                        <view class="box-items">{{staNo}}</view>
                        <!-- 商品编号 -->
                        <!-- <view class="box-items">{{matnr}}</view> -->
                        <!-- 商品名称 -->
                        <view class="box-items">{{maknx}}</view>
                        <!-- 商品名称 -->
                        <view class="box-items">{{specs}}</view>
                        <!-- 出库数量 -->
                        <view class="box-items">{{count}}</view>
                     </view>
                     <view style="width: 50%;height: 100%;display: inline-block;float: left;" v-show="orderShow">
                        <!-- 订单号 -->
                        <view class="box-items">{{orderNo}}</view>
                        <!-- 已出托盘数 -->
                        <view class="box-items">{{doneOfTray}}</view>
                        <!-- 托盘总数量 -->
                        <view class="box-items">{{totalOfTray}}</view>
                        <!-- 已出箱数 -->
                        <view class="box-items">{{doneOfUnit}}</view>
                        <!-- 总箱数 -->
                        <view class="box-items">{{totalOfUnit}}</view>
                     </view>
                  </view>
                  <view style="width: 100%;height: 100%;" v-show="errorShow">
                     <view style="line-height: 700px;font-size: 175rpx;">{{errorMsg}}</view>
                  </view>
                  <!-- 全板出库 -->
                  <!-- <view style="width: 10%;height: 100%;display:inline-block;float: left;text-align: center;padding-top: 180px;">
                     <text>{{title}}</text>
                  </view> -->
                  <!-- 滚动区域 -->
                  <view style="width: 80%;height: 100%;display: inline-block;">
                  <!-- <view style="width: 80%;height: 100%;display: inline-block;"> -->
                     <!--显示order订单编号 -->
                     <text v-show="orderShow" style="display: block;font-size: 140rpx;" >{{orderNo}}</text>
                     <!-- <text v-show="orderShow" style="display: block;font-size: 140rpx;" >{{orderNo}}</text>
                     <swiper :class="swiper" circular="true" vertical="true" display-multiple-items="6" :autoplay="autoplay" :interval="interval" :duration="duration">
                        <swiper-item v-for="(item,index) in matList" :key="index">
                           <view style="font-size: 160rpx;">{{item}}</view>
                        </swiper-item>
                     </swiper>
                  </view>
                  </view> -->
                  <!-- 站台号 -->
                  <view style="width: 10%;height: 100%;display: inline-block;float: right;padding-top: 180px;">
                  <!-- <view style="width: 10%;height: 100%;display: inline-block;float: right;padding-top: 180px;">
                     <text>{{staNo}}</text>
                  </view>
                  </view> -->
               </view>
            </view>
         </view>
@@ -42,7 +76,7 @@
         <view class="head">
            <text @click="port()">自动仓库WCS监控平台</text>
            <view class="time-tools">{{year}}-{{month}}-{{day}}&nbsp{{hours}}:{{minutes}}:{{seconds}}&nbsp{{week}}</view>
            <view class="button-left" @click="url()"></view>
            <view class="button-left" @click="ejected()"></view>
            <view class="button-right" @click="ledId()"></view>
         </view>
         <view class="main">
@@ -155,7 +189,6 @@
                        <p class="english">Today</p>
                     </view>
                     <view class="sub-main">
                        <!-- 折线图 -->
                        <view class="charts-box ring">
                           <qiun-data-charts type="ring" :opts="{legend:{position:'bottom'}}" :eopts="ringOpts" :chartData="chartsDataPie2" :echartsH5="true" :echartsApp="true"/>
                        </view>
@@ -186,8 +219,8 @@
                  <view class="box-border box-border4"></view>
                  <!-- <text>浙江中扬立库技术有限公司</text>
                  <text>当前版本号</text> -->
                  <view @click="crn()">浙江中扬立库技术有限公司</view>
                  <image src="../../static/barcode.png" mode="aspectFit"></image>
                  <view @click="crn()">嘉善边锋机械股份有限公司</view>
                  <!-- <image src="../../static/barcode.png" mode="aspectFit"></image> -->
               </view>
            </view>
         </view>
@@ -219,6 +252,46 @@
            <uni-popup-dialog ref="inputClose" mode="input" title="配置堆垛机" :value="crnId"
               placeholder="示例:1" @confirm="crnConfirm"></uni-popup-dialog>
         </uni-popup>
      </view>
      <!-- 自定义弹出层 -->
      <view class="eject-mask" v-show="ejectShow">
         <view class="eject">
            <!-- 弹出title -->
            <view class="eject-title">修改 / 配置</view>
            <!-- input -->
            <view class="eject-input">
               <view class="item">
                  <view class="desc">ip:</view>
                  <view class="input">
                     <input type="text" v-model="baseIP">
                  </view>
               </view>
               <view class="item">
                  <view class="desc">port:</view>
                  <view class="input">
                     <input type="text" v-model="basePort">
                  </view>
               </view>
               <view class="item">
                  <view class="desc">ledId:</view>
                  <view class="input">
                     <input type="text" v-model="baseLedId">
                  </view>
               </view>
               <view class="item">
                  <view class="desc">CrnId:</view>
                  <view class="input">
                     <input type="text" v-model="baseCrnId">
                  </view>
               </view>
            </view>
            <!-- button -->
            <view class="eject-button">
               <view class="button-item" @click="ejectClose">取 消</view>
               <view class="button-item" @click="ejectConfirm">确 认</view>
            </view>
         </view>
      </view>
   </view>
</template>
@@ -270,7 +343,7 @@
            week:'星期四',
            ani:'',
            // move: 'upMove 1.5s 1;',
            move:true,
            move:false,
            topMove:'topUp',
            floorMove:'',
            version:'',
@@ -279,16 +352,28 @@
            errorPaper:'',
            title:'',
            staNo:'',
            matnr:'',
            maknx:'',
            specs:'',
            count:'',
            orderNo:null,
            doneOfTray:'',
            totalOfTray:'',
            doneOfUnit:'',
            totalOfUnit:'',
            errorMsg:null,
            width:'full-width',
            errorShow:'',
            pakinShow:'',
            pakinGun:'',
            orderShow:false,
            orderNo:null,
            swiper:'swiper-here',
            autoplay:true, // 自动循环
            interval:1000, // 调用时长
            duration:8000, // 移动速度
            matList:[], // 订单列表
            ejectShow: false,
         }
      },
      mounted() {
@@ -297,38 +382,105 @@
         const BaseLedId = uni.getStorageSync('BaseLedId');
         const BasePort = uni.getStorageSync('BasePort');
         const BaseCrnId = uni.getStorageSync('BaseCrnId');
         if (BaseIP && BaseLedId) {
            that.baseIP = BaseIP
            that.baseLedId = BaseLedId
            that.basePort = BasePort
            that.baseCrnId = BaseCrnId
         } else {
            that.baseUrl = ''
            that.baseLedId = ''
         }
         this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePort + this.baseUrl
         this.getUrl()
      },
      onLoad() {
      },
      onReady() {
         // 获得初始数据
         setTimeout(() => {
         setInterval(() => {
            // 获得初始数据
            this.initlineChart();
            this.initPieChart();
         }, 0);
         setTimeout(() => {
            // 主页信息
            this.getServerData();
            this.getOther();
            this.getPakin();
         }, 1000);
         setInterval(() => {
            // 其他信息
            this.getDate();
            this.getPakin();
            this.getError();
            // this.getYYY();
            // this.getEEE();
            this.animation();
         },2000)
            this.animation()
            this.getUrl()
         },1000)
      },
      methods: {
         // 获取url
         getUrl() {
            this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePort + this.baseUrl
            this.chartsDataLine1 = JSON.parse(JSON.stringify(demodata.Line))
         },
         // 获取错误信息
         getYYY() {
            let that = this
            var result = ycqdata.dataEEE
            // 测试用 ↓
            var   res = result.data
            // 测试用 ↑
            // 返回结果有值 且值不等于空值 就是有错误信息需要展示
            if (res.data && res.data !== "") {
               that.errorMsg = res.data
               that.errorShow = true
               that.move = false // 显示
            } else {
               that.errorPaper = ''
               that.errorShow = false
               if (that.pakinShow) {
                  return;
               } else {
                  that.move = true // 隐藏
               }
            }
         },
         getEEE () {
            let that = this
            var newsData = ''
            var str = ''
            let result = ycqdata.dataYYY
                  // 测试用 ↓
            let   res = result.data
                  // 测试用 ↑
               if(res.data && res.data !== null) {
                  if (res.data[0].ioType === 101) {
                     that.title = '全板出库'
                  } else if(res.data[0].ioType === 103) {
                     that.title = '检料出库'
                  }
                  that.staNo = '目标站:' + res.data[0].staNo
                  that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr
                  that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx
                  that.count = '出库数量:' + res.data[0].matDtos[0].count
                  if (res.data[0].orderNo) {
                     that.orderNo = "订单号:" + res.data[0].orderNo
                     that.orderShow = true
                     that.width = 'half-width'
                  } else {
                     that.orderNo = null;
                     that.orderShow = false
                     that.width = 'full-width'
                  }
                  that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray
                  that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray
                  that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit
                  that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit
                  if (that.errorShow) {
                           return;
                        } else {
                           that.newspaper = newsData
                           that.move = false
                        }
               }else {
                  that.move = true
               }
         },
         // 获取错误信息
         getError() {
            let that = this
@@ -340,30 +492,18 @@
               },
               method:'GET',
               success(result) {
                  // res = result.data
                  // 测试用 ↓
               result = ycqdata.dataEEE
               res = result.data
                  // 测试用 ↑
                  // 返回结果有值 且值不等于空值 就是有错误信息需要展示
                  res = result.data
                  if (res.data && res.data !== "") {
                     that.matList = []
                     that.orderNo = null
                     that.matList.push(res.data)
                     that.swiper = 'swiper-here-error'
                     that.title = ''
                     that.staNo = ''
                     that.pakinShow = false
                     that.errorMsg = res.data
                     that.errorShow = true
                     that.move = false // 显示
                  } else {
                     that.errorPaper = ''
                     that.errorShow = false
                     if (that.pakinShow) {
                        return;
                     } else {
                        that.move = true // 隐藏
                     }
                     // if (that.pakinShow) {
                     //    return;
                     // } else {
                     //    // that.move = true // 隐藏
                     // }
                  }
               }
            });
@@ -381,63 +521,48 @@
               },
               method:'GET',
               success(result) {
                  // res = result.data
                  // 测试用 ↓
               result = ycqdata.dataYYY
               res = result.data
                  // 测试用 ↑
                  console.log(res)
                  res = result.data
                  if (that.errorShow) {
                     return;  // 有错误信息
                  }
                  if(res.data && res.data !== null) {
                     if (res.data[0].matDtos.length > 0) {
                        that.pakinShow = true
                        that.pakinGun = true
                        if (res.data[0].ioType === 101) {
                           that.title = '全板出库'
                        } else if(res.data[0].ioType === 103) {
                           that.title = '检料出库'
                        }
                        if (res.data[0].orderNo) {
                           that.orderNo = "订单号:" + res.data[0].orderNo
                           that.swiper = 'swiper-here-oN'
                           that.orderShow = true
                        } else {
                           that.orderNo = null;
                           that.swiper = 'swiper-here'
                           that.orderShow = false
                        }
                        that.staNo = '目标站' + res.data[0].staNo
                        for (var i = 0; i < res.data[0].matDtos.length; i++) {
                           var matnr = res.data[0].matDtos[i].matnr + ' - ' + res.data[0].matDtos[i].batch
                           that.matList.push(matnr)
                        }
                        if (that.errorShow) {
                           // that.pakinShow = false
                           return;
                        } else {
                           that.newspaper = newsData
                           that.move = false
                        }
                        if (res.data[0].matDtos.length <= 8) {
                           that.errorShow = true
                           that.pakinShow = true
                           that.pakinGun  = false
                        }
                     if (res.data[0].ioType === 101) {
                        that.title = '全板出库'
                     } else if(res.data[0].ioType === 103) {
                        that.title = '检料出库'
                     } else
                     that.title = res.data[0].title
                     that.staNo = '目标站:' + res.data[0].staNo
                     that.matnr = '商品编号:' + res.data[0].matDtos[0].matnr
                     that.maknx = '商品名称:' + res.data[0].matDtos[0].maknx
                     that.specs = '规格:' + res.data[0].matDtos[0].specs
                     that.count = '出库数量:' + res.data[0].matDtos[0].count
                     if (res.data[0].orderNo) {
                        that.orderNo = "订单号:" + res.data[0].orderNo
                        that.orderShow = true
                        that.width = 'half-width'
                     } else {
                        that.move = true
                        }
                  } else {
                        that.orderNo = null;
                        that.orderShow = false
                        that.width = 'full-width'
                     }
                     that.doneOfTray = '已出托盘数:' + res.data[0].doneOfTray
                     that.totalOfTray = '托盘总数量:' + res.data[0].totalOfTray
                     that.doneOfUnit = '已出箱数:' + res.data[0].doneOfUnit
                     that.totalOfUnit = '总箱数:' + res.data[0].totalOfUnit
                     that.newspaper = newsData
                     that.move = false
                  }else {
                     that.move = true
                  }
               }
            });
         },
         animation() {
            if (this.move) {
               // 上层向上 / 下层向上
            if (this.move) {
               this.topMove = 'topUp'
               this.floorMove = 'floorUp'
            } else {
               // 上层向下 / 下层向下
               this.topMove = 'topDown'
               this.floorMove = 'floorDown'
            }
@@ -458,6 +583,7 @@
               method:'GET',
               success(result) {
                  var res = result.data
                  console.log(result);
                  if (res.code === 200) {
                     that.chartsData.Line.categories = [
                        that.getDateFormat(-11),that.getDateFormat(-10),that.getDateFormat(-9),that.getDateFormat(-8),
@@ -497,6 +623,7 @@
                  ledId: 1,
               },
               success(result) {
                  console.log(result);
                  var res = result.data
                  if (res.code === 200) {
                     that.xDistance = res.data.xDistance
@@ -511,33 +638,21 @@
               }
            })
         },
         port() {
            this.$refs.port.open()
         ejected () {
            this.ejectShow = true
         },
         url() {
            this.$refs.url.open()
         },
         ledId() {
            this.$refs.ledId.open()
         },
         crn() {
            this.$refs.crnId.open()
         },
         baseUrlConfirm(val) {
            this.baseIp = val
            uni.setStorageSync('BaseIp', this.baseIp);
         },
         ledIdConfirm(val) {
            this.baseLedId = val
         // 弹出层确认
         ejectConfirm() {
            uni.setStorageSync('BaseIp', this.baseIP);
            uni.setStorageSync('BaseLedId', this.baseLedId);
         },
         portConfirm(val) {
            this.basePort = val
            uni.setStorageSync('BasePort',this.basePort);
         },
         crnConfirm(val) {
            this.baseCrnId = val
            uni.setStorageSync('BaseCrnId',this.baseCrnId);
            this.getUrl()
            this.ejectShow = false
         },
         // 弹出层取消
         ejectClose() {
            this.ejectShow = false
         },
         getServerData() {
            this.chartsDataLine1=JSON.parse(JSON.stringify(this.chartsData.Line))
@@ -570,6 +685,106 @@
</script>
<style>
   /* 弹出:配置区域 */
   .eject-mask {
      width: 100%;
      height: 100%;
      background-color: rgba(0, 0, 0, 0.5);
      position: fixed;
      top: 0;
      left: 0;
      z-index: 999;
      display: flex;
      align-items: center;
      justify-content: center;
   }
   .eject{
      position: relative;
      width: 600px;
      height: 350px;
      background-color: #eaeaea;
      border-radius: 25rpx;
   }
   .eject-title {
      width: 100%;
      height: 100px;
      line-height: 100px;
      font-size: 20px;
      font-weight: 700;
      color:    #606266;
      text-align: center;
   }
   .eject-input {
   }
   .item {
      display: flex;
      align-items: center;
      margin: 10px 0 0 0;
   }
   .desc {
      display: inline-block;
      width: 40%;
      text-align: right;
      color: #606266;
      font-size: 18px;
   }
   .input {
      display: flex;
      align-items: center;
      padding-left: 5px;
      padding-right: 5px;
      width: 100%;
      height: 30px;
      border: 1px solid #C0C4CC;
      margin-right: 50px;
   }
   .eject-input input {
      width: 100%;
   }
   .eject-button {
      display: flex;
      align-items: center;
      position: absolute;
      bottom: 0;
      height: 60px;
      line-height: 60px;
      width: 100%;
      border-top: 1px solid #ccc;
   }
   .button-item {
      width: 50%;
      height: 100%;
      font-size: 20px;
      font-weight: bold;
      text-align: center;
      color: #909399;
   }
   .button-item:last-child {
      color: #67C23A;
      border-left: 1px solid #ccc;
   }
   .full-width {
      width: 100%;
      height: 100%;
      display: inline-block;
      float: left;
   }
   .half-width {
      width: 50%;
      height: 100%;
      display: inline-block;
      float: left;
   }
   .box-items {
      height: 20%;
      width: 100%;
      /* background-color: #233751; */
      line-height: 300rpx;
   }
   /* 当前页面无 orderNo */
   .swiper-here {
      display: inline-block;
@@ -708,7 +923,7 @@
      position: relative;
      color: #FFFFFF;
      text-align: center;
      font-size: 200rpx;
      font-size: 120rpx;
      letter-spacing: 5rpx;
      background-image: url(../../static/background.png);
   }