|  | @@ -10,47 +10,131 @@
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div class="d-flex mt-1 jc-center body-box">
 | 
	
		
			
				|  |  | -        <dv-scroll-board class="dv-scr-board" :config="config" />
 | 
	
		
			
				|  |  | +        <dv-scroll-board
 | 
	
		
			
				|  |  | +          ref="scrollBoard"
 | 
	
		
			
				|  |  | +          class="dv-scr-board"
 | 
	
		
			
				|  |  | +          :config="config"
 | 
	
		
			
				|  |  | +        />
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |      </div>
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | -import { defineComponent, reactive } from 'vue'
 | 
	
		
			
				|  |  | -export default defineComponent({
 | 
	
		
			
				|  |  | -  setup() {
 | 
	
		
			
				|  |  | -    const config = reactive({
 | 
	
		
			
				|  |  | -      header: ['组件', '分支', '覆盖率'],
 | 
	
		
			
				|  |  | -      data: [
 | 
	
		
			
				|  |  | -        ['组件1', 'dev-1', "<span  class='colorGrass'>↑75%</span>"],
 | 
	
		
			
				|  |  | -        ['组件2', 'dev-2', "<span  class='colorRed'>↓33%</span>"],
 | 
	
		
			
				|  |  | -        ['组件3', 'dev-3', "<span  class='colorGrass'>↑100%</span>"],
 | 
	
		
			
				|  |  | -        ['组件4', 'rea-1', "<span  class='colorGrass'>↑94%</span>"],
 | 
	
		
			
				|  |  | -        ['组件5', 'rea-2', "<span  class='colorGrass'>↑95%</span>"],
 | 
	
		
			
				|  |  | -        ['组件6', 'fix-2', "<span  class='colorGrass'>↑63%</span>"],
 | 
	
		
			
				|  |  | -        ['组件7', 'fix-4', "<span  class='colorGrass'>↑84%</span>"],
 | 
	
		
			
				|  |  | -        ['组件8', 'fix-7', "<span  class='colorRed'>↓46%</span>"],
 | 
	
		
			
				|  |  | -        ['组件9', 'dev-2', "<span  class='colorRed'>↓13%</span>"],
 | 
	
		
			
				|  |  | -        ['组件10', 'dev-9', "<span  class='colorGrass'>↑76%</span>"]
 | 
	
		
			
				|  |  | -      ],
 | 
	
		
			
				|  |  | -      rowNum: 7, //表格行数
 | 
	
		
			
				|  |  | -      headerHeight: 35,
 | 
	
		
			
				|  |  | -      headerBGC: '#0f1325', //表头
 | 
	
		
			
				|  |  | -      oddRowBGC: '#0f1325', //奇数行
 | 
	
		
			
				|  |  | -      evenRowBGC: '#171c33', //偶数行
 | 
	
		
			
				|  |  | -      index: true,
 | 
	
		
			
				|  |  | -      columnWidth: [50],
 | 
	
		
			
				|  |  | -      align: ['center']
 | 
	
		
			
				|  |  | -    })
 | 
	
		
			
				|  |  | -    return { config }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -})
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      config: {
 | 
	
		
			
				|  |  | +        header: ["托盘号","批次号", "起始位置", "终止位置", "任务状态"],
 | 
	
		
			
				|  |  | +        data: [
 | 
	
		
			
				|  |  | +          ["数据加载中..."," ", " ", " ", " "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +          [" ", " ", " ", " "," "],
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +        rowNum: 7,
 | 
	
		
			
				|  |  | +        headerHeight: 35,
 | 
	
		
			
				|  |  | +        headerBGC: "#0f1325",
 | 
	
		
			
				|  |  | +        oddRowBGC: "#0f1325",
 | 
	
		
			
				|  |  | +        evenRowBGC: "#171c33",
 | 
	
		
			
				|  |  | +        index: true,
 | 
	
		
			
				|  |  | +        columnWidth: [5,75,150],
 | 
	
		
			
				|  |  | +        align: ["center", "center", "center", "center", "center"],
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      intervalId: null,
 | 
	
		
			
				|  |  | +      token: "PDA1",
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  mounted() {
 | 
	
		
			
				|  |  | +    this.fetchData();
 | 
	
		
			
				|  |  | +    // 每分钟刷新一次数据
 | 
	
		
			
				|  |  | +    this.intervalId = setInterval(this.fetchData, 60000);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  beforeUnmount() {
 | 
	
		
			
				|  |  | +    // 清除定时器
 | 
	
		
			
				|  |  | +    clearInterval(this.intervalId);
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    async fetchData() {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const headers = new Headers({
 | 
	
		
			
				|  |  | +          Accept: "application/json, text/plain, */*",
 | 
	
		
			
				|  |  | +          token: this.token,
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const url = "http://192.168.31.105:8008/container/wcs_task/";
 | 
	
		
			
				|  |  | +        // const url = "http://192.168.18.200:8008/container/wcs_task/";
 | 
	
		
			
				|  |  | +        const response = await fetch(url, {
 | 
	
		
			
				|  |  | +          method: "GET",
 | 
	
		
			
				|  |  | +          headers: headers,
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (!response.ok) {
 | 
	
		
			
				|  |  | +          throw new Error(
 | 
	
		
			
				|  |  | +            `网络错误: ${response.status} ${response.statusText}`
 | 
	
		
			
				|  |  | +          );
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const jsonData = await response.json();
 | 
	
		
			
				|  |  | +        console.log("数据获取成功:", jsonData);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        const tableData = jsonData.results.map((item) => [
 | 
	
		
			
				|  |  | +          item.container,
 | 
	
		
			
				|  |  | +          item.batch_code,
 | 
	
		
			
				|  |  | +          item.current_location,
 | 
	
		
			
				|  |  | +          item.target_location,
 | 
	
		
			
				|  |  | +          item.message,
 | 
	
		
			
				|  |  | +        ]);
 | 
	
		
			
				|  |  | +        // 应用平台主题色
 | 
	
		
			
				|  |  | +        const statusColors = {
 | 
	
		
			
				|  |  | +          进行中: "#ffb638", // 橘黄色
 | 
	
		
			
				|  |  | +          任务已完成: "#2ed47a", // 绿色
 | 
	
		
			
				|  |  | +          等待出库: "#3c9aff", // 蓝色
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        while (tableData.length < 7) {
 | 
	
		
			
				|  |  | +          tableData.push(["-", "-", "-", "-", "-"]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        const formattedData = tableData.map((row) => {
 | 
	
		
			
				|  |  | +          const status = row[4];
 | 
	
		
			
				|  |  | +          return [
 | 
	
		
			
				|  |  | +            `<span style="color: #fff">${row[0]}</span>`,
 | 
	
		
			
				|  |  | +            `<span style="color: #c0e4ff">${row[1]}</span>`,
 | 
	
		
			
				|  |  | +            `<span style="color: #c0e4ff">${row[2]}</span>`,
 | 
	
		
			
				|  |  | +            `<span style="color: #c0e4ff">${row[3]}</span>`,
 | 
	
		
			
				|  |  | +            `<span style="color: ${
 | 
	
		
			
				|  |  | +              statusColors[status] || "#fff"
 | 
	
		
			
				|  |  | +            }; font-weight: 500">${status}</span>`,
 | 
	
		
			
				|  |  | +          ];
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        this.config.data =
 | 
	
		
			
				|  |  | +          tableData.length > 0 ? formattedData : [["暂无数据", "", "", ""]];
 | 
	
		
			
				|  |  | +        console.log("数据处理成功:", this.config.data);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.$refs["scrollBoard"].updateRows(this.config.data);
 | 
	
		
			
				|  |  | +      } catch (error) {
 | 
	
		
			
				|  |  | +        console.error("数据获取失败:", error);
 | 
	
		
			
				|  |  | +        const errorMessage = `加载失败: ${error.message}`;
 | 
	
		
			
				|  |  | +        this.config.data = [
 | 
	
		
			
				|  |  | +          [errorMessage, "", "", ""],
 | 
	
		
			
				|  |  | +          ["请检查网络连接", "", "", ""],
 | 
	
		
			
				|  |  | +          ["或服务地址是否正确", "", "", ""],
 | 
	
		
			
				|  |  | +          ["Token: " + this.token, "", "", ""],
 | 
	
		
			
				|  |  | +        ];
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <style lang="scss" scoped>
 | 
	
		
			
				|  |  |  $box-height: 410px;
 | 
	
		
			
				|  |  | -$box-width: 300px;
 | 
	
		
			
				|  |  | +$box-width: 100%;
 | 
	
		
			
				|  |  |  .centerRight2 {
 | 
	
		
			
				|  |  |    padding: 16px;
 | 
	
		
			
				|  |  |    padding-top: 20px;
 | 
	
	
		
			
				|  | @@ -68,7 +152,7 @@ $box-width: 300px;
 | 
	
		
			
				|  |  |      border-radius: 10px;
 | 
	
		
			
				|  |  |      overflow: hidden;
 | 
	
		
			
				|  |  |      .dv-scr-board {
 | 
	
		
			
				|  |  | -      width: 270px;
 | 
	
		
			
				|  |  | +      width: 98%;
 | 
	
		
			
				|  |  |        height: 340px;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    }
 |