北鸣对接T+畅捷通,看板前端
loulijun2021
2023-11-24 efca35e837a01df3f44755d8f9918b407e2cf0b7
1.仓库、采购看板    基本已实现
已添加1个文件
已修改9个文件
6089 ■■■■ 文件已修改
.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
src/api/kanbanManager.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/global.css 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/myEcharts.js 5595 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/procure.vue 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kb/warehouse.vue 173 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -2,4 +2,4 @@
ENV = 'development'
# base api
VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = '/api/'
.env.production
@@ -2,5 +2,5 @@
ENV = 'production'
# base api
VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API = '/apis/'
public/favicon.ico

src/api/kanbanManager.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
import request from '@/utils/request'
// åŒ—鸣仓库看板左上,生产待入库
export function ProductionStockedInLeftTop() {
  return request({
    url: 'KanBanManagerent/ProductionStockedInLeftTop',
    method: 'get'
  })
}
// åŒ—鸣仓库看板左下,产品待发货
export function ProductConsignmentLeftBottom() {
  return request({
    url: 'KanBanManagerent/ProductConsignmentLeftBottom',
    method: 'get'
  })
}
// åŒ—鸣仓库看板右上,近一周生产待入库产品排行TOP5
export function ProductionStockedInRightTop() {
  return request({
    url: 'KanBanManagerent/ProductionStockedInRightTop',
    method: 'get'
  })
}
// åŒ—鸣仓库看板右下,近一周销售待发货产品排行TOP5
export function ProductionStockedInRightBottom() {
  return request({
    url: 'KanBanManagerent/ProductionStockedInRightBottom',
    method: 'get'
  })
}
// åŒ—鸣采购委外看板左上,采购待入库
export function ProcureOutsourcLeftTop() {
  return request({
    url: 'KanBanManagerent/ProcureOutsourcLeftTop',
    method: 'get'
  })
}
// åŒ—鸣采购委外看板左上,委外待入库
export function ProcureOutsourcLeftBottom() {
  return request({
    url: 'KanBanManagerent/ProcureOutsourcLeftBottom',
    method: 'get'
  })
}
// åŒ—鸣采购委外看板右上,近一周采购待入库物料排行TOP5
export function ProcureOutsourcRightTop() {
  return request({
    url: 'KanBanManagerent/ProcureOutsourcRightTop',
    method: 'get'
  })
}
// åŒ—鸣采购委外看板右下,近一周委外待入库产品排行TOP5
export function ProcureOutsourcRightBottom() {
  return request({
    url: 'KanBanManagerent/ProcureOutsourcRightBottom',
    method: 'get'
  })
}
src/styles/global.css
@@ -1,24 +1,120 @@
/*全局样式表*/
html, body, #app {
  height: 1080px;
  height: 100%;
  margin: 0;
  padding: 0;
  width: 1920px;
  overflow-y: hidden;
  overflow-x: hidden;
  /*min-width: 1800px;*/
  /*overflow-y: hidden;*/
  /*overflow-x: hidden;*/
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}
/*.body {*/
/*  display: flex;*/
/*  flex-direction: column;*/
/*  height: 800px;*/
.body {
  display: flex;
  flex-direction: column;
  height: 100%;
  background-color: #eaecef;
  margin: 0;
  padding: 0 10px;
}
/*头部按钮组样式*/
.bodyTopButtonGroup {
  /*padding-left: 10px;*/
  display: flex;
  background-color: #f8f8fa;
  margin-top: 10px;
  padding: 5px 10px;
  border-bottom: 3px solid #eee;
}
/*头部表单组样式*/
.bodyTopFormGroup {
  background-color: #f8f8fa;
  padding: 10px 10px 0 10px;
  display: flex;
  flex-direction: column;
}
.bodySearchReset {
  display: flex;
  align-items: start;
  margin-top: 3px;
  /*margin-left: 5%;*/
  /*margin-left: 10%;*/
}
.bodyTopFormExpand {
  display: block;
  text-align: center;
  margin-top: 5px;
  /*justify-content: center;*/
  /*align-items: center;*/
/*  background-color: #eee;*/
/*  margin: 0;*/
/*  padding: 30px 10px 0 20px;*/
/*}*/
  /*cursor: pointer;*/
}
.bodyTopFormExpand:hover{
  color: #00ff8b !important;
}
.svg-icon:hover{
  color: #00ff8b !important;
  /*background-color: #00ff8b !important;*/
}
.elForm {
  display: flex;
  /*justify-content: flex-start;*/
  /*justify-content: space-between;*/
  /*justify-content: space-around;*/
  width: 100%;
  flex-wrap: wrap;
}
.elTableDiv {
  display: flex;
  border: 1px solid #eee;
  /*width: 99%;*/
  width: 100%;
  margin: 10px auto;
  /*margin-top: 20px;*/
  box-shadow: 0 0 5px #d7d6d6;
  position: relative;
}
.operationClass {
  height: 23px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
/*对话框按钮底部*/
.footerButton {
  display: flex;
  justify-content: end;
}
.ellipsis {
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
.osloading {
  font-size: 26px !important;
}
.el-loading-text {
  font-size: 26px !important;
}
/*
定义滚动条高宽及背景
@@ -27,12 +123,15 @@
::-webkit-scrollbar {
  width: 7px;
  height: 7px;
  background-color: white;
  /*background-color: white;*/
  background-color: #f8f8fa;
}
::-webkit-scrollbar-thumb {
  box-shadow: inset 0 0 0px white;
  -webkit-box-shadow: inset 0 0 0px white;
  /*box-shadow: inset 0 0 0px white;*/
  box-shadow: inset 0 0 0px #f8f8fa;
  /*-webkit-box-shadow: inset 0 0 0px white;*/
  -webkit-box-shadow: inset 0 0 0px #f8f8fa;
  background-color: rgb(193, 193, 193);
  /*滚动条的背景颜色*/
  border-radius: 20px;
@@ -49,8 +148,17 @@
.el-table__fixed-right::before,
.el-table__fixed::before {
  background-color: unset !important;
  /*background-color: unset !important;*/
  background-color: #f8f8fa !important;
}
/*scrollbar END*/
/*解决固定滚动条高低像素差*/
.el-table__fixed::before{
  height: 0 !important;
}
.el-table__fixed-right::before{
  height: 0 !important;
}
src/utils/myEcharts.js
ÎļþÌ«´ó
src/utils/request.js
@@ -46,26 +46,32 @@
    const res = response.data
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 20000) {
    // if (res.code !== 20000) {
    //   Message({
    //     message: res.message || 'Error',
    //     type: 'error',
    //     duration: 5 * 1000
    //   })
    //
    //   // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
    //   if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
    //     // to re-login
    //     MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
    //       confirmButtonText: 'Re-Login',
    //       cancelButtonText: 'Cancel',
    //       type: 'warning'
    //     }).then(() => {
    //       store.dispatch('user/resetToken').then(() => {
    //         location.reload()
    //       })
    //     })
    //   }
    if (res.code === '300' || res.code === '303') {
      Message({
        message: res.message || 'Error',
        message: res.Message || 'Error',
        type: 'error',
        duration: 5 * 1000
      })
      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // to re-login
        MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
          confirmButtonText: 'Re-Login',
          cancelButtonText: 'Cancel',
          type: 'warning'
        }).then(() => {
          store.dispatch('user/resetToken').then(() => {
            location.reload()
          })
        })
      }
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
src/views/kb/procure.vue
@@ -9,7 +9,7 @@
        </div>
        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
          <span>仓库管理数字化看板</span>
          <span>采购委外数字化看板</span>
        </div>
        <div class="kb_headTime" style="top: 35px;right:  25px">
