| | |
| | | // const titlename = ['外观划伤', '表面油污', '尺寸', '颜色', '大小'] |
| | | // const data = val.map(i => i.cont) |
| | | // const titlename = val.map(i => i.name) |
| | | const data = dataArr.filter((item, index) => index < 5) |
| | | const data = dataArr.filter((item, index) => index < 10) |
| | | |
| | | const titlename = titlenameArr.filter((item, index) => index < 5) |
| | | const titlename = titlenameArr.filter((item, index) => index < 10) |
| | | |
| | | const length = titlename.length |
| | | if (titlename.length < 5) { |
| | |
| | | // const myColor = ['#FF0000', '#FF5511', '#FF8800', '#FFBB00', '#FFFF00'] |
| | | // const myColor = ['#0000FF'] |
| | | // const myColor = ['#7af5f5', '#00FFFF', '#00FFFF', '#00FFFF', '#00FFFF'] |
| | | const myColor = ['rgba(122,245,245,1)', 'rgba(122,245,245,0.95)', 'rgba(122,245,245,0.9)', 'rgba(122,245,245,0.85)', 'rgba(122,245,245,0.8)'] |
| | | const myColor = [ |
| | | 'rgba(122,245,245,1)', 'rgba(122,245,245,0.95)', 'rgba(122,245,245,0.9)', 'rgba(122,245,245,0.85)', 'rgba(122,245,245,0.8)', |
| | | 'rgba(122,245,245,0.75)', 'rgba(122,245,245,0.7)', 'rgba(122,245,245,0.65)', 'rgba(122,245,245,0.6)', 'rgba(122,245,245,0.55)' |
| | | ] |
| | | const option = { |
| | | animation: false, |
| | | backgroundColor: 'transparent', |
| | |
| | | return option |
| | | } |
| | | |
| | | export function all02(data) { |
| | | export function all02(data, title) { |
| | | return { |
| | | backgroundColor: 'transparent', |
| | | // tooltip: {}, |
| | | title: { |
| | | text: '每月订单数量/出库数量', |
| | | text: title, |
| | | left: '50%', |
| | | top: '0%', |
| | | textAlign: 'center', |
| | |
| | | ] |
| | | } |
| | | } |
| | | |
| | | export function all03(ydata, data) { |
| | | const option = { |
| | | backgroundColor: 'transparent', |
| | | // tooltip: { |
| | | // formatter: '{b} ({c})' |
| | | // }, |
| | | title: { |
| | | text: '各车间当月完工数量', |
| | | left: '50%', |
| | | top: '0%', |
| | | textAlign: 'center', |
| | | textStyle: { |
| | | // color: '#fff', |
| | | color: '#00ffff', |
| | | fontSize: '20', |
| | | fontWeight: 'bolder' |
| | | } |
| | | }, |
| | | grid: { |
| | | left: '8%', |
| | | right: '8%', |
| | | bottom: '10%', |
| | | top: '15%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: [{ |
| | | // gridIndex: 0, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: false |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | } |
| | | |
| | | }], |
| | | yAxis: [{ |
| | | gridIndex: 0, |
| | | interval: 0, |
| | | // data: yAxisData.reverse(), |
| | | data: ydata.reverse(), |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | axisLabel: { |
| | | show: true, |
| | | textStyle: { |
| | | fontSize: 18, |
| | | color: colorX |
| | | } |
| | | }, |
| | | splitLine: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | show: false |
| | | } |
| | | |
| | | }], |
| | | series: [ |
| | | { |
| | | type: 'bar', |
| | | xAxisIndex: 0, |
| | | yAxisIndex: 0, |
| | | barWidth: '45%', |
| | | itemStyle: { |
| | | normal: { |
| | | barBorderRadius: 15, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [{ |
| | | offset: 0, |
| | | color: 'rgba(0,255,205,.6)' |
| | | }, { |
| | | offset: 0.8, |
| | | |
| | | color: 'rgba(41,134,207,1)' |
| | | }], false) |
| | | } |
| | | }, |
| | | label: { |
| | | normal: { |
| | | show: true, |
| | | position: 'right', |
| | | textStyle: { |
| | | color: colorX |
| | | }, |
| | | fontSize: 18 |
| | | } |
| | | }, |
| | | data: data.map(i => i.quantity).reverse() |
| | | } |
| | | |
| | | ] |
| | | } |
| | | return option |
| | | } |
| | |
| | | <svg-icon icon-class="blcs" 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-evenly"> |
| | | <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.wkshp_code" class="flex_c_s"> |
| | | <div class="all_block01 flex_c_s"> |
| | | <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div> |
| | | <div v-for="i in LeftTopData01" :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_block02 flex_c_c" style="width: 49% ">任务数</div> |
| | | <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div> |
| | | <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_block02 flex_c_c" style="width: 49% ">完工数</div> |
| | | <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div> |
| | | <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;"> |
| | | <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" /> |
| | | <div id="all02_1" class="flex_c_c" style="width: 100%;height:100%;" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <svg-icon icon-class="cggz" class="svg_class" /> |
| | | 销售订单(月/季) |
| | | </div> |
| | | <div class="lineContent horn" style="height: 450px;display: flex;flex-direction: column;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 RightTopData01" :key="i.Quarter" class="flex_c_s"> |
| | |
| | | <svg-icon icon-class="cxjg" class="svg_class" /> |
| | | 生产订单(当月) |
| | | </div> |
| | | <div class="lineContent horn" style="height: 380px;display: flex;flex-direction: column;justify-content: space-between"> |
| | | <div |
| | | class="lineContent horn" |
| | | style="height: 380px;display: flex;flex-direction: column;justify-content: space-between" |
| | | > |
| | | <div style="height: 180px;padding: 10px;display: flex;justify-content:space-evenly"> |
| | | |
| | | <div v-for="i in LeftTopData01" :key="i.wkshp_code" class="flex_c_s"> |
| | | <div v-for="i in LeftBottomData01" :key="i.wkshp_code" 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> |
| | | <div style="height: 260px;"> |
| | | <!-- <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" />--> |
| | | <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <script> |
| | | import './kbCommon.css' |
| | | import { loadEcharts, all01, all02, cjzl03 } from '@/utils/myEcharts' |
| | | import { loadEcharts, all02, all03 } from '@/utils/myEcharts' |
| | | import { |
| | | QCBadCenterLeftWeek, |
| | | WorkShopCompreLeftTop, WorkShopCompreRightBottom, WorkShopCompreRightTop |
| | | |
| | | WorkShopCompreLeftBottom, WorkShopCompreLeftTop, WorkShopCompreRightBottom, WorkShopCompreRightTop |
| | | } from '@/api/kanbanManager' |
| | | |
| | | export default { |
| | |
| | | |
| | | RightTopData01: [], |
| | | RightTopData02: [], |
| | | cjzl03_xData: [], |
| | | cjzl03_yData: [], |
| | | |
| | | LeftBottomData01: [], |
| | | LeftBottomData02: [], |
| | | |
| | | RightBottom: {} |
| | | |
| | | } |
| | |
| | | async getAllApi() { |
| | | // const { data: res } = await ShopSearch() |
| | | const res = [ |
| | | { org_code: 'CJ001', org_name: '精工车间' }, |
| | | { org_code: '001', org_name: '装配车间' }, |
| | | { org_code: '002', org_name: '包装车间' } |
| | | { org_code: '501', org_name: '精工车间' }, |
| | | { org_code: '502', org_name: '装配车间' }, |
| | | { org_code: '503', org_name: '电机车间' } |
| | | ] |
| | | this.wkshopArr = res |
| | | const temp = this.wkshopArr.map(i => i.org_code) |
| | |
| | | }) |
| | | |
| | | // 左上 采购订单 |
| | | const res2 = await WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }) |
| | | 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)) |
| | | |
| | | const res2 = await WorkShopCompreLeftBottom() |
| | | res2.data.BottomLeftTop.forEach(i => { |
| | | this.LeftTopData01.push({ |
| | | Quarter: i.Quarter, |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | res2.data.BottomLeftBottom.forEach(i => { |
| | | this.LeftTopData02.push({ |
| | | Month: i.Month + '月', |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02_1', all02(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)) |
| | | WorkShopCompreLeftBottom().then(res2 => { |
| | | res2.data.BottomLeftTop.forEach(i => { |
| | | this.LeftTopData01.push({ |
| | | Quarter: i.Quarter, |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }, 1000 * 30) |
| | | }) |
| | | res2.data.BottomLeftBottom.forEach(i => { |
| | | this.LeftTopData02.push({ |
| | | Month: i.Month + '月', |
| | | quantity: i.quantity, |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02_1', all02(this.LeftTopData02, '每月采购数量/入库数量')) |
| | | }) |
| | | }, 1000 * 35) |
| | | |
| | | // 左上 销售订单 |
| | | // 右上 销售订单 |
| | | const res3 = await WorkShopCompreRightTop() |
| | | res3.data.RightTop.forEach(i => { |
| | | this.RightTopData01.push({ |
| | |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02', all02(this.RightTopData02)) |
| | | loadEcharts('all02', all02(this.RightTopData02, '每月订单数量/出库数量')) |
| | | setInterval(() => { |
| | | WorkShopCompreRightTop().then(res3 => { |
| | | this.RightTopData01 = [] |
| | |
| | | ouquantity: i.ouquantity |
| | | }) |
| | | }) |
| | | loadEcharts('all02', all02(this.RightTopData02)) |
| | | 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 res4 = await WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }) |
| | | for (const res4Key in res4.data.LeftTop) { |
| | | const data = { |
| | | good_qty: 0, |
| | | plan_qty: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res4Key)) { |
| | | data.good_qty = res4.data.LeftTop[res4Key][0].good_qty |
| | | data.plan_qty = res4.data.LeftTop[res4Key][0].plan_qty |
| | | data.wkshp_code = res4.data.LeftTop[res4Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftBottomData01.push(data) |
| | | } |
| | | } |
| | | for (const res4Key in res4.data.LeftBottom) { |
| | | const data = { |
| | | quantity: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res4Key)) { |
| | | data.quantity = res4.data.LeftBottom[res4Key][0].quantity |
| | | data.plan_qty = res4.data.LeftBottom[res4Key][0].plan_qty |
| | | data.wkshp_code = res4.data.LeftBottom[res4Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftBottomData02.push(data) |
| | | } |
| | | } |
| | | loadEcharts('all01', all03(this.legendData, this.LeftBottomData02)) |
| | | |
| | | setInterval(() => { |
| | | WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }).then(res2 => { |
| | | this.LeftBottomData01 = [] |
| | | this.LeftBottomData02 = [] |
| | | for (const res4Key in res4.data.LeftTop) { |
| | | const data = { |
| | | good_qty: 0, |
| | | plan_qty: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res4Key)) { |
| | | data.good_qty = res2.data.LeftTop[res4Key][0].good_qty |
| | | data.plan_qty = res2.data.LeftTop[res4Key][0].plan_qty |
| | | data.wkshp_code = res2.data.LeftTop[res4Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftBottomData01.push(data) |
| | | } |
| | | } |
| | | for (const res4Key in res2.data.LeftBottom) { |
| | | const data = { |
| | | quantity: 0, |
| | | wkshp_code: '', |
| | | wkshp_name: '' |
| | | } |
| | | if (temp.includes(res4Key)) { |
| | | data.quantity = res2.data.LeftBottom[res4Key][0].quantity |
| | | data.plan_qty = res2.data.LeftBottom[res4Key][0].plan_qty |
| | | data.wkshp_code = res2.data.LeftBottom[res4Key][0].wkshp_code |
| | | data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name |
| | | this.LeftBottomData02.push(data) |
| | | } |
| | | } |
| | | loadEcharts('all01', all03(this.legendData, this.LeftBottomData02)) |
| | | }) |
| | | }, 1000 * 30) |
| | | |
| | | // 右下 仓库库存 |
| | | const res5 = await WorkShopCompreRightBottom() |
| | | this.RightBottom = res5.data |
| | |
| | | width:187px; |
| | | height: 180px; |
| | | } |
| | | |
| | | .all_block02{ |
| | | width: 100%; |
| | | height: 49px; |
| | |
| | | width:199px; |
| | | height: 180px; |
| | | } |
| | | |
| | | .all_block04{ |
| | | width: 100%; |
| | | height: 49px; |
| | |
| | | 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; |
| | |
| | | top: 50px; |
| | | } |
| | | } |
| | | |
| | | @keyframes upDown2 { |
| | | 0% { |
| | | top: 100px; |
| | |
| | | }, |
| | | proxy: { |
| | | [process.env.VUE_APP_BASE_API]: { |
| | | target: 'http://121.196.36.24:8029', // 请求的第三⽅接⼝地址 本地开发服务器 |
| | | // target: 'http://192.168.110.230:8001', // 请求的第三⽅接⼝地址 客户服务器 |
| | | // target: 'http://121.196.36.24:8029', // 请求的第三⽅接⼝地址 本地开发服务器 |
| | | target: 'http://192.168.0.111:8001', // 请求的第三⽅接⼝地址 客户服务器 |
| | | changeOrigin: true, // 请求跨域时,需 配置此项 |
| | | pathRewrite: { // 路径重写,替换target中的请求地址 |
| | | ['^' + process.env.VUE_APP_BASE_API]: '/api/' |