分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-27 77ee85a249a26fcf47c28aebc9cd89b187f9d4dc
´úÂë¹ÜÀí/WMS/WMS_Client/src/views/Home.vue
@@ -1,24 +1,181 @@
<template>
  <div class="title">Welcome To WMS!</div>
  <div class="fixed-row">
    <span style="margin-left: 40px;font-size: 20px;">
        <el-button  circle style="background-color: #409eff;color: #000;width: 70px;height: 50px;">有货</el-button>
        <el-button  circle style="background-color: lightgreen;color: #000;width: 70px;height: 50px;">空货位</el-button>
        <el-button  circle style="background-color: yellow;color: #000;width: 70px;height: 50px;">出入库占用</el-button>
        <el-button  circle style="background-color: red;color: #000;width: 70px;height: 50px;">异常</el-button>
        <el-button  circle style="background-color: #C0C4CC;color: #000;width: 70px;height: 50px;">禁用</el-button>
      </span>
  </div>
  <div style="height: 50px;">
  </div>
  <div v-for="(index,inst) in datalist.length" :key="inst" style="padding: 10px;">
    <h1 style="border-bottom: 1px dashed silver; padding: 5px;;height: 52px;">
      <span v-if="inst==0">外协区</span>
      <span v-else-if="inst==1">托盘叠放区</span>
      <!-- <span v-else-if="inst==1">上料区</span>
      <span v-else-if="inst==2">下料区</span>
      <span v-else-if="inst==3">外协区</span>
      <span v-else-if="inst==4">叠盘区</span> -->
      <span v-else>{{inst}}库区</span>
    </h1>
  <div class="table-container">
    <div class="scrollable-table">
      <table class="one_tal" >
        <tr v-for="(item, k) in datalist[inst].item2" :key="k">
          <td v-for="items in filteredItems(datalist[inst].item1, k+1)" :key="items.stationCode"
          :style="{ 'background-color': getBackgroundColor(items.enable,items.location_state) }">
            <el-tooltip class="item" effect="dark" placement="right" >
              <template #content v-if="items.stationType!=='' && items.bindSN !== '' && items.stationType!==null && items.bindSN !== null">
                <div>库位编号:{{ items.stationCode }}</div>
                <div>物料类型(图号): {{ items.stationType }}</div>
                <div>炉号: {{ items.heatNumber }}</div>
                <div>车轮SN号:{{ items.bindSN }}</div>
                <div>钢坯号:{{ items.billetID }}</div>
              </template>
              <template #content v-else-if="items.area==3 && items.tray_status=='EmptyTray'">
                <div v-if="item.tray_type==SmallTray">小托盘</div>
                <div v-else>大托盘</div>
                <div>数量:{{ items.quantity }}</div>
              </template>
              <template #content v-else>
                <div>目前暂无信息</div>
              </template>
              <template #content v-if="items.area==11">
                <div>小托盘</div>
                <div>数量:{{ items.quantity }}</div>
              </template>
              <template #content v-if="items.area==10">
                <div>大托盘</div>
                <div>数量:{{ items.quantity }}</div>
              </template>
              <template #content v-if="items.area==12">
                <div v-if="item.tray_type==SmallTray">小托盘</div>
                <div v-else>大托盘</div>
                <div>数量:{{ items.quantity }}</div>
              </template>
              <div>{{ items.stationCode}}</div>
            </el-tooltip>
          </td>
        </tr>
      </table>
    </div>
  </div>
  </div>
</template>
<script>
import { ref, reactive } from 'vue'
export default {
  setup() {
  data() {
    return {
      visible: false,
      datalist:[],
    };
  },
  mounted() {
    setInterval(() => {
    this.selList(); // ä½¿ç”¨ç®­å¤´å‡½æ•°ç»‘定this
  }, 3000);
  },
  methods: {
    selList(){
      this.loading=true
      this.http.post("/api/dt_stationinfo/dt_stationinfolist").then(x => {
        this.datalist = x.data;
                  })
      .catch(error => {
        console.error('请求出错:', error);
      });
    },
    getBackgroundColor(enable,locationState) {
      if (enable=='0') {
          return '#C0C4CC';
      }
      else{
        switch (locationState) {
        case 'Stroge':
        return '#409eff';
        case 'Empty':
          return 'lightgreen';
        case 'InBusy':
          return 'yellow';
        case 'OutBusy':
          return 'yellow';
        case 'Busy':
          return 'yellow';
        case 'Abnormal':
          return 'red';
        case 'Abnormal':
          return 'yellow';
        default:
          return 'transparent';
      }
      }
    }
  },
  computed: {
    filteredItems() {
      return (itemList, line) => {
        return itemList.filter(item => item.line === line);
      };
    }
  }
}
};
</script>
<style scoped>
.title {
  line-height: 70vh;
.table-container {
  overflow-x: auto;
}
.scrollable-table {
  width: 100%;
}
.one_tal {
  margin-top: 10px;
  padding: 5px;
  white-space: nowrap;
  border-spacing: 10px;
  padding-right: 500px;
}
.one_tal tr{
  margin-top: 10px;
  margin-bottom: 10px;
}
.one_tal td {
  width: 200px;
  height: 40px;
  background-color: rgb(36, 227, 241);
  text-align: center;
  font-size: 28px;
  color: orange;
  border-radius: 10px;
}
.table-container::-webkit-scrollbar {
  width: 1px;
  height: 15px;
}
.table-container::-webkit-scrollbar-track {
  background: transparent;
}
.table-container::-webkit-scrollbar-thumb {
  background-color: #ccc;
}
.fixed-row {
  position: fixed;
  width: 100%; /* è®©è¡Œçš„宽度占满整个视窗 */
  background-color: #fff; /* å¦‚果需要,设置背景色 */
  z-index: 3; /* ç¡®ä¿å›ºå®šè¡Œåœ¨å…¶ä»–内容之上 */
}
</style>