@@ -326,12 +326,12 @@
<script>
import './kbCommon.css'
import { bar02, kbTop, loadEcharts } from '@/utils/myEcharts'
// import {
//   WareHouseRightBottomData,
//   WareHouseRightTopData,
//   WareHouseTopBottomData,
//   WareHouseTopLeftData
// } from '@/api/kanbanManager'
import {
  ProcureOutsourcLeftTop,
  ProcureOutsourcLeftBottom,
  ProcureOutsourcRightTop,
  ProcureOutsourcRightBottom
} from '@/api/kanbanManager'
export default {
  name: 'Index2',
@@ -371,10 +371,10 @@
    window.addEventListener('online', this.updateOnlineStatus)
    window.addEventListener('offline', this.updateOnlineStatus)
    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
    //
    // this.getWareHouseTopLeftData()
    // this.getWareHouseTopBottomData()
    // this.getEcharts()
    this.getProcureOutsourcLeftTop()
    this.getProcureOutsourcLeftBottom()
    this.getEcharts()
  },
  beforeDestroy() {
    window.removeEventListener('online', this.updateOnlineStatus)
@@ -405,8 +405,8 @@
    },
    // èŽ·å–å·¦ä¸Štable数据
    getWareHouseTopLeftData() {
      WareHouseTopLeftData().then(res => {
    getProcureOutsourcLeftTop() {
      ProcureOutsourcLeftTop().then(res => {
        this.tableDataTop = res.data
        // this.number1 = this.tableDataTop.length
        const divData = this.$refs.tableDataTopRef.bodyWrapper
@@ -419,12 +419,12 @@
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // é‡ç½®table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopLeftData().then(res => {
            ProcureOutsourcLeftTop().then(res => {
              this.tableDataTop = res.data
              // this.number1 = this.tableDataTop.length
              if (this.tableDataTop.length > 10) {
                clearInterval(this.tableTopTask)
                this.getWareHouseTopLeftData()
                this.getProcureOutsourcLeftTop()
              }
            })
          }
@@ -432,8 +432,8 @@
      })
    },
    // èŽ·å–å·¦ä¸‹table数据
    getWareHouseTopBottomData() {
      WareHouseTopBottomData().then(res => {
    getProcureOutsourcLeftBottom() {
      ProcureOutsourcLeftBottom().then(res => {
        this.tableDataBottom = res.data
        this.number2 = this.tableDataBottom.length
        const divData = this.$refs.tableDataBottomRef.bodyWrapper
@@ -447,12 +447,12 @@
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // é‡ç½®table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopBottomData().then(res => {
            ProcureOutsourcLeftBottom().then(res => {
              this.tableDataBottom = res.data
              this.number2 = this.tableDataBottom.length
              if (this.tableDataBottom.length > 10) {
                clearInterval(this.tableBottomTask)
                this.getWareHouseTopBottomData()
                this.getProcureOutsourcLeftBottom()
              }
            })
          }
@@ -462,23 +462,23 @@
    // èŽ·å–echarts
    getEcharts() {
      WareHouseRightTopData().then(res => {
        loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      ProcureOutsourcRightTop().then(res => {
        loadEcharts('bar03', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
      })
      WareHouseRightBottomData().then(res => {
        loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      ProcureOutsourcRightBottom().then(res => {
        loadEcharts('bar04', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
      })
      this.echartsRightTop = setInterval(() => {
        WareHouseRightTopData().then(res => {
          loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        ProcureOutsourcRightTop().then(res => {
          loadEcharts('bar03', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
      this.echartsRightBottom = setInterval(() => {
        WareHouseRightBottomData().then(res => {
          loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        ProcureOutsourcRightBottom().then(res => {
          loadEcharts('bar04', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
    },
src/views/kb/warehouse.vue
@@ -37,7 +37,7 @@
                <el-table-column
                  prop="voucherdate"
                  label="单据日期"
                  width="131"
                  width="151"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.voucherdate" class="ellipsis">{{ row.voucherdate.substring(0, 10) }}</div>
@@ -72,19 +72,11 @@
                    <div v-else>/</div>
                  </template>
                </el-table-column>
                <!--                <el-table-column-->
                <!--                  prop="materiel_code"-->
                <!--                  label="产品编号"-->
                <!--                  width="136"-->
                <!--                >-->
                <!--                  <template slot-scope="{row}">-->
                <!--                    <div class="ellipsis">{{ row.materiel_code }}</div>-->
                <!--                  </template>-->
                <!--                </el-table-column>-->
                <el-table-column
                  prop="materiel_name"
                  label="产品名称"
                  width="180"
                  width="260"
                >
                  <template slot-scope="{row}">
                    <div class="ellipsis">{{ row.materiel_name }}</div>
@@ -93,7 +85,7 @@
                <el-table-column
                  prop="specification"
                  label="规格型号"
                  width="136"
                  width="116"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
@@ -103,7 +95,7 @@
                <el-table-column
                  prop="stck_name"
                  label="预入仓库"
                  width="100"
                  width="110"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.stck_name" class="ellipsis">{{ row.stck_name }}</div>
@@ -113,43 +105,19 @@
                <el-table-column
                  prop="quantity"
                  label="数量"
                  width="63"
                  width="73"
                />
                <el-table-column
                  prop="totalStockInQuantity"
                  label="已入库数量"
                  width="100"
                  width="120"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.totalStockInQuantity">{{ row.totalStockInQuantity }}</div>
                    <div v-else>0</div>
                  </template>
                </el-table-column>
                <!--                  <el-table-column-->
                <!--                    prop="uomname"-->
                <!--                    label="单位"-->
                <!--                    width="50"-->
                <!--                  />-->
                <!--                  <el-table-column-->
                <!--                    prop="preStartDate"-->
                <!--                    label="预计开工"-->
                <!--                    width="100"-->
                <!--                  >-->
                <!--                    <template slot-scope="{row}">-->
                <!--                      <div v-if="row.preStartDate">{{ row.preStartDate.substring(0, 10) }}</div>-->
                <!--                      <div v-else />-->
                <!--                    </template>-->
                <!--                  </el-table-column>-->
                <el-table-column
                  prop="preFinishDate"
                  label="预计入库"
                  width="140"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.preFinishDate">{{ row.preFinishDate.substring(0, 10) }}</div>
                    <div v-else />
                  </template>
                </el-table-column>
              </el-table>
            </div>
          </div>
@@ -187,45 +155,11 @@
                    <div class="ellipsis">{{ row.wo }}</div>
                  </template>
                </el-table-column>
                <!--                <el-table-column-->
                <!--                  prop="customename"-->
                <!--                  label="客户"-->
                <!--                  width="288"-->
                <!--                >-->
                <!--                  <template slot-scope="{row}">-->
                <!--                    <div v-if="row.customename" class="ellipsis">{{ row.customename }}</div>-->
                <!--                    <div v-else>/</div>-->
                <!--                  </template>-->
                <!--                </el-table-column>-->
                <!--                  <el-table-column-->
                <!--                    prop="username"-->
                <!--                    label="业务员"-->
                <!--                    width="65"-->
                <!--                  >-->
                <!--                    <template slot-scope="{row}">-->
                <!--                      <div v-if="row.username" class="ellipsis">{{ row.username }}</div>-->
                <!--                      <div v-else>/</div>-->
                <!--                    </template>-->
                <!--                  </el-table-column>-->
                <!--                <el-table-column-->
                <!--                  prop="SourceVoucherCode"-->
                <!--                  label="来源单号"-->
                <!--                  width="185"-->
                <!--                >-->
                <!--                  <template slot-scope="{row}">-->
                <!--                    <div v-if="row.SourceVoucherCode" class="ellipsis">{{ row.SourceVoucherCode }}</div>-->
                <!--                    <div v-else>/</div>-->
                <!--                  </template>-->
                <!--                </el-table-column>-->
                <!--                  <el-table-column-->
                <!--                    prop="materiel_code"-->
                <!--                    label="产品编号"-->
                <!--                    width="96"-->
                <!--                  />-->
                <el-table-column
                  prop="materiel_name"
                  label="产品名称"
                  width="288"
                  width="258"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.materiel_name" class="ellipsis">{{ row.materiel_name }}</div>
@@ -234,7 +168,7 @@
                <el-table-column
                  prop="specification"
                  label="规格型号"
                  width="300"
                  width="200"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div>
@@ -260,26 +194,7 @@
                    <div v-else>0</div>
                  </template>
                </el-table-column>
                <!--                <el-table-column-->
                <!--                  prop="priuserdefnvc1"-->
                <!--                  label="检验方式"-->
                <!--                  width="110"-->
                <!--                >-->
                <!--                  <template slot-scope="{row}">-->
                <!--                    <div v-if="row.priuserdefnvc1">{{ row.priuserdefnvc1 }}</div>-->
                <!--                    <div v-else>/</div>-->
                <!--                  </template>-->
                <!--                </el-table-column>-->
                <!--                <el-table-column-->
                <!--                  prop="priuserdefnvc2"-->
                <!--                  label="检验人员"-->
                <!--                  width="110"-->
                <!--                >-->
                <!--                  <template slot-scope="{row}">-->
                <!--                    <div v-if="row.priuserdefnvc2">{{ row.priuserdefnvc2 }}</div>-->
                <!--                    <div v-else>/</div>-->
                <!--                  </template>-->
                <!--                </el-table-column>-->
                <el-table-column
                  prop="deliveryDate"
                  label="预计交货日期"
@@ -287,6 +202,17 @@
                >
                  <template slot-scope="{row}">
                    <div v-if="row.deliveryDate">{{ row.deliveryDate.substring(0,10) }}</div>
                    <div v-else>/</div>
                  </template>
                </el-table-column>
                <el-table-column
                  prop="warning"
                  label="延期天数"
                  width="130"
                >
                  <template slot-scope="{row}">
                    <div v-if="row.warning">{{ row.warning }}</div>
                    <div v-else>/</div>
                  </template>
                </el-table-column>
@@ -326,12 +252,12 @@
<script>
import './kbCommon.css'
import { bar02, kbTop, loadEcharts } from '@/utils/myEcharts'
// import {
//   WareHouseRightBottomData,
//   WareHouseRightTopData,
//   WareHouseTopBottomData,
//   WareHouseTopLeftData
// } from '@/api/kanbanManager'
import {
  ProductionStockedInLeftTop,
  ProductConsignmentLeftBottom,
  ProductionStockedInRightTop,
  ProductionStockedInRightBottom
} from '@/api/kanbanManager'
export default {
  name: 'Index2',
@@ -371,10 +297,10 @@
    window.addEventListener('online', this.updateOnlineStatus)
    window.addEventListener('offline', this.updateOnlineStatus)
    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
    //
    // this.getWareHouseTopLeftData()
    // this.getWareHouseTopBottomData()
    // this.getEcharts()
    this.getProductionStockedInLeftTop()
    this.getProductConsignmentLeftBottom()
    this.getEcharts()
  },
  beforeDestroy() {
    window.removeEventListener('online', this.updateOnlineStatus)
@@ -403,10 +329,9 @@
        }
      }
    },
    // èŽ·å–å·¦ä¸Štable数据
    getWareHouseTopLeftData() {
      WareHouseTopLeftData().then(res => {
    getProductionStockedInLeftTop() {
      ProductionStockedInLeftTop().then(res => {
        this.tableDataTop = res.data
        // this.number1 = this.tableDataTop.length
        const divData = this.$refs.tableDataTopRef.bodyWrapper
@@ -419,12 +344,12 @@
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // é‡ç½®table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopLeftData().then(res => {
            ProductionStockedInLeftTop().then(res => {
              this.tableDataTop = res.data
              // this.number1 = this.tableDataTop.length
              if (this.tableDataTop.length > 10) {
                clearInterval(this.tableTopTask)
                this.getWareHouseTopLeftData()
                this.getProductionStockedInLeftTop()
              }
            })
          }
@@ -432,8 +357,8 @@
      })
    },
    // èŽ·å–å·¦ä¸‹table数据
    getWareHouseTopBottomData() {
      WareHouseTopBottomData().then(res => {
    getProductConsignmentLeftBottom() {
      ProductConsignmentLeftBottom().then(res => {
        this.tableDataBottom = res.data
        this.number2 = this.tableDataBottom.length
        const divData = this.$refs.tableDataBottomRef.bodyWrapper
@@ -447,12 +372,12 @@
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // é‡ç½®table距离顶部距离
            divData.scrollTop = 0
            WareHouseTopBottomData().then(res => {
            ProductConsignmentLeftBottom().then(res => {
              this.tableDataBottom = res.data
              this.number2 = this.tableDataBottom.length
              if (this.tableDataBottom.length > 10) {
                clearInterval(this.tableBottomTask)
                this.getWareHouseTopBottomData()
                this.getProductConsignmentLeftBottom()
              }
            })
          }
@@ -462,23 +387,23 @@
    // èŽ·å–echarts
    getEcharts() {
      WareHouseRightTopData().then(res => {
        loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      ProductionStockedInRightTop().then(res => {
        loadEcharts('bar03', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
      })
      WareHouseRightBottomData().then(res => {
        loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
      ProductionStockedInRightBottom().then(res => {
        loadEcharts('bar04', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
      })
      this.echartsRightTop = setInterval(() => {
        WareHouseRightTopData().then(res => {
          loadEcharts('bar03', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        ProductionStockedInRightTop().then(res => {
          loadEcharts('bar03', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
      this.echartsRightBottom = setInterval(() => {
        WareHouseRightBottomData().then(res => {
          loadEcharts('bar04', bar02(res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.CanuseBaseQuantity), res.data.filter(i => i.CanuseBaseQuantity > 0).map(i => i.materiel_name)))
        ProductionStockedInRightBottom().then(res => {
          loadEcharts('bar04', bar02(res.data.filter(i => i.qty > 0).map(i => i.qty), res.data.filter(i => i.qty > 0).map(i => i.materiel_name)))
        })
      }, 1000 * 15)
    },
vue.config.js
@@ -37,7 +37,26 @@
      warnings: false,
      errors: true
    },
    before: require('./mock/mock-server.js')
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: 'http://121.196.36.24:8025', // è¯·æ±‚的第三⽅接⼝地址       æœ¬åœ°å¼€å‘服务器
        // target: 'http://192.168.94.59:8001', // è¯·æ±‚的第三⽅接⼝地址       å®¢æˆ·æœåС噍
        changeOrigin: true, // è¯·æ±‚跨域时,需 é…ç½®æ­¤é¡¹
        pathRewrite: { // è·¯å¾„重写,替换target中的请求地址
          ['^' + process.env.VUE_APP_BASE_API]: '/api/'
        }
        // ws: true;//开启ws, å¦‚果是http代理此处可以不用设置
      }
      // [process.env.VUE_APP_BASE_API_BASE]: {
      //   target: 'http://121.196.36.24:8019', // è¯·æ±‚的第三⽅接⼝地址       æœ¬åœ°å¼€å‘服务器
      //   changeOrigin: true, // è¯·æ±‚跨域时,需 é…ç½®æ­¤é¡¹
      //   pathRewrite: { // è·¯å¾„重写,替换target中的请求地址
      //     ['^' + process.env.VUE_APP_BASE_API_BASE]: '/base/'
      //   }
      //   // ws: true;//开启ws, å¦‚果是http代理此处可以不用设置
      // }
    }
    // before: require('./mock/mock-server.js')
  },
  configureWebpack: {
    // provide the app's title in webpack's name field, so that