loulijun2021
2022-09-22 dc1226c67b9b34b602254ed3ca3de0e5b272cffa
src/views/kb/cgdd.vue
@@ -3,14 +3,19 @@
    <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">
          <span>{{ headTime }}</span>
        </div>
      </div>
      <MarqueeTips
        :content="MarqueeTipsContent"
        class="MarqueeTipsContentClass"
        style="top:100px"
        :speed="180"
      />
      <div class="kb_content">
        <div class="kb_left">
          <!-- 1-->
@@ -19,17 +24,17 @@
              <div class="content01">
                <div class="pic01" />
                <div class="number">{{ purchaseLeftTopData.ThisMonthPurchaseArrivalOrderCont }}</div>
                <div class="text">本月采购单数</div>
                <div class="text">本月采购订单数</div>
              </div>
              <div class="content01">
                <div class="pic01" />
                <div class="number">{{ purchaseLeftTopData.ThisMonthPurchaseOrderCont }}</div>
                <div class="text">本月进货单数</div>
                <div class="text">本月到货单数</div>
              </div>
              <div class="content01">
                <div class="pic01" />
                <div class="number">{{ purchaseLeftTopData.ThisMonthWareHouseOrderCont }}</div>
                <div class="text">本月入库单数</div>
                <div class="text">本月采购入库单数</div>
                <!--                <div id="pie01" ref="pie01" class="pie01" />-->
                <!--                <div class="text" style="margin-top: -10px">当月延期占比</div>-->
              </div>
@@ -39,7 +44,7 @@
          <!-- 2-->
          <div class="kb_left_bottom kb_pd10">
            <div class="kb_left_bottom_content">
              <div class="content_head">我是标题:</div>
              <div class="content_head kb_title_text">采购到货跟踪 <div style="margin-left: 30px">{{ number1 }} 单</div></div>
              <div class="content_body">
                <el-table
                  ref="tableData"
@@ -58,42 +63,71 @@
                  <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="163"
                  />
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.suppername" class="ellipsis">{{ row.suppername }}</div>
                      <div v-else />
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="username"
                    label="采购员"
                    width="68"
                  />
                  <el-table-column
                    prop="partcode"
                    label="产品编码"
                    width="84"
                  />
                    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="partname"
                    label="产品名称"
                    width="168"
                  />
                  <el-table-column
                    prop="partspec"
                    label="规格型号"
                    width="84"
                  />
                    width="175"
                  >
                    <template slot-scope="{row}">
                      <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="84"
                  />
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity">{{ parseFloat(row.quantity) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="checktype"
                    label="检验状态"
                    width="84"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.checktype===null">未检验</div>
