loulijun2021
2022-10-29 e713b378b01d189f972cfb5b9eae749ee95a8b51
src/views/kb/cgdd.vue
@@ -3,7 +3,7 @@
    <div class="kb_dashboard">
      <div class="kb_header">
        <div class="flex_c_c" style="letter-spacing: 3px;margin-left: 1px;">
          采购订单跟踪管理看板
          采购跟踪看板
        </div>
        <div class="kb_headerPic" />
        <div class="kb_headTime">
@@ -14,7 +14,7 @@
        :content="MarqueeTipsContent"
        class="MarqueeTipsContentClass"
        style="top:100px"
        :speed="300"
        :speed="180"
      />
      <div class="kb_content">
        <div class="kb_left">
@@ -44,7 +44,7 @@
          <!-- 2-->
          <div class="kb_left_bottom kb_pd10">
            <div class="kb_left_bottom_content">
              <div class="content_head kb_title_text">采购到货跟踪</div>
              <div class="content_head kb_title_text">采购到货跟踪 <div style="margin-left: 30px">{{ number1 }} 单</div></div>
              <div class="content_body">
                <el-table
                  ref="tableData"
@@ -63,12 +63,16 @@
                  <el-table-column
                    prop="PurchaseOrder"
                    label="采购订单"
                    width="163"
                  />
                    width="203"
                  >
                    <template slot-scope="{row}">
                      <div class="ellipsis">{{ row.PurchaseOrder }}</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="suppername"
                    label="供应商"
                    width="125"
                    width="163"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.suppername" class="ellipsis">{{ row.suppername }}</div>
@@ -78,37 +82,42 @@
                  <el-table-column
                    prop="username"
                    label="采购员"
                    width="68"
                    width="78"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.username">{{ row.username }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    width="108"
                  />
                  <!--                  <el-table-column-->
                  <!--                    prop="partcode"-->
                  <!--                    label="产品编码"-->
                  <!--                    width="108"-->
                  <!--                  />-->
                  <el-table-column
                    prop="partname"
                    label="产品名称"
                    width="155"
                  />
                  <el-table-column
                    prop="partspec"
                    label="规格型号"
                    width="130"
                    width="175"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>
                      <div v-else>/</div>
                      <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
                  <!--                    prop="partspec"-->
                  <!--                    label="规格型号"-->
                  <!--                    width="130"-->
                  <!--                  >-->
                  <!--                    <template slot-scope="{row}">-->
                  <!--                      <div v-if="row.partspec" class="ellipsis">{{ row.partspec }}</div>-->
                  <!--                      <div v-else>/</div>-->
                  <!--                    </template>-->
                  <!--                  </el-table-column>-->
                  <el-table-column
                    prop="quantity"
                    label="订单数量"
                    width="74"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity">{{ parseFloat(row.quantity) }}</div>
@@ -118,7 +127,7 @@
                  <el-table-column
                    prop="checktype"
                    label="检验状态"
                    width="84"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.checktype===null">未检验</div>
@@ -128,12 +137,12 @@
                  <el-table-column
                    prop="checkuser"
                    label="检验人员"
                    width="84"
                    width="94"
                  />
                  <el-table-column
                    prop="quantity1"
                    label="已收数量"
                    width="74"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity1">{{ parseFloat(row.quantity1) }}</div>
@@ -142,7 +151,7 @@
                  </el-table-column>
                  <el-table-column
                    label="未收数量"
                    width="74"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity- row.quantity1">{{ parseFloat(row.quantity- row.quantity1) }}</div>
@@ -152,7 +161,7 @@
                  <el-table-column
                    prop="acceptDate"
                    label="预计交期"
                    width="95"
                    width="115"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.acceptDate">{{ row.acceptDate.substring(0, 10) }}</div>
@@ -162,7 +171,7 @@
                  <el-table-column
                    prop="warning"
                    label="延期天数"
                    width="84"
                    width="114"
                  >
                    <template slot-scope="{row}">
                      <div v-if="parseFloat(row.warning)<0" style="color: red">{{ Math.abs(parseFloat(row.warning)) }}</div>
@@ -209,7 +218,12 @@
                    prop="suppercode"
                    label="供应商编码"
                    width="130"
                  />
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.suppercode" class="ellipsis">{{ row.suppercode }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="suppername"
                    width="283"
