| | |
| | | <div class="kb_content"> |
| | | <div class="kb_left"> |
| | | <!-- 1--> |
| | | <!-- <div class="kb_left_top kb_pd10" style="padding:10px 0px 10px 5px">--> |
| | | <div class="kb_left_top kb_pd10"> |
| | | <div class="kb_left_top_block" style="margin-top: 10px"> |
| | | <div class="headTitle">产品待入库:</div> |
| | | <div class="headTitle kb_title_text">产品待入库</div> |
| | | <div class="content"> |
| | | <el-table |
| | | ref="tableDataTopRef" |
| | |
| | | <el-table-column |
| | | prop="voucherdate" |
| | | label="单据日期" |
| | | width="86" |
| | | width="110" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.voucherdate.substring(5, 10) }}</div> |
| | | <div v-if=" row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo" |
| | | label="单据编号" |
| | | width="165" |
| | | width="149" |
| | | /> |
| | | <el-table-column |
| | | prop="wkshp_name" |
| | | label="生产车间" |
| | | width="86" |
| | | width="95" |
| | | /> |
| | | <el-table-column |
| | | prop="saleOrderCode" |
| | | label="销售订单号" |
| | | width="178" |
| | | /> |
| | | width="170" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="materiel_code" |
| | | label="产品编号" |
| | |
| | | <el-table-column |
| | | prop="materiel_name" |
| | | label="产品名称" |
| | | width="105" |
| | | width="140" |
| | | /> |
| | | <el-table-column |
| | | prop="specification" |
| | | label="规格型号" |
| | | width="85" |
| | | /> |
| | | width="113" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="stck_name" |
| | | label="预入仓库" |
| | | width="100" |
| | | /> |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.stck_name">{{ row.stck_name }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="quantity" |
| | | label="数量" |
| | | width="60" |
| | | width="50" |
| | | /> |
| | | <el-table-column |
| | | prop="totalStockInQuantity" |
| | | label="已入库数量" |
| | | width="105" |
| | | /> |
| | | width="80" |
| | | > |
| | | <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="90" |
| | | width="50" |
| | | /> |
| | | <el-table-column |
| | | prop="preStartDate" |
| | | label="预计开工" |
| | | width="86" |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.preStartDate.substring(5, 10) }}</div> |
| | | <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="86" |
| | | width="110" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.preFinishDate.substring(5, 10) }}</div> |
| | | <div v-if="row.preFinishDate">{{ row.preFinishDate.substring(0, 10) }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | <div class="kb_left_top_block" style="margin-top: 25px"> |
| | | <div class="headTitle">产品待发货:</div> |
| | | <div class="headTitle kb_title_text">产品待发货</div> |
| | | <div class="content"> |
| | | <el-table |
| | | ref="tableDataBottomRef" |
| | |
| | | <el-table-column |
| | | prop="voucherdate" |
| | | label="单据日期" |
| | | width="86" |
| | | width="110" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div>{{ row.voucherdate.substring(5, 10) }}</div> |
| | | <div v-if="row.voucherdate">{{ row.voucherdate.substring(0, 10) }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="wo" |
| | | label="单据编号" |
| | | width="165" |
| | | width="145" |
| | | /> |
| | | <el-table-column |
| | | prop="customename" |
| | | label="客户" |
| | | width="170" |
| | | /> |
| | | width="125" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.customename" class="ellipsis">{{ row.customename }}</div> |
| | | <div v-else /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="username" |
| | | label="业务员" |
| | | width="68" |
| | | width="65" |
| | | /> |
| | | <el-table-column |
| | | prop="SourceVoucherCode" |
| | | label="来源单号" |
| | | width="119" |
| | | /> |
| | | width="145" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.SourceVoucherCode">{{ row.SourceVoucherCode }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="materiel_code" |
| | | label="产品编号" |
| | | width="86" |
| | | width="96" |
| | | /> |
| | | <el-table-column |
| | | prop="materiel_name" |
| | | label="产品名称" |
| | | width="86" |
| | | width="170" |
| | | /> |
| | | <el-table-column |
| | | prop="specification" |
| | | label="规格型号" |
| | | width="86" |
| | | /> |
| | | width="100" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.specification" class="ellipsis">{{ row.specification }}</div> |
| | | <div v-else>/</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="quantity" |
| | | label="数量" |
| | | width="60" |
| | | width="47" |
| | | /> |
| | | <el-table-column |
| | | prop="saleOutQuantity" |
| | | label="已发货数量" |
| | | width="100" |
| | | /> |
| | | width="80" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <div v-if="row.saleOutQuantity">{{ row.saleOutQuantity }}</div> |
| | | <div v-else>0</div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="priuserdefnvc1" |
| | | label="检验方式" |
| | | width="86" |
| | | width="80" |
| | | /> |
| | | <el-table-column |
| | | prop="priuserdefnvc2" |
| | | label="检验人员" |
| | | width="86" |
| | | width="80" |
| | | /> |
| | | <el-table-column |
| | | prop="deliveryDate" |
| | | label="预计交货日期" |
| | | width="120" |
| | | width="110" |
| | | > |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <div>{{ row.deliveryDate.substring(5,10) }}</div>--> |
| | | <!-- </template>--> |
| | | <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> |
| | | </div> |
| | |
| | | <div class="kb_right kb_pd10"> |
| | | <div class="kb_right_top kb_pd10"> |
| | | <div class="kb_right_top_content"> |
| | | <div class="content_head">产品库存量排行Top5:</div> |
| | | <div class="content_head kb_title_text">产品库存量排行Top5</div> |
| | | <div class="content_body"> |
| | | <div id="bar03" style="width: 100%;height:100%" /> |
| | | </div> |
| | | <div class="content_head" style="margin-top: 12px">原料库存量排行Top5:</div> |
| | | <div class="content_head kb_title_text" style="margin-top: 12px">原料库存量排行Top5</div> |
| | | <div class="content_body"> |
| | | <div id="bar04" style="width: 100%;height:100%" /> |
| | | </div> |
| | |
| | | import './kbCommon.css' |
| | | import { bar02, loadEcharts } from '@/utils/myEcharts' |
| | | import { |
| | | LineSearchBottomLeftData, |
| | | WareHouseRightBottomData, |
| | | WareHouseRightTopData, |
| | | WareHouseTopBottomData, |
| | |
| | | getWareHouseTopLeftData() { |
| | | WareHouseTopLeftData().then(res => { |
| | | this.tableDataTop = res.data |
| | | }) |
| | | |
| | | const divData = this.$refs.tableDataTopRef.bodyWrapper |
| | | // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素) |
| | | setInterval(() => { |
| | | // 元素自增距离顶部1像素 |
| | | divData.scrollTop += 1 |
| | | // divData.scrollTop += divData.scrollHeight / this.tableData.length |
| | | // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // 重置table距离顶部距离 |
| | | divData.scrollTop = 0 |
| | | WareHouseTopLeftData().then(res => { |
| | | this.tableDataTop = res.data |
| | | }) |
| | | } |
| | | }, this.tableDataTop.length <= 10 ? 1000 * 6 : 100) |
| | | const divData = this.$refs.tableDataTopRef.bodyWrapper |
| | | // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素) |
| | | setInterval(() => { |
| | | // 元素自增距离顶部1像素 |
| | | divData.scrollTop += 1 |
| | | // divData.scrollTop += divData.scrollHeight / this.tableData.length |
| | | // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // 重置table距离顶部距离 |
| | | divData.scrollTop = 0 |
| | | WareHouseTopLeftData().then(res => { |
| | | this.tableDataTop = res.data |
| | | }) |
| | | } |
| | | }, this.tableDataTop.length <= 10 ? 1000 * 6 : 100) |
| | | }) |
| | | }, |
| | | // 获取左下table数据 |
| | | getWareHouseTopBottomData() { |
| | | WareHouseTopBottomData().then(res => { |
| | | this.tableDataBottom = res.data |
| | | }) |
| | | |
| | | const divData = this.$refs.tableDataBottomRef.bodyWrapper |
| | | // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素) |
| | | setInterval(() => { |
| | | // 元素自增距离顶部1像素 |
| | | divData.scrollTop += 1 |
| | | // divData.scrollTop += divData.scrollHeight / this.tableData.length |
| | | // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // 重置table距离顶部距离 |
| | | divData.scrollTop = 0 |
| | | WareHouseTopBottomData().then(res => { |
| | | this.tableDataBottom = res.data |
| | | }) |
| | | } |
| | | }, this.tableDataBottom.length <= 10 ? 1000 * 6 : 100) |
| | | const divData = this.$refs.tableDataBottomRef.bodyWrapper |
| | | // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素) |
| | | setInterval(() => { |
| | | // 元素自增距离顶部1像素 |
| | | divData.scrollTop += 1 |
| | | // divData.scrollTop += divData.scrollHeight / this.tableData.length |
| | | // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度) |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // 重置table距离顶部距离 |
| | | divData.scrollTop = 0 |
| | | WareHouseTopBottomData().then(res => { |
| | | this.tableDataBottom = res.data |
| | | }) |
| | | } |
| | | }, this.tableDataBottom.length <= 10 ? 1000 * 6 : 100) |
| | | }) |
| | | }, |
| | | |
| | | // 获取echarts |
| | | getEcharts() { |
| | | WareHouseRightTopData().then(res => { |
| | | loadEcharts('bar03', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name))) |
| | | 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))) |
| | | }) |
| | | |
| | | WareHouseRightBottomData().then(res => { |
| | | loadEcharts('bar04', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name))) |
| | | 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))) |
| | | }) |
| | | |
| | | setInterval(() => { |
| | | WareHouseRightTopData().then(res => { |
| | | loadEcharts('bar03', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name))) |
| | | 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))) |
| | | }) |
| | | }, 1000 * 15) |
| | | |
| | | setInterval(() => { |
| | | WareHouseRightBottomData().then(res => { |
| | | loadEcharts('bar04', bar02(res.data.map(i => i.CanuseBaseQuantity), res.data.map(i => i.materiel_name))) |
| | | 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))) |
| | | }) |
| | | }, 1000 * 15) |
| | | }, |
| | |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | $kbBorderColor: #09d8f2; |
| | | //$kbBorderColor: #09d8f2; |
| | | $kbBorderColor: rgba(9,216,242,0.4); |
| | | $kbBackgroundColor: rgba(30, 33, 46, 0.6); |
| | | |
| | | .kb_content { |
| | |
| | | letter-spacing: 2px; |
| | | |
| | | .kb_left { |
| | | width: 1345px; |
| | | width: 1380px; |
| | | height: 100%; |
| | | padding-left: 5px; |
| | | |
| | |
| | | } |
| | | |
| | | .kb_right { |
| | | width: 575px; |
| | | width: 540px; |
| | | height: 100%; |
| | | |
| | | .kb_right_top { |
| | |
| | | ::v-deep .el-table::before { |
| | | height: 0; |
| | | } |
| | | |
| | | ::v-deep .cell { |
| | | padding: 0 !important; |
| | | } |
| | | </style> |