@@ -103,39 +137,47 @@
                  <el-table-column
                    prop="checkuser"
                    label="检验人员"
                    width="84"
                    width="94"
                  />
                  <el-table-column
                    prop="quantity1"
                    label="已收数量"
                    width="84"
                  />
                  <el-table-column
                    label="未收数量"
                    width="84"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div>{{ parseFloat(row.quantity- row.quantity1) }}</div>
                      <div v-if="row.quantity1">{{ parseFloat(row.quantity1) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    label="未收数量"
                    width="94"
                  >
                    <template slot-scope="{row}">
                      <div v-if="row.quantity- row.quantity1">{{ parseFloat(row.quantity- row.quantity1) }}</div>
                      <div v-else>0</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="acceptDate"
                    label="预计交期"
                    width="84"
                    width="115"
                  >
                    <template slot-scope="{row}">
                      <div>{{ row.acceptDate.substring(5, 10) }}</div>
                      <div v-if="row.acceptDate">{{ row.acceptDate.substring(0, 10) }}</div>
                      <div v-else>/</div>
                    </template>
                  </el-table-column>
                  <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>
                      <div v-else-if="row.warning===null">0</div>
                      <div v-else>{{ row.warning }}</div>
                      <div v-else-if="row.warning===null||row.warning===''||row.warning===0">0</div>
                      <div v-else-if="parseFloat(row.warning)>3">{{ row.warning }}</div>
                      <div v-else-if="parseFloat(row.warning)>0&&parseFloat(row.warning)<=3" style="color:yellow;">{{ row.warning }}</div>
                    </template>
                  </el-table-column>
                </el-table>
@@ -146,7 +188,7 @@
        <div class="kb_right kb_pd10">
          <div class="kb_right_top kb_pd10">
            <div class="kb_right_top_content">
              <div class="content_head">供应商延期交货排行:</div>
              <div class="content_head kb_title_text">供应商延期交货排行</div>
              <div class="content_body">
                <el-table
                  ref="tableDataRank"
@@ -155,15 +197,16 @@
                  :header-cell-style="headerCellStyle"
                  :cell-style="cellStyle"
                  :row-class-name="tableRowClassName"
                  height="923"
                  height="865"
                >
                  <el-table-column
                    type="index"
                    label="序号"
                    width="100"
                    width="70"
                  >
                    <template slot-scope="{row}">
                      <div>NO.{{ row.index }}</div>
                      <!--                      <div>NO.100</div>-->
                    </template>
                  </el-table-column>
                  <!--                  <el-table-column-->
@@ -174,17 +217,26 @@
                  <el-table-column
                    prop="suppercode"
                    label="供应商编码"
                    width="145"
                  />
                    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="163"
                    width="283"
                    label="供应商名称"
                  />
                  >
                    <template slot-scope="{row}">
                      <div class="ellipsis">{{ row.suppername }}</div>
                    </template>
                  </el-table-column>
                  <el-table-column
                    prop="cont"
                    label="数量"
                    width="125"
                    label="次数"
                    width="50"
                  />
                </el-table>
              </div>
@@ -202,16 +254,25 @@
import { bar02, loadEcharts, pie01 } from '@/utils/myEcharts'
import * as echarts from 'echarts'
import { PurchaseLeftBottom, PurchaseLeftTop, PurchaseRight } from '@/api/dzkb'
import MarqueeTips from 'vue-marquee-tips'
export default {
  name: 'Index2',
  components: {
    MarqueeTips
  },
  data() {
    return {
      headTime: '',
      purchaseLeftTopData: [],
      tableData: [],
      tableDataRank: []
      tableDataRank: [],
      number1: '',
      MarqueeTipsContent: '', // 公告
      speed: 100// 公告播放的速度
    }
  },
@@ -223,13 +284,21 @@
    this.getPurchaseLeftTop()
    this.getPurchaseLeftBottom()
    this.getPurchaseRight()
    this.getMarqueeTipsContent()
  },
  methods: {
    // 获取公告
    getMarqueeTipsContent() {
      // this.MarqueeTipsContent = '各位员工们:根据上级的通知,结合我企实际情况,现将20xx年的元旦放假通知如下:一、1月1日至1月3日放假调休,共3天。1月4日正式上班。二、节假日期间,各班组要严格落实上级的重要指示精神,按照上级的具体要求,认真抓好落实节日期间值班备勤工作,确保节日期间企业各项工作正常运转。xx企业20xx年12月28日'
      // const spance = ' '.padStart(this.MarqueeTipsContent.length * 2, ' ')
      // this.MarqueeTipsContent = this.MarqueeTipsContent + spance
      // this.speed = this.MarqueeTipsContent.length / 10
    },
    getPurchaseLeftTop() {
      PurchaseLeftTop().then(res => {
        this.purchaseLeftTopData = res.data[0]
        console.log(this.purchaseLeftTopData)
        // console.log(this.purchaseLeftTopData)
      })
      setInterval(() => {
        PurchaseLeftTop().then(res => {
@@ -241,45 +310,52 @@
    getPurchaseLeftBottom() {
      PurchaseLeftBottom().then(res => {
        this.tableData = res.data
      })
        this.number1 = this.tableData.length
      const divData = this.$refs.tableData.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          PurchaseLeftBottom().then(res => {
            this.tableData = res.data
          })
        }
      }, this.tableData.length <= 14 ? 1000 * 6 : 100)
        const divData = this.$refs.tableData.bodyWrapper
        // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
        const task = setInterval(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            PurchaseLeftBottom().then(res => {
              this.tableData = res.data
              this.number1 = this.tableData.length
              if (this.tableData.length > 14) {
                clearInterval(task)
                this.getPurchaseLeftBottom()
              }
            })
          }
        }, 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(() => {
          // 元素自增距离顶部1像素
          divData.scrollTop += 1
          // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // 重置table距离顶部距离
            divData.scrollTop = 0
            PurchaseRight().then(res => {
              this.tableDataRank = res.data
              if (this.tableDataRank.length > 21) {
                clearInterval(task)
                this.getPurchaseRight()
              }
            })
          }
        }, this.tableDataRank.length <= 21 ? 1000 * 3 : 100)
      })
      const divData = this.$refs.tableDataRank.bodyWrapper
      // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
      setInterval(() => {
        // 元素自增距离顶部1像素
        // divData.scrollTop += divData.scrollHeight / this.tableDataRank.length
        divData.scrollTop += 1
        // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
        if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
          // 重置table距离顶部距离
          divData.scrollTop = 0
          PurchaseRight().then(res => {
            this.tableDataRank = res.data
          })
        }
      }, this.tableDataRank.length <= 22 ? 1000 * 6 : 100)
    },
    tableRowClassName({ row, rowIndex }) {
@@ -335,7 +411,8 @@
</script>
<style scoped lang="scss">
$kbBorderColor: #09d8f2;
//$kbBorderColor: #09d8f2;
$kbBorderColor: rgba(9,216,242,0.4);
.kb_content {
  display: flex;
@@ -354,11 +431,12 @@
      height: 345px;
      display: flex;
      flex-direction: column;
      justify-content: space-around;
      //justify-content: space-around;
      justify-content: flex-end;
      .kb_left_top_block {
        width: 100%;
        height: 267px;
        height: 237px;
        display: flex;
        //border: 1px solid rgba(255, 255, 255, 0.6);
        justify-content: space-around;
@@ -384,10 +462,12 @@
          .number {
            margin-top: -50px;
            font-size: 18px;
            font-size: 20px;
          }
          .text{
            margin-top: 50px;
            font-size: 20px;
          }
        }
      }
@@ -403,8 +483,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;
        }
@@ -421,7 +503,8 @@
    height: 100%;
    .kb_right_top {
      height: 964px;
      height: 906px;
      margin-top: 58px;
      width: 100%;
      .kb_right_top_content {
@@ -430,8 +513,9 @@
        flex-direction: column;
        .content_head {
          color: #00ffff;
          line-height: 20px;
          font-size: 18px;
          //font-size: 18px;
          margin-bottom: 10px;
          margin-top: -10px;
        }
@@ -457,4 +541,10 @@
  /* width: 0;宽度为0暗藏 */
  width: 0;
}
::v-deep .cell {
  padding: 0 !important;
  font-size: 18px;
}
</style>