@@ -249,29 +263,77 @@
  },
  data() {
    return {
      onLine: navigator.onLine, // 监听网络是否在线
      headTime: '',
      purchaseLeftTopData: [],
      tableData: [],
      tableDataRank: [],
      MarqueeTipsContent: '', // 公告
      speed: 100// 公告播放的速度
      number1: '',
      MarqueeTipsContent: '', // 公告
      speed: 100, // 公告播放的速度
      PurchaseLeftTop: null,
      PurchaseLeftBottom: null,
      PurchaseRight: null
    }
  },
  created() {
    setInterval(this.getNowTime, 1000)
    // 两小时看板刷新一次
    setInterval(() => {
      window.location.reload()
    }, 1000 * 60 * 120)
  },
  mounted() {
    this.getPurchaseLeftTop()
    this.getPurchaseLeftBottom()
    this.getPurchaseRight()
    this.getMarqueeTipsContent()
    window.addEventListener('online', this.updateOnlineStatus)
    window.addEventListener('offline', this.updateOnlineStatus)
    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
  },
  beforeDestroy() {
    window.removeEventListener('online', this.updateOnlineStatus)
    window.removeEventListener('offline', this.updateOnlineStatus)
  },
  methods: {
    // 更新网络状态
    updateOnlineStatus(e) {
      if (e.isFirst) {
        this.getPurchaseLeftTop()
        this.getPurchaseLeftBottom()
        this.getPurchaseRight()
        // this.getMarqueeTipsContent()
      } else {
        const loading = this.$loading({
          lock: true,
          text: '断网了,正在拼命联网中,请检查网络是否正常...',
          spinner: 'el-icon-loading',
          customClass: 'osloading',
          background: 'rgba(0, 0, 0, 0.7)'
        })
        const { type } = e
        this.onLine = type === 'online'
        if (this.onLine) {
          this.getPurchaseLeftTop()
          this.getPurchaseLeftBottom()
          this.getPurchaseRight()
          // this.getMarqueeTipsContent()
          loading.close()
          this.$message.success('网络连接成功!')
        } else {
          clearInterval(this.PurchaseLeftTop)
          clearInterval(this.PurchaseLeftBottom)
          clearInterval(this.PurchaseRight)
          this.$message.error('网络掉线,请关注网络状态!')
        }
      }
    },
    // 获取公告
    getMarqueeTipsContent() {
      // this.MarqueeTipsContent = '各位员工们:根据上级的通知,结合我企实际情况,现将20xx年的元旦放假通知如下:一、1月1日至1月3日放假调休,共3天。1月4日正式上班。二、节假日期间,各班组要严格落实上级的重要指示精神,按照上级的具体要求,认真抓好落实节日期间值班备勤工作,确保节日期间企业各项工作正常运转。xx企业20xx年12月28日'
@@ -284,20 +346,20 @@
        this.purchaseLeftTopData = res.data[0]
        // console.log(this.purchaseLeftTopData)
      })
      setInterval(() => {
      this.PurchaseLeftTop = setInterval(() => {
        PurchaseLeftTop().then(res => {
          this.purchaseLeftTopData = res.data[0]
        })
      }, 1000 * 6)
    },
    getPurchaseLeftBottom() {
      PurchaseLeftBottom().then(res => {
        this.tableData = res.data
        this.number1 = this.tableData.length
        const divData = this.$refs.tableData.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        const task = setInterval(() => {
        this.PurchaseLeftBottom = setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
@@ -306,8 +368,9 @@
            divData.scrollTop = 0
            PurchaseLeftBottom().then(res => {
              this.tableData = res.data
              this.number1 = this.tableData.length
              if (this.tableData.length > 14) {
                clearInterval(task)
                clearInterval(this.PurchaseLeftBottom)
                this.getPurchaseLeftBottom()
              }
            })
@@ -315,13 +378,12 @@
        }, this.tableData.length <= 14 ? 1000 * 3 : 100)
      })
    },
    getPurchaseRight() {
      PurchaseRight().then(res => {
        this.tableDataRank = res.data
        const divData = this.$refs.tableDataRank.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        const task = setInterval(() => {
        this.PurchaseRight = setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
@@ -331,7 +393,7 @@
            PurchaseRight().then(res => {
              this.tableDataRank = res.data
              if (this.tableDataRank.length > 21) {
                clearInterval(task)
                clearInterval(this.PurchaseRight)
                this.getPurchaseRight()
              }
            })
@@ -444,10 +506,12 @@
          .number {
            margin-top: -50px;
            font-size: 18px;
            font-size: 20px;
          }
          .text{
            margin-top: 50px;
            font-size: 20px;
          }
        }
      }
@@ -463,9 +527,10 @@
        flex-direction: column;
        .content_head {
          display: flex;
          color: #00ffff;
          line-height: 20px;
          font-size: 18px;
          //font-size: 18px;
          margin-bottom: 10px;
          margin-top: -10px;
        }
@@ -494,7 +559,7 @@
        .content_head {
          color: #00ffff;
          line-height: 20px;
          font-size: 18px;
          //font-size: 18px;
          margin-bottom: 10px;
          margin-top: -10px;
        }
@@ -523,6 +588,7 @@
::v-deep .cell {
  padding: 0 !important;
  font-size: 18px;
}
</style>