| | |
| | | <div style="width: 1000px;"> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="cxjg" class="svg_class" /> |
| | | 生产订单(当月) |
| | | 生产订单(近一月) |
| | | </div> |
| | | <div class="lineContent horn" style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"> |
| | | <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between"> |
| | |
| | | <svg-icon icon-class="cggz" class="svg_class" /> |
| | | 销售订单(月/季) |
| | | </div> |
| | | <div class="lineContent horn" style="height: 450px;display: flex;justify-content: space-between"> |
| | | <div class="lineContent horn" style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"> |
| | | <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between"> |
| | | |
| | | <!-- <div v-for="i in LeftTopData01" :key="i" class="flex_c_s">--> |
| | | <!-- <div class="all_block01 flex_c_s">--> |
| | | <!-- <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div>--> |
| | | <!-- <div class="" style="display: flex;justify-content:space-between">--> |
| | | <!-- <div class="all_block02 flex_c_c" style="width: 49% ">任务数</div>--> |
| | | <!-- <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="" style="display: flex;justify-content:space-between">--> |
| | | <!-- <div class="all_block02 flex_c_c" style="width: 49% ">完工数</div>--> |
| | | <!-- <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div v-for="i in RightTopData01" :key="i.Quarter" class="flex_c_s"> |
| | | <div class="all_block03 flex_c_s"> |
| | | <div class="flex_c_c all_block04">{{ i.Quarter }}</div> |
| | | <div class="" style="display: flex;justify-content:space-between"> |
| | | <div class="all_block04 flex_c_c" style="width: 49% ">任务数</div> |
| | | <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div> |
| | | </div> |
| | | <div class="" style="display: flex;justify-content:space-between"> |
| | | <div class="all_block04 flex_c_c" style="width: 49% ">出库数</div> |
| | | <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div style="height: 260px;">123</div> |
| | | <div style="height: 260px;"> |
| | | <div id="all02" class="flex_c_c" style="width: 100%;height:100%;" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div style="width: 1000px;"> |
| | | <div class="smallTitle"> |
| | | <svg-icon icon-class="blcs" class="svg_class" /> |
| | | 质量不良 |
| | | 质量不良(近一周) |
| | | </div> |
| | | <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between"> |
| | | 123 |
| | | <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" /> |
| | | |
| | | </div> |
| | | </div> |
| | | <div style="width: 850px;"> |
| | |
| | | 仓库库存 |
| | | </div> |
| | | <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between"> |
| | | 123 |
| | | <div style="display: flex;justify-content: center;position: relative"> |
| | | <div class="kb_center_block_children all_block05"> |
| | | <div style="font-size: 24px;">{{ parseFloat(RightBottom.Y) }}</div> |
| | | <div class="box02" /> |
| | | <div>原材料</div> |
| | | </div> |
| | | <div class="kb_center_block_children all_block06"> |
| | | <div style="font-size: 24px;">{{ parseFloat(RightBottom.B) }}</div> |
| | | <div class="box02" /> |
| | | <div>半成品</div> |
| | | </div> |
| | | <div class="kb_center_block_children all_block07"> |
| | | <div style="font-size: 24px;">{{ parseFloat(RightBottom.C) }}</div> |
| | | <div class="box02" /> |
| | | <div>产成品</div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import './kbCommon.css' |
| | | import { loadEcharts, all01 } from '@/utils/myEcharts' |
| | | import { loadEcharts, all01, all02, cjzl03 } from '@/utils/myEcharts' |
| | | import { |
| | | ShopSearch, WorkShopCompreLeftTop |
| | | QCBadCenterLeftWeek, |
| | | ShopSearch, WorkShopCompreLeftTop, WorkShopCompreRightBottom, WorkShopCompreRightTop |
| | | |
| | | } from '@/api/kanbanManager' |
| | | |
| | |
| | | legendData: [], |
| | | |
| | | LeftTopData01: [], |
| | | LeftTopData02: [] |
| | | LeftTopData02: [], |
| | | |
| | | RightTopData01: [], |
| | | RightTopData02: [], |
| | | cjzl03_xData: [], |
| | | cjzl03_yData: [], |
| | | RightBottom: {} |
| | | |
| | | } |
| | | }, |
| | |
| | | async getAllApi() { |
| | | const { data: res } = await ShopSearch() |
| | | this.wkshopArr = res |
| | | const temp = ['001', 'CJ001', '006', 'ZS001', '002'] |
| | | const temp = this.wkshopArr.map(i => i.org_code) |
| | | // const temp = this.wkshopArr.map(i => i.org_code) |
| | | |
| | | temp.forEach(i => { |
| | |
| | | } |
| | | if (temp.includes(res2Key)) { |
| | | data.quantity = res2.data.LeftBottom[res2Key][0].quantity |
| | | data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty |
| | | data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftTopData02.push(data) |
| | | } |
| | | } |
| | | loadEcharts('all01', all01(this.legendData)) |
| | | console.log(this.LeftTopData01, 1) |
| | | console.log(this.LeftTopData02, 2) |
| | | loadEcharts('all01', all01(this.legendData, this.LeftTopData02)) |
| | | |
| | | setInterval(() => { |
| | | WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }).then(res2 => { |
| | | this.LeftTopData01 = [] |
| | | this.LeftTopData02 = [] |
| | | for (const res2Key in res2.data.LeftTop) { |
| | | const data = { |
| | | good_qty: 0, |
| | | plan_qty: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res2Key)) { |
| | | data.good_qty = res2.data.LeftTop[res2Key][0].good_qty |
| | | data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty |
| | | data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftTopData01.push(data) |
| | | } |
| | | } |
| | | for (const res2Key in res2.data.LeftBottom) { |
| | | const data = { |
| | | quantity: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res2Key)) { |
| | | data.quantity = res2.data.LeftBottom[res2Key][0].quantity |
| | | data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty |
| | | data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftTopData02.push(data) |
| | | } |
| | | } |
| | | loadEcharts('all01', all01(this.legendData, this.LeftTopData02)) |
| | | }) |
| | | }, 1000 * 30) |
| | | |
| | | const res3 = await WorkShopCompreRightTop() |
| | | res3.data.RightTop.forEach(i => { |
| | | this.RightTopData01.push({ |
| | | Quarter: i.Quarter, |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | res3.data.RightBottom.forEach(i => { |
| | | this.RightTopData02.push({ |
| | | Month: i.Month + '月', |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02', all02(this.RightTopData02)) |
| | | setInterval(() => { |
| | | WorkShopCompreRightTop().then(res3 => { |
| | | this.RightTopData01 = [] |
| | | this.RightTopData02 = [] |
| | | res3.data.RightTop.forEach(i => { |
| | | this.RightTopData01.push({ |
| | | Quarter: i.Quarter, |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | res3.data.RightBottom.forEach(i => { |
| | | this.RightTopData02.push({ |
| | | Month: i.Month + '月', |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02', all02(this.RightTopData02)) |
| | | }) |
| | | }, 1000 * 40) |
| | | |
| | | const res4 = await QCBadCenterLeftWeek({ wkshopcode: temp.join(',') }) |
| | | this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date) |
| | | for (const res4Key in res4.data) { |
| | | if (temp.includes(res4Key)) { |
| | | const bb = res4.data[res4Key].map(i => i.count) |
| | | this.cjzl03_yData.push(bb) |
| | | } |
| | | } |
| | | loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true)) |
| | | setInterval(() => { |
| | | QCBadCenterLeftWeek({ wkshopcode: temp.join(',') }).then(res4 => { |
| | | this.cjzl03_yData = [] |
| | | |
| | | this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date) |
| | | for (const res4Key in res4.data) { |
| | | if (temp.includes(res4Key)) { |
| | | const bb = res4.data[res4Key].map(i => i.count) |
| | | this.cjzl03_yData.push(bb) |
| | | } |
| | | } |
| | | loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true)) |
| | | }) |
| | | }, 1000 * 50) |
| | | |
| | | const res5 = await WorkShopCompreRightBottom() |
| | | this.RightBottom = res5.data |
| | | |
| | | setInterval(() => { |
| | | WorkShopCompreRightBottom().then(res5 => { |
| | | this.RightBottom = res5.data |
| | | }) |
| | | }, 1000 * 60) |
| | | }, |
| | | |
| | | // 获取Echarts |
| | |
| | | // loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData))// 左侧 |
| | | }, |
| | | |
| | | getQCBadBottomWeek() { |
| | | const data = { |
| | | wkshopcode: this.wkshopArr.map(i => i.org_code).join(',') |
| | | } |
| | | QCBadBottomWeek(data).then(res => { |
| | | this.tableDataRightTop = res.data |
| | | |
| | | const divData = this.$refs.tableDataRightTopRef.bodyWrapper |
| | | const temp = setInterval(() => { |
| | | // 元素自增距离顶部1像素 |
| | | divData.scrollTop += 1 |
| | | if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) { |
| | | // 重置table距离顶部距离 |
| | | divData.scrollTop = 0 |
| | | QCBadBottomWeek(data).then(res => { |
| | | this.tableDataRightTop = res.data |
| | | if (this.tableDataRightTop.length > 7) { |
| | | clearInterval(temp) |
| | | this.getQCBadBottomWeek() |
| | | } |
| | | }) |
| | | } |
| | | }, this.tableDataRightTop.length <= 7 ? 1000 * 10 : 300) |
| | | }) |
| | | }, |
| | | // 获取当前时间 |
| | | getNowTime() { |
| | | const dt = new Date() |
| | |
| | | .all_block01{ |
| | | width:187px; |
| | | height: 180px; |
| | | //height: 50px; |
| | | //height: 100%; |
| | | //background: rgba(9, 216, 242, 0.1); |
| | | } |
| | | .all_block02{ |
| | | width: 100%; |
| | | height: 49px; |
| | | background: rgba(9, 216, 242, 0.1); |
| | | } |
| | | |
| | | .all_block03{ |
| | | width:199px; |
| | | height: 180px; |
| | | } |
| | | .all_block04{ |
| | | width: 100%; |
| | | height: 49px; |
| | | background: rgba(9, 216, 242, 0.1); |
| | | } |
| | | |
| | | .kb_center_block_children { |
| | | height: 180px; |
| | | //border: 1px solid $kbBorderColor; |
| | | width: 240px; |
| | | display: flex; |
| | | z-index: 2; |
| | | justify-content: space-around; |
| | | align-items: center; |
| | | flex-direction: column; |
| | | margin: 10px; |
| | | font-size: 22px; |
| | | |
| | | .box02 { |
| | | background: url("../../assets/images/box02.png") no-repeat; |
| | | transform: scale(1.5); |
| | | width: 145px; |
| | | height: 84px; |
| | | |
| | | } |
| | | } |
| | | |
| | | .all_block05 { |
| | | position: absolute; |
| | | animation: upDown 3s ease-in-out infinite; |
| | | left: 60px; |
| | | } |
| | | .all_block06{ |
| | | position: absolute; |
| | | animation: upDown2 3s ease-in-out infinite; |
| | | left: 290px; |
| | | } |
| | | .all_block07{ |
| | | position: absolute; |
| | | animation: upDown 3s ease-in-out infinite; |
| | | left: 520px; |
| | | } |
| | | @keyframes upDown { |
| | | 0% { |
| | | top: 50px; |
| | | } |
| | | 50% { |
| | | top: 100px; |
| | | } |
| | | 100% { |
| | | top: 50px; |
| | | } |
| | | } |
| | | @keyframes upDown2 { |
| | | 0% { |
| | | top: 100px; |
| | | } |
| | | 50% { |
| | | top: 50px; |
| | | } |
| | | 100% { |
| | | top: 100px; |
| | | } |
| | | } |
| | | </style> |