野心家
2025-04-16 e8c5367d345f56997d3092a081690e7c7b3b88c6
Monitor-APP/pages/home/home.vue
@@ -218,13 +218,11 @@
                           </y-box>
                        </view>
                        <view style="height: 2%;"></view>
                        <view style="height: 18%;">
                           <y-box>
                              <view class="flex-col"
                                 style="width: 100%;height: 100%;font-size: 4vh;justify-content: center;letter-spacing: 1vh;">
                                 自动仓库WCS监控平台
                              </view>
                           </y-box>
                        <view style="height: 18%"  class="flex-row">
                              <image style="height: 100%;"
                                 src="../../static/barcode.png" mode="aspectFit"></image>
                              <image style="height: 100%;"
                                 src="../../static/zy_logo.png" mode="aspectFit"></image>
                        </view>
                     </view>
                  </view>
@@ -234,61 +232,60 @@
         </view>
      </uni-transition>
      <!-- 全板/拣料信息 -->
      <uni-transition :duration="duration" :mode-class="infoMode" :show="infoViewShow">
         <view class="home-view">
            <view class="head">
               <text>{{infoText.title}}</text>
            </view>
            <!-- 日历 -->
            <view class="time-tools">{{calendar}}</view>
            <view class="button-left" @click="ejected()"></view>
            <view class="button-right" @click="ejected()"></view>
            <!-- 主体 -->
            <view class="info-main">
               <view class="info-box">
                  <y-box>
                     <!-- 文本容器 -->
                     <view class="text-content" v-for="item in swiperList">
                        <view>目标站:{{infoText.staNo}}</view>
                        <view>商品编码:{{item.matnr}}</view>
                        <view>商品名称:{{item.maknx}}</view>
                        <view>规格:{{item.specs}}</view>
                        <view>数量:{{item.count}} / {{item.total ? item.total : '--'}}</view>
                        <!-- head -->
                        <!-- <view class="swiper-head">
                           <view style="width: 20%;">目标站:{{infoText.staNo}}</view>
                           <view style="width: 30%;">商品编号</view>
                           <view style="width: 20%;">商品名称</view>
                           <view style="width: 20%;">规格</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 swiperList" :key="i">
                                 <view style="width: 20%;">No:{{i+1}}</view>
                                 <view style="width: 30%;">{{item.matNo}}</view>
                                 <view style="width: 20%;">{{item.maknx}}</view>
                                 <view style="width: 20%;">{{item.specs}}</view>
                                 <view style="width: 10%;">{{item.count}}</view>
                              </swiper-item>
                           </swiper>
                        </view> -->
                     </view>
                  </y-box>
               </view>
            </view>
         </view>
      </uni-transition>
    <uni-transition :duration="duration" :mode-class="infoMode" :show="infoViewShow">
      <view class="home-view">
        <view class="head">
          <text>{{infoText.title}}</text>
        </view>
        <!-- 日历 -->
        <view class="time-tools">{{calendar}}</view>
        <view class="button-left" @click="ejected()"></view>
        <view class="button-right" @click="ejected()"></view>
        <!-- 主体 -->
        <view class="info-main">
          <view class="info-box">
            <y-box>
              <!-- 文本容器 -->
              <view class="text-content">
                <!-- head -->
                <!-- <view class="swiper-head">
                  <view style="flex: 1;">作业数量:{{infoText.barcode}}</view>
                  <view style="flex: 1;">剩余数量</view>
                </view> -->
                <view class="swiper-head" v-show="swiperList.length > 0">
                           <view style="flex: 2;">任务号</view>
                  <view style="flex: 3;">商品编号</view>
                  <view style="flex: 2;">商品名称</view>
                  <view style="flex: 2;">规格</view>
                           <view style="flex: 2;">工序</view>
                  <view style="flex: 2;">数量</view>
                </view>
                <!-- body -->
                <view class="swiper-body">
                  <!-- swiper 一些说明
                  circular 是否采用衔接滑动,即播放到末尾后重新回到开头
                  vertical 滑动方向是否为纵向
                  display-multiple-items 同时显示的滑块数量 -->
                  <swiper class="swiper-body-main" vertical="true" display-multiple-items="15"
                          circular="true" :autoplay="true" :interval="3000" :duration="1000">
                    <swiper-item class="swiper-item" v-for="(item,i) in swiperList" :key="i"
                                 :style="item.color">
                                 <view style="flex: 2;">{{infoText.workNo}}</view>
                      <view style="flex: 3;">{{item.matnr}}</view>
                      <view style="flex: 2;">{{item.maknx}}</view>
                      <view style="flex: 2;">{{item.specs}}</view>
                                 <view style="flex: 2;">{{item.sku}}</view>
                      <view style="flex: 2;">{{item.count}}/{{item.total}}</view>
                    </swiper-item>
                  </swiper>
                </view>
              </view>
            </y-box>
          </view>
        </view>
      </view>
    </uni-transition>
      <!-- 异常信息 -->
      <uni-transition :duration="duration" :mode-class="errorInfoMode" :show="errorInfoViewShow">
         <view class="error-info-view">
