StationData.vue 10.9 KB
<template>
  <div class="container">
    <el-row :gutter="20">
      <el-col :span="5">
        <el-tree
          :data="data"
          :props="defaultProps"
          accordion
          @node-click="handleNodeClick"
        ></el-tree>
      </el-col>
      <el-col :span="19">
        <el-row>
          <el-col :span="24">
            <el-table
              ref="table"
              :data="tableData"
              style="width: 100%"
              border
              stripe
            >
              <el-table-column
                prop="code"
                label="站台编码"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="name"
                label="站台名"
                width="150"
              ></el-table-column>
              <el-table-column
                prop="outputProperty"
                label="可出属性"
                width="100"
              ></el-table-column>
              <el-table-column
                prop="autoStatus"
                label="自动状态"
                width="100"
              ></el-table-column>
              <el-table-column
                prop="barcode"
                label="条码"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestMessage"
                label="P-请求报文"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestLoadStatus"
                label="P-请求装载"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestNumber"
                label="P-请求读码器"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestBarcode"
                label="P-请求条码"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestWeight"
                label="P-请求重量"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestLength"
                label="P-请求长度"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestWidth"
                label="P-请求宽度"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="requestHeight"
                label="P-请求高度"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyMessage"
                label="wcs-请求报文"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyLoadStatus"
                label="wcs-请求装载"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyNumber"
                label="wcs-请求读码器"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyBarcode"
                label="wcs-请求条码"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyWeight"
                label="wcs-请求重量"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyLength"
                label="wcs-请求长度"
                width="120"
              ></el-table-column>
              <el-table-column
                prop="wcsReplyWidth"
                label="wcs-请求宽度"
                width="120"
              ></el-table-column>
            </el-table>
          </el-col>
          <el-col :span="24" v-if="currentDetail">
            <div class="detail-panel">
              <el-row :gutter="20">
                <!-- PLC地址请求 -->
                <el-col :span="12">
                  <h5>PLC地址请求</h5>
                  <el-descriptions :column="1" border>
                    <el-descriptions-item label="报文">{{
                      currentDetail.stationCode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="装载">{{
                      currentDetail.stationName
                    }}</el-descriptions-item>
                    <el-descriptions-item label="读码器">{{
                      currentDetail.outputProperty
                    }}</el-descriptions-item>
                    <el-descriptions-item label="条码">{{
                      currentDetail.autoStatus
                    }}</el-descriptions-item>
                    <el-descriptions-item label="重量">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="长度">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="宽度">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="高度">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                  </el-descriptions>
                </el-col>
                <!-- PLC位置到达 -->
                <el-col :span="12">
                  <h5>PLC位置到达</h5>
                  <el-descriptions :column="1" border>
                    <el-descriptions-item label="报文">{{
                      currentDetail.stationCode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="结果">{{
                      currentDetail.stationName
                    }}</el-descriptions-item>
                    <el-descriptions-item label="读码器">{{
                      currentDetail.outputProperty
                    }}</el-descriptions-item>
                    <el-descriptions-item label="分配地址">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="条码">{{
                      currentDetail.autoStatus
                    }}</el-descriptions-item>
                  </el-descriptions>
                </el-col>
              </el-row>
              <!-- WCS地址请求 -->
              <el-row :gutter="20" style="margin-top: 10px">
                <el-col :span="12">
                  <h5>WCS地址请求</h5>
                  <el-descriptions :column="1" border>
                    <el-descriptions-item label="报文">{{
                      currentDetail.wcsReplyMessage
                    }}</el-descriptions-item>
                    <el-descriptions-item label="装载">{{
                      currentDetail.wcsReplyLoadStatus
                    }}</el-descriptions-item>
                    <el-descriptions-item label="读码器">{{
                      currentDetail.wcsReplyNumber
                    }}</el-descriptions-item>
                    <el-descriptions-item label="条码">{{
                      currentDetail.wcsReplyBarcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="重量">{{
                      currentDetail.wcsReplyWeight
                    }}</el-descriptions-item>
                    <el-descriptions-item label="长度">{{
                      currentDetail.wcsReplyLength
                    }}</el-descriptions-item>
                    <el-descriptions-item label="宽度">{{
                      currentDetail.wcsReplyWidth
                    }}</el-descriptions-item>
                  </el-descriptions>
                </el-col>
                <!-- WCS位置到达 -->
                <el-col :span="12">
                  <h5>WCS位置到达</h5>
                  <el-descriptions :column="1" border>
                    <el-descriptions-item label="报文">{{
                      currentDetail.stationCode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="结果">{{
                      currentDetail.stationName
                    }}</el-descriptions-item>
                    <el-descriptions-item label="读码器">{{
                      currentDetail.outputProperty
                    }}</el-descriptions-item>
                    <el-descriptions-item label="分配地址">{{
                      currentDetail.barcode
                    }}</el-descriptions-item>
                    <el-descriptions-item label="条码">{{
                      currentDetail.autoStatus
                    }}</el-descriptions-item>
                  </el-descriptions>
                </el-col>
              </el-row>
            </div>
          </el-col>
        </el-row>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  data() {
    return {
      data: [
        {
          label: "2号巷道",
          children: [
            {
              label: "P1001",
              stationCode: "P1001",
              stationName: "接出...",
              outputProperty: "可出",
              autoStatus: "1",
              barcode: "0",
            },
            {
              label: "P1007",
              stationCode: "P1007",
              stationName: "接入...",
              outputProperty: "不可出",
              autoStatus: "1",
              barcode: "0",
            },
          ],
        },
        {
          label: "3号巷道",
          children: [
            {
              label: "P2001",
              stationCode: "P2001",
              stationName: "接出...",
              outputProperty: "可出",
              autoStatus: "1",
              barcode: "0",
            },
            {
              label: "P2007",
              stationCode: "P2007",
              stationName: "接入...",
              outputProperty: "不可出",
              autoStatus: "1",
              barcode: "0",
            },
          ],
        },
      ],
      defaultProps: {
        children: "children",
        label: "label",
      },
      tableData: [],
      currentDetail: null,
    };
  },
  methods: {
    handleNodeClick(data) {
      if (data.children) {
        this.tableData = data.children;
        this.currentDetail = null;
      } else {
        this.tableData = [data];
        this.currentDetail = data;
      }
    },
  },
};
</script>

<style scoped>
.container {
  padding: 20px;
}

.el-tree {
  border: 1px solid #ebeef5;
  padding: 10px;
  border-radius: 4px;
}

.el-table {
  margin-top: 0;
}

.details-container {
  padding: 20px;
  background-color: #f9f9f9;
  border-radius: 4px;
  margin: 10px 0;
}

.detail-panel {
  background-color: #f9f9f9;
  border-radius: 4px;
  max-height: 55vh;
  overflow-y: auto;
  overflow-x: hidden;
}

.detail-panel h4 {
  /* margin-bottom: 15px; */
}
</style>