@@ -357,6 +354,14 @@
            </view>
         </view>
      </view>
      <!-- 小车异常 -->
      <view class="board">
         <uni-transition ref="ani" custom-class="transition" :mode-class="newModeClass" :show="errorBoardShow">
            <view class="error-board">
               <text v-for="item in carInfo">{{item}}</text>
            </view>
         </uni-transition>
      </view>
      <view style="color: #FFF;position: fixed;bottom: 10px;left: 10px;" v-show="timeOut">
         连接超时: {{times}} s
      </view>
@@ -373,7 +378,9 @@
            homeViewShow: true,
            infoViewShow: false,
            errorInfoViewShow: false,
            errorBoardShow: false,
            homeMode: [],
            carInfo: [],
            infoMode: [],
            errorInfoMode: [],
            baseInfo: {
@@ -417,6 +424,7 @@
            infoType: 0,
            text: '',
            infoText: {
               workNo: '',
               title: '',
               staNo: "",
               matnr: "",
@@ -485,11 +493,12 @@
         setInterval(() => {
            this.getDate2()
            this.getUrl()
            // this.getInfo()
            // this.getError()
            this.getInfo2()
            this.getError2()
            this.getInfo()
            this.getError()
            // this.getInfo2()
            // this.getError2()
            this.controller()
            this.getCarInfo()
         }, 1000)
         setInterval(() => {
@@ -500,6 +509,41 @@
         }, 1800000)
      },
      methods: {
         getCarInfoTest() {
            let that = this
            var result = ycqdata.carError
            var res = result.data
            that.carInfoModel(res)
         },
         getCarInfo() {
            let that = this
            uni.request({
               url: that.commonUrl + "/monitor/device/error",
               method: "GET",
               success(result) {
                  var res = result.data
                  that.carInfoModel(res)
               }
            })
         },
         carInfoModel(res) {
            let infoList = []
            if (res.code == 200 && res.data != '') {
               let str = ''
               for (let k of res.data) {
                  str = `${k.deviceNo}号${k.device}-${k.errorMsg}`
                  infoList.push(str)
               }
               this.carInfo = infoList
               this.errorBoardShow = true
            } else {
               this.errorBoardShow = false
            }
         },
         changeErrorShow() {
            this.errorBoardShow = !this.errorBoardShow
         },
         timeOuts() {
            console.log(this.times);
         },
@@ -599,11 +643,25 @@
               if (res.data[0].ioType === 101) {
                  that.infoText.title = '全板出库'
               } else if (res.data[0].ioType === 103) {
                  that.infoText.title = '检料出库'
                  that.infoText.title = '拣料出库'
               } else if (res.data[0].ioType === 107) {
                  that.infoText.title = '盘点出库'
               } else if (res.data[0].ioType === 1) {
                  that.infoText.title = '全板入库'
               } else if (res.data[0].ioType === 10) {
                  that.infoText.title = '空板入库'
               } else if (res.data[0].ioType === 54) {
                  that.infoText.title = '并板入库'
               } else if (res.data[0].ioType === 110) {
                  that.infoText.title = '空板出库'
               } else if (res.data[0].ioType === 53) {
                  that.infoText.title = '拣料再入库'
               } else if (res.data[0].ioType === 57) {
                  that.infoText.title = '盘点再入库'
               }
               that.infoText.staNo = res.data[0].staNo
               that.infoText.workNo = res.data[0].workNo
               that.swiperList = res.data[0].matDtos
               // that.infoText.matnr = res.data[0].matDtos[0].matnr
               // that.infoText.specs = res.data[0].matDtos[0].specs
@@ -1234,4 +1292,26 @@
   .textred {
      color: red;
   }
   .board {
      position: absolute;
      top: 0;
      right: 0;
      /* background-color: #aa00ff; */
      /* height: 13vh; */
      width: 100%;
      /* box-shadow: rgba(0,0,0,.35) 0px 5px 15px; */
   }
   .error-board {
      margin: .2rem;
      height: 11vh;
      background-color: #F56C6C;
      box-shadow: rgba(0, 0, 0, .35) 0px 5px 15px;
      border-radius: .2rem;
      display: flex;
      align-items: center;
      justify-content: space-around;
      font-size: 2rem;
   }
</style>